Nginx安装方式探究

时间:2023-12-12 11:35:26

Ubuntu 16.04(阿里云ECS),Nginx 1.10.3 (Ubuntu)

本文探究两种安装方式:

1.源码安装(手动)

2.APT安装(自动)

源码安装(手动)

步骤简介:

下载、解压、./configure、make、make install(好像可以不要),,后面还要把nginx命令添加到环境变量PATH中、设置随机启动等工作。

下载:$ wget http://nginx.org/download/nginx-1.15.2.tar.gz

解压:$ tar -zxvf nginx-1.15.2.tar.gz

进入解压后的Nginx目录,执行./configure ...、make、make install进行安装。

安装到了/home/username/server/nginx中,安装目录下包括配置文件conf子目录下的nginx.conf。

在/etc/profile文件中将家目录下nginx添加到环境变量中:export命令

在/etc/rc.local文件(本地的Ubuntu 18.04中没有找到)设置Nginx随机启动:/home/username/server/nginx/sbin/nginx

重启后,可以看到Nginx服务已经启动了:ps -ef | grep nginx。

其中,./configure这一步是重难点,它具有很多参数,用来配置将要安装什么样的Nginx——包含什么模块、具备什么功能,请参考下文:

Nginx 服务器安装及配置文件详解

--prefix选项指定安装目录(必须吧?),不过,自己并不很清楚要把软件要安装在哪里,于是就安装在了家目录下,可是,后面的操作就比较麻烦了。

上面链接文档中关于./configure的部分截图:

Nginx安装方式探究

之前自己参考了另一篇博文(Linux下Nginx安装的方法(pcre和openssl))进行源码安装,结过,在和使用APT安装后的Nginx对比后发现其好像太简单了。

为什么会这么说呢?因为nginx命令的-V(大写V)选项的输出结果太简单了:

 $ nginx -V
nginx version: nginx/1.14.
built by gcc 5.4. (Ubuntu 5.4.-6ubuntu1~16.04.)
configure arguments: --prefix=/home/ben/server/nginx/ --with-openssl=/usr/lib/ssl/

而使用APT安装后,执行nginx -V得到的是什么呢?见下图:

好多内容,好完整!不过,其版本为1.10.3,比使用源码的要低。

这和阿里云ECS的Ubuntu 16.04配置的APT源(/etc/apt/sources.list)有关系吧!

要升级的话,看来需要自己配置源,然后重新安装?或者,升级apt upgrade。

Nginx安装方式探究

疑问:pcre和Nginx的正则匹配有关系,openssl呢?和使用Nginx支持HTTPS有关系?

APT安装(自动)

步骤简介:

使用sudo apt update检查可安装软件列表;

使用apt-cache search nginx | grep nginx查看可以安装的Nginx服务器,找到下面的:

nginx - small, powerful, scalable web/proxy server

使用sudo apt install nginx进行安装(输入y确认安装);

注意,参考上面的源码安装使用的参考文档,在安全前得确保pcre、openssl已经安装成功(具体原因不是很清楚)。其中,参考文档里面安装了openssl-dev,但在APT源中没有找到,据说在Ubuntu中是用libssl-dev:

Nginx安装方式探究

安装完毕后,使用nginx -V可以查看到本文前面一张图的信息,其中的configure arguments更多,显得更完整了。

对了,其中还有--with-pcre-jit、--with-http_ssl_module、--with-stream_ssl_module、--with-mail_ssl_module等。

猜测:可以把这个configure arguments复制到源码安装的./configure那里吧?这样的话,源码安装和APT安装后的结果应该就一致了。

在惊叹nginx -V命令的结果如此多之后,仔细查看其结果,发现其中包含了Nginx服务器启动后的配置文件、日志文件、PID文件的信息:

/etc/nginx/目录、/var/log/nginx/目录、/run/nginx.pid文件

至于其中的其它几个路径,自己并不是太懂。

关于Nginx的配置,自己前面写了一篇博文介绍APT安装Nginx的,当然,新手之作,就不是那么完全了。

