本文目录导读:

我来详细说明PHP项目部署到服务器的完整流程:
服务器环境准备
基础环境配置
# Ubuntu/Debian系统 sudo apt update sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml # CentOS/RHEL系统 sudo yum install epel-release sudo yum install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml
PHP版本选择
# 查看当前PHP版本 php -v # 安装特定版本(如PHP 8.1) sudo apt install php8.1 php8.1-fpm php8.1-mysql
项目文件上传
使用SCP上传
# 从本地上传到服务器 scp -r /local/project user@server_ip:/var/www/html/ # 如果使用SSH密钥 scp -i ~/.ssh/id_rsa -r /local/project user@server_ip:/var/www/html/
使用Git部署
# 服务器上克隆项目 cd /var/www/html git clone https://github.com/username/project.git # 更新项目 cd project git pull origin main
Nginx配置
创建站点配置文件
# /etc/nginx/sites-available/project.conf
server {
listen 80;
server_name your_domain.com;
root /var/www/html/project/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;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
启用站点
# 创建软链接 sudo ln -s /etc/nginx/sites-available/project.conf /etc/nginx/sites-enabled/ # 测试配置 sudo nginx -t # 重启Nginx sudo systemctl restart nginx
文件权限设置
# 设置目录权限 sudo chown -R www-data:www-data /var/www/html/project sudo chmod -R 755 /var/www/html/project sudo chmod -R 775 /var/www/html/project/storage sudo chmod -R 775 /var/www/html/project/bootstrap/cache
环境配置
复制环境变量文件
# Laravel项目 cp .env.example .env php artisan key:generate # 其他框架类似
修改.env配置
APP_URL=http://your_domain.com DB_HOST=localhost DB_DATABASE=your_database DB_USERNAME=your_user DB_PASSWORD=your_password
数据库配置
# 创建数据库 mysql -u root -p CREATE DATABASE project_db; CREATE USER 'project_user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON project_db.* TO 'project_user'@'localhost'; FLUSH PRIVILEGES; # 导入数据库 mysql -u project_user -p project_db < database.sql # 运行迁移 php artisan migrate
使用Docker部署(推荐)
docker-compose.yml示例
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./public:/var/www/html/public
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- php
php:
image: php:8.1-fpm
volumes:
- .:/var/www/html
environment:
- DB_HOST=db
- DB_DATABASE=project_db
- DB_USERNAME=user
- DB_PASSWORD=password
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: project_db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
部署脚本示例
#!/bin/bash # deploy.sh # 变量 PROJECT_DIR="/var/www/html/project" GIT_REPO="https://github.com/username/project.git" # 拉取最新代码 cd $PROJECT_DIR git pull origin main # 安装依赖 composer install --no-dev --optimize-autoloader # 设置权限 chown -R www-data:www-data $PROJECT_DIR chmod -R 755 $PROJECT_DIR/storage chmod -R 755 $PROJECT_DIR/bootstrap/cache # 清理缓存 php artisan optimize:clear php artisan config:cache php artisan route:cache php artisan view:cache # 运行迁移 php artisan migrate --force echo "部署完成!"
安全配置
防火墙设置
# 开放端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
SSL证书配置(Let's Encrypt)
# 安装Certbot sudo apt install certbot python3-certbot-nginx # 获取证书 sudo certbot --nginx -d your_domain.com
监控和维护
日志查看
# Nginx访问日志 tail -f /var/log/nginx/access.log # PHP错误日志 tail -f /var/log/php8.1-fpm.log
性能优化
# 启用OPcache # 编辑php.ini opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000
注意事项:
- 生产环境禁止开启错误显示
- 定期备份数据库和项目文件
- 使用环境变量管理敏感信息
- 保持系统和依赖的更新
这样配置后,你的PHP项目就可以正常运行了,具体步骤可能根据项目框架略有不同,但大体流程是一样的。