Linux安装Nginx

Linux安装Nginx



写在前面

  • Linux版本:CentOS7.5
  • Nginx版本:Nginx-1.21.6
  • 全文是在root用户执行命令的

Nginx的前置芝士

百度百科的介绍

Nginx (engine x) 是一个高性能的HTTP反向代理web服务器 [13] ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

版本区别

常用版本分为四大阵营

  • Nginx开源版

nginx.org/

  • Nginx plus 商业版

www.nginx.com

  • openresty

openresty.org/cn/

  • Tengine

tengine.taobao.org/

开源版和openresty用得是比较多的

正式安装

下载开源版本

进入一下网站:nginx.org/en/download…

Linux安装Nginx

根据自己的操作系统,选择稳定的版本下载即可,此处本人使用的是Nginx-1.21.6版本(Linux)

下载完后将tar包上传至Linux下的 /opt/software目录下

解压下载的tar包

  • 解压
[root@nginx01 software]pwd
/opt/software
[root@nginx01 software]tar -xvf nginx-1.21.6.tar.gz -C /usr/local/src

注意:直接解压Nginx并不是就是安装了Nginx,解压后得到的只是源码,(当你编译并成功安装Nginx之后,源码目录时刻要删除的)安装Nginx是需要编译的,请见下文!

  • 进入到解压后的目录(/usr/local/src)
[root@nginx01 nginx-1.21.6]$ pwd
/usr/local/src/nginx-1.21.6

编译安装

  • 开始编译

我们可以看到当前目录(源码解压目录)下存在一个名为 configure的命令,这个命令就是执行编译的意思,

[root@nginx01 nginx-1.21.6]$ ./configure --prefix=/usr/local/nginx

参数解释:--prefix就是指定编译后的Nginx的安装目录,但是一开始我们是无法编译成功的,上文中,百度百科说到了Nginx是C语言编写的,那么编译的时候自然是需要gcc等环境的,报错如下图所示:

Linux安装Nginx

  • 请分别执行以下的安装命令
[root@nginx01 nginx-1.21.6]yum install -y gcc
[root@nginx01 nginx-1.21.6]yum install -y pcre pcre-devel
[root@nginx01 nginx-1.21.6]yum install -y zlib zlib-devel

执行后的结果如下图所示:

Linux安装Nginx

  • 执行make命令进行编译
[root@nginx01 nginx-1.21.6]make

执行后的结果如下图所示:

Linux安装Nginx

  • 执行编译安装命令 make install
[root@nginx01 nginx-1.21.6]# make install
make -f objs/Makefile install
make[1]: 进入目录“/usr/local/src/nginx-1.21.6”
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin' \
 || mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx' \
 || mv '/usr/local/nginx/sbin/nginx' \
  '/usr/local/nginx/sbin/nginx.old'
cp objs/nginx '/usr/local/nginx/sbin/nginx'
test -d '/usr/local/nginx/conf' \
 || mkdir -p '/usr/local/nginx/conf'
cp conf/koi-win '/usr/local/nginx/conf'
cp conf/koi-utf '/usr/local/nginx/conf'
cp conf/win-utf '/usr/local/nginx/conf'
test -f '/usr/local/nginx/conf/mime.types' \
 || cp conf/mime.types '/usr/local/nginx/conf'
cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'
test -f '/usr/local/nginx/conf/fastcgi_params' \
 || cp conf/fastcgi_params '/usr/local/nginx/conf'
cp conf/fastcgi_params \
 '/usr/local/nginx/conf/fastcgi_params.default'
test -f '/usr/local/nginx/conf/fastcgi.conf' \
 || cp conf/fastcgi.conf '/usr/local/nginx/conf'
cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'
test -f '/usr/local/nginx/conf/uwsgi_params' \
 || cp conf/uwsgi_params '/usr/local/nginx/conf'
cp conf/uwsgi_params \
 '/usr/local/nginx/conf/uwsgi_params.default'
test -f '/usr/local/nginx/conf/scgi_params' \
 || cp conf/scgi_params '/usr/local/nginx/conf'
cp conf/scgi_params \
 '/usr/local/nginx/conf/scgi_params.default'
test -f '/usr/local/nginx/conf/nginx.conf' \
 || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs' \
 || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' \
 || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
 || cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
 || mkdir -p '/usr/local/nginx/logs'
make[1]: 离开目录“/usr/local/src/nginx-1.21.6”

可以看到,make install目录执行完后已经将一些命令拷贝到目录里面了

启动

Nginx的启动命令是存放在sbin目录下的 nginx

[root@nginx01 sbin]# pwd
/usr/local/nginx/sbin
[root@nginx01 sbin]# ls
nginx
[root@nginx01 sbin]# ./nginx 
[root@nginx01 sbin]# ps -ef | grep nginx
root       4016      1  0 22:20 ?        00:00:00 nginx: master process ./ngin
nobody     4017   4016  0 22:20 ?        00:00:00 nginx: worker process
root       4019   1330  0 22:20 pts/0    00:00:00 grep --color=auto nginx
  • 查看Nginx的Web页面

直接在地址栏输入ip地址或者输入ip地址+:80,即可看到以下界面

Linux安装Nginx

注意:如果启动后在Web端查看不了,那大概率就是虚拟机没有关闭防火墙!!!

该界面的内容就是有Nginx安装目录下的 html 目录下的 index.html 文件生成的,我们尝试修改这个文件内容的一级标题,修改后在浏览器端刷新刚才的界面即可看到以下界面:

  • 修改index文件后的内容展示:

Linux安装Nginx

  • 修改index文件后的界面展示:

Linux安装Nginx

  • 进入logs目录,查看日志
[root@nginx01 logs]# pwd
/usr/local/nginx/logs
[root@nginx01 logs]# ls
access.log  error.log  nginx.pid
[root@nginx01 logs]# tail -f access.log 

一开始的日志内容如下

Linux安装Nginx

测试能否实时接收到日志

  • 先在刚才查看日志的界面多敲几个回车键,以便观察到日志的变化情况
  • 接着在地址栏输入以下内容并回车(?name=whybigdata&birth=1024&salary=3000)

Linux安装Nginx

成功实时接收到日志!

关于防火墙

  • 关闭防火墙
systemctl stop firewalld.service
  • 禁止防火墙开机启动
systemctl disable firewalld.service
  • 放行端口(option操作)
firewall-cmd --zone=public --add-port=80/tcp --permanent

开启80端口

  • 重启防火墙
firewall-cmd --reload

Nginx安装成系统服务(Option)

创建服务脚本

vi /usr/lib/systemd/system/nginx.service

服务脚本内容

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

启动服务

systemctl start nginx.service

开机启动

systemctl enable nginx.service

停止Nginx服务

  • 快速停止
./nginx -s stop 
  • 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s quit
  • 重新加载配置
./nginx -s reload

全文结束!!!

原文链接:https://juejin.cn/post/7221934775841374267 作者:WHYBIGDATA

(0)
上一篇 2023年4月16日 上午11:07
下一篇 2023年4月17日 上午10:00

相关推荐

发表回复

登录后才能评论