凌峰创科服务平台

Ubuntu如何搭建PHP服务器?

下面我将提供一个详细、分步的指南,以 Nginx + PHP-FPM 为例进行讲解,这是一个在现代 Web 开发中非常流行且高效的组合。

Ubuntu如何搭建PHP服务器?-图1
(图片来源网络,侵删)

方案概述

我们将安装以下软件:

  • Nginx: 一个高性能的 Web 服务器和反向代理,它比 Apache 更轻量级,特别擅长处理静态文件(如 HTML, CSS, JavaScript, 图片)。
  • PHP-FPM (FastCGI Process Manager): 一个 PHP 的 FastCGI 实现,它能够管理 PHP 进程池,处理来自 Nginx 的动态 PHP 请求,性能远超传统的 mod_php
  • MariaDB/MySQL: 一个流行的开源数据库服务器(可选,但绝大多数网站都需要)。
  • phpMyAdmin: 一个用于管理数据库的 Web 界面(可选)。

更新系统

在安装任何新软件之前,首先更新系统的软件包列表和已安装的软件包。

sudo apt update
sudo apt upgrade -y

安装 Nginx

  1. 安装 Nginx:

    sudo apt install nginx -y
  2. 安装后,Nginx 服务通常会自动启动,我们可以检查其状态:

    Ubuntu如何搭建PHP服务器?-图2
    (图片来源网络,侵删)
    sudo systemctl status nginx

    如果看到 active (running),说明安装成功。

  3. (可选)测试 Nginx,在浏览器中访问你的服务器 IP 地址(http://你的服务器IP),你应该能看到 Nginx 的默认欢迎页面。

    要获取你的服务器 IP 地址,可以运行:

    curl ifconfig.me

安装 PHP 和 PHP-FPM

  1. 安装 PHP 和一些常用的扩展。php-fpm 是核心包,php-mysql 用于连接 MySQL/MariaDB,php-curl, php-gd, php-xml, php-mbstring, php-zip 等都是很多现代 PHP 应用(如 WordPress, Laravel)所需要的。

    Ubuntu如何搭建PHP服务器?-图3
    (图片来源网络,侵删)
    sudo apt install php-fpm php-mysql php-curl php-gd php-xml php-mbstring php-zip -y
  2. 安装完成后,PHP-FPM 服务也会自动启动,我们可以检查其状态:

    sudo systemctl status php8.1-fpm

    注意: php8.1-fpm 中的 1 是 PHP 版本号,Ubuntu 22.04 默认安装的是 PHP 8.1,如果你的系统版本不同,版本号可能不同(如 php8.0-fpmphp7.4-fpm),请根据实际情况修改。


配置 Nginx 处理 PHP 文件

我们需要告诉 Nginx 如何将 .php 文件的请求转发给 PHP-FPM 处理。

  1. 创建一个自定义的 Nginx 配置文件/etc/nginx/sites-available/ 目录下,我们不直接修改默认的 default 文件,而是创建一个新的配置文件,my_php_site

    sudo nano /etc/nginx/sites-available/my_php_site
  2. 粘贴以下配置内容 这是一个基础的 Nginx 配置,它会监听 80 端口,并将所有请求 index.php 或以 .php 结尾的 URI 转发给 PHP-FPM。

    server {
        listen 80;
        server_name _; # 使用你的域名,或用 _ 匹配所有域名
        root /var/www/html; # 网站根目录
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ =404;
        }
        # 将所有以 .php 结尾的文件请求传递给 PHP-FPM
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            # 这行会根据 PHP 版本自动指向正确的 sock 文件
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        }
        # 阻止访问 .htaccess 文件(如果有的话)
        location ~ /\.ht {
            deny all;
        }
    }

    重要说明:

    • root /var/www/html: 这是你的网站文件存放的目录,我们将在这里创建一个测试文件。
    • fastcgi_pass unix:/run/php/php8.1-fpm.sock;: 这是指向 PHP-FPM 的 Unix 套接字文件。请确保这里的版本号(php8.1-fpm)与你安装的 PHP 版本一致,你可以用 ls /run/php/ 来查看可用的 sock 文件。
  3. 启用新的网站配置 创建符号链接,将 my_php_sitesites-available 链接到 sites-enabled 目录。

    sudo ln -s /etc/nginx/sites-available/my_php_site /etc/nginx/sites-enabled/
  4. 禁用默认配置(可选) 为了避免冲突,可以禁用默认的 default 站点。

    sudo rm /etc/nginx/sites-enabled/default
  5. 测试并重新加载 Nginx 在重新加载配置之前,务必测试配置文件是否有语法错误。

    sudo nginx -t

    如果看到 syntax is oktest is successful,则说明配置正确。

    然后重新加载 Nginx 以应用新配置:

    sudo systemctl reload nginx

