引言

本命令适用于 Centos7.2系统,其他系统或平台暂未测试过

快捷命令

# 补充依赖
sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel oniguruma-devel wget pcre-devel vim

# 下载Nginx源码包(v1.25.3)
wget https://nginx.org/download/nginx-1.25.3.tar.gz

# 解压
tar -xzvf nginx-1.25.3.tar.gz

# 编译源码包
./configure --prefix=安装目录 --user=用户名 --group=用户组 --with-http_ssl_module --with-http_stub_status_module

# 编译与安装
make
make install

# 开放端口给程序占用(允许非root用户也可以执行nginx的启动(需要root执行))
setcap cap_net_bind_service=+eip Nginx的可执行文件路径

修订记录

序号日期修订内容
12023.12.04创建
22023.12.19补充--with-http_stub_status_module参数
32023.12.22补充系统版本情况,补充快捷命令的编译和依赖安装

Nginx下载源码

首先,去到 Nginx官网,这个应该是没有被墙的。

传送门

Nginx官网

如上图所示,点击右下角的 download超链接,或者你直接选中你想要的版本

然后右键点击 复制链接地址按钮,复制到剪贴板,也可以自己下载后上传到服务器

复制最新版Nginx下载链接

然后连接到你的服务器终端,找一个目录,我这里找的是 /server/data/packages目录,你可以自己建立目录

然后执行命令:

wget https://nginx.org/download/nginx-1.25.3.tar.gz

之后等待一小会,下载到100%

使用 ll命令查看这个文件,确实是被下载下来了

实际进行下载

然后使用命令解压缩,当然你也可以本地解压然后上传到服务器上来

tar -xzvf nginx-1.25.3.tar.gz

解压

你会看到一堆文件被打印出来,不用管,命令停下来就行,

同样,ll命令能看到你的这个 nginx的文件夹,这就是 Nginx的源码包了

解压后的文件夹

接下来我们进入 cd一下源码包,然后准备开始进行编译,同样,ls命令能看到源码包内的文件目录

Nginx源码包

编译安装

第一次预编译报错

这里我们首先创建了 nginx的安装目录,用命令:

mkdir /server/nginx/1.25.3

当然你也可以放在你自己喜欢的位置,注意权限(我这里用的账号不是 root账号,注意我命令前面的 $符号哦)

然后开始执行预编译命令:

./configure --prefix=安装目录 --user=用户名 --group=用户组 --with-http_ssl_module --with-http_stub_status_module

这里命令的用户名和用户组两个参数可省略,因为我这里是要指定用户来启动的,对权限要求比较严格,你如果省略,后续再指定也是可以的。

首次执行编译命令

开始预编译之后就等着,然后就出现了一次报错

首次编译报错

安装Nginx的相关依赖包

提示出现了 PCRE报错,此时就需要安装相关依赖了。

需要使用命令安装(需要有sudo或超管权限)

sudo yum install -y pcre-devel zlib-devel openssl-devel

安装Nginx的相关依赖

然后出现 Complete!标识,就代表已经安装成功了。

依赖安装成功

第二次预编译

接下来我们重新执行一次预编译命令,就是上面提到的那个

./configure --prefix=安装目录 --user=用户名 --group=用户组 --with-http_ssl_module --with-http_stub_status_module

安装依赖之后,编译通过

出现上面这种效果,就代表预编译通过了!

编译

我们进行编译 make

开始编译

这里使用的是单核,常规方式开始进行编译,对于 Nginx的源码包来说,常规编译速度还是很快的,所以也不需要加额外参数。

安装

等到刷屏的打印停下来了,没有报错的话,我们就可以进行第二步,安装了

make install

编译后安装

等到结束,你可以使用 ls命令来看你之前指定的安装目录下有没有出现文件,有的话就代表安装成功了。

设置允许非root用户启动

这里我们去到 Nginx的运行目录,尝试启动 Nginx服务,结果是会提示报错

./nginx(需要到执行文件路径里)

启动Nginx

网上的解释是,Nginx默认占用的是 80端口,在 Linux下,所有开放端口小于 1024的,都需要 root权限来执行,但我想着的是,如果是 root权限执行 Nginx,那么去访问东西就很高权限了,不大合适。

所以我们用下面的命令来给 nginx执行文件“提权”

setcap cap_net_bind_service=+eip Nginx的可执行文件路径

注意啊,这里的命令是需要root账号权限来执行的,sudo或者直接切换到root权限均可

给nginx占用端口的权利

启动并测试

接下来我们再用普通账号来执行一次启动,./nginx

尝试启动

发现是可以正常启动,没有报错的

在客户端的浏览器上输入 ip访问,发现也是能够正常出来 nginx的欢迎页面的

浏览器访问

这时候我们去查看这个Nginx进程信息,用命令:

ps -aux | grep nginx

查看服务进程

发现启动的进程信息,也确实不是 root启动的

配置便捷操作(可跳过)

使用命令,给可执行文件nginx提供一个全局执行的方式

sudo ln -s 可执行文件路径 /usr/local/bin/nginx

创建链接

这时候,在全局使用nginx命令,是可行的了!

# 检查nginx配置文件
nginx -t

# 修改配置文件后,可重启nginx服务
nginx -s reload

# 优雅退出nginx
nginx -s quit

检测全局命令是否生效

发现是正常输出,没有任何报错!即配置完成

本文内容已同步到微信公众号,下面是传送门

微信公众号

欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2023 年 12 月 22 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~