在Linux服务器上搭建PHP环境是部署动态网站的基础步骤,以下以Ubuntu 22.04和CentOS 7为例,提供两种主流方案的详细流程(LAMP:Linux + Apache + MySQL + PHP),所有操作需通过SSH连接服务器执行。
准备工作
-
更新系统
# Ubuntu sudo apt update && sudo apt upgrade -y # CentOS sudo yum update -y
-
安装必要工具
# Ubuntu sudo apt install -y curl wget # CentOS sudo yum install -y curl wget
方案1:LAMP环境(Apache)
步骤1:安装Apache
sudo systemctl enable --now apache2 # CentOS sudo yum install -y httpd sudo systemctl enable --now httpd
- 验证:浏览器访问
http://服务器IP
,出现Apache欢迎页即成功。
步骤2:安装MySQL/MariaDB
sudo mysql_secure_installation # 按提示设置root密码 # CentOS sudo yum install -y mariadb-server sudo systemctl enable --now mariadb sudo mysql_secure_installation
步骤3:安装PHP及扩展
# Ubuntu(PHP 8.1) sudo apt install -y php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml # CentOS(需先启用EPEL和Remi仓库) sudo yum install -y epel-release sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum-config-manager --enable remi-php81 sudo yum install -y php php-mysqlnd php-gd php-xml php-mbstring
步骤4:配置Apache支持PHP
-
修改配置文件:
# Ubuntu sudo nano /etc/apache2/mods-enabled/dir.conf # 将 `index.php` 移到文件列表首位: # DirectoryIndex index.php index.html ... # CentOS sudo nano /etc/httpd/conf/httpd.conf # 在 `<Directory /var/www/html>` 段内添加: # DirectoryIndex index.php index.html
-
重启Apache:
# Ubuntu sudo systemctl restart apache2 # CentOS sudo systemctl restart httpd
方案2:LEMP环境(Nginx)
步骤1:安装Nginx
sudo systemctl enable --now nginx # CentOS sudo yum install -y nginx sudo systemctl enable --now nginx
步骤2:安装PHP-FPM
# CentOS(使用Remi仓库) sudo yum install -y php-fpm php-mysqlnd
步骤3:配置Nginx支持PHP
-
编辑Nginx默认站点配置:
sudo nano /etc/nginx/sites-available/default # Ubuntu sudo nano /etc/nginx/conf.d/default.conf # CentOS
-
在
server
块内添加:location ~ \.php$ { include snippets/fastcgi-php.conf; # Ubuntu # include fastcgi_params; # CentOS fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 版本路径需匹配实际 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
-
重启Nginx:
sudo systemctl restart nginx sudo systemctl restart php-fpm # 重启PHP-FPM服务
测试PHP环境
- 创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
- 浏览器访问
http://服务器IP/info.php
,显示PHP配置信息即成功。
安全提示:测试后务必删除此文件:sudo rm /var/www/html/info.php
安全加固建议
-
防火墙设置
# Ubuntu(允许HTTP/HTTPS) sudo ufw allow 'Apache Full' # CentOS(放行80/443端口) sudo firewall-cmd --permanent --add-service=http --add-service=https sudo firewall-cmd --reload
-
PHP安全配置
- 编辑
/etc/php/8.1/apache2/php.ini
(路径因版本而异):expose_php = Off # 隐藏PHP版本 disable_functions = exec,system,passthru # 禁用危险函数 cgi.fix_pathinfo=0 # 防止路径遍历攻击
- 编辑
-
定期更新
# Ubuntu sudo apt update && sudo apt upgrade # CentOS sudo yum update
常见问题解决
-
PHP文件被直接下载
- 原因:Web服务器未关联PHP处理器。
- 解决:检查Apache的
dir.conf
或Nginx的PHP配置块是否正确。
-
数据库连接失败
- 检查MySQL用户权限:
CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost'; FLUSH PRIVILEGES;
- 检查MySQL用户权限:
-
502 Bad Gateway(Nginx)
- 确认PHP-FPM服务运行:
systemctl status php-fpm
- 检查Nginx配置中
fastcgi_pass
的sock路径是否匹配。
- 确认PHP-FPM服务运行:
引用说明
本文参考官方文档:
- Apache HTTP Server
- Nginx官方文档
- PHP手册
- MariaDB知识库
重要提示:生产环境务必遵循最小权限原则,定期备份数据,并使用HTTPS加密传输。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4803.html