PHP项目服务器部署全指南:从本地到线上运行的完整流程
将PHP项目从本地开发环境部署到服务器,是每个PHP开发者必须的核心技能,本文将以主流的LNMP(Linux+Nginx+MySQL+PHP)环境为例,详细讲解从服务器准备到项目上线的完整流程,包括环境配置、文件上传、域名绑定、安全优化等关键步骤,助你轻松实现项目的本地到线上迁移。
前置准备:明确需求与环境规划
在开始部署前,需先明确项目需求并规划服务器环境,这是确保后续部署顺利的基础。
项目技术栈梳理
确认项目依赖的核心组件:
- PHP版本:项目兼容的PHP版本(如PHP 7.4、8.0、8.1等),可通过
phpinfo()
或composer.json
中的依赖要求确认; - 数据库:项目使用的数据库类型(MySQL 5.7/8.0、MariaDB等)及版本要求;
- 扩展依赖:项目需要的PHP扩展(如mysqli、pdo_mysql、gd、curl、redis等);
- Web服务器:根据项目特点选择Nginx(推荐,高并发、反向代理优势)或Apache(传统选择,兼容性好)。
服务器选择与基础配置
- 服务器类型:云服务器(如阿里云ECS、腾讯云CVM、华为云ECS)或VPS,推荐选择Linux发行版(如Ubuntu 20.04/22.04、CentOS 7/8);
- 系统配置:根据项目预估流量选择配置(小型项目2核4G起步,中型项目4核8G+);
- 安全组配置:开放必要端口(SSH默认22端口,HTTP 80端口,HTTPS 443端口,数据库3306端口若需远程连接需开放)。
服务器环境搭建:LNMP环境一键部署
LNMP是PHP项目最主流的运行环境,可通过手动编译或一键部署包快速搭建,这里推荐使用一键部署脚本(如LNMP一键安装包:lnmp.org
),高效且减少配置错误。
安装LNMP环境(以Ubuntu 22.04为例)
(1)安装必要依赖
sudo apt update sudo apt install -y wget curl vim unzip
(2)下载并执行LNMP安装脚本
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 sudo ./install.sh lnmp
(3)配置安装选项
脚本执行后会提示输入:
- MySQL版本:选择项目兼容的版本(如MySQL 5.7);
- PHP版本:输入项目需要的PHP版本(如8.1);
- 是否安装Redis/Memcached:根据项目需求选择(推荐安装Redis用于缓存);
- 是否安装phpMyAdmin:用于数据库管理(推荐安装)。
等待脚本自动完成安装(约10-30分钟,根据服务器性能而定),安装成功后会显示LNMP环境状态及管理面板地址(如http://服务器IP/phpmyadmin
)。
验证环境安装
- Nginx:浏览器访问服务器IP,若显示“Welcome to Nginx!”则安装成功;
- PHP:创建
/usr/local/nginx/html/info.php
为<?php phpinfo(); ?>
,访问http://服务器IP/info.php
,查看PHP版本及扩展是否正确; - MySQL:通过
mysql -u root -p
登录,输入安装时设置的root密码,若能成功登录则数据库正常。
项目文件上传:本地代码传输到服务器
项目代码可通过多种方式上传到服务器,常用方法有:SFTP/FTP上传、Git拉取、SCP命令,这里以SFTP上传(推荐,安全且支持可视化操作)为例。
安装SFTP服务(若未安装)
sudo apt install vsftpd # 安装vsftpd FTP服务器 sudo systemctl start vsftpd # 启动服务 sudo systemctl enable vsftpd # 设置开机自启
创建项目目录并配置权限
sudo mkdir -p /var/www/your_project # 创建项目根目录 sudo chown -R www-data:www-data /var/www/your_project # 设置Nginx运行用户权限(www-data为Nginx默认用户) sudo chmod -R 755 /var/www/your_project # 设置目录权限(754:所有者可读写执行,组用户和其他用户可读执行)
通过SFTP客户端上传代码
使用FileZilla、Xftp等工具连接服务器:
- 主机:服务器IP;
- 端口:22(SSH默认端口,vsftpd默认使用21端口,若使用vsftpd需改为21);
- 用户名:服务器登录用户(如root或创建的专用FTP用户);
- 密码:对应密码。
登录后将本地项目代码(排除.git
、node_modules
、.env
等无需上传的文件)拖拽到/var/www/your_project
目录下。
Nginx配置:让服务器正确解析项目
上传代码后,需配置Nginx虚拟主机,将域名(或IP)指向项目目录,并设置伪静态、重定向等规则。
创建Nginx配置文件
sudo vim /usr/local/nginx/conf/vhost/your_project.conf
配置文件内容示例
server { listen 80; server_name your_domain.com www.your_domain.com; # 替换为你的域名,若无域名可先用IP root /var/www/your_project; # 项目根目录 index index.php index.html index.htm; # 默认首页文件 # 访问日志(可选) access_log /var/log/nginx/your_project_access.log; error_log /var/log/nginx/your_project_error.log; location / { try_files $uri $uri/ /index.php?$query_string; # URL重写,支持伪静态 } # 处理PHP请求 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # PHP-FPM监听地址 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 禁止访问隐藏文件(如.git、.env) location ~ /\. { deny all; access_log off; log_not_found off; } # 静态文件缓存(可选) location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } }
重载Nginx配置
sudo /usr/local/nginx/sbin/nginx -t # 检查配置文件语法 sudo /usr/local/nginx/sbin/nginx -s reload # 重载配置
绑定域名(若有)
若使用域名,需在域名解析服务商(如阿里云DNS、Cloudflare)处添加A记录,将域名指向服务器IP:
- 主机记录:(根域名)或
www
(子域名); - 记录类型:
A
; - 记录值:服务器IP。
等待DNS解析生效(通常几分钟到几小时)。
数据库配置:导入项目数据并连接
大多数PHP项目依赖数据库,需将本地数据库导出并导入到服务器数据库,同时修改项目中的数据库连接配置。
导出本地数据库
使用mysqldump
命令或phpMyAdmin导出:
mysqldump -u 本地数据库用户 -p 本据库名 > backup.sql # 输入密码后导出为backup.sql
导入服务器数据库
(1)登录服务器MySQL
mysql -u root -p # 输入MySQL root密码
(2)创建数据库并导入
CREATE DATABASE your_project_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 创建数据库(字符集推荐utf8mb4) EXIT; mysql -u root -p your_project_db < /path/to/backup.sql # 导入本地备份的数据库文件(需替换为实际路径)
修改项目数据库配置
编辑项目中的数据库配置文件(如.env
、config/database.php
),修改以下参数:
// 示例:.env文件配置 DB_CONNECTION=mysql DB_HOST=127.0
还没有评论,来说两句吧...