另外,在使用APT安装Nginx之后,Nginx程序已经被添加到Linux服务中了,使用下面的命令可以查看其状态:

service --status-all

Nginx安装方式探究

上图使用了grep nginx只是查找nginx服务的信息。可以看到,在红色的nginx前面的中括号中是加号(+),这表示Nginx服务已经启动了,没有启动则为减号(-)。

说明,自己对Linux服务程序还是不太清楚,需要dig,在/etc/init.d/目录中的脚本都是服务吧?写好脚本,使用update-rc.d命令安装服务就可以了——前面看的资料是这样的。

知道Nginx程序被设置为Nginx服务了,那么,服务的启动、停止、重启、重载呢?使用service nginx命令可以看到下面的结果:

$ service nginx
Usage: nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

这些命令的具体用法其实是写在/etc/init.d/nginx脚本中的,熟悉shell编程的话,可以仔细看看——目前自己的功力是不够的,但却更需要读懂它!

前面自己使用的多的命令是service nginx -s reload,多了一个-s,可上面的Usage中却没有提及。

原来,使用nginx -h命令可以获得相关信息啊!其中的-s选项表示 发送信号给master进程执行stop、quit、reopen、reload等操作。

Nginx安装方式探究

APT安装方式怎么卸载呢?

sudo apt remove nginx,或者,sudo apt-get remove/purge nginx?自己没有试过,TBD。不知道这样的方式卸载是否能卸载干净。会存在什么问题呢?因为对Linux尚不精通,就不再多说了。

安装完Nginx后,只需要在/etc/nginx/目录下修改Nginx的配置就可以了,修改完毕后,执行sudo nginx -s reload重载Nginx访问。

顺便说一下,可以使用curl命令来测试Nginx提供的内容是否符合预期,这样就不需要通过浏览器来打开页面进行验证了,很棒的工具!如有文件下载功能,还可以使用wget命令进行测试!是的,这两个命令也得精通!使用curl时,感觉就像用上了爬虫工具!

08-08 14:29补充:

APT安装后的网页文件从哪儿来的呢?答案可以从/etc/nginx/nginx.conf中找到——server下的root显示为/var/www/html、index为index.html index.htm index.nginx-debian.html,而在/var/www/html目录中发现了一个index.nginx-debian.html,此即为Nginx服务器默认展示的首页,修改后,或添加一个index.html到其中,首页立即改变。

08-08 14:36补充:

Nginx服务启动后,存在一个mast进程和若干个worker进程,worker进程的数量由Nginx的配置决定。

需要注意的是,master进程的用户显示为root,worker进程的用户显示为www-data,也是由配置文件决定。

查看Nginx的进程信息:

$ ps -ef | grep nginx
root 3152 1 0 12:25 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 3170 3152 0 12:25 ? 00:00:00 nginx: worker process

配置文件:

$ cat /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

两种安装方式比较

1.源码安装比较繁琐(和自己不精通./configure有很大关系),安装后还要自己配置添加环境变量、配置随机启动等;而APT安装较为简单——如果没有配置APT源的话就更是简单了,本文没有介绍;

2.源码安装可以增强对Linux的了解、探索,期间会遇到不少问题,适合新手——在解决问题的过程中提高了对Linux及被安装的熟悉程度;而APT安装方式的效果则没有这么好了;

3.源码安装的软件可以直接选择最新的软件版本——只要支持所选操作系统;而APT安装方式则受制于APT源提供的——可以添加、更新;

在经历过源码安装后,对Linux更加熟悉后,目前自己选择使用APT方式来安装Nginx。

后记

需要精通shell编程,否则,启动脚本都读不懂;

需要熟悉Linux各种目录的用法,否则,源码安装时都不知道把软件安装在哪里;

这个问题存在好几天了,之前自己一直处于”漫漫长的困惑期“,看了很多资料,但都没有明确的”答案“,于是,今天自己勤快了一点,重新安装了Nginx,才对这个问题有了更深刻的印象;

写博文很重要,可以整理、复习,传播自己的有效经验,以及记录自己的困惑;

要是没写这篇博文,估计自己还要困惑下去,无法做出决定,是的,做决定!