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 librarynginx 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 --reloadCentOS 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 ——临时,重启系统后失效
标签:vod,http,CentOS,--,流程,module,nginx,安装 来源: https://www.cnblogs.com/seedoubleu/p/15645055.html