一、準備
pcre,有關正則表達式匹配;zlib,用于壓縮。這些就不細說了,如果要安裝最簡版的nginx,記得準備好這兩樣東西就好了。
用root賬戶啟動服務是比較危險的! 前段時間,測試服務器被黑掉了,終歸到底是通過一個root啟動的服務上傳了木馬,最后連ssh都屏蔽了,活生生成為一臺肉雞。。。
所以,慘痛的經驗告訴我,一定要為服務建立對應的組和用戶,限制訪問權限,降低風險!
這里為nginx建立一個www組,并建立一個不登錄的賬戶nginx:
#追加一個www組 groupadd -f www #追加一個nginx用戶 useradd -s /sbin/nologin -g www nginx
建立一個目錄用于存放nginx日志文件,并賦予相應權限:
#建立nginx日志目錄 mkdir /var/log/nginx #賦予訪問權限 chown nginx.www /var/log/nginx
二、編譯安裝
我把pcre、zlib、nginx的壓縮包都放在了/opt/software路徑下,服務要裝在/opt/servers路徑下。
先對pcre、zlib、nginx解壓,然后編譯安裝:
./configure --prefix=/opt/servers/nginx / --user=nginx / --group=www / --pid-path=/var/run/nginx.pid / --error-log-path=/var/log/nginx/error.log / --http-log-path=/var/log/nginx/access.log / --with-pcre=/opt/software/pcre-8.10 / --with-zlib=/opt/software/zlib-1.2.5 / --with-http_stub_status_module / --with-http_realip_module / --with-http_gzip_static_module / --without-http_fastcgi_module / --without-http_memcached_module / --without-http_map_module / --without-http_geo_module / --without-http_autoindex_module / --with-poll_module && make && make install
三、系統配置
我希望nginx可以作為一個服務,通過service命令啟動或停止。
這樣做的好處是,不論我用什么用戶調用這個service命令,都不會因為使用錯誤的賬戶帶來安全問題。
建立一個系統文件:
vim /etc/init.d/nginx
前人栽樹,后人乘涼。已經有老鳥做好了啟動配置文件:
#!/bin/bash # v.0.0.1 # create by jackbillow at 2007.10.15 # nginx - This shell script takes care of starting and stopping nginx. # # chkconfig: - 60 50 # description: nginx [engine x] is light http web/proxy server # that answers incoming ftp service requests. # processname: nginx # config: /etc/nginx.conf nginx_path="/opt/servers/nginx" nginx_pid="/var/run/nginx.pid" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginx_path/sbin/nginx ] || exit 0 RETVAL=0 prog="nginx" start() { # Start daemons. if [ -e $nginx_pid -a ! -z $nginx_pid ];then echo "nginx already running...." exit 1 fi if [ -e $nginx_path/conf/nginx.conf ];then echo -n $"Starting $prog: " $nginx_path/sbin/nginx -c $nginx_path/conf/nginx.conf & RETVAL=$? [ $RETVAL -eq 0 ] && { touch /var/lock/subsys/$prog success $"$prog" } echo else RETVAL=1 fi return $RETVAL } # Stop daemons. stop() { echo -n $"Stopping $prog: " killproc -d 10 $nigx_path/sbin/nginx RETVAL=$? echo [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL
新聞熱點
疑難解答