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>
启用配置:

sudo a2ensite project.conf sudo a2enmod rewrite # 启用URL重写 sudo systemctl restart apache2
配置环境变量(如.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即可查看部署结果,建议首次部署后执行完整的业务功能测试。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/289940.html

