一、准备
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
新闻热点
疑难解答