如何部署PHP项目到云服务器?

wen PHP项目 2

本文目录导读:

如何部署PHP项目到云服务器?

  1. 第一阶段:服务器基础环境配置
  2. 第二阶段:上传项目代码
  3. 第三阶段:配置Web服务器
  4. 第四阶段:数据库与项目配置
  5. 第五阶段:域名与SSL(HTTPS)
  6. 第六阶段:测试与优化
  7. 总结命令速查(Ubuntu + Nginx + Laravel为例)

部署PHP项目到云服务器通常包含几个核心步骤:环境准备、代码上传、数据库配置、域名绑定及优化,以下是通用的操作流程,适用于Linux (CentOS/Ubuntu) 服务器环境(以阿里云/腾讯云等为例)。


第一阶段:服务器基础环境配置

  1. 连接服务器 使用SSH客户端(如终端、PuTTY、Xshell)登录服务器。

    ssh root@你的服务器公网IP
  2. 安装LNMP/LAMP环境(推荐使用OneinStack宝塔面板快速安装,或者手动安装)

    • 方案 A:使用宝塔面板(新手推荐)

      # CentOS
      yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && bash install.sh ed8484bec
      # 安装后访问 http://你的IP:8888 配置
      # 在面板内一键安装 Nginx + PHP + MySQL
    • 方案 B:手动安装( Ubuntu )

      # 更新软件包
      apt update
      # 安装 Nginx
      apt install nginx -y
      # 安装 PHP 及常用扩展(根据项目需要选择版本,如 8.1)
      apt install php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip -y
      # 安装 MySQL(或使用远程数据库)
      apt install mysql-server -y

