티스토리 뷰
NAS 보다는 성능이 못하지만, 간단한 기능이라면 uptime이 보다 안정적인 공유기에서 웹서버를 돌리는 것이 낫다는 것이 개인적인 판단이다.
참고삼아 지금까지 N56U에 올라간 기능을 보면,
이 있다.
두 가지 문서를 참고하여 진행된다.
https://www.hqt.ro/nginx-web-server-with-php-support-through-entware/
https://wiki.openwrt.org/doc/howto/http.nginx#fastcgi_params
당연히 custom firmware의 entware가 올라가 있다고 가정하고 진행한다. 그나저나 padavan의 google project page가 옮겨지면서 wiki가 다 날아가는 바람에 나중에 다시 entware를 올려야 할 때는 꽤 고생할 듯.
패키지를 업데이트하고,
opkg update
opkg upgrade
php5-fastcgi와 nginx를 설치한다.
opkg install php5-fastcgi nginx
dependency가 있는 패키지 두어개가 같이 설치 된다.
nginx의 configuration 파일(/opt/etc/nginx/nginx.conf)을 아래와 같이 수정한다.
user nobody;
worker_processes 1;
events {
worker_connections 64;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root /opt/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /opt/share/nginx/50x.html {
root html;
}
location ~ \.php$ {
root /opt/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
첫번째 링크의 내용을 가져왔는데, 사실 기본으로 설치되는 설정 파일과 크게 다를바가 없다. 나 같은 경우는 첫 줄의 user nobody를 주석처리해 주고, listen 포트 번호, root를 알맞게 설정해 주었다. 포트의 경우에는 공유기 설정 페이지로 동작하는 httpd와 충돌할 수 있으니 중복이 되면 안된다. 그리고 fastcgi_param 부분도 정확히 입력해 주어야 한다.
/opt/etc/php.ini 파일 중 document root 부분을 nginx.conf의 root와 같게 수정한다.
doc_root = "YOUR/DOCUMENT/ROOT"
그런데 여러 개의 server block으로 virtual host를 구성할 생각이라면 이 부분을 빈칸으로 두어야 한다. 참고 그냥 해당 라인을 세미콜론으로 주석처리 해버리면 된다. 그리고 nginx.conf에서 각각의 서버 블록에 맞게 아래와 같이 설정한다.
fastcgi_param SCRIPT_FILENAME /opt/share/nginx/html/site1/$fastcgi_script_name;
/opt/etc/init.d/S80php5-cgi 위치에 실행 스크립트를 생성한다.
#!/bin/sh
ENABLED=yes
PROCS=php5-cgi
ARGS=""
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
. /opt/etc/init.d/rc.func
start() {
php-cgi -b 127.0.0.1:9000 &
logger -st php-cgi "\$0" "started"
exit 0
}
stop() {
killall -9 php-cgi
}
restart() {
stop
sleep 2
start
}
status() {
ps | grep -i php-cgi
}
case "\$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status) status
;;
*)
echo "Usage: (start|stop|restart|status)"
exit 1
;;
esac
echo Done.
exit 0
실행 권한을 부여하고,
chmod +x /opt/etc/init.d/S80php5-cgi
/opt/etc/init.d/rc.func에 실행 권한이 없어서 permission error가 날 수도 있는데 그러면 얘도 실행 권한을 줘버린다. (이러면 보안 문제가 생길 수도?)
서버를 실행해 본다.
/opt/etc/init.d/S80nginx start
/opt/etc/init.d/S80php5-cgi start
check에서 alive가 아니면 nginx 설정 파일에 문제가 있는 것이다.
/opt/etc/init.d/S80nginx check
적당한 php 파일을 만들어서 테스트 해 본다.
<?php
phpinfo();
?>
참고로 php 확장자 파일만 동작한다. html 파일안에서는 동작하지 않는 것을 뒤늦게 알았다.
끝났다. 사실 첫번째 링크가 거의 대부분이다. 해놓고 보면 별 것 아닌데 삽질 할때는 너무 시간이 빨리간다.
'생활 속 > 홈서버' 카테고리의 다른 글
Synology Transmission 백업 (26) | 2016.01.19 |
---|---|
Synology DSM 알림을 Telegram으로 받기 (26) | 2016.01.17 |
TS140에 Intel AMT와 ESXi 설정 (0) | 2015.08.18 |
Intel NUC WOL 문제 (0) | 2015.06.06 |
Synology에서 transmission으로 토렌트 이용하기 (25) | 2015.05.24 |