1、安装 gcc 编译器
[root@CentOS ~]# yum -y install gcc
2、安装依赖库
由于Nginx 的一些模块需要依赖其他第三方库,通常有 pcre 库(支持 rewrite 模块),zlib 库(支持 gzip 模块),和openssl(支持 ssl 模块)等。
[root@CentOS ~]# yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
3、下载安装包
[root@CentOS local]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
4、解压安装包
[root@CentOS local]# tar -zxvf nginx-1.12.2.tar.gz nginx-1.12.2/ nginx-1.12.2/auto/ nginx-1.12.2/conf/ nginx-1.12.2/contrib/ nginx-1.12.2/src/ nginx-1.12.2/configure nginx-1.12.2/LICENSE nginx-1.12.2/README nginx-1.12.2/html/ nginx-1.12.2/man/ ......(略去内容)......
5、创建名为 nginx 的目录,用于保存编译安装后的文件
[root@CentOS local]# mkdir nginx [root@CentOS local]# ll 总用量 960 drwxr-xr-x. 2 root root 6 2月 24 16:18 bin drwxr-xr-x. 2 root root 6 11月 5 2016 etc drwxr-xr-x. 2 root root 6 11月 5 2016 games drwxr-xr-x. 2 root root 6 11月 5 2016 include drwxr-xr-x. 2 root root 6 11月 5 2016 lib drwxr-xr-x. 2 root root 6 11月 5 2016 lib64 drwxr-xr-x. 2 root root 6 11月 5 2016 libexec drwxr-xr-x. 10 root root 141 2月 24 19:03 mysql drwxr-xr-x. 6 root root 54 3月 10 00:54 nginx # 这里是刚创建的 nginx 目录 drwxr-xr-x. 9 mysql mysql 186 3月 10 00:53 nginx-1.12.2 # 这里是解压后的目录 -rw-r--r--. 1 root root 981687 10月 17 21:20 nginx-1.12.2.tar.gz drwxr-xr-x. 2 root root 6 11月 5 2016 sbin drwxr-xr-x. 5 root root 49 1月 30 14:30 share drwxr-xr-x. 2 root root 6 11月 5 2016 src
6、生成Makefile
[root@CentOS local]# cd nginx-1.12.2/ [root@CentOS nginx-1.12.2]# ./configure --prefix=/usr/local/nginx
--prefix 参数用于指定编译安装的目录,即 /usr/local/nginx。另外,我们可以看到在 /usr/local/nginx-1.12.2 目录下新生成的 Makefile 文件:
[root@CentOS nginx-1.12.2]# ll 总用量 708 drwxr-xr-x. 6 mysql mysql 4096 3月 10 00:52 auto -rw-r--r--. 1 mysql mysql 278202 10月 17 21:16 CHANGES -rw-r--r--. 1 mysql mysql 423948 10月 17 21:16 CHANGES.ru drwxr-xr-x. 2 mysql mysql 168 3月 10 00:52 conf -rwxr-xr-x. 1 mysql mysql 2481 10月 17 21:16 configure drwxr-xr-x. 4 mysql mysql 72 3月 10 00:52 contrib drwxr-xr-x. 2 mysql mysql 40 3月 10 00:52 html -rw-r--r--. 1 mysql mysql 1397 10月 17 21:16 LICENSE -rw-r--r--. 1 root root 376 3月 10 00:54 Makefile # 这里是刚生成的 Makefile 文件 drwxr-xr-x. 2 mysql mysql 21 3月 10 00:52 man drwxr-xr-x. 3 root root 174 3月 10 00:54 objs -rw-r--r--. 1 mysql mysql 49 10月 17 21:16 README drwxr-xr-x. 9 mysql mysql 91 3月 10 00:52 src [root@CentOS nginx-1.12.2]#
7、编译并安装
[root@CentOS nginx-1.12.2]# make && make install
[root@CentOS local]# cd nginx [root@CentOS nginx]# ll 总用量 4 drwxr-xr-x. 2 root root 4096 3月 10 00:54 conf drwxr-xr-x. 2 root root 40 3月 10 00:54 html drwxr-xr-x. 2 root root 6 3月 10 00:54 logs drwxr-xr-x. 2 root root 19 3月 10 00:54 sbin [root@CentOS nginx]#
8、启动Nginx
[root@CentOS nginx]# ll 总用量 4 drwxr-xr-x. 2 root root 4096 3月 10 00:54 conf drwxr-xr-x. 2 root root 40 3月 10 00:54 html drwxr-xr-x. 2 root root 6 3月 10 00:54 logs drwxr-xr-x. 2 root root 19 3月 10 00:54 sbin [root@CentOS nginx]# ./sbin/nginx # 启动 Nginx [root@CentOS nginx]# ps -ef | grep nginx # 确认 Nginx 进程是否已存在 root 13511 1 0 01:13 ? 00:00:00 nginx: master process ./sbin/nginx nobody 13513 13511 0 01:13 ? 00:00:00 nginx: worker process root 13517 3494 0 01:13 pts/0 00:00:00 grep --color=auto nginx [root@CentOS nginx]#
9、在 /etc/init.d 目录下创建 nginx 脚本
[root@CentOS init.d]# touch nginx [root@CentOS init.d]# chmod u+x nginx # 给脚本添加用户执行权限 [root@CentOS init.d]# ll 总用量 48 -rw-r--r--. 1 root root 15131 9月 12 2016 functions -rwxr-xr-x. 1 root root 10576 2月 24 18:57 mysql -rwxr-xr-x. 1 root root 2989 9月 12 2016 netconsole -rwxr-xr-x. 1 root root 6643 9月 12 2016 network -rwxr--r--. 1 root root 0 3月 10 01:55 nginx # 可以看到刚创建的脚本 nginx -rw-r--r--. 1 root root 1160 11月 7 2016 README -rwxr--r--. 1 root root 450 3月 2 22:50 svnd [root@CentOS init.d]#
nginx 脚本内容如下:
#!/bin/bash # chkconfig: - 85 15 PATH=/usr/local/nginx DESC="nginx daemon" NAME=nginx DAEMON=$PATH/sbin/$NAME CONFIGFILE=$PATH/conf/$NAME.conf PIDFILE=$PATH/logs/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON -c $CONFIGFILE || echo -n "nginx already running" } do_stop() { $DAEMON -s stop || echo -n "nginx not running" } do_reload() { $DAEMON -s reload || echo -n "nginx can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; reload|graceful) echo -n "Reloading $DESC configuration..." do_reload echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2 exit 3 ;; esac exit 0
10、启动或停止 nginx 服务
[root@CentOS init.d]# service nginx start Starting nginx daemon: nginx. [root@CentOS init.d]# ps -ef | grep nginx # 确认 nginx 服务已启动 root 14696 1 0 02:01 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nobody 14699 14696 0 02:01 ? 00:00:00 nginx: worker process root 14702 3494 0 02:02 pts/0 00:00:00 grep --color=auto nginx [root@CentOS init.d]#
[root@CentOS init.d]# service nginx stop Stopping nginx daemon: nginx. [root@CentOS init.d]# ps -ef | grep nginx # 确认 nginx 服务已停止 root 14734 3494 0 02:02 pts/0 00:00:00 grep --color=auto nginx [root@CentOS init.d]#
11、将 nginx 服务添加到系统服务,并设置为开机启动
[root@CentOS init.d]# chkconfig --add nginx [root@CentOS init.d]# chkconfig nginx on 注意:正在将请求转发到“systemctl enable nginx.service”。 Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. [root@CentOS init.d]#