如何部署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

相关推荐

  • 建e服务器渲图是什么,建e网服务器渲染怎么收费?

    建e服务器渲图是依托云端渲染服务器集群,帮助设计师批量完成高精度效果图渲染的服务,其核心是替你“跑图”,把本地几小时甚至几天的渲染任务缩短到几十分钟,为什么设计师都在讨论服务器渲图做建筑可视化或者室内效果图的朋友,对本地渲染的痛点应该不陌生,项目一紧张,电脑风扇狂转,画面卡在某个百分比不动,这时候你干不了别的活……

    2026年10月6日
    0643
  • 2S服务器是什么意思,2S服务器和单路服务器有什么区别?

    2S服务器,简单来说就是支持两颗物理CPU同时工作的双路服务器,它是目前企业级计算场景中性能与成本兼顾的主流选择,什么是2S服务器:双路CPU架构的核心逻辑服务器行业里常说的“2S”,全称是Dual Socket,指主板上拥有两个CPU插槽,可以同时安装两颗物理处理器,这和家用电脑通常只有一颗CPU(1S系统……

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

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

      2026年1月10日
      020
  • 服务器t4是什么意思?服务器T4显卡性能参数与用途详解

    服务器T4指的是搭载了NVIDIA Tesla T4这款GPU加速卡的服务器,它并非一种独立的服务器型号,而是一种以T4显卡为核心算力支撑的服务器配置方案,这种服务器在深度学习推理、视频转码、虚拟化等场景中出镜率极高,经常出现在各种IDC机房的配置单和云服务商的实例列表中,很多人初次接触时容易把它和“T系列服务……

    2026年9月12日
    01695
  • NAS和家庭服务器有什么区别?家用NAS与服务器哪个更实用?

    NAS和家庭服务器最大的区别在于:NAS是厂商做好的私有云家电,家庭服务器是你自己攒的一台通用电脑,前者买回来就能用,后者需要从硬件到系统自己搭,很多人把两者混在一起,因为它们都能存文件、挂下载、做影音库,但一旦落到24小时开机、功耗噪音、家人使用、扩展玩法,差异会迅速放大,nas和家庭服务器有什么区别?三个层……

    2026年9月21日
    02020

发表回复

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