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

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

准备工作

  1. 服务器环境

    php项目部署到服务器教程

    • 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项目部署到服务器教程

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

域名解析(可选)

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

安全加固

  1. 防火墙配置

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

    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项目部署到服务器教程

    • 查看日志:tail -f /var/log/apache2/error.log
    • 检查.env文件配置
    • 确保PHP扩展已安装
  3. 数据库连接失败

    • 验证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

(0)
上一篇 2026年2月9日 23:20
下一篇 2026年2月9日 23:26

相关推荐

  • 深圳宽带测速不准怎么办?宽带测速慢怎么解决

    深圳宽带测速的核心结论与专业诊断在深圳这座高度数字化的城市,宽带测速已不再仅仅是查看一个数字,而是诊断网络健康、优化业务效率及保障家庭娱乐体验的关键手段,核心结论非常明确:深圳地区千兆宽带实测速率若低于 900Mbps,或延迟波动超过 20ms,即存在网络瓶颈,这通常源于光猫性能、网线规格、Wi-Fi 频段干扰……

    2026年4月24日
    01835
  • php网站如何检测漏洞,php网站漏洞怎么检测

    PHP网站检测的核心在于构建一套涵盖代码逻辑、安全漏洞、性能瓶颈及环境配置的立体化监控体系,单纯的功能测试已无法满足现代互联网应用的高可用需求,企业必须建立从代码层到基础设施层的全链路检测机制,利用自动化工具结合人工审计,才能精准定位隐患,确保业务连续性, 这不仅是技术维护的要求,更是保障用户数据安全与企业品牌……

    2026年3月21日
    01523
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 如何停止ping网络?网络故障排除技巧大全

    要停止正在运行的 ping 命令,根据你的操作系统和运行环境,有以下几种方法:通用方法(适用于所有系统)按键盘快捷键 Ctrl + C这是最常用且最简单的方法,在运行 ping 的命令行窗口(如 Windows 的 CMD/PowerShell、Linux/macOS 的终端)中,按下 Ctrl + C 组合键……

    2026年2月9日
    03830
  • 虚拟主机PHP文件网页打不开是什么原因?

    当您满怀期待地将精心编写的PHP文件上传至虚拟主机,却发现网页无法正常打开时,这无疑是一件令人沮丧的事情,这种情况可能由多种因素导致,从简单的代码错误到复杂的服务器配置问题,本文旨在为您提供一个系统、清晰的排查思路,帮助您一步步定位并解决问题,基础排查:从源头着手在深入复杂的服务器配置之前,首先应排除一些常见且……

    2025年10月20日
    02800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注