在 Ubuntu 上搭建高性能且易维护的 PHP 运行环境,推荐采用 LAMP 或 LNMP 架构,并按生产标准进行版本选择、进程管理、性能与安全加固。以下给出一套可复用的实操方案。
一 环境选型与版本建议
二 快速安装与集成
系统准备
sudo apt update && sudo apt upgrade -ysudo apt install -y software-properties-commonsudo add-apt-repository ppa:ondrej/php -y && sudo apt update方案 A:LAMP(Apache + mod_php,快速上手)
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xmlsudo systemctl enable --now apache2 mysqlsudo chown -R www-data:www-data /var/www/html && sudo chmod -R 755 /var/www/html/var/www/html/info.php 写入 <?php phpinfo(); ?>,访问 http://服务器IP/info.php方案 B:LNMP(Nginx + PHP-FPM,生产推荐)
sudo apt install -y nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xmlsudo systemctl enable --now nginx php-fpm mysqllocation ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 版本号与安装的 PHP-FPM 一致
}
sudo nginx -t && sudo systemctl reload nginx方案 C:Apache + PHP-FPM(兼顾易用与性能)
sudo apt install -y apache2 libapache2-mod-fcgid php8.3 php8.3-fpm php8.3-mysql ...sudo a2enmod proxy proxy_fcgi rewrite<VirtualHost *:80>
DocumentRoot /var/www/your-app
<Directory /var/www/your-app>
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
sudo a2ensite your-app.conf && sudo systemctl reload apache2三 数据库与项目部署
sudo mysql_secure_installation(设置 root 密码、移除匿名用户等)sudo mysql -u root -p
CREATE DATABASE your_project_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'StrongPass!';
GRANT ALL PRIVILEGES ON your_project_db.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
/var/www/html/your-app 或自定义目录sudo chown -R www-data:www-data /var/www/html/your-app && sudo chmod -R 755 /var/www/html/your-app.env 或 config.php)http://域名或IP 验证/var/log/apache2/error.log/var/log/nginx/error.log/etc/php/8.3/fpm/pool.d/www.conf 中 error_log 指定路径四 性能与安全最佳实践
sudo phpenmod opcache && sudo systemctl reload apache2|nginxpm.max_children、pm.start_servers、pm.min/max_spare_servers)disable_functions = exec,system,passthru,shell_exec,popen,...open_basedir = /var/www/html:/tmp五 常见问题与排查清单
.php,检查 PHP-FPM 是否在运行 与 socket 路径是否一致(如:/run/php/php8.3-fpm.sock)sudo apt install php8.3-gd php8.3-mbstring php8.3-zip/var/www 及子目录属主为 www-data,权限 755/644 分层设置sudo nginx -t;Apache 执行 sudo apache2ctl configtestphp -v 与 php-fpm8.3 -v 输出应匹配)