- 本人喜欢下载的包都放 /data 目录,看个人喜好后续命令都按照自己位置来
cd /data
- 下载安装依赖包:
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl lrzsz vim wget openssl-devel
- 下载nginx,并解压
wget https://nginx.org/download/nginx-1.19.9.tar.gz
tar -xzvf nginx-1.19.9.tar.gz
- 进入解压目录,配置并编译
- 最好安装的时候把以后可能要用到的模块配置全给配置进去,不然后期加就很麻烦
--with-http_ssl_module 开启SSL模块,支持https访问的
--with-http_v2_module 配置HTTP2模块
cd nginx-1.19.9
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
make
- 安装Nginx到 /usr/local/nginx 目录
make install /usr/local/nginx/
- 进入Nginx目录启动Nginx
cd /usr/local/nginx
./sbin/nginx
- 新建 nginx.service 文件
vim /lib/systemd/system/nginx.service
- 加入自启动配置
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 设置自启动
systemctl enable nginx
systemctl daemon-reload
Nginx的80端口被占用问题
发现占用80端口居然是阿里云自家的阿里云盾,使用kill命令无法解决依然会重新出来个,使用fuser
sudo fuser -k 80/tcp
执行后再看80端口占用情况没了,启动Nginx正常,状态正常
也可能会碰到端口未开,使用如下命令查看是否开启,返回 no 则未对外开放
firewall-cmd --query-port=80/tcp
使用如下命令对外开放对应端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
如果上述对外开放了端口还是不能访问,则是云服务商的安全组限制了,去对应的云服务商控制台进行安全组策略配置操作即可。
腾讯云服务器端口怎么开放?端口开通教程
腾讯云服务器端口怎么开放?端口开通教程 - 腾讯云开发者社区-腾讯云
阿里云添加安全组规则
访问Nginx主页,显示welcome,至此Nginx安装完成。
Nginx报错:
- nginx: [emerg] the "http2" parameter requires ngx_http_v2_module in xxx
- nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in xxx
问题:缺少相应的 http_ssl_module、http_v2_module
解决:因为一般出现这种情况都是装好Nginx的情况下,所以我们要注意备份。
- 重新配置(选择对应需要的模块即可)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
- 编译
make
- 备份之前装好的Nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
- 将刚编译好的nginx覆盖到/sbin目录下
cp ./objs/nginx /usr/local/nginx/sbin/
- 重启生效
systemctl restart nginx.service
- 查看安装的版本及对应的模块
/usr/local/nginx/sbin/nginx -V