Yii2 install And Setup

PHP 15 ธ.ค. 2014

เริ่มแรกในการใช้งาน 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

  1. 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
  2. ให้ไปสร้าง database ใหม่และเข้าไปตั้งค่า components.db ที่ไฟล์ common/config/main-local.php
  3. ย้ายข้อมูลเข้าไปใน 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',
    ],
  4. ตั้งค่า 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/

แท็ก

Onyx

Just a middle-aged programmer, Can do many things but not the most.