Yii 部署与发布教程:从本地开发到生产环境的全流程指南
                           
天天向上
发布: 2025-01-23 23:59:07

原创
659 人浏览过

本部分将详细介绍如何将 Yii 应用部署到生产环境,涉及常见的 Web 服务器配置(Nginx/Apache)、使用 Docker 部署、代码管理与持续集成(CI/CD)以及备份与迁移等方面。这些步骤可以确保你的应用稳定、可维护,并且能够快速进行版本迭代。


1. 项目部署

部署 Yii 应用涉及将开发环境中的项目移至生产环境,并确保服务器配置和依赖正确。以下是部署过程的几个关键步骤。

1.1 部署到 Nginx/Apache 环境

Nginx 配置:

  1. 首先,确保已安装 Nginx。
  2. nginx.conf 或者你的站点配置文件中添加以下配置:
   server {
       listen 80;
       server_name example.com;  # 你的域名

       root /var/www/html/yii-app/web;  # Yii 项目的 public 目录
       index index.php;

       location / {
           try_files $uri $uri/ /index.php?$args;
       }

       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;
       }

       error_log /var/log/nginx/yii-error.log;
       access_log /var/log/nginx/yii-access.log;
   }

Apache 配置:

  1. 确保启用了 mod_rewrite
  2. 在 Apache 配置文件中,设置虚拟主机:
   <VirtualHost *:80>
       DocumentRoot "/var/www/html/yii-app/web"  # Yii 项目的 public 目录
       ServerName example.com

       <Directory "/var/www/html/yii-app/web">
           AllowOverride All
           Require all granted
       </Directory>
   </VirtualHost>
  1. 启动或重启 Apache:
   sudo systemctl restart apache2
1.2 配置环境变量和敏感信息

在部署到生产环境时,敏感信息(如数据库密码、API 密钥等)不应直接存储在代码中。你可以通过环境变量来管理这些信息。

使用 .env 文件:

  1. 在项目根目录创建 .env 文件并添加环境变量:
   DB_HOST=localhost
   DB_USER=root
   DB_PASS=secret
  1. config/web.phpconfig/console.php 文件中读取这些环境变量:
   'components' => [
       'db' => [
           'class' => 'yii\db\Connection',
           'dsn' => 'mysql:host=' . getenv('DB_HOST') . ';dbname=mydb',
           'username' => getenv('DB_USER'),
           'password' => getenv('DB_PASS'),
           'charset' => 'utf8',
       ],
   ],

配置 Yii 环境:
确保在生产环境中禁用调试和 gii 模块:

'modules' => [
    'gii' => [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1'],  // 只允许本地访问 Gii
    ],
],
1.3 使用 Docker 部署 Yii 应用

Docker 是一种流行的容器化技术,可以帮助你在一致的环境中部署应用。使用 Docker 可以避免在不同环境中出现 “它在我电脑上运行” 的问题。

创建 Dockerfile

FROM php:7.4-fpm

# 安装必要的扩展
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev libzip-dev unzip git \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd zip pdo pdo_mysql

# 设置工作目录
WORKDIR /var/www

# 复制本地文件到容器
COPY . /var/www

# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 安装依赖
RUN composer install

# 公开端口
EXPOSE 9000

CMD ["php-fpm"]

创建 docker-compose.yml 文件

version: '3.7'
services:
  web:
    build: .
    volumes:
      - .:/var/www
    ports:
      - "9000:9000"
    networks:
      - yii-network

  nginx:
    image: nginx:alpine
    volumes:
      - .:/var/www
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - "80:80"
    networks:
      - yii-network

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: mydb
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - yii-network

networks:
  yii-network:
    driver: bridge

volumes:
  db-data:

启动 Docker 容器

docker-compose up --build

此时,Yii 应用将运行在 Docker 容器内,Nginx 提供 Web 服务,PHP-FPM 处理 PHP 请求,MySQL 数据库也在容器中运行。


2. 版本控制与 CI/CD

2.1 使用 Git 管理代码

Git 是版本控制系统,用于跟踪代码的历史版本。确保你将代码托管在 Git 仓库中(如 GitHub、GitLab、Bitbucket 等)。

基本 Git 操作

git init                # 初始化 Git 仓库
git add .               # 添加所有变更
git commit -m "commit message"  # 提交代码
git push origin master  # 推送到远程仓库
2.2 配置持续集成与自动化部署

持续集成(CI)和持续交付(CD)是现代 DevOps 流程的核心,能够实现代码的快速交付与自动部署。

使用 GitHub Actions 配置 CI/CD

  1. 在项目根目录下创建 .github/workflows/ci.yml 文件:
   name: CI Workflow

   on:
     push:
       branches:
         - main

   jobs:
     build:
       runs-on: ubuntu-latest

       steps:
         - uses: actions/checkout@v2
         - name: Set up PHP
           uses: shivammathur/setup-php@v2
           with:
             php-version: '7.4'
         - name: Install dependencies
           run: |
             curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
             composer install
         - name: Run tests
           run: vendor/bin/codecept run
  1. 每次推送到 GitHub 仓库时,CI 工具会自动运行测试、安装依赖并部署应用。
2.3 备份与迁移

在生产环境中,定期备份数据库和项目文件至关重要。你可以使用 Yii 的迁移工具来管理数据库架构的变化。

数据库备份:

  1. 使用 mysqldump 进行数据库备份:
   mysqldump -u root -p mydb > backup.sql
  1. 恢复数据库:
   mysql -u root -p mydb < backup.sql

使用 Yii 的数据库迁移工具:

  1. 生成迁移文件:
   php yii migrate/create add_column_to_table
  1. 执行迁移:
   php yii migrate

通过合理配置备份和迁移机制,确保你的应用在数据损坏或服务器故障时能够恢复。


小结

在本部分中,我们讲解了如何将 Yii 应用部署到 Nginx/Apache 环境、使用 Docker 容器化部署、配置 CI/CD 流程进行持续集成、备份与迁移操作。掌握这些部署与发布技巧后,你将能够确保 Yii 应用在生产环境中的稳定运行,同时加速开发和发布周期。

发表回复 0

Your email address will not be published. Required fields are marked *