• Nginx安装方式探究


    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的部分截图:

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

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

    1 $ nginx -V
    2 nginx version: nginx/1.14.0
    3 built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
    4 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。

    疑问: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 -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

    上图使用了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等操作。

    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,才对这个问题有了更深刻的印象;

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

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

  • 相关阅读:
    文件读写
    使用HttpClient实现文件的上传下载
    TreeMap
    Linux的目录结构与文件权限
    Hibernate中get()和load()方法的区别
    Hibernate中openSession()与getCurrentSession()的区别与联系
    Hibernate核心类和接口
    Hibernate连接数据库
    Struts2中OGNL表达式的用法
    Struts2中Result的配置
  • 原文地址:https://www.cnblogs.com/luo630/p/9442119.html
Copyright © 2020-2023  润新知