如何从 Apache 切换到 Nginx

如何从 Apache 切换到 Nginx

用 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-availablesites-enabled 目录中。如果要在 Ubuntu 服务器上部署多个网站,可以在 /etc/nginx/sites-available/ 目录中创建独立的 NGINX 配置文件。

$ sudo nano /etc/nginx/sites-available/example.com.conf

添加下面的代码行,不要忘记将 example.comwww.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/htmlwww-data 用户和组所有。这意味着 www-data 用户拥有根目录读取、写入和执行权限。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/migrating-from-apache-to-nginx/

(0)
牛奇网牛奇网
上一篇 2022年9月30日 下午2:04
下一篇 2022年10月1日 上午10:25

相关推荐

发表回复

登录后才能评论
2024年独立站建站最佳服务器主机Cloudway黑五大促前4个月40%OFF,立即获取优惠