第二阶段:上传项目代码

  1. 确定网站根目录 常见路径:

    • 宝塔面板默认:/www/wwwroot/你的域名/
    • 手动安装:/var/www/html//home/wwwroot/
    • 可以自己创建:mkdir -p /var/www/myproject
  2. 上传代码(三种常用方法)

    • 方法1:使用Git(推荐) 在服务器上直接 clone 项目:
      cd /var/www/myproject
      git clone 你的项目仓库地址 .
      # 如果使用私有仓库,需提前配置SSH Key
    • 方法2:使用FTP/SFTP(FileZilla等工具)
      • 服务器需安装 vsftpd 或使用SFTP(SSH自带)。
      • 连接后,将本地项目文件拖拽上传至网站根目录。
    • 方法3:使用scp命令(简单文件)
      # 从本地上传至服务器
      scp -r /本地项目路径/* root@你的IP:/var/www/myproject/

第三阶段:配置Web服务器

情况A:使用Nginx(常见)

  1. 创建站点配置文件

    # 以Ubuntu为例,编辑配置文件(宝塔面板可在后台操作)
    vim /etc/nginx/sites-available/myproject.conf
  2. 写入配置(示例,适配ThinkPHP/Laravel等框架)

    server {
        listen 80;
        server_name yourdomain.com;  # 换成你的域名或服务器IP
        root /var/www/myproject/public;  # 项目入口目录(Laravel为public,ThinkPHP为public)
        index index.php index.html;
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # PHP版本和sock路径需核对
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        # 禁止访问隐藏文件
        location ~ /\.ht {
            deny all;
        }
    }
    • 注意 root 路径指向的是项目的 publicweb 目录,而非项目根目录(防止暴露配置文件)。
    • fastcgi_pass 的路径需要与你的PHP版本一致(可通过 php -vfind / -name php*-fpm.sock 查看)。
  3. 启用站点并重载Nginx

    # Ubuntu
    ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/
    nginx -t   # 测试配置是否正确
    systemctl reload nginx
    # CentOS(通常直接在 /etc/nginx/conf.d/ 下创建 .conf 文件)
    nginx -t
    systemctl reload nginx

情况B:使用Apache

配置 .htaccess 文件和 VirtualHost,核心是启用 mod_rewrite 并指向项目 public 目录。


第四阶段:数据库与项目配置

  1. 创建数据库和用户

    -- 登录MySQL
    mysql -u root -p
    CREATE DATABASE `your_database_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON `your_database_name`.* TO 'your_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
  2. 导入数据库

    • 如果有 .sql 文件:mysql -u your_user -p your_database_name < /path/to/dump.sql
    • 如果没有,先清空数据库,等后面安装项目时自动创建表。
  3. 修改项目配置文件

    • Laravel:复制 .env.example.env,修改 DB_HOSTDB_DATABASEDB_USERNAMEDB_PASSWORD
    • ThinkPHP:修改 config/database.phpenv 文件。
    • WordPress:修改 wp-config.php
    • 通用CMS:通常安装向导会自动生成。
  4. 设置目录权限(重要) PHP写入权限需要给Web服务器用户。

    # 查看Web用户(通常是 www-data 或 nginx)
    ps aux | grep nginx
    # 设置项目目录所有者
    chown -R www-data:www-data /var/www/myproject/   # 替换成你的用户
    # 给予可写权限(storage, uploads等)
    chmod -R 755 /var/www/myproject/storage
    chmod -R 775 /var/www/myproject/public/uploads   # 如果有上传目录

第五阶段:域名与SSL(HTTPS)

  1. 域名解析 在你的DNS服务商(阿里云/腾讯云/DNSPod)添加 A记录,将域名指向服务器IP地址。

  2. 配置域名(已完成) 确保 server_name 处填写的域名已解析。

  3. 申请SSL证书(免费)

    • 使用Certbot
      apt install certbot python3-certbot-nginx -y
      certbot --nginx -d yourdomain.com -d www.yourdomain.com
    • 使用宝塔面板:在网站设置-SSL中一键申请Let's Encrypt。
    • 手动上传:将证书文件放在 /etc/nginx/ssl/,然后在nginx配置中添加 ssl_certificatessl_certificate_key

第六阶段:测试与优化

  1. 访问测试 浏览器打开 http://你的域名或IP,如果看到项目首页,恭喜成功!

  2. 常见问题排查

    • 403 Forbidden:检查 index.php 是否存在,或目录权限是否足够(chmod 755)。
    • 502 Bad Gateway:PHP-FPM未启动或sock路径错误。
      • 命令:systemctl restart php8.1-fpm
    • 连接数据库失败:检查 .env 或数据库配置文件中的用户名/密码/主机是否正确。
    • 页面空白:开启PHP错误显示,查看日志:tail -f /var/log/nginx/error.logtail -f /var/log/php_errors.log
  3. 安全优化

    • 关闭服务器远程root密码登录(使用SSH密钥)。
    • 修改MySQL root密码并删除默认匿名用户。
    • 配置防火墙(UFW或iptables):开放 22 (SSH)、80 (HTTP)、443 (HTTPS) 端口。
      ufw allow 22/tcp
      ufw allow 80/tcp
      ufw allow 443/tcp
      ufw enable

总结命令速查(Ubuntu + Nginx + Laravel为例)

# 1. 连接
ssh root@你的IP
# 2. 安装环境
apt update && apt install nginx mysql-server php8.1-fpm php8.1-mysql php8.1-curl git -y
# 3. 上传代码
cd /var/www/
git clone https://github.com/你的项目.git myproject
cd myproject
cp .env.example .env
# 编辑 .env 配置数据库
# 4. 安装依赖(如果有Composer)
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev
# 5. 配置Nginx
vim /etc/nginx/sites-available/myproject
# 写入第3阶段的示例配置
# 6. 启用站点
ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
# 7. 设置权限
chown -R www-data:www-data /var/www/myproject
chmod -R 775 /var/www/myproject/storage
# 8. 生成APP_KEY(Laravel)
php artisan key:generate

按照以上步骤操作,即可将PHP项目成功部署至云服务器,遇到具体错误时,重点检查 Web服务器日志PHP错误日志

抱歉,评论功能暂时关闭!