使用yii2.0快速搭建一个后台环境

2017-12-25 13:34:00

Yii2.0从0开始搭建后台环境

  • 首先更换composer中国镜像,执行以下命令
composer config -g repo.packagist composer https://packagist.phpcomposer.com
  • 安装Yii2.0 advanced高级版,执行以下命令
composer create-project yiisoft/yii2-app-advanced advanced 2.0.13

然后在advanced项目文件中,执行

php init

初始化项目,期间它会让你选择运行环境,是开发环境还是生产环境,选择0,开发环境,如图

在项目根目录->common->config文件夹中,找到main-local.php文件,在里面配置数据库连接信息,然后在项目根目录下执行

./yii migrate

完成数据库迁移操作

  • 配置nginx虚拟主机,增加前台页面和后台页面的映射,相应配置文件参考
server {

    listen 80;
    listen [::]:80;
    server_name www.yii.mu;
    root /var/www/yii/advanced/frontend/web;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}
server {

    listen 80;
    listen [::]:80;
    server_name admin.yii.mu;
    root /var/www/yii/advanced/backend/web;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}
  • 安装yii2-adminlte-asset模板文件,执行命令
composer require dmstr/yii2-adminlte-asset "^2.1"
  • 根据adminlte的文档,我们需要copy两个文件夹至
cdvendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app

在这个文件夹下,有两个文件夹,分别是layouts和sitey,我们把它copy到根目录下的 backennd/views,覆盖即可

然后打开admin.yii.mu后台链接,查看是否已经安装成功

  • 注册帐号,尝试登陆

  • 创建两张表
CREATE TABLE IF NOT EXISTS `adminuser` (
  `id` int(11) NOT NULL COMMENT 'ID' PRIMARY KEY AUTO_INCREMENT,
  `username` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名',
  `realname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '姓名',
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '电子邮箱',
  `status` int(11) NOT NULL DEFAULT '10' COMMENT '状态',
  `password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '密码',
  `auth_key` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '授权key',
  `password_reset_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '密码重置token',
  `access_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '访问token',
  `expire_at` int(11) DEFAULT NULL COMMENT '过期时间',
  `logged_at` int(11) DEFAULT NULL COMMENT '登入时间',
  `created_at` int(11) DEFAULT NULL COMMENT '创建时间',
  `updated_at` int(11) DEFAULT NULL COMMENT '最后修改时间'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `article` (
  `id` int(11) NOT NULL COMMENT 'ID' PRIMARY KEY AUTO_INCREMENT,
  `title` varchar(512) COLLATE utf8_unicode_ci NOT NULL COMMENT '标题',
  `content` text COLLATE utf8_unicode_ci NOT NULL COMMENT '内容',
  `category_id` int(11) DEFAULT NULL COMMENT '分类',
  `status` int(11) DEFAULT NULL COMMENT '状态',
  `created_by` int(11) DEFAULT NULL COMMENT '创建人',
  `created_at` int(11) DEFAULT NULL COMMENT '创建时间',
  `updated_at` int(11) DEFAULT NULL COMMENT '最后修改时间'
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  • 开启gii

在common/config/main.php文件中,加入以下代码

'modules' => [
        'gii' => [
            'class' => 'yii\gii\Module',
            'allowedIPs' => ['*'],
        ],
    ],
  • 建立article模型文件,如图

注意,在namespace中,要写commonmodels,因为这是一个公用的model,勾选 Generate Labels from DB Comments

  • 建立管理员用户表model,如图

  • 管理员用户表的CURD生成,如图

  • 文件表的CURD生成,如图