创建 PHP 测试页面

我们来创建一个 info.php 文件,以验证 PHP 是否能正常工作。

  1. 创建文件:

    sudo nano /var/www/html/info.php
  2. <?php
    phpinfo();
    ?>
  3. 设置正确的文件权限:

    sudo chown -R www-data:www-data /var/www/html/
    sudo chmod -R 755 /var/www/html/

    www-data 是 Nginx 和 PHP-FPM 运行时所使用的用户和组,这一步确保了 Web 服务器可以读取和执行你的 PHP 文件。


验证安装

  1. 在浏览器中访问你创建的测试文件: http://你的服务器IP/info.php

  2. 如果一切正常,你应该能看到一个详细的 PHP 信息页面,显示了你的 PHP 版本、配置选项、已安装的模块等。

  3. 安全提示: 出于安全考虑,测试成功后应该立即删除 info.php 文件,因为它会暴露服务器的敏感信息。

    sudo rm /var/www/html/info.php

(可选)步骤七:安装 MariaDB/MySQL

如果你的网站需要数据库,可以安装 MariaDB(MySQL 的一个分支,完全兼容)。

  1. 安装 MariaDB 服务器:

    sudo apt install mariadb-server -y
  2. 运行安全脚本,设置 root 密码并移除不安全的默认设置:

    sudo mysql_secure_installation

    根据提示操作,建议为 root 设置一个强密码,并对其他选项选择 Y (Yes)。


(可选)步骤八:安装 phpMyAdmin

phpMyAdmin 是一个强大的数据库管理工具。

  1. 安装 phpMyAdmin:

    sudo apt install phpmyadmin -y

    在安装过程中,会提示你选择 Web 服务器,由于我们用的是 Nginx,它不会出现在列表中,直接选择 <OK> 并按回车键即可,它不会自动配置 Nginx。

  2. 手动配置 Nginx 以支持 phpMyAdmin phpMyAdmin 的配置文件位于 /etc/phpmyadmin/nginx.conf,我们需要在 Nginx 的主配置中引入它。

    编辑你的网站配置文件:

    sudo nano /etc/nginx/sites-available/my_php_site

    server 块内部添加以下 location 块,以处理 /phpmyadmin 路径的请求:

    location /phpmyadmin {
        root /usr/share/;
        index index.php index.html index.htm;
        location ~ ^/phpmyadmin/(.+\.php)$ {
            try_files $uri =404;
            root /usr/share/;
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
        location ~* ^/phpmyadmin/(.+\.php)$ {
            deny all;
        }
    }
  3. 重新加载 Nginx

    sudo nginx -t
    sudo systemctl reload nginx
  4. 访问 phpMyAdmin 你可以在浏览器中通过 http://你的服务器IP/phpmyadmin 访问 phpMyAdmin,使用你之前设置的 MariaDB root 用户名和密码登录。


恭喜!你已经成功在 Ubuntu 上搭建了一个功能完整的 LEMP (Linux, Nginx, MariaDB, PHP) 服务器,现在你可以:

  1. 将你的网站文件上传到 /var/www/html/ 目录。
  2. 为你的网站创建数据库和用户。
  3. 开始部署你的 PHP 应用程序(如 WordPress, Laravel, Nextcloud 等)。

如果你在后续使用中遇到问题,可以检查 Nginx 和 PHP-FPM 的错误日志:

  • Nginx 错误日志: sudo tail -f /var/log/nginx/error.log
  • PHP-FPM 错误日志: sudo tail -f /var/log/php8.1-fpm.log (同样,版本号可能不同)
分享:
扫描分享到社交APP
上一篇
下一篇