当前位置:首页 > 云服务器 > 正文

如何部署PHP项目到服务器?完整步骤教程

PHP项目部署到服务器教程(以Apache服务器为例)

准备工作

  1. 服务器环境

    • Linux服务器(推荐Ubuntu/CentOS)
    • Apache/Nginx Web服务器
    • PHP(版本需匹配项目要求)
    • MySQL/MariaDB数据库
    • FTP/SFTP工具(如FileZilla)或SSH客户端
  2. 项目要求

    • 确保代码已提交到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>

启用配置:

如何部署PHP项目到服务器?完整步骤教程 第1张

配置环境变量(如.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


域名解析(可选)

  1. 在域名服务商处添加A记录:
    • 主机: 或 www
    • 指向:服务器IP
  2. 等待DNS生效(通常5-30分钟)


安全加固

  1. 防火墙配置

    sudo ufw allow 'Apache Full' sudo ufw enable
  2. SSL证书(Let’s Encrypt)

    如何部署PHP项目到服务器?完整步骤教程 第2张

    sudo apt install certbot python3-certbot-apache sudo certbot --apache -d yourdomain.com
  3. 禁用目录列表

    在Apache配置中添加:

    Options -Indexes


常见问题排查

  1. 403 Forbidden

    • 检查目录权限:sudo chown -R www-data:www-data /var/www
    • 确认DocumentRoot路径正确
  2. 500 服务器错误

    如何部署PHP项目到服务器?完整步骤教程 第3张

    • 查看日志: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 即可查看部署结果,建议首次部署后执行完整的业务功能测试。

0