1. 최신 wordpress 설치
$ brew install wp-cli
2. 워드프레스를 설치할 디렉토리 생성
/home 에 생성할 것이기 때문에 우선 $ sudo vi /etc/auto_master 를 입력하고 /home 으로 시작하는 줄을 주석처리하고 저장한다.(/home 디렉토리 하위에 디렉토리가 생성되지 않았기 때문)
터미널을 종료(세션을 끊음)하고 다시 터미널을 열어서 아래 명령어로 원하는 디렉토리를 만든다.
$ sudo mkdir -p wordpress
$ cd worldpress
$ sudo mkdir -p webapp
/home 경로에 만들어서 워드프레스를 설치하려고 하니 경고가 뜨는데, 보안상 이슈가 있는 듯 해서 디렉토리를 바꿔주었다.
$ cd ~
$ sudo mkdir -p wordpress
$ cd wordpress
$ sudo mkdir -p webapp
3. mariaDB 에 계정과 데이터베이스를 생성한다.
$ mysql -u root -p
[MariaDB]> create user 'wordpress'@'localhost' IDENTIFIED BY 'password';
[MariaDB]> create database wordpress;
[MariaDB]> GRANT ALL ON wordpress.* TO 'wordpress'@'localhost';
4. 내가 만든 디렉토리로 이동하고 워드프레스를 설치한다.
$ sudo chmod 775 webapp/
$ cd /home/wordpress/webapp
$ cd webapp/
$ wp core download
$ wp core config --dbname=wordpress --dbuser=wordpress --dbpass=password
$ wp core install --url=http://<도메인or아이피>/ --title='<제목>' --admin_user=<사용할 관리자계정 아이디> --admin_password=<사용할 패스워드> --admin_email=<관리자 이메일 주소>
----- 2017-01-17 수정사항
워드프레스 설치 경로가 위 처럼 하니까 워드프레스가 로드가 안 되었다.
/var/www/wordpress/ 라고 경로를 만들고 거기에 워드프레스를 설치하니 워드프레스를 볼 수 있었다.
----- 2017-01-20 수정사항
맥(OS X)에서는 워드프레스 설치 경로를 선택할 때 아주 신중히 해야할 것 같다.
sudo 로 명령어를 실행해도 permission denied 가 되는 경우도 있었고, 그럴 땐 리커버리 모드로 부팅한 다음 csrutil disable 명령어로 SIP(System Integration Protection)을 일시적으로 끄고 난 다음 해야하는 등의 여러가지 문제가 있었다. 근데 가장 큰 문제는 그런 번거로운 과정을 거치고 나서도 문제가 해결되지 않았다.
아래는 문제 사항과 해결 과정을 대략적으로 기억나는대로 기록해본 것.
1. nginx 재설치
=> 깃허브에서 가져온 설정때문에 뭔가 내가 하고자 하는 설정과 충돌나는 부분이 있을 것 같아서 재설치 해주었다.
결과적으로는 재설치 하지 않아도 됐었다. 하지만 nginx의 default 설정에서 조금씩 바꾸면서 해봤던 게 nginx.conf 설정 파일을 다루는 데 많은 도움이 되었다.
2. wordpress 재설치
=> /var/www/wordpress 에다가 wp core download 를 하고 wp core config 및 wp core install 과정을 적어도 3번이상은 해봤다. 안 됐다.
3. /var/www/ 경로에 리컬시브하게(recursively) 755 권한 주기.
=> /var/ 디렉토리는 심볼릭링크였는데 private/var/ 로서 도대체 private/var/ 로 권한을 주려고 해도, /private/var/ 로 권한을 주려고 해도 안 됐었다.
4. 최종적으로 /usr/local/var/www/ 에다가 wp core 를 다운로드하고, 설정하고, 설치하였다.
=> 404, 502를 뱉어냈지만 이건 금방 해결하였다.
본 과정을 진행하면서 보았던 에러는 403 forbidden, 404 not found, 502 bad gateway 였다.
403 forbidden : 이걸 해결하는 데 가장 오래 걸렸고 힘들었던 것 같다. 결국 wp core 설치 디렉토리 패스(path) 문제였고 /usr/local/var/www/ 에 설치를 해주니 해결되었다. 이 때 특이했던 점은 html, txt, md 확장자를 가진 파일은 정상적으로 웹브라우저에서 열렸는데 php 파일은 403 forbidden 을 뱉어내는 것이었다.
404 not found : document root 를 잘못 설정해서 나왔던 것 같다.
502 bad gateway : 여러번의 재부팅과 리커버리 모드를 왔다갔다 하다보니 php-fpm 이 실행되지 않는 상태였었다. php-fpm 을 실행시켜주니 잘 되었다!
맥에 wordpress 설치형 블로그, 설치형 사이트 설치하기 과정을 최종적으로 아래에 다시 순서대로 기록함.
1. 최신 wordpress 설치
$ brew install wp-cli
2. 워드프레스를 설치할 디렉토리 생성
$ sudo mkdir -p /usr/local/var/www/wordpress/
3. mariaDB 에 계정과 데이터베이스를 생성한다.
$ mysql -u root -p
[MariaDB]> create user 'wordpress'@'localhost' IDENTIFIED BY 'password';
[MariaDB]> create database wordpress;
[MariaDB]> GRANT ALL ON wordpress.* TO 'wordpress'@'localhost';
4. 내가 만든 디렉토리로 이동하고 워드프레스를 설치한다.
($ sudo chmod -r 755 /usr/ : 만약 /usr 이하 디렉토리나 파일의 권한이 755가 아닐 경우 이 명령을 실행한다.)
$ cd /usr/local/var/www/wordpress/
$ wp core download
$ wp core config --dbname=wordpress --dbuser=wordpress --dbpass=<password>
$ wp core install --url=http://<도메인or아이피>/ --title='<제목>' --admin_user=<사용할 관리자계정 아이디> --admin_password=<사용할 패스워드> --admin_email=<관리자 이메일 주소> : 도메인or아이피에는 localhost 로 적은 사람도 있었고 도메인을 적는 사람도 있었다. 나는 no-ip에서 제공받아 사용하는 DDNS 도메인 주소를 적어주었음.
5. nginx를 설정한다.
/usr/local/etc/nginx/nginx.conf (단 도메인 주소 제외하고 필터링 없이 그대로 적어놨음. 고뇌의 흔적이 주석에... -_- 이게 뭐라고) |
#user staff; #user root; #user nobody; #user nginx; worker_processes 1; error_log /usr/local/etc/nginx/logs/error.log debug; pid /usr/local/var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /usr/local/etc/nginx/logs/access.log main; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #gzip on; server { listen 80; server_name localhost; root /usr/local/var/www/; index index.html index.htm index.php; #charset koi8-r; access_log /usr/local/etc/nginx/logs/host.access.log main; location / { #include /usr/local/etc/nginx/conf.d/php-fpm; #root /var/www/wordpress/; index index.html index.htm; #allow 127.0.0.1; #allow all; try_files $uri /index.php?$args; #autoindex on; location ~ \.php$ { try_files $uri = 404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } location /wordpress { alias /var/www/wordpress; index index.php; } location = /info { allow 127.0.0.1; deny all; rewrite (.*) /.info.php; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { #root html; try_files $uri = 404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} include servers/*; }
|
<autoindex on 관련된 내용>
autoindex on 을 하지 않으면 http://localhost/wp-admin 에서 403 forbidden 이 나왔었다.
아래는 그 해결방법.
6. http://localhost/wordpress 에 접속한다. 아래처럼 잘 나왔을 때 감격이...
소감....)
실제 블로그나 사이트를 운영하기 위해 만든 건 아니지만, 맥에서 nginx, php, mariaDB 를 설치하고 운영하기위해 참고하는 레퍼런스가 생각보다 적었고, 회사에서 프론트엔드 개발자들이 주로 NPM을 이용해 개발을 하기 때문에 나도 알아두면 좋을 것 같아서 해본 것인데 막상 하는 도중에 막힌 부분들이 많아서 꽤나 오기가 생겼었다. 최종적으로 잘 된 것을 보니 기뻤고, 회사에서 프론트엔드 개발자들과 대화할 수 있는 범위가 좀 더 넓어지겠거니 싶다.