【从零开始搭建Yii2后台管理系统】二、实现网站的初步访问
在上一篇文章中,已经准备好了开发所需的工具和程序,这一篇将实现网站的初步访问。
1.初始化Yii2。打开Yii2安装目录,执行初始化命令./init
,此处初始化时我们选择 Development
模式,初始化后会产生以下文件:
generate backend/config/main-local.php generate backend/config/params-local.php generate backend/config/test-local.php generate backend/web/index-test.php generate backend/web/index.php generate common/config/main-local.php generate common/config/params-local.php generate common/config/test-local.php generate console/config/main-local.php generate console/config/params-local.php generate frontend/config/main-local.php generate frontend/config/params-local.php generate frontend/config/test-local.php generate frontend/web/index-test.php generate frontend/web/index.php generate yii generate yii_test generate yii_test.bat generate cookie validation key in backend/config/main-local.php generate cookie validation key in frontend/config/main-local.php chmod 0777 backend/runtime chmod 0777 backend/web/assets chmod 0777 frontend/runtime chmod 0777 frontend/web/assets chmod 0755 yii chmod 0755 yii_test
Yii2 advanced版本目录结构如下:
Common 公共文件模块(配置,类) config/ 包含共享配置 mail/ 包含电子邮件的视图文件 models/ 包含后端和前端中使用的模型类 tests/ 包含公共类的测试 console 控制台文件模块 config/ 包含控制台配置 controllers/ 包含控制台控制器(命令) migrations/ 包含数据库迁移 models/ 包含控制台特定的模型类 runtime/ 包含运行时生成的文件 runtime 缓存文件模块(linux部署需要这个模块可写) backend 后端独立应用模块 assets/ 包含应用程序资产,如JavaScript和CSS JavaScript and CSS config/ 包含后端配置 controllers/ 包含Web控制器类 models/ 包含后端特定的模型类 classes runtime/ 包含运行时生成的文件 tests/ 包含后端应用程序的测试 views/ 包含Web应用程序的视图文件 web/ 包含条目脚本和web资源 frontend 前端独立应用模块 assets/ 包含应用程序资产,如JavaScript和CSS config/ 包含前端配置 controllers/ 包含Web控制器类 models/ 包含前端特定的模型类 runtime/ 包含运行时生成的文件 tests/ 包含前端应用程序的测试 views/ 包含Web应用程序的视图文件 web/ 包含条目脚本和web资源 widgets/ 包含前端小部件 vendor/ 包含依赖第三方软件包 environments/ 包含基于环境的覆盖
2.修改Yii2入口文件。Yii2 advanced版本frontend、backend前后端分离,有各自的入口文件,可以配置独立的域名。这里我们将二者整合到同一个目录下,使用同一个域名进行访问,方便开发。
在Yii2根目录新建文件夹,命名为web,将 frontend/web 下所有文件(assets、css、index.php、index-test.php)复制到 根目录/web,修改index.php、index-test.php。
index.php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../common/config/bootstrap.php');
require(__DIR__ . '/../frontend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../common/config/main.php'),
require(__DIR__ . '/../common/config/main-local.php'),
require(__DIR__ . '/../frontend/config/main.php'),
require(__DIR__ . '/../frontend/config/main-local.php')
);
(new yii\web\Application($config))->run();
index-test.php
<?php
// NOTE: Make sure this file is not accessible when deployed to production
if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) {
die('You are not allowed to access this file.');
}
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../common/config/bootstrap.php';
require __DIR__ . '/../frontend/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../common/config/main.php',
require __DIR__ . '/../common/config/main-local.php',
require __DIR__ . '/../common/config/test.php',
require __DIR__ . '/../common/config/test-local.php',
require __DIR__ . '/../frontend/config/main.php',
require __DIR__ . '/../frontend/config/main-local.php',
require __DIR__ . '/../frontend/config/test.php',
require __DIR__ . '/../frontend/config/test-local.php'
);
(new yii\web\Application($config))->run();
在 根目录/web 文件夹下新建文件夹,命名为backend,将 backend/web 下所有文件(assets、css、index.php、index-test.php)复制到 根目录/web/backend,修改index.php、index-test.php。
index.php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
require __DIR__ . '/../../backend/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../../common/config/main.php',
require __DIR__ . '/../../common/config/main-local.php',
require __DIR__ . '/../../backend/config/main.php',
require __DIR__ . '/../../backend/config/main-local.php'
);
(new yii\web\Application($config))->run();
index-test.php
<?php
// NOTE: Make sure this file is not accessible when deployed to production
if (!in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) {
die('You are not allowed to access this file.');
}
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
require __DIR__ . '/../../vendor/autoload.php';
require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
require __DIR__ . '/../../common/config/bootstrap.php';
require __DIR__ . '/../../backend/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/../../common/config/main.php',
require __DIR__ . '/../../common/config/main-local.php',
require __DIR__ . '/../../common/config/test.php',
require __DIR__ . '/../../common/config/test-local.php',
require __DIR__ . '/../../backend/config/main.php',
require __DIR__ . '/../../backend/config/main-local.php',
require __DIR__ . '/../../backend/config/test.php',
require __DIR__ . '/../../backend/config/test-local.php'
);
(new yii\web\Application($config))->run();
3.自定义本地域名,配置Apache/Nginx实现域名指向。
以本文为例,使用自定义本地域名moonadmin.dev,实现方法:
①首先修改 C:\Windows\System32\drivers\etc 目录下的hosts文件,添加moonadmin.dev的记录
127.0.0.1 moonadmin.dev
②在apache/nginx中添加域名解析,域名入口指向位置为 Yii2项目目录\web
Windows环境 Apache配置(请将D:\phpStudy\WWW\moonadmin\web 改为你自己的项目地址目录)
<VirtualHost *:80>
DocumentRoot "D:\phpStudy\WWW\moonadmin\web"
ServerName moonadmin.dev
ServerAlias moonadmin.dev
<Directory "D:\phpStudy\WWW\moonadmin\web">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Linux环境 Nginx配置(请将/www/wwwroot/moonadmin/web 改为你自己的项目地址目录)
server
{
listen 80;
server_name moonadmin.dev;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/moonadmin/web;
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-81.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/moonadmin.dev.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/moonadmin.dev.log;
error_log /www/wwwlogs/moonadmin.dev.error.log;
}
以上配置可通过phpstudy或宝塔面板完成,操作更加方便。
配置完成后,重启相关服务,即可实现本地自定义域名访问。