CentOS7&8编译安装Nginx

时间:2021-10-16    作者:冰城心无泪    分类: Linux应用


准备工作

使用yum的官方源进行下载安装某些应用的时候可能会出现下载慢甚至找不到RPM包的情况,因此,就需要将下载源更换为国内的源及安装扩展仓库。
本人习惯是用阿里云的源,因此,以阿里云源为例。当然也可以用其他源,比如中科大的源腾讯源等。若此前更换源,此步骤可略过。
具体步骤如下:

1.备份源

 cd /etc/yum.repos.d/ && tar -czvf repo_bak.tar.gz *.repo && rm -f *.repo && cd ~

2. 下载阿里云源及扩展仓库

Centos7:
YUM源:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
扩展仓库:curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

Centos8:
YUM源:curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
扩展仓库:yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

3. 生成缓存

yum makecache

下载及安装所需环境

Nginx是C语言开发,因此,编译依赖gcc,如果没有gcc环境,则需要安装。Nginx源码包可在Nginx官网下载。Wget为Linux下的下载工具,没有则需安装。Nginx的Rewrite模块和HTTP 核心模块会使用到PCRE正则表达式语法,需安装。Nginx启用压缩功能的时候,需要zlip,因此需要安装。Nginx开启SSL需用到openssl,因此也需要安装,vim用于编辑配置文件,用系统自带的工具vi也可以,make用于编译,一般系统自带。

1.创建Nginx的下载及安装目录:下载目录为 /Tools 安装目录为 /Nginx ,/Nginx/SSL目录为存放证书的目录。

默认Nginx配置文件位置:/Nginx/conf/nginx.conf
默认存放网站目录:/Nginx/html/
以上目录根据需要自行更改。
mkdir -p /{Nginx/SSL,Tools}

2.安装所需依赖

yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel make vim wget

3.上述依赖安装完成后,如果你需要开启SSL,那么你只能支持到TLSv1.2,原因是Centos7默认安装openssl的版本是1.0.2K,如果你需要开启TLSv1.3,你还需要安装openssl 1.1.1*版本

注:如果不需要使用TLSv1.3,也可跳过此步骤。Centos8中,Openssl默认的版本已经是1.1.1*了。不需要此操作,
3.1 下载Openssl 1.1.1q源码包
wget -P /Tools https://www.openssl.org/source/openssl-1.1.1q.tar.gz
3.2 解压并编译安装,默认安装路径是:/usr/local/bin/,库文件位置:/usr/local/lib64/
tar -xzvf /Tools/openssl-1.1.1q.tar.gz -C /Tools/
cd /Tools/openssl-1.1.1q && ./config && make && make install
3.3 备份原本的Openssl可执行文件,并将新的Openssl可执行文件创建软连接,库文件创建软连接,并更新动态链接库
mv -f /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/bin/openssl /usr/bin/openssl  
ln -s /usr/local/lib64/libssl.so.1.1 /usr/local/lib/libssl.so
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/local/lib/libcrypto.so
echo "/usr/local/lib64/" >> /etc/ld.so.conf && ldconfig -v

下载Nginx编译安装并创建系统服务

1.下载Nginx至下载目录

wget -P /Tools http://nginx.org/download/nginx-1.24.0.tar.gz

2.解压Nginx包并编译安装,按需添加模块,模块之间用空格隔开.

解压:tar -xzvf /Tools/nginx-1.24.0.tar.gz -C /Tools/
安装:cd /Tools/nginx-1.24.0 && ./configure --prefix=/Nginx \
--with-http_ssl_module \
--with-stream \
--with-http_dav_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_v2_module \
--with-http_stub_status_module && make && make install

3.创建Nginx系统服务,可以手动编辑也可以复制下列代码执行可直接创建(请修改启动文件位置及配置文件位置为你自己的目录,完全按照本教程做的无需修改)

cat > /etc/systemd/system/nginx.service << EOF
[Unit]
Description=nginx -  web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/Nginx/logs/nginx.pid
ExecStartPre=/Nginx/sbin/nginx -t -c /Nginx/conf/nginx.conf
ExecStart=/Nginx/sbin/nginx -c /Nginx/conf/nginx.conf
ExecReload=/Nginx/sbin/nginx -s reload
ExecStop=/Nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

4.赋予Nginx系统服务文件可执行权限

chmod 755 /etc/systemd/system/nginx.service

5.重载系统服务的配置文件

systemctl daemon-reload
  设置开机启动nginx
systemctl enable nginx
  启动Nginx服务
systemctl start nginx

6.开放防火墙80端口,Nginx默认监听的端口,根据需要修改配置文件及所需开放的防火墙端口

iptables使用下列命令开启:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

firewalld使用下列命令开启:
firewall-cmd --set-default-zone=public
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

关于nginx配置文件修改及开启SSL,请参考本站文章Nginx只允许域名访问网站

此时,在同一网络内,可在浏览器输入服务器IP,访问服务器web页面,提示Nginx欢迎页面,则说明编译安装成功。