环境准备
-
更新系统
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu sudo yum update -y # CentOS/RHEL
-
安装Apache服务器
sudo apt install apache2 -y # Debian/Ubuntu sudo yum install httpd -y # CentOS/RHEL sudo systemctl start apache2 && sudo systemctl enable apache2 # 启动并设置开机自启
-
安装PHP及扩展
sudo apt install php libapache2-mod-php php-mysql -y # Debian/Ubuntu sudo yum install php php-mysqlnd -y # CentOS/RHEL sudo systemctl restart apache2 # 重启Apache使PHP生效
部署PHP文件
-
上传文件到服务器
- 通过SFTP工具(如FileZilla)或命令行(
scp
)将PHP文件上传至Web根目录:- Apache默认目录:
- Debian/Ubuntu:
/var/www/html/
- CentOS/RHEL:
/var/www/html/
- Debian/Ubuntu:
- 示例:
scp your_file.php user@server_ip:/var/www/html/
- Apache默认目录:
- 通过SFTP工具(如FileZilla)或命令行(
-
设置文件权限(确保安全)
sudo chown -R www-data:www-data /var/www/html/ # Debian/Ubuntu (www-data为Apache用户) sudo chown -R apache:apache /var/www/html/ # CentOS/RHEL sudo chmod -R 755 /var/www/html/ # 设置目录可执行权限 sudo chmod 644 /var/www/html/your_file.php # 设置文件只读权限
配置Apache支持PHP
-
确认PHP模块已启用
sudo a2enmod php8.x # Debian/Ubuntu(替换x为版本号) sudo systemctl restart apache2
-
优先级设置(确保PHP文件优先解析)
编辑Apache配置文件:sudo nano /etc/apache2/mods-enabled/dir.conf # Debian/Ubuntu
将
index.php
移到首位:<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
安全与优化
-
防火墙放行HTTP/HTTPS
sudo ufw allow 80/tcp && sudo ufw allow 443/tcp # Debian/Ubuntu sudo firewall-cmd --permanent --add-service={http,https} # CentOS/RHEL
-
禁用危险函数
编辑php.ini
:sudo nano /etc/php/8.x/apache2/php.ini # 路径根据版本调整
修改:
disable_functions = exec,passthru,shell_exec,system
-
安装SSL证书(推荐Let’s Encrypt)
sudo apt install certbot python3-certbot-apache -y # Debian/Ubuntu sudo certbot --apache -d your_domain.com
验证部署
- 创建测试文件
/var/www/html/info.php
:<?php phpinfo(); ?>
- 浏览器访问
http://your_server_ip/info.php
,显示PHP配置信息即成功。
故障排查
- 403 Forbidden:检查文件权限(
chmod 644
)和目录所有权(chown www-data
)。 - 500 Internal Error:查看Apache错误日志:
sudo tail -f /var/log/apache2/error.log # Debian/Ubuntu sudo journalctl -xe -u httpd # CentOS/RHEL
- PHP代码不执行:确认已安装
libapache2-mod-php
并重启Apache。
扩展方案
- Nginx替代Apache:
- 安装Nginx与PHP-FPM:
sudo apt install nginx php-fpm -y
- 配置Nginx站点:
server { listen 80; root /var/www/html; index index.php; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.x-fpm.sock; } }
- 安装Nginx与PHP-FPM:
最佳实践
- 定期更新:使用
apt upgrade
或yum update
保持软件最新。 - 备份配置:修改关键文件前备份(如
cp php.ini php.ini.bak
)。 - 最小权限原则:避免使用
777
权限,推荐755
(目录)和644
(文件)。 - 使用版本控制:通过Git管理代码,避免直接修改生产环境文件。
引用说明:本文操作基于Ubuntu 22.04/CentOS 7实测,参考Apache官方文档(https://httpd.apache.org/docs/)、PHP手册(https://www.php.net/manual/)及Let’s Encrypt指南(https://certbot.eff.org/),安全建议遵循OWASP PHP安全规范(https://owasp.org/www-project-php-security-guide/)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7342.html