ubuntu환경에서 nginx + php7 + mysql 설치하고 wordpress를 마이그레이션 합니다.

Explanation

ubuntu 환경에서 nginx, php7, mysql 을 설치하고 기존의 wordpress를 마이그레이션하는 방법에 대해 적어보려합니다.

2019.05.30 참고사항

최근에 다시 해보니..
$ apt-get install php7.0-… // 7.0 버전이 설치가 되지 않아서, 저는
$ apt-get install php7.2-… // 로 설치하였습니다

ubuntu는 16.04.3 버전을 사용하며 wordpress 마이그레이션은 ‘Duplicator’ 플러그인을 사용합니다.
(글의 간략화를 위하여 명령어들은 슈퍼유저로 권한 상태로 가정하여 ‘sudo’ 명령어를 사용하지 않습니다.)
Duplicator 플러그인 : https://wordpress.org/plugins/duplicator/

1. 슈퍼유저 비밀번호 설정 및 슈퍼유저로 접근

2. 우분투 패키지 버전 리스트 업데이트

$ apt-get update : 설치 가능한 패키지의 버전 리스트를 업데이트 합니다.
$ apt-get upgrade : 설치된 패키지들을 버전 리스트의 최신 버전으로 업데이트 합니다.

3. nginx 설치

4. php7 설치

그냥 php를 설치하지 않고 php-fpm을 설치하는 이유는 아래의 php-fpm에 대한 설명을 참고하시면 조금 도움이 될 것 같습니다.
참고 : https://conory.com/blog/42956

5. mysql 설치

AWS RDS를 사용한다거나 외부 DB에 연결하여 사용한다면 mysql-client만 설치해도 되었던 것으로 기억합니다.

6. nginx 가상호스트 설정

nginx의 가상호스트 설정의 구조는 크게 아래와 같습니다.

아래의 파일이 nginx의 기본 설정입니다. 로그 파일 경로를 설정하거나 gzip 설정등.. 몇가지가 보입니다.

가상 호스트에 관한 설정은 /etc/nginx/sites-enabled/ 디렉토리 안에 파일들을 인클루드해서 구성하는게 기본 설정입니다. 여기에서 /etc/nginx/sites-available(이하 sites-available)/etc/nginx/sites-enabled(이하 sites-enabled)의 디렉토리가 있는데, sites-available에 설정 파일을 추가, 작성하며 실제로 서버에 적용하고자 하는 속성 파일을 sites-enabled로 심볼링크를 만들어 서버에 적용합니다.

예를 들자면 sites-available에 aaa, bbb, ccc, ddd 라는 속성들을 선언하고 sites-enabled에 서버에 설정하고자 하는 aaa, bbb속성의 심볼링크를 생성하여 서버에 적용합니다.

워드프레스 공식 홈페이지에서 설명해주는 호스트 설정은 아래와 같습니다.
참고 : https://codex.wordpress.org/Nginx

위 설정 그대로 적용해서는 실제로 워드프레스가 동작하지는 않고 저는 몇가지 수정을 하여 적용하였습니다.
(nginx 설정에 대해 지식이 얕아 아는 선에서 간단하게 작성하겠습니다.)

대략 위와 같은 설정 파일을 /etc/nginx/sites-available/ 에 cgs라는 이름으로 작성하고 심볼링크 생성(ln -s /etc/nginx/sites-available/cgs /etc/nginx/sites-enabled/) 하였습니다.

7. ‘Duplicator’로 wordpress 마이그레이션 하기

Duplicator 으로 생성한 installer.php 파일과 ~~.zip 파일을 위 예제를 기준으로 /home/ubuntu/cgs/ 디렉토리에 업로드 한 후에 브라우저에서 http://cheolguso.com:8000/installer.php로 접속하면 플러그인에서 안내하는 절차에 따라 마이그레이션이 진행이 됩니다.

하지만 바로 접속하면 몇가지 오류가 뜨며 진행이 되질 않습니다.

‘mysql_connect’ 오류?? 인가가 뜨는데 아마도 이게 php7에서는 사라지고 다른것으로 대체되었던 것으로 기억이 나는데… 그게 아니라면 php와 mysql를 연결이 되지 않아서 생기는 오류였던것 같습니다. 아래와 같이 php7.0-mysql을 설치하면 해결이 됩니다.

php에서 zip 파일의 압축을 풀 수 있도록 ZipArchive Library를 설치합니다.

그리고 수호신 보안에 관한 오류가 뜨는데 이부분 역시 php7에서는 기본적으로 포함하고 있는 것으로 알고 있습니다, 아마도 디랙토리 권한에 따른 설치 오류로 생각됩니다. 이부분은 일시적으로 파일의 권한을 수정해 줌으로써 해결합니다. 위 예제의 디렉토리를 기준으로 /home/ubuntu/cgs 디렉토리 이하의 모든 소유자와 그룹을 www-data로 수정해줍니다.

위의 상황은 보안적으로 문제가 있을 수 있습니다. 마이그레이션 이후에 아래 8번을 참고하여 수정합니다.

위의 사항들을 수정 후 http://cheolguso.com:8000/installer.php로 접속하면 플러그인에서 안내하는 절차를 따라 진행하면 성공적으로 마이그레이션 될 것입니다.

8. 워드프레스 파일 권환 설정

워드프레스 디렉토리의 모든 파일과 디렉토리의 권한을 www-data로 하면 wordpress와 플러그인을 설치하거나 업데이트하기에 유용할 수 있지만, 이는 혹시 모를 php스크립트의 부실한 부분으로 누군가 접근하여 웹사이트 자체에 문제를 야기할 수 있습니다.
저는 개인적으로 모든 소유자와 그룹을 관리자 계정으로 하며, 일반적으로 사용하는 권한 디렉토리 755, 파일 644로 설정합니다.

그리고 예외적으로 ./wp-content/upload의 그룹은 www-data로 설정해주고 권한은 775를 설정해줍니다.

웹에서 이미지는 올릴수 있어야 하기에..

그리고 wordprss를 업그레이드 하거나, 플러그인을 추가하거나 할때에만 권한을 수정하여 적용하고 다시 되돌리며 사용하고 있습니다.