基于 yiisoft/yii2-app-advanced,在 GitHub 上新建仓库 yii2-app-advanced,新建接口应用(实现 RESTful 风格的 Web Service 服务的 API),新建api目录、配置和环境、测试、Vagrant等的支持 (一)
1、创建一个新的仓库,shuijingwan/yii2-app-advanced,如图1
Yii 2高级项目模板,模板包括四个层:接口(实现 RESTful 风格的 Web Service 服务的 API),前端,后端和控制台,每个都是单独的Yii应用程序。
2、创建仓库成功,如图2
3、使用以下命令安装应用程序:yiisoft/yii2-app-advanced,如图3
1 2 3 | composer self-update composer global require "fxp/composer-asset-plugin" composer create-project --prefer-dist yiisoft/yii2-app-advanced github-shuijingwan-yii2-app-advanced |
4、在命令行上创建一个新的仓库,推送现有的仓库至shuijingwan/yii2-app-advanced,基于第2步骤,如图4
1 2 3 4 5 | git init git add . git commit -m "安装 yiisoft/yii2-app-advanced 后,全部提交。" git remote add origin https://github.com/shuijingwan/yii2-app-advanced.git git push -u origin master |
5、打开:https://github.com/shuijingwan/yii2-app-advanced ,仓库已经推送成功,如图5
6、打开 Windows PowerShell,执行 init 命令并选择 dev 作为环境,如图6
1 2 3 | .\init 0 yes |
7、更改主机文件以将域指向您的服务器,配置 C:\Windows\System32\drivers\etc\hosts 文件,如图7
1 2 | # github-shuijingwan-yii2-app-advanced 127.0.0.1 github-shuijingwan-yii2-app-advanced.localhost www.github-shuijingwan-yii2-app-advanced.localhost backend.github-shuijingwan-yii2-app-advanced.localhost api.github-shuijingwan-yii2-app-advanced.localhost |
8、基于 Nginx 配置 Web 服务器,配置虚拟主机:www、backend,api 暂缓配置,编辑 C:\nginx-1.10.1\conf\vhosts\github-shuijingwan-yii2-app-advanced.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | ## FRONTEND ## server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name www.github-shuijingwan-yii2-app-advanced.localhost; root E:/wwwroot/github-shuijingwan-yii2-app-advanced/frontend/web; index index.php; access_log logs/www.github-shuijingwan-yii2-app-advanced.localhost.access.log; error_log logs/www.github-shuijingwan-yii2-app-advanced.localhost.error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } ## BACKEND ## server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name backend.github-shuijingwan-yii2-app-advanced.localhost; root E:/wwwroot/github-shuijingwan-yii2-app-advanced/backend/web; index index.php; access_log logs/backend.github-shuijingwan-yii2-app-advanced.localhost.access.log; error_log logs/backend.github-shuijingwan-yii2-app-advanced.localhost.error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } ## MISC ## ### WWW Redirect ### server { listen 80; server_name github-shuijingwan-yii2-app-advanced.localhost; return 301 http://www.github-shuijingwan-yii2-app-advanced.localhost$request_uri; } |
9、检查当前 PHP 环境是否满足 Yii 最基本需求,复制 /requirements.php 到 /frontend/web/requirements.php,然后通过浏览器访问 URL http://www.github-shuijingwan-yii2-app-advanced.localhost/requirements.php ,如图8
1 | $frameworkPath = dirname( __FILE__ ) . '/../../vendor/yiisoft/yii2' ; |
10、创建一个新的数据库(g-s-yii2-app-advanced),并相应地调整 /common/config/main-local.php 中的 components[‘db’] 配置,字符集为utf8mb4。
1 | CREATE USER 'g-s-yii2-app-advanced'@'%' IDENTIFIED WITH mysql_native_password AS '***';GRANT USAGE ON *.* TO 'g-s-yii2-app-advanced'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `g-s-yii2-app-advanced`;GRANT ALL PRIVILEGES ON `g-s-yii2-app-advanced`.* TO 'g-s-yii2-app-advanced'@'%'; |
1 2 3 4 5 6 7 | 'db' => [ 'class' => 'yii\db\Connection' , 'dsn' => 'mysql:host=localhost;dbname=g-s-yii2-app-advanced' , 'username' => 'g-s-yii2-app-advanced' , 'password' => 'IADO0x7uK4UpaRRM' , 'charset' => 'utf8mb4' , ], |
11、执行迁移命令,如图9
1 2 | .\yii migrate yes |
12、查看数据库,排序规则为:utf8mb4_unicode_ci,如图10
13、创建测试数据库(g-s-yii2-app-advanced-test),并相应地调整 /common/config/test-local.php 中的 components[‘db’] 配置,字符集为utf8mb4。
1 | CREATE USER 'g-s-yii2-app-advanced-test'@'%' IDENTIFIED WITH mysql_native_password AS '***';GRANT USAGE ON *.* TO 'g-s-yii2-app-advanced-test'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `g-s-yii2-app-advanced-test`;GRANT ALL PRIVILEGES ON `g-s-yii2-app-advanced-test`.* TO 'g-s-yii2-app-advanced-test'@'%'; |
1 2 3 4 5 6 | 'db' => [ 'dsn' => 'mysql:host=localhost;dbname=g-s-yii2-app-advanced-test' , 'username' => 'g-s-yii2-app-advanced-test' , 'password' => '9dIXzEvrGN9akpcO' , 'charset' => 'utf8mb4' , ] |
14、执行迁移命令,报错:Exception ‘yii\base\UnknownPropertyException’ with message ‘Setting unknown property: yii\console\Request::cookieValidat
ionKey’ in E:\wwwroot\github-shuijingwan-yii2-app-advanced\vendor\yiisoft\yii2\base\Component.php:209,如图11
1 | ./yii_test migrate |
15、由于控制台应用程序使用不同的请求组件,因此编辑 \common\config\test.php,注释 request 组件(在 Web 应用程序中需取消注释),如图12
1 2 3 4 5 6 7 8 9 10 11 | 'components' => [ 'user' => [ 'class' => 'yii\web\User' , 'identityClass' => 'common\models\User' , ], /* 'request' => [ 'cookieValidationKey' => 'test', ], */ ], |
16、执行迁移命令、构建测试套件,然后运行所有的样例测试,如图13
注:执行迁移命令(./yii_test migrate)后,需取消注释 request 组件,否则报错:
1 2 3 | Test ..\common\tests\unit\models\LoginFormTest.php:testLoginCorrect [yii\base\InvalidConfigException] yii\web\Request::cookieValidationKey must be configured with a secret key. |
1 2 3 | ./yii_test migrate vendor/bin/codecept build vendor/bin/codecept run |
17、查看测试数据库,排序规则为:utf8mb4_unicode_ci,如图14
18、添加接口应用程序(api),复制 frontend 至 api, environments/dev/frontend 至 environments/dev/api 以及 environments/prod/frontend 至 environments/prod/api,如图15
19、删除目录 \api\runtime\debug 下的所有文件,在目录 /api 中调整命名空间和路径以 api 开头(替换 frontend 为 api),如图16
20、在 common\config\bootstrap.php 中添加 Yii::setAlias(‘api’, dirname(dirname(__DIR__)) . ‘/api’);,如图17
21、编辑environments/index.php,搜索此文件有6处frontend,则相应复制6份,替换为api,如图18
22、\vagrant\nginx\app.conf,新增虚拟主机 api
\vagrant\nginx\app.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | server { charset utf-8; client_max_body_size 128M; sendfile off; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name y2aa-frontend.test; root /app/frontend/web/; index index.php; access_log /app/vagrant/nginx/log/frontend-access.log; error_log /app/vagrant/nginx/log/frontend-error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri / /index.php $is_args $args ; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name ; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/ var /run/php/php7.0-fpm.sock; try_files $uri =404; } location ~ /\.(ht|svn|git) { deny all; } } server { charset utf-8; client_max_body_size 128M; sendfile off; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name y2aa-backend.test; root /app/backend/web/; index index.php; access_log /app/vagrant/nginx/log/backend-access.log; error_log /app/vagrant/nginx/log/backend-error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri / /index.php $is_args $args ; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name ; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/ var /run/php/php7.0-fpm.sock; try_files $uri =404; } location ~ /\.(ht|svn|git) { deny all; } } server { charset utf-8; client_max_body_size 128M; sendfile off; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name y2aa-api.test; root /app/api/web/; index index.php; access_log /app/vagrant/nginx/log/api-access.log; error_log /app/vagrant/nginx/log/api-error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri / /index.php $is_args $args ; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name ; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/ var /run/php/php7.0-fpm.sock; try_files $uri =404; } location ~ /\.(ht|svn|git) { deny all; } } |
23、编辑 \vagrant\nginx\log\.gitignore,配置api的日志文件为忽略
1 2 3 4 5 6 7 | # nginx logs backend-access.log backend-error.log frontend-access.log frontend-error.log api-access.log api-error.log |
24、编辑 \Vagrantfile,新增 api 相关的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | require 'yaml' require 'fileutils' required_plugins = %w( vagrant-hostmanager vagrant-vbguest ) required_plugins.each do |plugin| exec "vagrant plugin install #{plugin}" unless Vagrant.has_plugin? plugin end domains = { frontend: 'y2aa-frontend.test', backend: 'y2aa-backend.test', api: 'y2aa-api.test', } config = { local: './vagrant/config/vagrant-local.yml', example: './vagrant/config/vagrant-local.example.yml' } # copy config from example if local config not exists FileUtils.cp config[:example], config[:local] unless File.exist?(config[:local]) # read config options = YAML.load_file config[:local] # check github token if options['github_token'].nil? || options['github_token'].to_s.length != 40 puts "You must place REAL GitHub token into configuration:\n/yii2-app-advanced/vagrant/config/vagrant-local.yml" exit end # vagrant configurate Vagrant.configure(2) do |config| # select the box config.vm.box = 'bento/ubuntu-16.04' # should we ask about box updates? config.vm.box_check_update = options['box_check_update'] config.vm.provider 'virtualbox' do |vb| # machine cpus count vb.cpus = options['cpus'] # machine memory size vb.memory = options['memory'] # machine name (for VirtualBox UI) vb.name = options['machine_name'] end # machine name (for vagrant console) config.vm.define options['machine_name'] # machine name (for guest machine console) config.vm.hostname = options['machine_name'] # network settings config.vm.network 'private_network', ip: options['ip'] # sync: folder 'yii2-app-advanced' (host machine) -> folder '/app' (guest machine) config.vm.synced_folder './', '/app', owner: 'vagrant', group: 'vagrant' # disable folder '/vagrant' (guest machine) config.vm.synced_folder '.', '/vagrant', disabled: true # hosts settings (host machine) config.vm.provision :hostmanager config.hostmanager.enabled = true config.hostmanager.manage_host = true config.hostmanager.ignore_private_ip = false config.hostmanager.include_offline = true config.hostmanager.aliases = domains.values # provisioners config.vm.provision 'shell', path: './vagrant/provision/once-as-root.sh', args: [options['timezone']] config.vm.provision 'shell', path: './vagrant/provision/once-as-vagrant.sh', args: [options['github_token']], privileged: false config.vm.provision 'shell', path: './vagrant/provision/always-as-root.sh', run: 'always' # post-install message (vagrant console) config.vm.post_up_message = "Frontend URL: http://#{domains[:frontend]}\nBackend URL: http://#{domains[:backend]}\nApi URL: http://#{domains[:api]}" end |
25、基于 Nginx 配置 Web 服务器,配置虚拟主机:www、backend、api,编辑 C:\nginx-1.10.1\conf\vhosts\github-shuijingwan-yii2-app-advanced.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | ## FRONTEND ## server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name www.github-shuijingwan-yii2-app-advanced.localhost; root E:/wwwroot/github-shuijingwan-yii2-app-advanced/frontend/web; index index.php; access_log logs/www.github-shuijingwan-yii2-app-advanced.localhost.access.log; error_log logs/www.github-shuijingwan-yii2-app-advanced.localhost.error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } ## BACKEND ## server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name backend.github-shuijingwan-yii2-app-advanced.localhost; root E:/wwwroot/github-shuijingwan-yii2-app-advanced/backend/web; index index.php; access_log logs/backend.github-shuijingwan-yii2-app-advanced.localhost.access.log; error_log logs/backend.github-shuijingwan-yii2-app-advanced.localhost.error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } ## API ## server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name api.github-shuijingwan-yii2-app-advanced.localhost; root E:/wwwroot/github-shuijingwan-yii2-app-advanced/api/web; index index.php; access_log logs/api.github-shuijingwan-yii2-app-advanced.localhost.access.log; error_log logs/api.github-shuijingwan-yii2-app-advanced.localhost.error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } ## MISC ## ### WWW Redirect ### server { listen 80; server_name github-shuijingwan-yii2-app-advanced.localhost; return 301 http://www.github-shuijingwan-yii2-app-advanced.localhost$request_uri; } |
26、打开 Windows PowerShell,执行 init 命令并选择 dev 作为环境,api应用所需环境配置文件自动生成,如图19
1 2 3 4 5 6 7 8 | .\init 0 yes Yes Yes Yes Yes Yes |
27、打开:http://api.github-shuijingwan-yii2-app-advanced.localhost/ ,符合预期,如图20
28、编辑 codeception.yml 配置包含所有应用程序的测试,如图21
1 2 3 4 5 6 7 8 9 10 | # global codeception file to run tests from all apps include: - common - frontend - backend - api paths: log: console/runtime/logs settings: colors: true |
29、运行所有的样例测试,包含 api,如图22
1 | vendor/bin/codecept run |
30、编辑 README.md,在目录结构中新增 api
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <p align="center"> <a href="https://github.com/yiisoft" target="_blank"> <img src="https://avatars0.githubusercontent.com/u/993323" height="100px"> </a> <h1 align="center">Yii 2 Advanced Project Template</h1> <br> </p> Yii 2 Advanced Project Template is a skeleton [Yii 2](http://www.yiiframework.com/) application best for developing complex Web applications with multiple tiers. The template includes three tiers: front end, back end, and console, each of which is a separate Yii application. The template is designed to work in a team development environment. It supports deploying the application in different environments. Documentation is at [docs/guide/README.md](docs/guide/README.md). [](https://packagist.org/packages/yiisoft/yii2-app-advanced) [](https://packagist.org/packages/yiisoft/yii2-app-advanced) [](https://travis-ci.org/yiisoft/yii2-app-advanced) DIRECTORY STRUCTURE ------------------- ``` common config/ contains shared configurations mail/ contains view files for e-mails models/ contains model classes used in both api and backend and frontend tests/ contains tests for common classes console config/ contains console configurations controllers/ contains console controllers (commands) migrations/ contains database migrations models/ contains console-specific model classes runtime/ contains files generated during runtime backend assets/ contains application assets such as JavaScript and CSS config/ contains backend configurations controllers/ contains Web controller classes models/ contains backend-specific model classes runtime/ contains files generated during runtime tests/ contains tests for backend application views/ contains view files for the Web application web/ contains the entry script and Web resources frontend assets/ contains application assets such as JavaScript and CSS config/ contains frontend configurations controllers/ contains Web controller classes models/ contains frontend-specific model classes runtime/ contains files generated during runtime tests/ contains tests for frontend application views/ contains view files for the Web application web/ contains the entry script and Web resources widgets/ contains frontend widgets api assets/ contains application assets such as JavaScript and CSS config/ contains api configurations controllers/ contains Web controller classes models/ contains api-specific model classes runtime/ contains files generated during runtime tests/ contains tests for api application views/ contains view files for the Web application web/ contains the entry script and Web resources widgets/ contains api widgets vendor/ contains dependent 3rd-party packages environments/ contains environment-based overrides ``` |
31、测试使用Vagrant安装,是否支持 api,参考网址:https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide-zh-CN/start-installation.md ,使用Vagrant安装(Windows 用户手册)
32、进入 /vagrant/config 文件夹,重命名 vagrant-local.example.yml 为 vagrant-local.yml(建议复制),将GitHub个人API令牌放置到 vagrant-local.yml,如图23
33、添加如下代码到 hosts 文件
1 2 | # github-shuijingwan-yii2-app-advanced Vagrant 192.168.83.137 y2aa-frontend.test y2aa-backend.test y2aa-api.test |
34、打开Windows PowerShell,切换路径至项目根目录,并且执行如下命令(需要翻墙,可能需要执行多次),期间有报错,参考第15步骤处理,如图24、图25
1 2 | vagrant plugin install vagrant-hostmanager vagrant up |
35、等待完成后,在浏览器中访问如下URL即可,符合预期,如图26
frontend: http://y2aa-frontend.test
backend: http://y2aa-backend.test
api: http://y2aa-api.test
36、还原第32步骤所做的修改,且编辑 \vagrant\config\.gitignore
1 2 | # local configuration vagrant-local.yml |
1 条回复
[…] 基于 yiisoft/yii2-app-advanced,在 GitHub 上新建仓库 yii2-app-advanced,新建接口应用… […]