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 plus 商业版
- openresty
- Tengine
开源版和openresty用得是比较多的
正式安装
下载开源版本
进入一下网站:nginx.org/en/download…
根据自己的操作系统,选择稳定的版本下载即可,此处本人使用的是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等环境的,报错如下图所示:
- 请分别执行以下的安装命令
[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
执行后的结果如下图所示:
- 执行make命令进行编译
[root@nginx01 nginx-1.21.6]$ make
执行后的结果如下图所示:
- 执行编译安装命令
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
,即可看到以下界面
注意:如果启动后在Web端查看不了,那大概率就是虚拟机没有关闭防火墙!!!
该界面的内容就是有Nginx安装目录下的
html
目录下的index.html
文件生成的,我们尝试修改这个文件内容的一级标题,修改后在浏览器端刷新刚才的界面即可看到以下界面:
- 修改index文件后的内容展示:
- 修改index文件后的界面展示:
- 进入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
一开始的日志内容如下
测试能否实时接收到日志
- 先在刚才查看日志的界面多敲几个回车键,以便观察到日志的变化情况
- 接着在地址栏输入以下内容并回车(?name=whybigdata&birth=1024&salary=3000)
成功实时接收到日志!
关于防火墙
- 关闭防火墙
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