CentOS下nginx的安装流程

目录

1 基础配置

系统:CentOS Linux release 7.9.2009 (Core)
NginX版本:nginx-1.20.1

查看操作系统名称:

cat /etc/centos-release

查看相关系统信息:

uname -a
uname --help 可以查看具体意义

2 安装依赖库

2.1 安装g++编译器

g++编译器——用于编译c++代码。

解决报错“error: c compiler cc is not found.”

g++编译器可以处理c++,它也包含gcc编译器,可以处理c代码,安装命令:

yum install -y gcc-c++

如果只用c的话,似乎可以只安装gcc编译器(用于编译c代码):

yum install -y gcc

2.2 安装pcre库

pcre库——用C语言编写的正则表达式函数库。

解决报错“error: the HTTP rewrite module requires the PCRE library.”

yum install -y pcre pcre-devel

2.3 安装zlib库

zlib库——压缩/解压缩工具库。

yum install -y zlib zlib-devel

2.4 安装OpenSSL库

OpenSSL库——SSL协议库。

解决报错”error: SSL modules require the OpenSSL library.”

yum install -y openssl openssl-devel

3 安装nginx

从开源nginx(它也有商业版)的官网获取最新版本的nginx下载链接:

官网:https://nginx.org/
当前(2021-08)最新的Stable版本链接:https://nginx.org/download/nginx-1.20.1.tar.gz

3.1 获取nginx包

进入一个目录,这个目录是用来存放安装包,并进行前期配置、编译的目录,并不是实际的安装目录,执行下载命令:

wget https://nginx.org/download/nginx-1.20.1.tar.gz

如果提示没有wget,需要先安装wget:

yum install wget

3.2 解压nginx文件

tar -zxvf nginx-1.20.1.tar.gz

-z : 使用 gzip 来压缩和解压文件
-x : 从存档展开文件
-v : 详细显示处理的文件
-f : 指定需要处理的文件或设备,这个选项通常是必选的

3.3 配置nginx安装选项

进入解压完成的nginx-1.20.1目录:

cd nginx-1.20.1

运行配置文件:

./configure --prefix=安装路径

配置文件可以默认,也可以按照需要附加参数,以此来选择附带的功能和模块,建议至少通过“--prefix=安装目录”指定一个安装目录,否则默认安装会把binary、modules、configure、pid、error、access、temp等各种文件分散到各个系统文件夹中,这里给出一个完整的参考示例:

./configure --prefix=/web/webserver/nginx-vod-hls --with-http_stub_status_module --with-http_gzip_static_module --with-http_gunzip_module --with-file-aio --with-threads --with-cc-opt="-O3" --with-http_ssl_module --with-openssl-opt=enable --with-http_flv_module --with-http_mp4_module --add-module=../nginx-vod-module-master --add-module=../nginx-rtmp-module-master

示例配置中添加了nginx-vod-module与nginx-rtmp-module两个第三方模块,它们是通过外部下载的,不是nginx的基本模块,添加第三方模块的流程可以参考3.4节,如果不需要第三方模块可以去掉--add-module=开头的两句配置

配置完成会显示配置总结,指明nginx各个文件存放的位置:

Configuration summary
+ using threads
+ using system PCRE library
+ using system OpenSSL library
+ using system zlib library

nginx path prefix: "/web/webserver/nginx-vod-hls"
nginx binary file: "/web/webserver/nginx-vod-hls/sbin/nginx"
nginx modules path: "/web/webserver/nginx-vod-hls/modules"
nginx configuration prefix: "/web/webserver/nginx-vod-hls/conf"
nginx configuration file: "/web/webserver/nginx-vod-hls/conf/nginx.conf"
nginx pid file: "/web/webserver/nginx-vod-hls/logs/nginx.pid"
nginx error log file: "/web/webserver/nginx-vod-hls/logs/error.log"
nginx http access log file: "/web/webserver/nginx-vod-hls/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

关于文件路径的一些解释:

nginx path prefix:          安装路径
nginx binary file:          二进制文件路径
nginx modules path:         模块存放路径
nginx configuration prefix:     配置文件路径
nginx configuration file:       配置文件
nginx pid file:         进程文件
nginx error log file:       报错日志文件
nginx http access log file:     访问日志文件
……                                  ……
nginx http xxxx temporary files:    各种临时文件

