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

相关推荐

  • 新手如何在虚拟主机上设置数据库并正确连接网站?

    对于大多数网站而言,数据库是存储核心数据的“心脏”,无论是文章、用户信息还是商品列表,都离不开它,在虚拟主机上正确设置数据库,是搭建任何动态网站(如WordPress、Discuz!等)的关键一步,本文将详细介绍虚拟主机数据库的通用设置方法,帮助您顺利完成配置,第一步:登录虚拟主机控制面板您需要通过虚拟主机服务……

    2025年10月13日
    01090
  • 服务器上如何安装多个虚拟主机,以实现一机多网站部署?

    在现代互联网基础设施中,单台服务器的计算能力往往远超单个网站的需求,为了充分利用硬件资源、降低运营成本,服务器安装多个虚拟主机的技术应运而生,虚拟主机,又称虚拟服务器,是一种在单一物理服务器或一组服务器上托管多个独立域名或网站的技术,它通过软件层面的划分,使得每个网站都拥有独立的运行环境,仿佛运行在各自独立的服……

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

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

      2026年1月10日
      020
  • PS4切换服务器后,游戏存档与进度会保留吗?

    PS4切换服务器保留游戏:技术原理与实用方案解析PS4游戏数据存储机制解析PS4的游戏数据主要分为本地存档(Local Save)和云存档(Cloud Save)两类,云存档是解决服务器切换后数据保留的核心机制——玩家通过PSN(PlayStation Network)将游戏进度、设置等数据上传至索尼全球服务器……

    2026年1月15日
    0950
  • pmu服务器是什么?全面解析其定义、技术特点与应用场景

    PMU(相量测量单元)服务器是电力系统实时监测与控制的核心基础设施,承担着采集、处理、传输相量数据的关键角色,直接关系到电网的安全稳定运行与智能化水平,作为电力系统中的“神经中枢”,PMU服务器通过高精度的时间同步、实时数据处理与通信协议,为电网调度、故障定位、状态评估等提供决策支持,PMU服务器技术原理与核心……

    2026年1月19日
    01070

发表回复

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