配置开发环境-安装Nginx
# 配置开发环境-安装Nginx
:::
:::
# 1. yum安装
# 安装
使用源码进行简单安装,我们会发现安装的过程比较繁琐,需要提前准备GCC编译器、PCRE兼容正则表达式库、zlib压缩库、OpenSSL安全通信
的软件库包,然后才能进行Nginx的安装。
- 安装yum-utils
sudo yum install -y yum-utils
- 添加yum源文件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 查看是否安装成功
yum list | grep nginx
- 使用yum进行安装
yun install -y nginx
- 查看nginx的安装位置
whereis nginx
# 启动nginx
- 启动nginx
/usr/sbin/nginx
- 关闭nginx
/usr/sbin/nginx -s stop
- 如果修改了配置⽂件后想重新加载Nginx,重新加载nginx
/usr/sbin/nginx -s reload
# 2. 源码方式安装 😄
# 安装环境
如果通过Nginx源码安装需要提前准备的内容:
GCC编译器
Nginx是使用C语言编写的程序,因此想要运行Nginx就需要安装一个编译工具。GCC就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。
# 使用命令`yum install -y gcc`来安装
yum install -y gcc
# 安装成功后,可以通过`gcc --version`来查看gcc是否安装成功
gcc --version
2
3
4
5
PCRE
Nginx在编译过程中需要使用到PCRE库(perl Compatible Regular Expressoin 兼容正则表达式库),因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。
# 可以使用命令`yum install -y pcre pcre-devel`来进行安装
yum install -y pcre pcre-devel
# 安装成功后,可以通过`rpm -qa pcre pcre-devel`来查看是否安装成功
rpm -qa pcre pcre-devel
2
3
4
5
zlib
zlib库提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-devel
# 可以使用命令`yum install -y zlib zlib-devel`来进行安装
yum install -y zlib zlib-devel
# 安装成功后,可以通过`rpm -qa zlib zlib-devel`来查看是否安装成功
rpm -qa zlib zlib-devel
2
3
4
5
OpenSSL
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。
SSL:Secure Sockets Layer安全套接协议的缩写,可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性。在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库,所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。
# 可以使用命令`yum install -y openssl openssl-devel`来进行安装
yum install -y openssl openssl-devel
# 安装成功后,可以通过`rpm -qa openssl openssl-devel`来查看是否安装成功
rpm -qa openssl openssl-devel
2
3
4
5
# 上述命令,一个个来的话比较麻烦,我们也可以通过一条命令来进行安装 `yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel`进行全部安装。
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2
这种方式通过./configure
来对编译参数进行设置,需要我们手动来指定。那么都有哪些参数可以进行设置,接下来我们进行一个详细的说明。
PATH
:是和路径相关的配置信息
with
:是启动模块,默认是关闭的
without
:是关闭模块,默认是开启的
我们先来认识一些简单的路径配置已经通过这些配置来完成一个简单的编译:
--prefix=PATH: 指向Nginx的安装目录,默认值为/usr/local/nginx
--sbin-path=PATH: 指向(执行)程序文件(nginx)的路径,默认值为<prefix>/sbin/nginx
--modules-path=PATH: 指向Nginx动态模块安装目录,默认值为<prefix>/modules
--conf-path=PATH: 指向配置文件(nginx.conf)的路径,默认值为<prefix>/conf/nginx.conf
--error-log-path=PATH: 指向错误日志文件的路径,默认值为<prefix>/logs/error.log
--http-log-path=PATH: 指向访问日志文件的路径,默认值为<prefix>/logs/access.log
--pid-path=PATH: 指向Nginx启动后进行ID的文件路径,默认值为<prefix>/logs/nginx.pid
--lock-path=PATH: 指向Nginx锁文件的存放路径,默认值为<prefix>/logs/nginx.lock
2
3
4
5
6
7
8
要想使用可以通过如下命令
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock
2
3
4
5
6
7
8
# 卸载之前版本
在使用上述命令之前,需要将之前服务器已经安装的nginx进行卸载(之前有安装过),卸载的步骤分为三步骤:
步骤一:需要将nginx的进程关闭
/usr/local/nginx/sbin/nginx -s stop
步骤二:将安装的nginx进行删除
rm -rf /usr/local/nginx
步骤三:将安装包之前编译的环境清除掉
make clean
# 安装新版本
- 进入官网查找需要下载版本的链接地址,然后使用
wget
命令进行下载
wget http://nginx.org/download/nginx-1.16.1.tar.gz
- 建议大家将下载的资源进行包管理
mkdir -p nginx/core
mv nginx-1.16.1.tar.gz nginx/core
2
- 解压缩
tar -xzf nginx-1.16.1.tar.gz
(4)进入资源文件中,发现configure
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module
# 自定义配置
./configure --prefix=/opt/develop/nginx \
--sbin-path=/opt/develop/nginx/sbin/nginx \
--modules-path=/opt/develop/nginx/modules \
--conf-path=/opt/develop/nginx/conf/nginx.conf \
--error-log-path=/opt/develop/nginx/logs/error.log \
--http-log-path=/opt/develop/nginx/logs/access.log \
--pid-path=/opt/develop/nginx/logs/nginx.pid \
--lock-path=/opt/develop/nginx/logs/nginx.lock \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
参数说明:可以查看:nginx使用技巧
- --with-http_ssl_module:开启监控模块 (opens new window)
- --with-http_ssl_module:添加ssl模块(使用https)已经编译的nginx添加with-http_ssl_module模块 (opens new window)
- --with-http_v2_module:需要http2模块 (opens new window)
问题:安装nginx出错the HTTP rewrite module requires the PCRE library (opens new window)
- 编译
make
- 安装
make install
4和5可以合为
make & make install
# 离线安装
- 离线安装
https://blog.csdn.net/sinat_36521092/article/details/124731532 (opens new window)
- Centos系统中如何在指定位置下安装Nginx
https://www.jb51.net/article/190645.htm (opens new window)
./configure \
--prefix=/opt/nginx/ \
--sbin-path=/opt/nginx/nginx \
--conf-path=/opt/nginx/nginx.conf \
--pid-path=/opt/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/nginx/pcre-8.44 \
--with-zlib=/opt/nginx/zlib-1.2.11 \
--with-openssl=/opt/nginx/openssl-1.0.2h \
# 编译命令行
make && make install
test -d # 重要!!!如果不执行则不会创建真正的 nginx 文件
2
3
4
5
6
7
8
9
10
11
12
13
14
一些附加配置参考上面在线配置内容
# 启动nginx
- 启动nginx
/usr/local/nginx/sbin/nginx
- 关闭nginx
/usr/local/nginx/sbin/nginx -s stop
- 如果修改了配置⽂件后想重新加载Nginx,重新加载nginx
/usr/local/nginx/sbin/nginx -s reload
# 即将Nginx加入环境变量
打开文件
vim /etc/profile
在末尾添加
# nginx 自己nginx地址 /opt/develop/nginx/sbin/nginx
export NGINX_HOME=/opt/develop/nginx/sbin
export PATH=$PATH:$NGINX_HOME
2
3
使环境变量生效
source /etc/profile
验证
# 版本
nginx -v
# 查看修改后的配置文件是否有效
nginx -t
2
3
4
5
# 将Nginx配置为服务 🚗
配置信息
systemctl启动服务编写
Centos7的服务systemctl脚本存放在:/usr/lib/systemd/
目录下,有系统(system)和用户(user)之分,一般需要开机不登录就能运行的程序,就存放在/usr/lib/systemd/system/
目录下
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],以nginx为实例如下:
cd /lib/systemd/system/
# 新建文件
vim nginx.service
2
3
配置文件:
[Unit]
Description=nginx-server
After=network.target
[Service]
Type=forking
# ExecStart需要按照实际情况修改成自己的地址
ExecStart=/opt/nginx/sbin/nginx
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
Nginx配置如下
操作命令
systemctl start nginx.service # 启动nginx服务:
systemctl stop nginx.service # 停止nginx服务
systemctl status nginx.service # 查看nginx服务状态
systemctl restart nginx.service # 重启nginx服务
systemctl enable nginx.service # 设置开机自启动
systemctl disable nginx.service # 禁止开机自启动
systemctl list-units --type=service # 查看所有已经启动的服务
systemctl daemon-reload # 修改完配置文件后,重新加载配置文件,
# 检查防火墙状态 看到active(running)就意味着防火墙打开了
sudo systemctl status firewalld
# 关闭防火墙
sudo systemctl stop firewalld
# 开启防火墙
sudo systemctl start firewalld
# 上面的命令是临时的,重启后就失效了
# 彻底关闭防火墙
sudo systemctl disable firewalld
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参考:
三种开机自启方式 (opens new window) Linux启动配置文件 (opens new window) systemctl设置开机自启 (opens new window)
# 修改完配置文件进行验证🚗
# 全局路径
/usr/local/nginx/sbin/nginx -t
2
或者进入目录
# 3. rpm安装 (opens new window)包安装nginx
# rpm安装nginx包
wget https://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.2-1.el7.ngx.x86_64.rpm
本次使用:nginx-1.20.2-1.el7.ngx.x86_64.rpm
- 安装nginx包
rpm -ivh nginx-1.20.2-1.el7.ngx.x86_64.rpm
配置权限
使用root账号创建nginx用户和组
groupadd nginx
useradd nginx -g nginx -s /sbin/nologin -M
2
授权列表清单给nginx
chown -R nginx:nginx /etc/log/logrotate.d/nginx
chown -R nginx:nginx /etc/nginx
chown -R nginx:nginx /etc/nginx/conf.d
chown -R nginx:nginx /etc/config.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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
- 启动nginx
systemctl start nginix
- 验证
curl IP
# 卸载
# 查看nginx安装文件
rpm -qa | grep nginx
nginx-1.20.2-1.el7.ngx.x86_64 # 已安装的nginx
# 卸载nginx安装文件
rpm -e nginx-1.20.2-1.el7.ngx.x86_64
2
3
4
5
6
# 4. docker方式安装
docker安装可以选择在线和离线安装,在线安装使用docker命令安装,离线安装使用docker安装完毕后,打包至离线服务器进行安装,本文以在线安装为例进行展开操作。docker 安装在此不做过多介绍,docker安装参考《centos7 设置阿里云yum源、docker源和docker镜像加速 (opens new window)》中的docker安装部分
# 获取nginx镜像
docker pull nginx:1.21.6
# 查看镜像
docker images
运行nginx
docker run --name nginx -p 80:80 -d nginx
2
3
4
5
6
使用过程中会挂载 配置文件、站点、日志信息,在现有基础上新增挂载参数即可。
验证
curl IP