初识Nginx编译安装

此前一直通过宝塔面板等方式使用Nginx,这次需要单独部署Nginx。又因网上大部分教程图省事,多直接使用root用户安装,缺少介绍适合使用普通用户安装的方法,周二晚上鼓捣许久,故作记录。

源码、安装包和日志均放置在用户家目录下。

环境确认

1
2
[user01@centos ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

Ubuntu或Debian系发行版本亦可参考。

正常YUM安装

1
2
3
4
#添加仓库
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y instal nginx
systemctl start nginx //启动nginx
1
2
3
4
# 此方式下的主要配置路径
/etc/nginx/nginx.conf //yum方式安装后默认配置文件的路径
/usr/share/nginx/html //nginx网站默认存放目录
/usr/share/nginx/html/index.html //网站默认主页路径

编译安装

环境准备

1
2
3
4
5
# 环境准备
yum install -y gcc-c++
yum install -y pcre pcre-devel //nginx的http模块使用pcre来解析正则表达式
yum install -y zlib zlib-devel //zlib库用于对http包的内容进行gzip压缩和解压缩
yum install -y openssl openssl-devel //支持https协议

CentOS 7.9版本已经默认安装了OpenSSL等软件。如果你的服务器恰好没有安装这些基础软件,可以yum安装或仍使用编译安装的方式。

接下来,下载源码用于为Nginx编译时提供源码包:

下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /home/user01
mkdir package
cd package
wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.44/pcre-8.44.tar.gz
# wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.35/pcre2-10.35.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
wget http://www.zlib.net/zlib-1.2.12.tar.gz
wget http://nginx.org/download/nginx-1.18.0.tar.gz
chmod -R 777 /home/user01/package

#解压
tar -zxf pcre-8.44.tar.gz
tar -zxf openssl-1.1.1c.tar.gz
tar -zxf zlib-1.2.12.tar.gz
tar -zxf nginx-1.18.0.tar.gz -C /home/user01/package

编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mkdir /home/user01/nginx
mkdir /home/user01/nginxvar

./configure \
--prefix=/home/user01/nginx \
--lock-path=/home/user01/nginxvar/lock/nginx.lock \
--error-log-path=/home/user01/nginxvar/log/nginx/error.log \
--http-log-path=/home/user01/nginxvar/log/nginx/access.log \
--with-pcre=/home/user01/package/pcre-8.44 \
--with-zlib=/home/user01/package/zlib-1.2.12 \
--with-openssl=/home/user01/package/openssl-1.1.1c \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-stream

make && make install

普通用户是无权限读写/var下面的内容的[1][2],为此下载源码包是为了编译时指定源码。指定日志也是为了避免默认路径没有读写权限。

启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 编译方式下的配置路径在指定的/home/user01/nginx/中
cd /home/user01/nginx/sbin
./nginx
./nginx -s stop
./nginx -s reload

#检查启动情况
ps -aux | grep nginx
#若启动失败,修改监听端口(非root用户建议使用1024以上的端口)
vi /home/user01/nginx/conf/nginx.conf
#或使用root用户放开防火墙限制80和443端口
systemctl status firewalld

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8443/tcp --permanent
firewall-cmd --reload

以上。

引用


初识Nginx编译安装
https://youdef.com/posts/85/
作者
阿成
发布于
2022年5月29日
许可协议