Nginx安装

网上看别人写的 nginx 服务器配置 ,有的是源码包安装的,有的时 yum 安装的。如果是新手,可能会有疑问,这两种安装方式有什么区别?我应该使用哪种方式?系统里可以两个都安装可以吗?怎么卸载?等等问题,那么在这里,我做下总结,详细介绍下这两种方式。

yum和源码包安装的区别

  • yum 安装是在线安装,好处是:安装方式简单,不易出错;
  • 源码包 安装是先将 nginx 的源码下载下来,在自己的系统里编译生成可执行文件,然后执行,好处是:因为是在自己的系统上编译的,更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务性能效率更好。

安装路径不同

他们之间最大的区别是 :安装位置不同

  1. YUM安装路径

yum 在线安装会将 nginx 的安装文件放在系统的不同位置,可以通过命令 rpm -ql nginx 来查看安装路径,如下所示:

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
➜  ~ rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/ssl.conf
/etc/nginx/conf.d/virtual.conf
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/etc/rc.d/init.d/nginx
/etc/sysconfig/nginx
/usr/lib/perl5/vendor_perl/auto/nginx
/usr/lib/perl5/vendor_perl/auto/nginx/nginx.so
/usr/lib/perl5/vendor_perl/nginx.pm
/usr/sbin/nginx
/usr/share/doc/nginx-1.0.15
/usr/share/doc/nginx-1.0.15/CHANGES
/usr/share/doc/nginx-1.0.15/LICENSE
/usr/share/doc/nginx-1.0.15/README
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx

卸载的时候,只能通过 命令来卸载,因为我们不可能 将这些文件自己手动删除,可以通过命令 rpm -e nginx 来卸载,这个命令一般不会报错,因为 nginx 不与其他的包有依赖关系,如果提示关于 依赖包的问题 ,可以尝试 rpm -e --nodeps nginx 来卸载,这个命令相当于强制卸载,不考虑依赖问题。

  1. 源码包安装路径

源码包 安装他的所有文件(包括配置文件,库文件,资源文件等)都在同一个目录下,我们想卸载的时候,直接将这个文件删除就可以,不会有任何垃圾文件存在。
通过源码包编译安装的软件,通常都放在 /usr/local/包名 路径下。

启动方式不同

  1. YUM安装启动

yum 安装 nginx,我们可以通过系统服务命令 service 来启动或停止

1
2
3
4
5
service nginx start 	#启动 nginx 服务

service nginx stop #停止 nginx 服务

service nginx restart #重启 nginx 服务
  1. 源码包安装启动

源码包 安装 nginx 启动的时候不能使用 service 来启动,需要执行 nginx 安装目录下的 sbin 目录下的 nginx 可执行程序才行,如下(我的 nginx 安装在 /usr/local/webserver/ 目录下)

1
2
3
/usr/local/webserver/nginx/sbin/nginx          	#启动 nginx 服务
/usr/local/webserver/nginx/sbin/nginx -s stop #停止 nginx 服务
/usr/local/webserver/nginx/sbin/nginx -s reload #重启 nginx 服务

或者 直接进入安装目录 ,执行 ./nginx 也可以,这两种方式其实是一样的,. 表示当前目录

1
2
3
4
5
cd /usr/local/webserver/nginx/sbin 
./nginx #启动 nginx 服务
./nginx -s stop #停止 nginx 服务
./nginx -s reload #停止 nginx 服务
注意:在自己的系统中只用选择一种安装方式即可,yum安装的nginx版本可能不是最新的,可以通过源码包安装最新的,但系统中只要一种就可以,如果你想安装两个安装也可以,但是他们监听的端口都是80端口,每次只能启动一个

好,先讲了区别,下面来看一下安装方式

yum安装

使用 yum 安装是在线安装,直接使用命令安装即可

1
yum install nginx

源码包安装

我的系统 centos7.3 64位,首先安装缺少的依赖包:

1
yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

http://nginx.org/en/download…. 下载最新稳定版 nginx-1.15.5.tar.gz ,下载的压缩文件 放在任意地方都可以,但是建议放在 /usr/local/src 或者 /root/ 下,/usr/local/src 就是系统专门给用户分配的放 源码的目录,/root/ 是我们默认操作的目录,所以也可以放在这里。我就是下载放在 /root/ 目录下的。

下载可以通过命令获取:

1
wget http://nginx.org/download/nginx-1.15.5.tar.gz

解压缩:

1
tar -zxvf nginx-1.15.5.tar.gz

解压缩后,可以看到 nginx-1.10.1 目录,然后进入这个目录,在 nginx-1.15.5目录下执行配置 和 make 命令。

1
2
3
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
# --prefix指定安装路径,--with安装额外模块
make && make install

常用编译选项说明

这段说明,参考自:https://segmentfault.com/a/11…

  • --prefix=PATH : 指定 nginx 的安装目录。默认 /usr/local/nginx,我的是 /usr/local/webserver/nginx
  • --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为conf/nginx.conf
  • --user=name : 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody--group=name类似
  • --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用–with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(8.39)并解压,指定 pcre 的源码路径 ,比如:--with-pcre=/root/pcre-8.39/。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
  • --with-zlib=PATH : 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
  • --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是opensslopenssl-devel已安装
  • --with-http_stub_status_module : 用来监控 Nginx 的当前状态
  • --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IPX-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
  • --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

常用命令

1
2
3
4
5
6
7
8
9
/usr/local/webserver/nginx/sbin/nginx          	#启动 nginx 服务
/usr/local/webserver/nginx/sbin/nginx -s stop #停止 nginx 服务
/usr/local/webserver/nginx/sbin/nginx -s reload #重启 nginx 服务
cd /usr/local/webserver/nginx/sbin #cd到nginx安装目录
./nginx #启动 nginx 服务
./nginx -s stop #停止 nginx 服务
./nginx -s reload #停止 nginx 服务
ps -aux | grep nginx #查看进程
kill -QUIT 2072 #从容停止