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

相关推荐

  • 宽带通如何办理,宽带通怎么办理

    宽带通并非单一运营商,而是中国电信旗下的互联网品牌,其核心优势在于依托电信骨干网提供高稳定性、低延迟的宽带服务,适合对网络质量有极高要求的家庭及中小企业用户,宽带通的核心定位与品牌背景电信旗下品牌,品质背书宽带通(Broadnet)是中国电信面向个人及中小企业推出的宽带服务品牌,与传统的“中国电信”主品牌相比……

    2026年5月14日
    01122
  • 如何查询PLSQL存储过程的行号?掌握这些技巧轻松定位代码问题

    PLSQL存储过程是Oracle数据库中用于封装业务逻辑、提高执行效率的关键组件,其通过预编译的方式减少网络往返,提升系统性能,由于Oracle环境本身不直接显示代码行号(区别于SQL Server等平台),开发者在调试和维护存储过程时,常面临“无行号可依”的困境,行号作为代码逻辑的“定位锚点”,对存储过程的开……

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

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

      2026年1月10日
      020
  • 宽带连接名称是什么?宽带连接名称怎么设置

    2026 年宽带连接名称设置的核心原则是“唯一性标识 + 场景化命名”,直接规避路由冲突并提升家庭网络管理效率,无需复杂技术背景即可实现最优配置,在 2026 年智能家居生态全面普及的背景下,宽带连接名称(SSID)已不再仅仅是简单的网络入口,而是家庭物联网设备的“数字身份证”,随着《国家网络安全标准提升行动……

    2026年5月12日
    0974
  • 歌华宽带和联通宽带哪个好,北京宽带哪家便宜网速快

    2026年家庭宽带首选建议:追求极致稳定性与游戏低延迟选歌华宽带,追求高性价比与全国漫游选联通宽带,二者均满足千兆入户标准,具体选择需依据所在小区资源覆盖及用户核心使用场景而定,底层逻辑:2026年宽带市场的双寡头格局解析在2026年的通信基础设施环境中,宽带已不再仅仅是“连通”工具,而是家庭数字生活的核心神经……

    2026年5月19日
    01094

发表回复

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