Yii2 install And Setup
เริ่มแรกในการใช้งาน Yii version 2 โดย Installing จาก Composer บน mac
เราจะเริ่มต้นจาก install Composer กันก่อนโดยใช้ command
sudo curl -s http://getcomposer.org/installer | sudo php sudo mv composer.phar /usr/local/bin/composer
หลังจากนี้เราจะได้ composer เอาไว้ใช้งานแล้ว
จากนั้นให้เราไปที่ folder ที่เราจะใช้เริ่ม project
cd /Applications/MAMP/htdocs
ถ้าต้องการ Create project แบบ Basic
cd ~/Sites composer global require "fxp/composer-asset-plugin:1.0.0-beta4" composer create-project --prefer-dist yiisoft/yii2-app-basic basic
โดยถ้าใช้แบบ Basic จะจบที่ขั้นตอนนี้ สามารถทดสอบได้ที่
http://localhost/basic/web/index.php
หรือ Create project แบบ Advanced
cd ~/Sites composer global require "fxp/composer-asset-plugin:1.0.0-beta4" composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application
เมื่อสิ้นสุดการ Create project แบบ Advanced ขั้นตอนต่อไปจะเป็นการ Setup และ ตั้งค่าต่างๆ ของ project
- Execute “init” command จาก path project ของเรา
php /path/to/yii-application/init
หรืออีกแบบ, ในแบบ production execute init ใน non-interactive mode.
php /path/to/yii-application/init --env=Production --overwrite=All
- ให้ไปสร้าง database ใหม่และเข้าไปตั้งค่า components.db ที่ไฟล์ common/config/main-local.php
- ย้ายข้อมูลเข้าไปใน database โดยใช้ command yii migrate.
php yii migrate
ในกรณีที่ใช้ MAMP และเกิดปัญหาให้กำหนดค่า common/config/main-local.php ตามนี้
'components' => [ 'db' => [ 'class' => 'yiidbConnection', 'dsn' => 'mysql:host=localhost;port=8889;dbname=mydbname;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock', 'username' => 'myuser', 'password' => 'mypassword', 'charset' => 'utf8', ],
- ตั้งค่า document roots ที่ web server ตามนี้(หรือตามสะดวก)
สำรับ frontend จาก /path/to/yii-application/frontend/web/ และใช้ URL http://frontend/
สำรับ backend จาก /path/to/yii-application/backend/web/ และใช้ URL http://backend/
ในการ Login application ในครั้งแรกคุณต้อง sign up ข้อมูลพวกนี้ก่อน email address, username และ password หลังจากนั้นคุณจึง login เข้าไปใน application ได้ โดยใช้ email address และ password ในการ login
โครงสร้างไดเรกทอรี
ไดเรกทอรีรากมีไดเรกทอรีย่อยต่อไปนี้:
backend
– backend web application.common
– files common to all applications.console
– console application.environments
– environment configs.frontend
– frontend web application.
อย่างอื่นไปอ่านเองได้ที่ http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html
ตั้งค่า mod_rewrite ให้กับ yii2
สำหรับ Config
'components' => [ //... 'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true ], //... 'request' => [
สำหรับ .htaccess เอาไว้ใน /web
RewriteEngine on # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward it to index.php RewriteRule . index.php
อีกตัวอย่างที่น่าสนใจ http://aaronfrancis.com/blog/2014/1/9/hosting-an-advanced-yii2-application-on-heroku
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On </IfModule> <IfModule mod_rewrite.c> # deal with admin first RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^.*$ backend/web/index.php [L] RewriteCond %{REQUEST_URI} ^/(assets|css) RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php </IfModule>
อันนี้ก็น่าสนใจ http://www.yiiframework.com/wiki/755/how-to-hide-frontend-web-in-url-addresses-on-apache/