如何部署PHP项目到服务器?完整步骤教程
- 云服务器
- 2026-02-09
- 4582
PHP项目部署到服务器教程(以Apache服务器为例)
准备工作
-
服务器环境
- Linux服务器(推荐Ubuntu/CentOS)
- Apache/Nginx Web服务器
- PHP(版本需匹配项目要求)
- MySQL/MariaDB数据库
- FTP/SFTP工具(如FileZilla)或SSH客户端
-
项目要求
- 确保代码已提交到Git仓库或打包成ZIP
- 数据库备份文件(.sql格式)
- 项目依赖清单(如composer.json)
部署步骤
连接服务器(SSH)
ssh username@server_ip # 输入密码或使用SSH密钥登录
安装环境(Ubuntu示例)
# 更新系统 sudo apt update && sudo apt upgrade -y # 安装Apache sudo apt install apache2 -y # 安装PHP及扩展(以PHP8.1为例) sudo apt install php8.1 php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring -y # 安装MySQL sudo apt install mysql-server -y # 安装Composer(PHP依赖管理) curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
配置数据库
# 登录MySQL sudo mysql # 创建数据库和用户 CREATE DATABASE project_db; CREATE USER 'project_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON project_db.* TO 'project_user'@'localhost'; FLUSH PRIVILEGES; EXIT; # 导入数据(上传.sql文件后执行) mysql -u project_user -p project_db < /path/to/database.sql
上传项目文件
-
方法1:FTP/SFTP
使用FileZilla连接服务器,上传文件到 /var/www/html/
-
方法2:Git克隆
cd /var/www/html sudo git clone https://github.com/yourname/project.git -
方法3:SCP命令
scp -r local_project_dir username@server_ip:/var/www/html/
配置项目权限
# 设置项目目录所有权 sudo chown -R www-data:www-data /var/www/html/project # 设置目录权限 sudo chmod -R 755 /var/www/html/project/storage # Laravel等框架需要
安装PHP依赖
cd /var/www/html/project sudo composer install --no-dev
配置Apache虚拟主机
sudo nano /etc/apache2/sites-available/project.conf <VirtualHost *:80> ServerName yourdomain.com DocumentRoot /var/www/html/project/public # 注意框架入口目录 <Directory /var/www/html/project/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/project_error.log CustomLog ${APACHE_LOG_DIR}/project_access.log combined </VirtualHost>
启用配置:

配置环境变量(如.env文件)
cd /var/www/html/project cp .env.example .env nano .env DB_HOST=localhost DB_DATABASE=project_db DB_USERNAME=project_user DB_PASSWORD=StrongPassword123! APP_URL=http://yourdomain.com
生成应用密钥(Laravel等框架)
php artisan key:generate
域名解析(可选)
- 在域名服务商处添加A记录:
- 主机: 或 www
- 指向:服务器IP
- 等待DNS生效(通常5-30分钟)
安全加固
-
防火墙配置
sudo ufw allow 'Apache Full' sudo ufw enable -
SSL证书(Let’s Encrypt)
sudo apt install certbot python3-certbot-apache sudo certbot --apache -d yourdomain.com
-
禁用目录列表
在Apache配置中添加:
Options -Indexes
常见问题排查
-
403 Forbidden
- 检查目录权限:sudo chown -R www-data:www-data /var/www
- 确认DocumentRoot路径正确
-
500 服务器错误

- 查看日志:tail -f /var/log/apache2/error.log
- 检查.env文件配置
- 确保PHP扩展已安装
-
数据库连接失败
- 验证MySQL用户权限
- 检查防火墙是否开放3306端口
自动化部署(进阶)
使用Git Hooks实现自动部署:
# 服务器创建裸仓库 git init --bare /opt/git/project.git # 添加钩子 nano /opt/git/project.git/hooks/post-receive #!/bin/bash TARGET="/var/www/html/project" GIT_DIR="/opt/git/project.git" BRANCH="master" while read oldrev newrev ref do if [[ $ref = refs/heads/$BRANCH ]]; then echo "Deploying $BRANCH to $TARGET" git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH cd $TARGET composer install --no-dev php artisan migrate --force fi done
设置可执行权限:
chmod +x /opt/git/project.git/hooks/post-receive
完成以上步骤后,访问 http://yourdomain.com 即可查看部署结果,建议首次部署后执行完整的业务功能测试。