从本地到云端:PHP项目服务器部署全流程指南**
将一个在本地开发环境运行良好的PHP项目成功部署到服务器,使其能够被公众访问,是每个PHP开发者必须的技能,本文将详细介绍从准备工作到最终上线,以及后续维护的完整部署流程,助你轻松搞定PHP项目部署。
部署前的准备工作
在开始部署之前,确保你已经具备以下条件:
- 一个可运行的PHP项目:项目代码已完成本地开发,并通过基本测试。
- 服务器环境:拥有一台云服务器(如阿里云、腾讯云、华为云等)或VPS,操作系统通常为Linux(如Ubuntu、CentOS)。
- 服务器访问权限:服务器的SSH登录凭据(用户名、密码或SSH密钥)。
- 域名(可选):如果需要通过域名访问,需准备好已解析到服务器IP的域名。
- 项目依赖信息:明确项目所需的PHP版本、扩展(如MySQL, GD, OpenSSL等)、Web服务器(如Apache, Nginx)以及是否需要数据库等。
服务器环境配置
大多数PHP项目运行在LAMP(Linux + Apache + MySQL + PHP)或LEMP(Linux + Nginx + MySQL + PHP)环境上,这里以常见的Ubuntu系统 + Nginx + MySQL + PHP(LEMP)为例进行说明。
-
连接服务器: 使用SSH工具(如Xshell, PuTTY, 或终端命令
ssh username@server_ip)登录到你的服务器。 -
更新系统包:
sudo apt update sudo apt upgrade -y
-
安装Nginx:
sudo apt install nginx -y # 启动Nginx并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 检查Nginx状态 sudo systemctl status nginx
在浏览器访问服务器IP,应能看到Nginx的欢迎页面。
-
安装MySQL/MariaDB:
sudo apt install mysql-server -y # 安全配置MySQL(设置root密码,移除匿名用户等) sudo mysql_secure_installation # 根据提示操作即可
-
安装PHP及所需扩展: 首先添加PHP仓库(以Ubuntu 20.04为例,使用Ondřej Surý's PPA):
sudo apt install software-properties-common -y sudo add-apt-repository ppa:ondrej/php -y sudo apt update
然后安装PHP(例如安装PHP 8.1)及常用扩展:
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl php8.1-gd php8.1-zip -y # 检查PHP版本 php -v
php-fpm(FastCGI Process Manager)是Nginx运行PHP所必需的。 -
配置数据库(如果项目需要): 登录MySQL:
sudo mysql -u root -p
创建数据库、数据库用户并授予权限:
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'your_database_user'@'localhost' IDENTIFIED BY 'your_strong_password'; GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_database_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
上传项目代码到服务器
有多种方式可以将本地项目代码上传到服务器:
-
使用SCP(Secure Copy):
# 将本地项目目录上传到服务器的/var/www/下(假设项目名为myproject) scp -r /path/to/your/local/project username@server_ip:/var/www/myproject
-
使用Git: 如果你的代码托管在Git仓库(如GitHub, Gitee),可以在服务器上直接克隆:
cd /var/www sudo git clone https://github.com/yourusername/yourproject.git myproject sudo chown -R www-data:www-data myproject # 将目录所有者改为Web服务器用户
-
使用SFTP客户端: 使用FileZilla、WinSCP等图形化SFTP工具,通过拖拽上传文件。
上传完成后,确保项目文件位于Web服务器的根目录(如Nginx默认为/var/www/html,我们这里自定义为/var/www/myproject)。
配置Web服务器(以Nginx为例)
-
创建Nginx虚拟主机配置文件:
sudo nano /etc/nginx/sites-available/myproject
编辑文件内容如下(根据你的项目路径和域名调整):
server { listen 80; server_name your_domain.com www.your_domain.com; # 替换为你的域名,或直接用server_ip root /var/www/myproject; # 项目根目录 index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 注意PHP版本,路径可能不同 # 或者使用TCP: fastcgi_pass 127.0.0.1:9000; } location ~ /\.ht { deny all; } }server_name:配置你的域名或IP。root:指向你的项目代码根目录。index:默认首页文件。try_files:URL重写规则,用于美化URL或处理前端路由。location ~ \.php$:处理PHP文件的请求,将其传递给php-fpm。
-
启用虚拟主机并禁用默认站点(可选):
# 创建软链接启用站点 sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/ # 禁用默认站点(如果存在) sudo rm /etc/nginx/sites-enabled/default
-
测试并重载Nginx配置:
sudo nginx -t # 测试配置文件语法 sudo systemctl reload nginx # 重载Nginx配置使生效
配置PHP项目
-
设置项目目录权限: Web服务器进程(通常是
www-data用户)需要对项目目录有读取和执行权限,对配置文件、日志、上传目录等可能需要写入权限。sudo chown -R www-data:www-data /var/www/myproject sudo find /var/www/myproject -type d -exec chmod 755 {} \; # 目录权限755 sudo find /var/www/myproject -type f -exec chmod 644 {} \; # 文件权限644 # 如果需要上传目录可写 sudo chmod -R 775 /var/www/myproject/storage /var/www/myproject/uploads # 根据实际情况调整 -
配置项目环境变量: 将本地的
.env.example复制为.env,并根据服务器环境修改配置:cd /var/www/myproject cp .env.example .env sudo nano .env
修改数据库连接信息、APP URL、缓存配置等。
-
安装项目依赖: 如果项目使用Composer(PHP依赖管理工具):
# 确保服务器安装了composer curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # 安装项目依赖 composer install --no-dev --optimize-autoloader # --no-dev排除开发依赖
如果项目使用其他包管理器,请相应执行。
-
生成应用密钥和数据库迁移: 对于Laravel等框架:
php artisan key:generate php artisan migrate --force # 执行数据库迁移 php artisan optimize # 优化应用 php artisan config:cache # 缓存配置
启动服务与访问测试
- 确保相关服务运行:
sudo systemctl start nginx sudo systemctl start mysql sudo systemctl start php8.1-fpm # 根据你的PHP版本 # 并设置开机自启 sudo systemctl enable nginx



还没有评论,来说两句吧...