NGINX是由俄罗斯开发者Igor Sysoev于2004年10月4日创建的,他对Apache web服务器感到不满意,希望构建一个能够处理1万个并发连接的替代品,重点关注性能、高并发性和低内存使用。
现在NGINX服务器是世界顶级网站之一,尽管这种增长在很大程度上要归功于它的特性,但也因为NGINX相对易于入门。
在Ubuntu 20.04上有两种安装NGINX的方法。
- 通过操作系统的内置软件包管理器。
- 通过从源码构建NGINX。
在本指南中,我们将在Ubuntu 20.04上从源码构建NGINX。
前提条件
要完成本指南,您需要在您的计算机上安装了Ubuntu 20.04服务器。我们将使用阿里云的 弹性计算服务(ECS) 实例进行演示。
步骤1 - 更新并安装NGINX的依赖项
为了从源码构建NGINX,我们首先需要安装一些NGINX的依赖项。
通过SSH终端登录到您的服务器。
ssh 用户名@您的IP地址
更新Ubuntu的软件包管理器。
sudo apt-get update
现在,安装开发库和源代码编译器。
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libgd-dev libxml2 libxml2-dev uuid-dev
按下 Y 并按下 Enter。
步骤2 - 下载NGINX源代码并配置
我们现在拥有了编译NGINX所需的所有工具。
现在,我们需要从官方网站下载NGINX的源代码。
运行以下命令来下载源代码。
wget http://nginx.org/download/nginx-1.20.0.tar.gz
现在我们有了NGINX源代码的tarball格式。我们可以使用以下命令来解压缩它。
tar -zxvf nginx-1.20.0.tar.gz
使用以下命令进入解压缩后的目录。
cd nginx-1.20.0
现在,我们需要使用configure标志来配置NGINX,使用以下命令。
./configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_image_filter_module=dynamic --modules-path=/etc/nginx/modules --with-http_v2_module --with-stream=dynamic --with-http_addition_module --with-http_mp4_module
在上面的命令中,我们使用自定义路径为NGINX配置文件、访问和错误日志路径以及一些NGINX模块进行配置。
步骤3 - 构建NGINX和添加模块
NGINX中有许多配置选项,您可以根据需要使用它。您可以通过访问 nginx.org 找到NGINX中的所有配置选项。
有一些模块在NGINX中预先安装。
默认内置模块
NGINX中预先安装了许多模块,如果您不需要默认内置的模块,可以在配置脚本上使用 --without-<MODULE-NAME>
选项来禁用它,例如:
./configure --without-http_empty_gif_module
编译NGINX源代码
在自定义配置完成后,我们现在可以通过以下命令编译NGINX源代码:
make
这会花费相当长的时间,一旦完成,
通过以下命令安装已编译的源代码。
make install
使用以下命令启动NGINX。
nginx
现在,我们已成功安装了NGINX。要验证这一点,可以使用以下命令检查NGINX的版本。
nginx -V
或者,您可以访问您的IP地址,以查看NGINX的欢迎页面。
http://您的IP地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PlhFxafV-1692588332459)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4a6a6f8e-6556-42e7-82fb-f21946fd0f49/b98a8969b7d8a861429dcd0d606c394100b8a65f.png)]
步骤4 - 添加NGINX服务
通过我们定制构建的NGINX,它会在HTTP端口80上工作并侦听。下一步是为NGINX配置系统服务。
更具体地说,我们将将NGINX添加为systemd服务,这是一种较新且更受欢迎的服务标准。
现在,在我们继续之前,请注意systemd仅从Ubuntu 15.04开始提供。
创建一个NGINX systemd单元文件,使用nano
编辑器。
nano /lib/systemd/system/nginx.service
并粘贴以下脚本。
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
您可以根据自定义配置路径更改PID文件的位置。
现在,按下键 CTRL+X,然后按下 Y 和 Enter 键保存此文件。
使用以下命令通过systemd
启动您的NGINX。
systemctl restart nginx
现在您可以使用Systemd管理NGINX。
您还可以使用以下命令检查NGINX的状态是否在运行。
systemctl status nginx
这会给我们一个非常有信息量的NGINX服务器状态输出。
步骤5 - 在启动时启用NGINX
现在,如上所述,systemd服务的另一个非常有用的功能是在系统启动时自动启动NGINX。目前,在关闭或重新启动此机器时,NGINX将不再运行。
显然,这对于一个特定的Web服务器来说不太好。
因此,要在启动时启用NGINX,运行以下命令。
systemctl enable nginx
因此,我们获得了一个启动的确认,为此服务创建了一个符号链接。
我们可以通过重新启动机器来测试这一点。
就是这样!
结论
在本指南中,我们已经在Ubuntu 20.04上从源码构建了NGINX。如果您想在NGINX上托管您的应用程序,您可以使用阿里云强大而又实惠的 弹性计算服务(ECS)。