官方网站 云服务器 专用服务器香港云主机28元月 全球云主机40+ 数据中心地区 成品网站模版 企业建站 业务咨询 微信客服

Nginx部署两个PHP虚拟主机

admin 3小时前 阅读数 245 #虚拟主机知识
要部署两个PHP虚拟主机于Nginx,首先确保Nginx和PHP-FPM已正确安装,在Nginx配置文件中为每个虚拟主机创建独立的server块,分别指定server_nameroot路径及fastcgi_pass指向不同的PHP-FPM实例或池,确保为每个虚拟主机设置正确的索引文件、错误页面和访问控制,重启Nginx以应用更改,并测试每个站点的访问与功能,确保配置无误且性能稳定。

使用 Nginx 部署两个 PHP 虚拟主机的详细指南

在当今互联网快速发展的时代,服务器管理和优化已成为确保网站稳定性和高性能的重要环节,无论是个人博客还是企业级应用,合理的服务器配置都是不可或缺的,Nginx 是一款高性能的 HTTP 和反向代理服务器,以其轻量、高效的特点而广受欢迎,本文将详细介绍如何使用 Nginx 部署两个 PHP 虚拟主机,并通过实例演示帮助读者更好地理解和掌握这一技术。


什么是 Nginx?

Nginx(发音为“engine X”)是一款开源的高性能 Web 服务器软件,以其卓越的高并发处理能力和高效的静态文件处理而闻名,它最初由俄罗斯程序员 Igor Sysoev 开发,旨在解决高负载下的 HTTP 服务问题,与传统的 Apache 服务器相比,Nginx 在处理静态文件时表现出色,并且支持动态内容处理,其事件驱动架构使其能够轻松应对大量并发连接,在资源消耗较低的情况下提供更快的服务响应。


准备环境

在开始之前,请确保您的系统已经安装了以下必要的软件包:

  • Nginx:用于处理 HTTP 请求。
  • PHP-FPM:FastCGI 进程管理器,允许 PHP 脚本通过 FastCGI 协议运行。
  • MySQL 或其他数据库管理系统:根据需要选择合适的数据库来存储应用程序的数据。

我们将创建两个虚拟主机,分别命名为 example1.comexample2.com,这两个域名可以是真实的,也可以是在本地环境中设置的伪域名,如果是后者,您可以通过修改 hosts 文件的方式来实现这一点。

修改 hosts 文件

在 Windows 系统下,您可以打开 C:\Windows\System32\drivers\etc\hosts 文件并添加如下内容:

0.0.1 example1.com
127.0.0.1 example2.com

对于 Linux 用户,则可以编辑 /etc/hosts 文件以达到相同的效果,请根据实际情况调整 IP 地址和域名。


安装 Nginx 和 PHP-FPM

我们需要安装 Nginx 和 PHP-FPM,根据您的操作系统选择相应的安装命令:

Debian 发行版(如 Ubuntu)

sudo apt update
sudo apt install nginx php-fpm

CentOS 发行版

sudo yum install epel-release
sudo yum install nginx php-fpm

安装完成后,启动并启用 Nginx 和 PHP-FPM 服务:

sudo systemctl start nginx php-fpm
sudo systemctl enable nginx php-fpm

您可以访问 http://localhost 来验证 Nginx 是否正常工作,如果一切顺利,您应该会看到默认的欢迎页面。


配置 PHP-FPM

为了使 PHP 应用程序能够正确地与 Nginx 交互,我们需要对 PHP-FPM 进行一些基本配置,通常情况下,默认配置已经足够满足大多数需求,但我们仍然建议根据具体情况进行适当的调整。

找到位于 /etc/php-fpm.d/www.conf 的配置文件,并按照下面的步骤进行修改:

  1. 监听地址和端口

    找到 listen = 127.0.0.1:9000 这一行,确保它没有被注释掉(即前面没有 符号),这行指定了 PHP-FPM 监听的地址和端口,默认情况下监听的是本地回环接口上的 9000 端口。

  2. 为不同的虚拟主机分配不同的 PHP-FPM 实例

    如果您希望为不同的虚拟主机分配不同的 PHP-FPM 实例,可以在同一目录下创建新的配置文件,example1.confexample2.conf,并在其中指定不同的监听地址或端口号。

    [example1]
    listen = /var/run/php-fpm/example1.sock
    [example2]
    listen = /var/run/php-fpm/example2.sock

    注意:当使用 Unix 域套接字时,您可能还需要修改 Nginx 配置文件中的相应部分以匹配这些设置。

  3. 重启 PHP-FPM 服务

    启动或重启 PHP-FPM 服务以使更改生效:

    sudo systemctl restart php-fpm

创建虚拟主机

我们将创建两个 PHP 虚拟主机,每个虚拟主机都需要有自己的文档根目录、错误日志文件以及访问日志文件,假设我们要创建的两个站点分别是 example1.comexample2.com,它们各自的文档根目录分别为 /var/www/example1/var/www/example2

创建文档根目录

使用 mkdir 命令创建相应的目录结构:

sudo mkdir -p /var/www/example1 /var/www/example2

为这些目录设置适当的权限,以便 Nginx 可以读取其中的内容:

sudo chown -R www-data:www-data /var/www/example1 /var/www/example2
sudo chmod -R 755 /var/www/example1 /var/www/example2

修改 Nginx 配置文件

找到 Nginx 的主配置文件,通常是 /etc/nginx/nginx.conf,在文件末尾添加如下内容,定义两个虚拟主机:

server {
    listen 80;
    server_name example1.com;
    root /var/www/example1;
    index index.php index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    error_log /var/log/nginx/example1_error.log;
    access_log /var/log/nginx/example1_access.log;
}
server {
    listen 80;
    server_name example2.com;
    root /var/www/example2;
    index index.php index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    error_log /var/log/nginx/example2_error.log;
    access_log /var/log/nginx/example2_access.log;
}

上述示例中使用的 fastcgi_pass 值可能需要根据您的实际 PHP-FPM 设置进行调整,如果您正在使用较新版本的 Nginx,则可能需要将 include snippets/fastcgi-php.conf; 替换为 include fastcgi_params;

测试 Nginx 配置

保存所有更改后,检查 Nginx 配置是否正确:

sudo nginx -t

如果没有错误信息出现,您可以重新加载 Nginx 以使更改生效:

sudo systemctl reload nginx

测试虚拟主机

为了验证配置是否成功,您可以创建一个简单的 PHP 文件来测试连接。

/var/www/example1 中创建一个名为 info.php 的文件,内容如下:

<?php
phpinfo();
?>

访问 http://example1.com/info.php,您应该能看到 PHP 信息页面,同样地,在 /var/www/example2 中也创建一个类似的文件,并访问 http://example2.com/info.php 来确认第二个虚拟主机是否正常工作。


通过本文的学习,相信读者已经掌握了如何使用 Nginx 部署两个 PHP 虚拟主机的基本方法,在实际应用中,您可能会遇到更多复杂的情况,如 SSL/TLS 加密、负载均衡等,希望这篇文章能够为您提供一个良好的起点,鼓励大家进一步探索相关知识和技术,如果您有任何疑问或建议,请随时留言交流!

版权声明
本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主 如果涉及侵权请尽快告知,我们将会在第一时间删除。
本站原创内容未经允许不得转载,或转载时需注明出处:特网云知识库

热门