用 NGINX 替换 Apache 有几个原因:
- NGINX 支持并发连接和高流量网站负载的最快的 Web 服务器。
- 与 Apache 相比,NGINX 消耗更少的 RAM 和 CPU,并且资源友好。
- NGINX 通过支持内置缓存系统来提高网站性能,以更快地访问图像、CSS、JavaScript 等网站静态内容。
步骤 1:删除 Apache Web 服务器
在安装 NGINX 之前,请先删除 Apache Web 服务器。
首先,在删除 Apache Web 服务器之前,先停止 Apache 服务。
$ sudo systemctl stop apache2
停止 Apache 服务后,可以从 systemctl 中删除 Apache 启动项。这样, Apache 服务就不会在启动时自动启动。
$ sudo systemctl disable apache2
然后,从系统中删除 Apache Web 服务器包了。
$ sudo apt remove apache2
上面的命令将只会删除 apache2 包,但 Apache 相关的依赖项仍会保留在系统中。因此,必须删除那些不需要的依赖项以释放占用的空间。可以通过运行下面的命令来实现。
$ sudo apt autoremove
现在,Apache Web 服务器已被成功删除。
步骤 2:安装 NGINX Web 服务器
Ubuntu 默认存储库包含 NGINX 的所有包。因此只需使用 apt 包管理器安装它即可。
首先,删除并刷新旧的 apt 存储库缓存,然后更新存储库以加载最新的软件包信息,并执行完整升级以升级所有已安装的软件包。
$ sudo apt clean all && sudo apt update && sudo apt dist-upgrade
更新存储库后,就可以安装 NGINX 软件包了。
$ sudo apt install nginx
当 NGINX 安装成功后,我们为 NGINX Web 服务器配置防火墙。
步骤 3:配置 UFW 防火墙
NGINX Web 服务器需要端口号为 80 的 HTTP 端口,还有端口号为 443 的 HTTPS 端口。因此,需要为NGINX 开放相应端口,以便 NGINX 可以正常运行。
默认情况下,UFW 防火墙没有添加任何规则,因此添加这些规则非常容易。执行下面的命令,设置 UFW 防火墙开放相关端口。
$ sudo ufw allow "Nginx Full"
添加防火墙规则后,使用 status 命令检查端口状态。
$ sudo ufw status
上面的命令输出如下。
Status: active
To Action From
-- ------ ----
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp LIMIT Anywhere
Nginx Full ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
22/tcp (v6) LIMIT Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
上面的输出表明已成功添加防火墙规则,我们继续配置 NGINX Web 服务器。
步骤 4: NGINX 与 Apache 配置文件的对比
NGINX 的配置方法与 Apache 服务器非常相似,但结构和语法稍有不同。它们的区别可以通过下面的Apache 和 NGINX 的示例配置文件来理解。
Apache 配置文件位于 /etc/apache2/sites-available/example.com.conf 目录:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/html/
</VirtualHost>
<Directory /var/www/html>
Require all granted
AllowOverride None
</Directory>
NGINX 配置文件位于 /etc/nginx/sites-available/example.com.conf 目录:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
}
仔细观察这两个配置文件,你会发现 Apache 配置文件是用 VirtualHost 表示的,而 NGINX 配置文件是用服务器块(server )表示的。
步骤 5:配置 NGINX Web 服务器
NGINX 具有与 Apache 服务器相同的功能,但它对并发连接的支持更好。NGINX 的配置文件在配置中使用了服务器块。您必须将它配置在存储所有静态 Web 资产(如 HTML、CSS、JavaScript 和图像)的文档根目录的相同位置。
注意:在本指南中,我们假设您的文档根目录是/var/www/html,默认域名是 example.com
在 Ubuntu 中,NGINX 配置文件位于 sites-available 和 sites-enabled 目录中。如果要在 Ubuntu 服务器上部署多个网站,可以在 /etc/nginx/sites-available/ 目录中创建独立的 NGINX 配置文件。
$ sudo nano /etc/nginx/sites-available/example.com.conf
添加下面的代码行,不要忘记将 example.com 和 www.example.com 替换为您自己的域名,以启用 NGINX 的服务器块。
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
}
添加完成后,按 Ctrl + O 保存,并按 Ctrl + X 退出 nano 文本编辑器。
在配置 NGINX 服务器块时,创建一个从 sites-available 目录到 sites-enabled 目录的符号链接。这样,我们可以随时更改位于 sites-available 目录中的配置文件。
$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
执行下面的命令检查 NGINX 是否存在语法错误。
$ sudo nginx -t
如果没有语法错误,重新启动 NGINX。
$ sudo systemctl restart nginx
一切准备就绪后,还需要更改默认 NGINX 用户 www-data 的权限,以授予对根目录的读取、写入和执行权限。
$ sudo chown www-data:www-data /var/www/html
通过运行下面的长列表命令,来验证 www-data 用户和组是否拥有默认的 Web 根目录。
$ ll /var/www/html
运行此命令后,输出会显示 Web 根目录/var/www/html 归 www-data 用户和组所有。这意味着 www-data 用户拥有根目录读取、写入和执行权限。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/migrating-from-apache-to-nginx/