0x00 前言
之前的服务器一直使用的lnmp自动化安装脚本来安装nginx, php-fpm等服务器环境,lnmp脚本有个缺点就是你可以一次性安装nginx, php-fpm, MySQL,但是你不能去分别安装这些服务,而且nginx貌似还不能自己加模块的样子。所以,喜欢瞎折腾的我边学边试了一把自己编译安装这些环境,记录一下,以便备忘。
0x01 编译安装Nginx
安装所必需的依赖:
1 2 apt-get update && apt-get upgrade # 更新源和升级软件 apt-get install gcc g++ make openssl libssl-dev libpcre3-dev # 安装必需的依赖
下载Nginx及ngx_cache_purge缓存模块(非必需):
1 2 3 4 5 6 7 8 9 cd ~ # 切换目录 # 下载并解压nginx-1.10.3 wget http://nginx.org/download/nginx-1.10.3.tar.gz tar zxvf nginx-1.10.3.tar.gz cd nginx-1.10.3 # 下载并解压ngx_cache_purge(非必需) wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz tar zxvf ngx_cache_purge-2.3.tar.gz cd ..
添加Nginx运行时所使用的用户和用户组(如果你想使用现有的用户,此步可忽略):
1 2 groupadd -f www useradd -g www www
检查配置:
1 2 3 4 5 6 7 8 9 10 11 12 ./configure \ --user=www \ --group=www \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_v2_module \ --with-http_sub_module \ --add-module=ngx_cache_purge-2.3
如果它提示缺少什么模块的话,那就可以使用如下命令解决
1 apt-get install lib缺少的模块名-dev # 例如libssl-dev
编译安装:
检查配置无误之后就可以编译安装了
添加服务
添加服务之后,我们就可以方便地使用service
来进行重启,关闭等操作了
执行命令:
然后填写以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 #! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/nginx/sbin/nginx NAME=nginx DESC=nginx DAEMON_OPTS='' test -x $DAEMON || exit 0set -e. /lib/lsb/init-functions case "$1 " in start) echo -n "Starting $DESC : " start-stop-daemon --start --quiet --pidfile /var/run/$NAME .pid \ --exec $DAEMON || true echo "$NAME ." ;; stop) echo -n "Stopping $DESC : " start-stop-daemon --stop --quiet --pidfile /var/run/$NAME .pid \ --exec $DAEMON || true echo "$NAME ." ;; restart|force-reload) echo -n "Restarting $DESC : " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME .pid --exec $DAEMON || true sleep 1 start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME .pid --exec $DAEMON || true echo "$NAME ." ;; reload) echo -n "Reloading $DESC configuration: " start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME .pid \ --exec $DAEMON || true echo "$NAME ." ;; status) status_of_proc -p /var/run/$NAME .pid "$DAEMON " nginx && exit 0 || exit $? ;; *) echo "Usage: $NAME {start|stop|restart|reload|force-reload|status}" >&2 exit 1 ;; esac exit 0
添加权限
1 2 chmod +x /etc/init.d/nginx update-rc.d nginx defaults
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
添加软连接
1 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
添加了软连接之后,我们就可以在shell中直接使用nginx命令了
0x02 参考资料
php-fpm and nginx init.d script