nginx+php+mariaDB 서버 세팅하기

2015년 8월 23일에 작성했던 글을 이번에 새로 워드프레스 설치 하면서 정리합니다.


티스토리가 2016년 12월 21일에 데이터 백업기능을 중단한다는 공지를 올렸다.
( http://notice.tistory.com/2359 )

작년에 워드프레스로 이사 한번 했다가 이런저런 불편함 때문에 도로 티스토리로 왔는데
이번 백업기능 중단 공지를 보고 정말 갈아타야겠다는 생각이 절절하게 들었습니다.
그래서 예전에 블로그 서버용으로 샀던 한성 B14S용 놋북에 세팅되어 있던 nginx, php, mariaDB를
최신으로 업뎃하고 워드프레스 최신버전으로 깔아서 세팅을 해보기로 했습니다.

 

1. 폴더구조

대충 이렇게 모아놓았습니다.
워드프레스 파일은 nginx/html/wp 폴더로 정했습니다.

 

2. nginx ( http://nginx.org/ )
nginx-1.11.6 메인라인 버전으로 사용함.
안정버전이라고 1.10.2가 있긴 한데 뭐 엄청나게 안정성 중요시 하는것도 아니고 문제 생기면
걍 껐다 켜거나 서버닫고 다운그레이드 하면 되니 그냥 가장 최신 버전으로 정함.

nginx/conf/nginx.conf 을 수정합니다.

server {
listen       80;
server_name  blog.linsoo.co.kr;  <== 블로그 주소
charset utf-8;
root           html/wp;   <== 워드프레스 파일이 경로를 적습니다.

location / {
index  index.html index.htm index.php;
try_files $uri $uri/ /index.php?$args; 
}

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {

fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$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;
}
}

요 한블럭이 blog.linsoo.co.kr 주소로 들어오는것을 처리합니다.
다른 옵션이 필요하면 더 추가하셔도 되고 저는 이것만 해도 충분히 돌아가길래 이렇게 해줬습니다.
try_files $uri $uri/ /index.php?$args; 부분이 있어야 포스트 주소나 코멘트 주소를 입력해도 제대로 페이지가 뜹니다.

 

3. PHP ( http://windows.php.net/download )
최신버전인 7.1.0 Non Thread Safe 버전으로 했습니다.
php 폴더를 보면 php.ini-development, php.ini-production 파일이 있는데
전자는 개발서버용, 후자는 서비스용서버 설정파일 입니다.
둘중 하나를 복사해서 php.ini로 이름 변경을 해줍니다.

php.ini을 열어서
extension_dir = “ext”
extension=php_curl.dll
extension=php_mysqli.dll
extension=php_gd2.dll
주석해지 한다.

부연 설명을 하자면 php_mysqli와 php_mysql가 있는데 i가 없는거는 구버전 mysql 호환성을 위해 있는거고
mysql 4.1 이상버전일경우 php_mysqli를 사용하면 된다고 함.
mariaDB가 mysql에서 온거기 때문에 php_mysqli를 주석해지해야함.

php_curl.dll을 주석해지 하지 않으면 워드프레스에서 플러그인이나 스킨 설치할때

이런 문구가 나오면서 설치가 되지 않음.

php_gd2.dll는 이미지 추가시 자동으로 썸네일 만들때 사용함.
그 밖에도 이미지 관련해서 처리함. (이거 꼭 필요함)

설치 다하고 블로그를 운영하다보면  PHP가 죽는 문제가 발생하는데 현재 버전(7.1.0)에서는 확인해보지 않았지만
일단 예전경험대로 죽는다고 가정하고 예전에 만들어놓은 툴을 사용했습니다.

이전에 찾아본걸론 CMD 창에서 php 실행전 SET PHP_FCGI_MAX_REQUESTS=0 라고 입력하면 해결된다는 글을 보긴 했음.
저 명령은 FastCGI가 일정수 이상 리퀘스트가 들어오면 recycling 작업을 하는데
이 작업을 하지 말고 걍 무작정 받아들이라는 명령이라 왠지 메모리 누적 정리하는거 같은데
디폴트 값이 아니라는게 찜찜해서 걍 1초 간격으로 확인해서 php가 죽으면 다시 실행하는 툴을 만들었음.

실행파일 및 소스는 http://linsoo.co.kr/archives/13726 여기에서 받으시면 됨.

 

4. mariaDBhttps://downloads.mariadb.org/ )
현재 최신버전인 10.1.19 버전으로 설치했습니다.

mariaDB를 설치파일 형식으로 받았더라면 설치 할때 자동으로 서비스 등록이 되겠지만 (안해봤음)
난 그냥 zip 파일로 받아 설치했기 때문에 윈도우 서비스에 등록을 해줘야 함.

cmd 창에서 mariaDB/bin 에 가서 아래 명령을 입력한다.

mysql_install_db –datadir=db가 저장될 경로 –service=서비스등록할이름 –password=루트패스워드
예제) mysql_install_db –datadir=C:\Server\mariadb\data –service=MariaDB –password=123456789

윈도우 서비스 항목에 가면 MariaDB라는 항목이 추가 되어 있는데 자동실행 버튼을 눌러준다.

php와 마찬가지로 폴더를 보면 my-huge.ini, my-innodb-heavy-4G.ini, my-large.ini, my-medium.ini, my-small.ini
파일이 있는데 이중 자기 서버와 비슷한 사양으로 골라 파일 복사해서 my.ini 파일로 변경하면 됩니다.
(파일을 열어보면 주석으로 설정시스템에 대해 대략 설명이 있음)
my.ini 파일은 mariaDB\data 폴더 안에 있어야 적용됩니다.

#데이터 경로 
datadir=C:/Server/mariadb/data

#UTF-8 기본세팅
character_set_server=utf8

#slow query log-bin
slow_query_log=1
long_query_time=5

위 내용은 my.ini 파일에 추가해줄것들.
기본  my-huge.ini파일 안에는 데이터 경로가 없어서  위에 데이터 경로는 반드시 추가해줘야 함.
나머지는 취향따라

 

 

5. 실행작업
세팅은 다 됬으니 서버가동법을 정리합니다.
사실 위에 linsooServerStart를 사용하면 그냥 버튼만 눌러도 되는데
저거 사용하기 찜찜해 하시는 분들을 위해 정리합니다.

– nginx
해당 폴더가서 nginx 를 실행하면 된다.

– php
cmd창에서 php-cgi -b 127.0.0.1:9000 -c C:/Server/php/php.ini 를 입력한다.

– mariaDB
윈도우 서비스 서버 자동시작 눌렀으면 됨.

CMD창에서 입력하면 위 이미지 처럼 뜨는데 이 창을 종료하면 안됩니다.

아직까진 백업기능이 작동하기에 티스토리에 글을 작성하고 있지만 백업기능이 막히는 21일이 되면
더 이상 티스토리에 글은 올라오지 않을예정이고
워드프레스 설정이 다 되는 날에 다시 글 작성을 할 예정임.

현재 워드프레스 테스트 서버주소는 blog.linsoo.co.kr
테스트 서버를 24시간 돌리는게 아니라서 접속이 됬다 안됬다 함.


크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

“nginx+php+mariaDB 서버 세팅하기”에 대한 21개의 댓글

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.