※ 일반적인 과정 생각하여 보자면 ~
> 다운로드하여 새 서버로 업로드 한 후,
> 새서버에서 업로드한 파일 해제,
> 새 데이터베이스 서버가 'TCP/IP 연결'을 수용하게 설정 확인/추가.
> 새 데이터베이스 생성 및 데이터 복원,
> 설정 파일 커스터마이징,
> 서버 및 도메인 설정,
> 파일 권한 설정,
- Server(apache/nginx)에 따른, '웹 서버 데몬 사용자'를 적절히 선택하고
project의 /data 폴더의 소유권과 권한 부여. = 꼭 확인 되여야 할 부분 =
※ 예시를 들어 보자면 ~
> 보여주신 이미지처럼 전체 사이트 파일과 데이터베이스를 백업하였다면,
- 이 백업_다운한 파일(backup-xx.xx.xxx.tar.gz)은
사이트의 모든 파일과 데이터베이스 덤프를 포함할 것입니다.
> 백업_다운한 파일을 새 서버의 웹 루트 디렉토리로 FileZilla 등으로 업로드합니다.
> 새 서버에 SSH로 접속하여 백업_다운한 파일을 해제합니다.
# SSH로 서버(new_server_ip)에 님의 계정(username)으로 접속
ssh username@new_server_ip
# 웹 루트로 이동 (경로는 님의 커스터마이징 폴더)
cd """님의 커스터마이징 폴더""" FileZilla 등으로 백업_다운한 파일을 업로드 했던
# 백업_다운한 파일 압축 해제
tar -xzvf backup-xx.xx.xxx.tar.gz
> 새 데이터베이스 서버가 'TCP/IP 연결'을 수용하게 설정을 확인하고 없으면 추가.
- MySQL 설정 파일인 my.cnf에서 'TCP/IP 연결'을 수용하는 지 확인.
. . .
[mysqld]
socket = /var/lib/mysql/mysql.sock # 소켓 파일 경로 -이 경로는 글쓴이의 예시 임-
bind-address = 127.0.0.1 # TCP/IP 연결 활성화 -DB가 localhost에 있는 경우만 -
. . .
- 소켓 파일만 수용한 경우이라면
"""bind-address = 127.0.0.1""" 이 와 유사한 코드가 없을 것입니다.
> 추가하면 됩니다.
단, DB Server가 Project(님의 그누보드)와 동일한 Host에 존재할 경우입니다.
> 만약 외부 데이터베이스에 접근해야 한다면
bind-address = 0.0.0.0으로 설정하거나 특정 IP 주소를 지정해야 합니다.
- SSH 쉘에서 아래의 명령으로 MySQL Server가 'TCP/IP 연결'을 수용하는 지 확인
sudo netstat -tulnp | grep mysqld
- 아래의 출력이면, 3306 port가 정상으로 내/외부에 열린 상태로, TCP/IP를 통한 연결 정상.
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
= TCP/IP를 통한 연결이 정상이면 데이터베이스 및 사용자 생성.
> 데이터베이스를 생성
mysql -u root -p
CREATE DATABASE new_db_name;
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';
GRANT ALL PRIVILEGES ON new_db_name.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
- new_db_name, new_user, new_password, 등은 project에 맞춤.
> new_user를 localhost로 설정한 경우, 로컬 호스트에서만 접속이 허용됩니다.
만약 DB 서버가 님의 project가 있는 Host 밖에 있다면,
new_user의 호스트 부분을 %로 지정해야 합니다.
> 그리고 dbconfig.php 파일의 'G5_MYSQL_HOST' 부분을
= MySQL 서버의 실제 IP 주소로 지정해야 합니다.
> 가져온 DB data를 새 데이터베이스에 복원
- 백업_다운한 파일을 압축 해제한 폴더에
*.sql 확장자의 데이터베이스 덤프 파일이 있을 것입니다.
mysql -u new_user -p new_db_name < /(위치확인)/database_dump.sql
- 압축풀어 생성된 "데이터베이스 덤프 파일(database_dump.sql)" 위치 확인
> 복원한 그누보드5 프로젝트의 /data 폴더의 dbconfig.php를 열고
새 Mysql 서버의 데이터베이스 이름, 사용자명, 비밀번호 등를 업데이트합니다.
define('G5_MYSQL_DB', 'new_db_name');
define('G5_MYSQL_USER', 'new_user');
define('G5_MYSQL_PASSWORD', 'new_password');
define('G5_MYSQL_HOST', 'localhost');
> Nginx 또는 Apache 설정을 업데이트하여 도메인과 프로젝트를 연결 (nginx 경우)
server {
listen 80;
server_name yourdomain.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
[/code]
[code]
sudo systemctl restart nginx
> '웹 서버 데몬 사용자'가 파일에 접근할 수 있도록 권한을 설정 - 필요할 경우
특히, /data 폴더는 필요할 수 있음 - 저의 경험으로 보면 -
sudo chown -R www-data:www-data /님의 project root
sudo chmod -R 755 /님의 project root
-'웹 서버 데몬 사용자'가 www-data인 경우
★ 초기 셋팅에서 /님의 project root/data 폴더의 퍼미션을 777로 하고
> '웹 서버 데몬 사용자' 설정을 마치신후, 755로 변경하세요.
- 보안상의 이유로 777 권한을 사용하는 것은 지양하는 것이 좋습니다.
댓글목록
등록된 댓글이 없습니다.