本文目录导读:

- 第一阶段:服务器基础环境配置
- 第二阶段:上传项目代码
- 第三阶段:配置Web服务器
- 第四阶段:数据库与项目配置
- 第五阶段:域名与SSL(HTTPS)
- 第六阶段:测试与优化
- 总结命令速查(Ubuntu + Nginx + Laravel为例)
部署PHP项目到云服务器通常包含几个核心步骤:环境准备、代码上传、数据库配置、域名绑定及优化,以下是通用的操作流程,适用于Linux (CentOS/Ubuntu) 服务器环境(以阿里云/腾讯云等为例)。
第一阶段:服务器基础环境配置
-
连接服务器 使用SSH客户端(如终端、PuTTY、Xshell)登录服务器。
ssh root@你的服务器公网IP
-
安装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
-
第二阶段:上传项目代码
-
确定网站根目录 常见路径:
- 宝塔面板默认:
/www/wwwroot/你的域名/ - 手动安装:
/var/www/html/或/home/wwwroot/ - 可以自己创建:
mkdir -p /var/www/myproject
- 宝塔面板默认:
-
上传代码(三种常用方法)
- 方法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/
- 方法1:使用Git(推荐)
在服务器上直接 clone 项目:
第三阶段:配置Web服务器
情况A:使用Nginx(常见)
-
创建站点配置文件
# 以Ubuntu为例,编辑配置文件(宝塔面板可在后台操作) vim /etc/nginx/sites-available/myproject.conf
-
写入配置(示例,适配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路径指向的是项目的public或web目录,而非项目根目录(防止暴露配置文件)。 fastcgi_pass的路径需要与你的PHP版本一致(可通过php -v和find / -name php*-fpm.sock查看)。
- 注意
-
启用站点并重载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 目录。
第四阶段:数据库与项目配置
-
创建数据库和用户
-- 登录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;
-
导入数据库
- 如果有
.sql文件:mysql -u your_user -p your_database_name < /path/to/dump.sql - 如果没有,先清空数据库,等后面安装项目时自动创建表。
- 如果有
-
修改项目配置文件
- Laravel:复制
.env.example为.env,修改DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD。 - ThinkPHP:修改
config/database.php或env文件。 - WordPress:修改
wp-config.php。 - 通用CMS:通常安装向导会自动生成。
- Laravel:复制
-
设置目录权限(重要) 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)
-
域名解析 在你的DNS服务商(阿里云/腾讯云/DNSPod)添加 A记录,将域名指向服务器IP地址。
-
配置域名(已完成) 确保
server_name处填写的域名已解析。 -
申请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_certificate和ssl_certificate_key。
- 使用Certbot:
第六阶段:测试与优化
-
访问测试 浏览器打开
http://你的域名或IP,如果看到项目首页,恭喜成功! -
常见问题排查
- 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.log或tail -f /var/log/php_errors.log。
- 403 Forbidden:检查
-
安全优化
- 关闭服务器远程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错误日志。