在Linux服务器上搭建PHP环境是部署动态网站的关键步骤,以下为详细操作指南,遵循最佳实践并兼顾安全性与性能:
环境准备
-
系统选择
- 推荐Ubuntu 22.04 LTS或CentOS 7+(需已配置
sudo
权限用户) - 更新系统:
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian sudo yum update -y # CentOS/RHEL
- 推荐Ubuntu 22.04 LTS或CentOS 7+(需已配置
-
防火墙配置
- 开放HTTP/HTTPS端口:
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp # Ubuntu sudo firewall-cmd --permanent --add-service={http,https} && sudo firewall-cmd --reload # CentOS
- 开放HTTP/HTTPS端口:
安装Web服务器(Nginx/Apache二选一)
选项1:Nginx(高性能场景推荐)
sudo systemctl enable --now nginx # CentOS sudo yum install epel-release -y sudo yum install nginx -y sudo systemctl enable --now nginx
选项2:Apache(传统兼容方案)
sudo systemctl enable --now apache2 # CentOS sudo yum install httpd -y sudo systemctl enable --now httpd
安装PHP
-
添加PHP仓库(以PHP 8.1为例)
# Ubuntu sudo apt install software-properties-common -y sudo add-apt-repository ppa:ondrej/php -y sudo apt update # CentOS(启用Remi仓库) sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y sudo yum-config-manager --enable remi-php81
-
安装PHP核心及扩展
# Ubuntu sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring -y # CentOS sudo yum install php php-fpm php-mysqlnd php-curl php-gd php-mbstring -y
-
启动PHP-FPM服务
sudo systemctl enable --now php-fpm
配置Web服务器与PHP集成
Nginx配置
-
编辑站点配置文件:
sudo nano /etc/nginx/sites-available/your_domain.conf
-
添加以下内容(关键部分):
server { listen 80; server_name your_domain.com; root /var/www/html; index index.php index.html; location ~ \.php$ { include snippets/fastcgi-php.conf; # Ubuntu路径 # include /etc/nginx/fastcgi_params; # CentOS路径 fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
-
启用配置并测试:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
Apache配置
sudo apt install libapache2-mod-php8.1 -y # Ubuntu sudo systemctl restart apache2
- 配置文件自动生效(默认已关联
.php
文件处理)
安装数据库(MySQL/MariaDB)
sudo mysql_secure_installation # 运行安全配置向导 # CentOS sudo yum install mariadb-server -y sudo systemctl enable --now mariadb sudo mysql_secure_installation
环境验证
- 创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
- 访问测试:
- 浏览器打开
http://your_server_ip/info.php
- 应显示PHP版本、扩展等详细信息
- 浏览器打开
- 立即删除测试文件(安全必需):
sudo rm /var/www/html/info.php
安全加固措施
- PHP安全配置
- 编辑
/etc/php/8.1/fpm/php.ini
(路径版本可能不同):expose_php = Off disable_functions = exec,passthru,shell_exec,system cgi.fix_pathinfo=0
- 编辑
- 文件权限控制
sudo chown -R www-data:www-data /var/www/html # Ubuntu sudo chown -R apache:apache /var/www/html # CentOS sudo find /var/www/html -type d -exec chmod 755 {} \; sudo find /var/www/html -type f -exec chmod 644 {} \;
- 防火墙限制访问源
sudo ufw allow from 192.168.1.0/24 to any port 80 # 仅允许特定IP段
故障排查
- Nginx/Apache无法解析PHP:
检查服务日志:journalctl -u nginx --since "10 min ago" # Nginx tail -f /var/log/apache2/error.log # Apache
- 数据库连接失败:
验证MySQL用户权限:CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword!'; GRANT ALL PRIVILEGES ON webdb.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES;
维护建议
- 定期更新:
sudo apt update && sudo apt upgrade # Ubuntu sudo yum update # CentOS
- 备份策略:
- 数据库:
mysqldump -u root -p --all-databases > full_backup.sql
- 网站文件:
tar -czvf web_backup.tar.gz /var/www/html
- 数据库:
- 监控工具:
安装htop
、netdata
或配置Prometheus监控资源使用
引用说明:
- PHP官方安装文档:https://www.php.net/manual/en/install.unix.php
- Nginx配置指南:https://nginx.org/en/docs/beginners_guide.html
- Linux安全加固标准:CIS Benchmarks 基于Ubuntu/CentOS官方文档及Web服务最佳实践,适用于生产环境部署。*
通过以上步骤,您已建立安全、高效的PHP运行环境,建议定期审查服务器日志并遵循最小权限原则,以保障服务稳定与数据安全。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4804.html