3.4 添加第三方模块

添加第三方模块进行共同编译需要指定--add-module选项,在该前缀后跟上第三方模块的路径(示例中是相对路径../nginx-vod-module-master,根据实际情况可能有所不同)。

nginx-vod-module下载地址:https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz
nginx-rtmp-module下载地址:https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz

与安装nginx一样,进入相应的目录(示例中把模块与nginx源文件夹放在同一层级),进行安装:

获取第三方模块nginx-vod-module

wget https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz

解压文件包

tar -zxvf 1.28.tar.gz

重命名文件夹(只为了方便使用)

mv /.../1.28 /.../nginx-vod-module-master

之后再按照3.3节中的方法在nginx的./configure配置过程中加上--add-module选项,并指定对应的模块路径即可。

这里注意是在nginx的配置过程中进行指定,而不是进入模块nginx-vod-module的目录去配置。

./configure ... ... --add-module=../nginx-vod-module-master

在配置过程中,还可以附加上相应的gcc编译命令:

CFLAGS="-Wno-unused-but-set-variable" ./configure ... ...

3.5 编译nginx

按照之前指定的配置来编译nginx,执行命令:

make

3.6 安装nginx

安装时会将nginx安装到之前指定的安装路径,执行命令:

make install

4 运行nginx服务

安装完成即可启动nginx服务,注意需要指定二进制文件的路径,或者进入二进制文件所在的目录,执行不带参数的nginx命令即可:

./nginx

可以用以下命令查看是否有nginx进程在运行:

ps -ef | grep nginx

直接关闭nginx服务:

./nginx -s stop

优雅地关闭nginx服务(nginx 主进程会等待 worker 进程完成当前用户请求的处理):

./nginx -s quit

验证nginx配置文件是否正确,用于修改conf配置文件后:

./nginx -t

重载nginx服务,用于修改conf配置文件后重载:

./nginx -s reload

重新打开日志文件:(刷新日志文件)

./nginx -s reopen

使用指定的配置文件运行nginx:

./nginx -c filename

5 访问nginx网址

如果是在本机运行,可以访问127.0.0.1或者localhost,默认80端口:

http://127.0.0.1/
http://localhost/

如果是在服务器运行,可以访问服务器ip,默认80端口(可省略):

http://ServerIP:80/

如果显示nginx欢迎界面则表示nginx运行成功。

6 启动和运行可能遇到的问题

pid错误

描述:
nginx: [error] open() "/xxxx/nginx.pid" failed.
原因:
进程占用导致,一个相同nginx进程正在运行。
解决:
结束旧的进程后,新进程才能启动。

关闭nginx:./nginx -s stop
直接关闭进程:kill -9 processid

无法访问nginx网址

描述:
配置都正确,但nginx网址无法访问。
原因:
可能是防火墙没有配置需要开放的端口。
解决:
配置防火墙开放端口号。

CentOS 7 默认的防火墙是firewall:

查看防火墙状态:
firewall-cmd --state

查看开放的端口:
firewall-cmd --list-ports
firewall-cmd --list-all

单独查看8081端口:
firewall-cmd --zone=public --query-port=8081/tcp

开放8081端口:
firewall-cmd --zone=public --add-port=8081/tcp --permanent

关闭8081端口:
firewall-cmd --zone=public --remove-port=8081/tcp --permanent

–zone #作用域
–add-port=8081/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

端口操作完成,都需要重载防火墙才生效:
firewall-cmd --reload

CentOS 6 默认的防火墙是iptables

开放端口(修改iptables文件)
vim /etc/sysconfig/iptables
添加以下信息(使用“端口号”开放单个端口,使用“端口号:端口号”,可以开放范围内的所有端口)
-A INPUT -m state -state NEW -m tcp -p tcp -dport 端口号 -j ACCEPT

重启防火墙即可生效
service iptables restart

打开或关闭防火墙
chkconfig iptables on/off ——永久
service iptables start/stop ——临时,重启系统后失效

上一篇:谷粒 | 18 |阿里云视频点播服务


下一篇:【Spring Boot】整合阿里云视频点播