이번 글에서는 워드프레스 공식사이트에서 워드프레스 최신버전을 다운로드 받아 설치하는 방법을 다루겠습니다. 이 방법으로 하나의 우분투 서버에 두 개 이상의 워드프레스 사이트를 설치할 수도 있습니다.
이 글은 ningx(엔진엑스), mariaDB(마리아디비), php 7.2가 설치된 리눅스서버 LEMP 스택에 WordPress 설치하기 시리즈 연재작의 일환으로 작성되었지만 사실 어느 서버에라도 올바른 버전의 웹서버와 DB, php가 준비되어있다면 적용할 수 있는 방법입니다. 이전 글에 이어서 아래와 같은 걸 알아보겠습니다.
- 웹루트 폴더 준비
- WordPress 최신판 다운로드, 설치 하기
- zip 파일 다운로드
- 압축풀기
- 웹루트 폴더 설치완료
- temp 폴더와 upgrade폴더, uploads 폴더 생성하기
- 루트폴더의 소유자와 사용자그룹, 권한 설정
- wp-content 내 이미지파일 저장폴더 삭제방지
워드프레스 도큐먼트 루트 디렉토리 준비하기(웹루트 폴더)
먼저 워드프레스 사이트 첫화면을 보여줄 루트폴더가 필요합니다. 그 곳에 워드프레스를 설치하면 자신의 홈페이지(서버IP주소 또는 도메인)에 나타나게 될 겁니다.
이건 LEMP 스택을 구성했을 때 처음 nginx를 설치하면 이미 디폴트로 준비되어있는데, 그 도큐멘트 루트 경로가 /var/www/html 입니다. 앞서 nginx 설정파일에서도 root 경로를 지정하는 설정코드에서 볼 수 있었고요.
그러므로 여러분이 따로 준비할 건 없습니다. 제 따라하기 강좌글을 그대로 했다면 폴더 수정 권한도 이미 문제가 없을 테고요. 원한다면 nginx 설정파일을 수정해서 다른위치에 지정할 수도 있습니다.
그리고 html 라는 폴더 이름은 사실 다른 걸로 바꿔도 되는데요. 이름을 바꾸고 싶다면 아래처럼 해주면 됩니다.
mv /폴더경로/예전폴더명 /폴더경로/새로운폴더명
그래서 my-site-name 이라는 이름으로 폴더명을 변경하려면 아래처럼 명령어를 입력하면되죠.
mv /var/www/html /var/www/my-site-name
이렇게 바꿀경우 nginx 의 설정파일에서도 root 경로 지정을 아래처럼 /var/www/my-site-name으로 바꾼뒤 nginx를 재시작해줘야합니다.
하지만 보통은 서버에 하나의 워드프레스만 사용하는게 일반적이라서 자신이 폴더이름으로 혼동할 이유도 없고 웹 도큐멘트 루트의 폴더명을 html 이라고 디폴트 그대로 두는게 일반적이므로 이 글에서는 바꾸지 않고 그대로 사용하겠습니다.
참고로 나중에라도 워드프레스 두 개이상 설치할 거라면 /var/www 하위에 새로운 폴더를 생성하고 그것을 두번째 사이트의 루트폴더로서 두 번째 워드프레스를 설치하면 됩니다.
그러니까 웹루트폴더 준비와 사용 중요포인트는 사이트(도메인,워드프레스등)가 하나든 둘이든 폴더경로가 어쨌든, 폴더이름이 어쨌든 여러분마음대로 하시고 나중에 nginx 라우팅 설정파일을 수정하면서 도메인 별 server블락의 root 폴더 지정에 그 경로만 잘 지정해주면 된다는 소리입니다.
WordPress 최신판 다운로드 및 설치하기(한글판 포함)
워드프레스는 공식 웹사이트에서 버전별로 골라서 다운로드 가능한데요. 2가지 방법을 생각해 볼 수 있습니다.
- 웹페이지에서 접속해서 내 컴퓨터로 다운로드 후 FTP로 내 서버에 업로드
- 다운로드 주소를 알아내서 내 서버에서 곧바로 다운로드 (CLI 명령어 사용)
첫 번째 방법을 쓸 경우 서버에 업로드할 때 내컴퓨터에서 압축을 풀고나오는 wordpress 폴더 하위의 모든 폴더와 파일을 통채로 위에서 말한 도큐멘트 루트폴더에 업로드하면 됩니다. SFTP 사용방법만 알고있다면 간단하겠죠? 그러면 서버에 워드프레스 설치가 되는 겁니다. SFTP를 사용해서 설치하려면 그렇게 업로드설치한 다음 이 글의 temp폴더 만들기 단계로 건너띄면 됩니다.
이 글에서는 두번째 방법을 설명하겠습니다. CLI에서도 할줄 알아야하니까요. 터미널로 SSH 연결을 통해 서버에 접속한상태로 CLI 명령어를 다루는 방법이죠. 아래와 같은 절차를 거치게 됩니다.
- 워드프레스 설치파일(.zip) 다운로드 주소를 알아내 다운로드
- 임시폴더에 압축풀기 (wordpress 라는 폴더가 나옴)
- 모든 폴더와 파일을 웹루트 폴더에 복사 (설치완료)
- 워드프레스 temp폴더와 upgrade폴더, uploads 폴더 만들기
참고로 서버접속에대한 사전지식은 아래링크에서 찾을 수 있습니다.
– CLI 명령어로 서버 접속 및 제어
명령어 입력중 $과 #기호 구분, 명령어 앞에 붙는 sudo 에 관한 지식도 아래링크에서 찾을 수 있습니다.
– CLI 명령어의 시작 $과 #, 그리고 root 명령어 sudo
1.워드프레스 설치파일 다운로드(zip)
먼저 웹브라우저에서 아래링크로 워드프레스 공식 다운로드 페이지에 접속합니다. 저는 최신판 기준으로 설명하겠습니다.
접속하면 아래와 같은 화면이 나오고 워드프레스 최신판 다운로드 버튼이 있습니다. 이글을 작성하는 시점에는 4.9.7 버전이네요.
위 화면처럼 다운로드 버튼에 마우스 오른쪽 버튼을 클릭해보면 링크를 복사할 수 있는 메뉴가 나타납니다. 복사한다음에 한쪽에 잘 적어둡니다.
- https://ko.wordpress.org/wordpress-4.9.7-ko_KR.zip
이제 서버로 접속한 CLI 환경에서 wget 으로 다운로드 하면 되는데요. wget 명령어를 아래형태로 하면 자신이 지정하는 서버 폴더에 다운로드 받습니다.
wget -P 다운로드폴더경로 다운로드할파일의_웹주소
아래와 같은 형태로-O
옵션을 사용해 명령어를 입력하면 자신이 지정하는 곳에 이름바꿔서 다른이름으로 저장하게 됩니다. 전 이걸 쓰겠습니다.
wget -O /다운로드/폴더경로/저장할파일명.zip 다운로드할파일의_웹주소
저는 저장할 파일이름을 wordpress-4.9.7.zip로 하겠습니다. 그럼 아래처럼 작성됩니다.
wget -O ~/wordpress-4.9.7.zip https://ko.wordpress.org/wordpress-4.9.7-ko_KR.zip
위 명령어에서 사용자 홈폴더를 뜻하는 물결표시(~)를 썼으므로 현재 CLI 명령어를 입력하는 리눅스 사용자(ubuntu)의 홈폴더(/home/ubuntu)에 다운받게 됩니다.
2. 임시폴더에 wordpress.zip 파일 압축풀기
이제 이 압축파일을 풀어줘야겠습니다. 이 압축파일을 풀기위해 제가 사용하는 리눅스 CLI 프로그램은 unzip 인데요. 우분투 서버에 이미 설치되어있을 겁니다. 없다면 따로 설치해야합니다.
unzip 명령어로 특정 폴더에 압축해제하는 -d 옵션 사용해서 풀겠습니다. 아래와 같은 형태입니다.
unzip 폴더경로/압축파일이름.zip -d 압축풀_목적지폴더경로
압축을 풀면 wordpress 라는 폴더가 나오게 될텐데 우리는 그 하위 내용물을 html 폴더 아래에 넣어야합니다. 임시폴더는 ubuntu 사용자 홈폴더(~)로 하고나서 옮기겠습니다.
unzip ~/wordpress-4.9.7.zip -d ~
압축해제가 끝나고 ls /home/ubuntu
로 확인해보면 wordpress 폴더가 보일겁니다.
3. 웹루트에 워드프레스 파일 설치완료하기
우린 이미 웹루트 폴더로 html 폴더가 준비되어있으므로 wordpress 라는 폴더는 필요없습니다. 아래 명령어처럼 cp
(copy) 명령어를 사용하면 그 하위 내용들만 복사됩니다.
cp -a /경로/원본폴더/. /경로/목적지폴더
아래처럼 입력하겠죠.
cp -a ~/wordpress/. /var/www/html
아래 링크는 SFTP에서 확인한 모습인데 이 파일들이 워드프레스를 구성하는 모든 폴더입니다. 참고로 phpMyAdmin…폴더와 그것의 심볼릭 파일인 hellodb 는 제가 따로 phpMyAdmin 설치방법으로 미리 준비된 것이므로 이번 글과는 상관 없습니다.
이제 아래처럼 우분투 사용자 폴더에 있던 zip파일과 원본폴더는 모두 삭제 해줍니다.
$ rm wordpress-4.9.7.zip $ rm -r -f wordpress
4. wp-content에 upgrade와 uploads 폴더, temp 폴더 만들기
위 SFTP 스크린샷 그림에서 보이는 wp-content 이 중에서 wp-content 폴더에는 여러분들이 설치할 워드프레스 테마와 플러그인이 들어가고 업로드한 이미지파일같은 미디어파일이 저장될 폴더들이 구성됩니다.
이 폴더 하위에 upgrade와 uploads 라는 이름의 폴더를 만들어 줄건데요. 이것은 워드프레스가 업데이트될 때 이 폴더를 만들지 못하거나 수정할 수 없는 권한문제가 생기지 않도록 해주기 위함인데 폴더권한만 잘 되어있다면 사실 미리 만들어줄 필요는 없습니다만, 설치형 워드프레스 사용자들이 공통적으로 종종 겪는 문제라 언급합니다.
그리고 temp 폴더도 만들어 둡시다 폴더를 생성하는 리눅스 명령어 mkdir을 이용해 아래 3 개 명령어를 입력하면 됩니다.
$ mkdir /var/www/html/wp-content/upgrade $ mkdir /var/www/html/wp-content/uploads $ mkdir /var/www/html/wp-content/temp
워드프레스 루트폴더의 리눅스 소유자와 사용자그룹, 권한 설정
이제 워드프레스 루트폴더인 /var/www/html 하위의 모든 폴더와 파일의 소유자와 사용자그룹을 변경할 차례입니다. 꼭 저와 똑같이 해줄 필요는 없지만 리눅스 서버를 이리저리 다루다보면 워드프레스나 다른 것들이 권한문제로 오류, 에러를 일으키곤 하기때문에 문제 예방차원에 알려드립니다.
SFTP 프로그램을통한 워드프레스 루트폴더 이하 접속은 우리가 종종 ubuntu 로 사용하게 됩니다. 그리고 우리가 설치했던 nginx 는 www-data 라는 리눅스 사용자로 활동하고, 워드프레스 프로그램 또한 nginx가 사용하더군요.
참고: bitnami 패키지 또는 아파치, 다른 웹서버는 www-data가아닌 daemon 사용자인 경우도 있습니다.
- 첫째로 nginx (www-data 사용자)가 워드프레스 폴더 및 파일에대한 편집권한이 없으면 업데이트, 플러그 및 테마 설치와 업데이트등에 문제가 생겨 오류가 납니다.
- 둘째로 ubuntu 사용자에게 권한이 없으면 SFTP 접속을 통한 파일 편집이 불가능하죠.
그래서 SFTP 와 워드프레스가 폴더편집권한을 동시에 갖게하기위해서 ubuntu 또는 www-data를 다른 사용자그룹에 편입시키거나 권한을 777로 완전히 개방하거나 등등 여러가지 방법을 생각해볼 수 있겠습니다만 전 아래와 같은 방법을 사용하기로 했습니다.
워드프레스 폴더 소유자와 사용자그룹 변경
html 하위 폴더와 파일들을 수정할 수 있게하기 위해서 소유자는 www-data로 하고 그것들의 사용자그룹(group ownership)을 ubuntu로 한다음 권한을 775로 해서 www-data 사용자와 ubuntu 사용자그룹에 속한 사용자 멤버들이 수정할 수 있게 해줍시다. 아래와 같은 형태로 입력하는데요.
sudo chown -R 소유자명:그룹명 /var/www/html
그럼 아래처럼 입력하면 되죠.
sudo chown -R www-data:ubuntu /var/www/html
중요: 위 처럼 루트폴더의 소유자는 nginx를 사용하는 사용자명인 www-data 이도록 해줍니다. 관리자화면에서 테마파일 .zip을 업로드해서 설치할 때, 일부 테마의 경우 웹서버가 사용하는 시스템 사용자가 아니면 아래와 같이 Connection Information 문제로 사이트를 사용하지 못할 수도 있습니다.
리눅스 폴더 사용자그룹 상속설정
setgid 설정 또한 해주는데 이것은 하위폴더에 새로운 폴더가 생성될때 그 폴더의 사용자그룹이 부모폴더(상위폴더)의 그것과 같도록 상속받는 설정입니다. 그래서 차후라도 하위에 새로운 폴더를 만들고 나면 그 폴더의 사용자그룹은 자동으로 ubuntu가 됩니다.
sudo find /var/www/html -type d -exec chmod g+s {} \;
읽기, 쓰기 편집 권한설정
소유자 뿐만아니라 그룹도 편집권한을 갖도록 775로 설정해줍니다. -R
옵션은 모든 하위폴더 및 파일을 포함한다는 뜻입니다.
sudo chmod -R 775 /var/www/html
아래그림은 위의 3개 명령을 모두 입력한 모습입니다.
SFTP에서 블로그 이미지 저장폴더 삭제방지 (선택사항)
이건 제가 이블로그에 글을 작성하기위해 같은 구조의 서버를 여러번 만들고 지우고하면서 한번씩 정신이 나가서 생기는 일인데 폴더, 파일의 사용자그룹이 ubuntu 사용자에게 수정 권한이 있다보니 SFTP로 접속해서 지우지 말아야할 폴더, 파일을 지우는 실수를 하기도 합니다. 그러다 삭제한 파일이 데모용 서버가 아닌걸 알게되면 멘.탈.붕.괴!
블로깅을 하면서 플러그인과 테마등은 자주 바꾸는게 아닌지라 서버의 백업기능인 스냅샷만 잘 남기면 백업본에 그대로 남아있습니다. 여차하면 워드프레스도 폴더 파일채로 업로드해서 다시 설치하면 됩니다. 어차피 블로그 글이나 사용자 설정은 DB에 있으니까요.
그렇게 다른 폴더와 파일은 모두 복구가 가능한데 블로깅을 하면서 올린 이미지파일을 날릴때가 가장 곤혹스럽습니다. 따로 이미지 호스팅을 쓰지 않는이상 업로드하는 이미지들은 워드프레스의 wp-content/uploads 폴더에 올라가거든요. 마지막 백업 시점과 날려먹은 시점의 차이가 커질 수록, 글에 이미지가 많았을 수록 복구방법이 묘연해집니다.
백업 및 복원에대해선 차후 추가로 얘기할지 모르겠지만 이런경우 스냅샷 복원은 최후 방법입니다.(마지막 백업~현재시점 공백까지는 통계데이터, 글, 이미지 모두 없음)
그래서 제가 선택한 한가지는 이미지가 저장되는 wp-content하위의 uploads 폴더는 ubuntu 사용자에게 삭제 권한을 주지 않는 겁니다. 로컬본과 동기화하려는게 아닌이상 SFTP를 이용해서 해당폴더에 이미지를 올릴일이 없기도 하니까요.
그래서 이 폴더만은 소유자를 www-data로 해놓고 소유자만 쓰기(편집)권한을 부여해주려면 우선 아래처럼 소유자를 바꾸는 명령어를 입력하고 권한을 바꿉니다.
sudo chown -R 소유자명:그룹명 /폴더/경로
최종적으로 소유자와 그룹모두 www-data로 하고 소유자만 편집권한이 있는 755 또는 644등으로 설정하려면 아래처럼 2줄을 입력하게 됩니다.
$ sudo chown -R www-data:www-data /var/www/html/wp-content/uploads $ sudo chmod -R 755 /var/www/html/wp-content/uploads
참고: 위 명령어에서 경로를 /var/www/html/wp-content 처럼 상위로 해두면 다운로드받은 플러그인(plugins)과 테마(themes) 저장 폴더까지 보호됩니다.
이제 ubuntu사용자로 접속한 SFTP 프로그램에서 실수로 삭제하더라도 이미지 저장 폴더와 이미지들은 남아있게 됩니다. 나중에 SFTP를 통한 로컬 컴퓨터와 동기화라든가 백업본 복원업로드등 uploads 폴더를 편집해야할 일이 있을때만 권한을 777로 잠시 바꾸고 하면 될일입니다.
노파심에 말씀드리자면 CLI에서 root 사용자로 명령어를 사용해 삭제하는 것까지는 보호되지 않으니 주의하세요.
다음단계
이제 워드프레스를 설치했으니 설정파일도 수정하고 초기설정을 해야 접속할 수 있습니다. 시리즈 연재작 다음단계에서 계속 설명합니다.
안녕하세요? 이번 연재물 “우분투 LEMP 스택에 WordPress 사이트 설치하기 시리즈” 보고, 그대로 따라 했는데요. 막힘 없이 일사천리로 진행이 되어 기분이 상당히 좋습니다. 정말 감사합니다. ^^
앞전 AWS 비트나미 연재물도 봤었는데요. 그때는 어디선가 오류(?), 막히는 부분이 있어서 야매로 대충 셋팅 했더니.. 몇개월 사용하다가 문제가 있어서 이번에 새 연재물 보고 다시 셋팅하게 되었습니다.
그런데, 며칠 잘 사용하다가 다시 문제가 생겨서 이렇게 댓글로 질문을 드리게 되었습니다. 상황은 아래와 같습니다.
Image Upload for BBPress 라는 플러그인을 이용하여 비주얼 에디터에서 사용자가 이미지를 올리면 콘솔에서 net::ERR_CONNECTION_CLOSED 에러가 발생하면서 작동이 되지 않는 현상입니다.
그래서, 원인을 찾던 중에 아무래도 서버 파일/디렉토리 소유자 권한 문제 때문이라는 의심이 들어, 다른 서버에 그대로 옮겨 테스트를 해봤더니 역시나 이상 없이 잘 작동을 합니다.
그런데, 왜 이번에 연재물 보고 새로 셋팅한 AWS 에서는 안되는 걸까요? ㅠㅠ
현재 제 워드프레스 html 의 파일 소유자 권한은 www-data ubuntu 인 상태이고, 디렉토리 755 / 파일 644 인 상태인데… 왜 해당 플러그인에서 오류가 발생하는지 원인과 해결법을 알고 싶어 댓글을 남깁니다.
P.S
이렇게 좋은 정보를 공유해주셔서 다시 한번 감사 드립니다.
음.. 아마도 스크립트 실행시간이 짧아서 그럴 것같네요.
방금 수정하긴 했는데 아래글에 나온 방법에서
max_execution_time
값을 1000 정도로 변경하고 시도해보세요.https://swiftcoding.org/upload-file-limit-to-higher
답변 감사합니다. 답변이 달리면 이메일 받기에 체크를 해뒀었는데.. 왜 그런지 이메일을 못 받고 지금 확인 했어요. ^^;;
말씀해주신대로 max_execution_time 값을 1000 으로 수정하고, 다시 재부팅 했는데도 문제가 해결되지 않았습니다.
제 생각으로는 파일/폴더 소유자 권한이 꼬인 것 같습니다.
권한 관련해서 건들인 것은 연재물에 나와있는 아래 것 밖에 없는데…
1) https://swiftcoding.org/changing-owner-of-linux-files
=> sudo chown -R ubuntu /var/www
=> sudo chgrp -R ubuntu /var/www
2) 위 상태에서 안되서 현재 게시물에 나와 있는…
=> sudo chown -R www-data:ubuntu /var/www/html
=> sudo find /var/www/html -type d -exec chmod g+s {} \;
로 어제 다시 변경 했더니, 이제는 ftp 에서 테마 style.css 파일 수정도 쓰기 권한이 없다며 수정이 안됩니다!!
=> style.css : 파일 소유자 그룹( www-data ubutu ) / chmod 644
3) 그 외 제가 임의로 설정한 것은 루트 html 폴더에서 아래 명령을 실행한 것 밖에 없습니다.
=> sudo find . -type f -exec chmod 644 {} \;
=> sudo find . -type d -exec chmod 755 {} \;
하아.. 서버 설정하는게 너무 힘드네요. 다시 한번 답변 부탁 드려도 될까요? ㅠㅠ
일단, LEMP스택 말고, 워드프레스 글(본문)의 html 하위 권한 문제는본문의 파일 소유자와 권한은 잘 읽어보시면 755가 아닌 775 입니다.
https://swiftcoding.org/downloading-wp#permission
LEMP 스택 글에서의 경우 소유자가 ubuntu라서 755로도 편집되지만, 워드프레스 폴더는 소유자가 www-data 로 바꾸는 관계로 755 이면 ubuntu (ftp사용자)는 편집권한이 없습니다.
sudo chown -R www-data:ubuntu /var/www/html
sudo find /var/www/html -type d -exec chmod g+s {} \;
sudo chmod -R 775 /var/www/html
3개 연속으로 입력하면 ftp로 편집하는데 문제가 없을 겁니다. 권한을 변경뒤엔 ftp 재접속이 필요할 수 있습니다.
답변 감사합니다. 알려주신대로 했더니 ftp 에서의 편집 권한은 원래대로 돌아왔습니다.
특정 플러그인이 작동이 안되는 것은 좀 더 알아봐야 될 것 같아요. 혹시라도 제가 원인을 알게 되고, 그게 서버 설정과 관련이 있는 것이라면 이곳에 다시 답글을 남기겠습니다.
바쁘실텐데 도와주셔서 감사합니다. 좋은 하루 되세요. ^^*