nginx--如何基于rpm包进行离线安装及配置(Linux)
Posted JustinQin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx--如何基于rpm包进行离线安装及配置(Linux)相关的知识,希望对你有一定的参考价值。
一、安装nginx
【背景说明】
很多情况下,公司生产环境一般都是内网,大多数的内网环境,一般Linux环境都是无法在线安装nginx等工具的,此时就可以通过rpm安装包进行离线安装及配置。
1.1 资源准备
- 查看系统版本
lsb_release -a
可以看到我这里的操作系统是Linux Centos 7.7
- 官方下载rpm安装包
- 具体操作系统按实际情况进行选择,下载地址 http://nginx.org/packages/
- 具体操作系统按实际情况进行选择,下载地址 http://nginx.org/packages/
- 这里我使用的是Linux CentOS 7的最新稳定版本
nginx-1.20.1-1.el7.ngx.x86_64.rpm
http://nginx.org/packages/centos/7/x86_64/RPMS/ - 具体版本需要根据实际进行选择,只要确保生产使用的是
稳定版本
就行
- 上传安装包
- 安装包存放示例路径:
/usr/nginx/
即完整路径为/usr/nginx/nginx-1.20.1-1.el7.ngx.x86_64.rpm
- 按实际需要创建对应路径,建议在
nginx
用户有权限的目录下创建,如果没有nginx
用户,可以申请下用root
用户创建nginx
用户。
- 安装包存放示例路径:
1.2 检查环境
- 检查命令
cd /usr/nginx
rpm -ivh --test nginx-1.20.1-1.el7.ngx.x86_64.rpm
--test
表示仅检查安装环境不实际安装,若正常,提示如下图:
1.3 安装及检查
- 首次安装nginx,需要使用
root
用户进行安装、检查等操作后,最后再授权给nginx
用户,直接使用nginx
或者其他普通用户安装,一般会提示无权限,如下:
- 安装nginx(
root
用户)
cd /usr/nginx/
rpm -ivh nginx-1.20.1-1.el7.ngx.x86_64.rpm
- 检查是否安装成功
rpm -qa | grep nginx
二、配置nginx
2.1 配置权限
- nginx的rpm安装包,其实就是一个很多文件的压缩包,使用
root
用户安装后,这些目录、文件很多都是root
权限的,需要重新授权给nginx
或者普通用户。 - 查看
rpm
安装包列表清单
rpm -qpl nginx-1.20.1-1.el7.ngx.x86_64.rpm
- 复制列表清单授权给
nginx
用户
授权格式:chown -R用户名
:用户组名
资源路径
chown -R nginx:nginx /etc/logrotate.d/nginx
chown -R nginx:nginx /etc/nginx
chown -R nginx:nginx /etc/nginx/conf.d
chown -R nginx:nginx /etc/nginx/conf.d/default.conf
chown -R nginx:nginx /etc/nginx/fastcgi_params
chown -R nginx:nginx /etc/nginx/mime.types
chown -R nginx:nginx /etc/nginx/modules
chown -R nginx:nginx /etc/nginx/nginx.conf
chown -R nginx:nginx /etc/nginx/scgi_params
chown -R nginx:nginx /etc/nginx/uwsgi_params
chown -R nginx:nginx /usr/lib/systemd/system/nginx-debug.service
chown -R nginx:nginx /usr/lib/systemd/system/nginx.service
chown -R nginx:nginx /usr/lib64/nginx
chown -R nginx:nginx /usr/lib64/nginx/modules
chown -R nginx:nginx /usr/libexec/initscripts/legacy-actions/nginx
chown -R nginx:nginx /usr/libexec/initscripts/legacy-actions/nginx/check-reload
chown -R nginx:nginx /usr/libexec/initscripts/legacy-actions/nginx/upgrade
chown -R nginx:nginx /usr/sbin/nginx
chown -R nginx:nginx /usr/sbin/nginx-debug
chown -R nginx:nginx /usr/share/doc/nginx-1.20.1
chown -R nginx:nginx /usr/share/doc/nginx-1.20.1/COPYRIGHT
chown -R nginx:nginx /usr/share/man/man8/nginx.8.gz
chown -R nginx:nginx /usr/share/nginx
chown -R nginx:nginx /usr/share/nginx/html
chown -R nginx:nginx /usr/share/nginx/html/50x.html
chown -R nginx:nginx /usr/share/nginx/html/index.html
chown -R nginx:nginx /var/cache/nginx
chown -R nginx:nginx /var/log/nginx
2.2 目录变更
- 使用
root
用户基于rpm安装包安装完成后,切回nginx
用户 - 为了方便后续的
日志备份
以及更灵活的部署前端静态资源
,建议重新规划日志目录
和静态资源目录
- 创建
日志目录
和静态资源目录
mkdir -p /usr/nginx/logs/nginx
mkdir -p /usr/nginx/nginx/html
- 将rpm安装包初始化的nginx欢迎页面,拷贝到静态资源路径下
cp /usr/share/nginx/html/50x.html /usr/nginx/nginx/html/50x.html
cp /usr/share/nginx/html/index.html /usr/nginx/nginx/html/index.html
2.3 重要目录说明
-
/etc/nginx
nginx默认配置文件的目录nginx.conf
nginx主配置文件,文件最后配置了自动加载conf.d
下*.conf
的配置
-
/etc/nginx/conf.d
nginx的*.conf
多个子配置存放目录default.conf
nginx子配置文件,主要用于端口端口
、日志
、负载均衡
、反向代理
等配置。
-
/usr/sbin/nginx
可执行二进制文件,nginx的启停等执行命令前缀 -
/usr/share/nginx/html
静态资源目录
本文这里已经改为/usr/nginx/nginx/html
-
/var/log/nginx
日志文件存放目录
本文这里已经改为/usr/nginx/logs/nginx
2.4 配置10080.conf
- nginx监听端口要大于
1024
,否则只能用root用户启动nginx,这里以10080
端口为例,具体端口根据实际项目需要进行修改。 - 创建
10080.conf
cd /etc/nginx/conf.d
cp default.conf default.conf.bak
mv default.conf 10080.conf
- 修改
10080.conf
主要修改对应的端口号
、日志路径
、静态资源路径
,如下截图:
10080.conf
修改后完整代码如下:
server {
#监听端口,在浏览器中通过此端口访问web服务,非root用户启动时需要指定大于1024的端口号
listen 10080;
server_name localhost;
#可为虚拟主机单独定义日志文件,非root用户运行时需要调整为应用用户有权限读写的目录
access_log /usr/nginx/logs/nginx/host.access.log main;
location / {
#站点的根目录,web资源的默认安装目录,非root用户运行时需要调整为应用用户有权限读写的目录
root /usr/nginx/nginx/html;
#默认nginx首页文件,访问http://ip:10080时显示的页面文件
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/nginx/nginx/html;
}
# proxy the php scripts to Apache listening on 127.0.0.1:80
#
#location ~ \\.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \\.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\\.ht {
# deny all;
#}
}
2.5 配置nginx.conf
- 备份
nginx.conf
cd /etc/nginx/
cp nginx.conf nginx.conf.bak
- 修改
nginx.conf
同样主要修改日志路径
及nginx进程文件
,如下截图:
nginx.conf
修改后完整代码如下:
user nginx;
worker_processes auto;
#配置全局错误日志路径及日志级别,错误日志级别[debug|info|notice|warn|error|crit]
#非root用户运行时需要调整为应用用户有权限读写的目录
error_log /usr/nginx/logs/nginx/error.log notice;
#nginx进程文件,非root用户运行时需要调整为应用用户有权限读写的目录
pid /usr/nginx/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/nginx/logs/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
2.6 启动nginx
-
启动nginx前先检查下nginx配置是否正确,命令为
nginx -t
-
启动nginx,启动命令为
nginx
或/usr/sbin/nginx
普通用户nginx
,启动nginx时,会提示如下警告信息:
nginx:[warn] ***
表示nginx: master process主进程只能对超级用户root生效即root启动nginx时生效,该
警告不影响nginx的正常使用。 -
查看nginx运行进程
ps -ef|grep nginx
-
其他nginx相关命令
停止nginxnginx -s stop
重启nginx(不重启nginx的情况下,重新加载最新nginx配置文件)nginx -s reload
重启nginx(不重启的情况下,当access.log等日志文件不存在时会新生成对应日志文件)nginx -s reopen
2.7 访问nginx
-
打开浏览器,访问
http//ip:10080
ip改成自己服务器的IP。
-
如访问提示
403 Forbidden
相关报错提示信息,则拷贝nginx默认html欢迎页面到静态资源目录
下
cp /usr/share/nginx/html/50x.html /usr/nginx/nginx/html/50x.html
cp /usr/share/nginx/html/index.html /usr/nginx/nginx/html/index.html
- 如果nginx启动正常,html也没问题,但是访问还是加载超时,则需要看下你的服务器的防火墙状态,如果你的Linux的防火墙当前处于开启状态,但是防火墙未添加
10080/tcp
端口,则需要使用root
添加10080/tcp
端口后,再重启防火墙,才能正常访问到nginx。
2.8 检查防火墙
-
关于防火墙的检查,这个根据实际情况进行配置,如果防火墙本身未开启,就不会影响nginx的访问
-
但是如果防火墙开启了,要确保nginx监听的相关端口,要被添加到防火墙中,才可以正常访问nginx。
-
这里使用
root
用户操作,放开nginx的tcp/10080
端口号 -
查看防火墙运行状态
systemctl status firewalld.service
-
开启防火墙
systemctl start firewalld.service
-
查看防火墙已放开端口列表
firewall-cmd --permanent --zone=public --list-ports
-
放开
10080/tcp
端口
firewall-cmd --permanent --zone=public --add-port=10080/tcp
-
再次查看端口
firewall-cmd --permanent --zone=public --list-ports
-
重启防火墙
systemctl restart firewalld.service
-
其他防火墙常用命令
删除防火墙指定端口
firewall-cmd --permanent --zone=public --remove-port=10080/tcp
重启防火墙
systemctl restart firewalld.service
附录
** 中途可能遇到的问题 **
-
权限问题?
若使用nginx
用户启动nginx时,提示权限问题,则使用root
用户重新操作【配置权限】
章节的chown
授权给nginx
用户。 -
conf配置问题
比如,错将nginx.conf
的内容拷贝到10080.conf
中了,则nginx -t
时会提示报错如下:
[nginx@justinqin conf.d]$ nginx -t
nginx: [warn] the “user” directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/10080.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed
以上是关于nginx--如何基于rpm包进行离线安装及配置(Linux)的主要内容,如果未能解决你的问题,请参考以下文章