Cài đặt, cấu hình

Cài đặt, cấu hình

Cấu hình ứng dụng Yii: database, component, static parameter

Loạt bài viết này dành cho các bạn mới làm quen với Yii Framework, bạn nào thấy có sai sót gì hãy góp ý để cùng giúp đỡ những người mới.

Sử dụng tool yiic để tạo dự án mới, việc này chỉ cần thực hiện một lần, những project khác chúng ta sẽ copy lại vì cấu trúc sẽ được thay đỗi chút ít so với bản nguyên thủy sinh ra bởi yiic. Sự thay đỗi này nhằm mục đích chia sẽ các thư viện dùng chung giữa các ứng dụng, tăng khả năng tái sử dụng những gì đã viết, cũng như dễ dàng hơn trong việc nâng cấp, bảo trì sau này.

 

Trước tiên bạn dùng yiic để tạo ứng dụng, nó sẽ tạo ra app có cấu trúc như sau:

cau-hinh-ung-01.png

 

Tất cả các project của tôi đều được lưu trong cùng một thư mục E:\Server\root

Chúng ta tạo thêm 1 vài thư mục mới để chứa các thư viện dùng chung cho tất cả các ứng ụng:

E:\Server\root\common
E:\Server\root\common\api
E:\Server\root\common\ext
E:\Server\root\common\yii (download yii framework về, giải nén vào thư mục này)

 

Mỗi ứng dụng mới được tạo ra sẽ nằm cùng cấp với thư mục common.

Bắt đầu với project đặt trong thư mục E:\Server\root\trumcode.com. Bạn dùng yiic webapp trumcode.com để khởi tạo ứng dụng mới và lưu trong thư mục này. Sẽ có 1 vài thay đỗi so với cấu trúc được sinh ra bởi yiic, và xóa những tập tin không cần thiết.

 

Thay đỗi cấu trúc thư mục

Tạo mới thư mục public_html, copy tất cả các tập tin/thư mục trừ protected vào thư mục public_html này

 

Thay đỗi nội dung tập tin index.php (bootstrap)

defined('DS') or define('DS',DIRECTORY_SEPARATOR);

// change the following paths if necessary
$yii = dirname(__FILE__).'/../../common/yii/yii.php';

if ($_SERVER['HTTP_HOST'] == 'trumcode.com') {
    $config = dirname(__FILE__).'/../protected/config/projPublic.php';
} else {    
    defined('YII_DEBUG') or define('YII_DEBUG',true);    
    defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

    $config = dirname(__FILE__).'/../protected/config/projDev.php';
}

require_once($yii);       
Yii::createWebApplication($config)->run();

Tập tin này sẽ kiểm tra ứng dụng đang chạy trên local hay server, nó sẽ load tập tin cấu hình tương ứng. Thay đỗi đường dẫn lại nếu cần. Tuy nhiên để tiện theo dõi tutorial, bạn không nên thay đỗi :D

 

Thay đỗi tập tin cấu hình

Tập tin cấu hình ứng dụng của yii được lưu trong protected\config\main.php, chứa các thông số như kết nối database, các component, URL routing...

Tuy nhiên chúng ta sẽ tách các thông số cấu hình lưu trong những tập tin khác nhau.

Trong thư mục protected\config tạo mới các tập tin sau: projDev.php, projPublic.php, params.php, routes.php (nội dung xem trong source đính kèm)

 

Tập tin projDev.php dùng khi phát triển ứng dụng trên local, và projPublic.php dùng khi triển khai trên server. 2 tập tin này chứa mảng các thông số cấu hình và được merge với main.php chứa các thông số cấu hình chung cho cả local và server.

Còn 2 tập tin nữa là params.php chứa các static params và routes.php chứa thông tin cho việc rewrite.

 

Bắt đầu với tập tin cấu hình chính main.php

Thiết lập path alias cho ứng dụng

// uncomment the following to define a path alias
Yii::setPathOfAlias('module',dirname(__FILE__).'/../modules');
Yii::setPathOfAlias('common',dirname(__FILE__).'/../../../common');

2 path alias này được sử dụng thường xuyên khi phát triển ứng dụng. Ý nghĩa các thông số khác trong tập tin cấu hình, bạn tham khảo tại đây.

 

Cấu hình autoload

Ta khai báo thêm 'common.api.*', để yii tải thêm các thư viện thường xuyên sử dụng

// autoloading model and component classes
'import'=>array(
    'application.models.*',
    'application.components.*',
    'common.api.*',
),

 

Cấu hình component

Vì mục đích bảo mật, ta bật token và mã valid cookie

'request'=>array(
    'enableCsrfValidation'=>true,
    'enableCookieValidation'=>true,
),

 

Thêm 2 component khác để bạn thấy rõ hơn về cách sử dụng path alias

'image'=>array(
    'class'=>'common.ext.image.CImageComponent',
    'driver'=>'GD',
),
'crypt'=>array(
    'class'=>'common.ext.crypt.Crypt',
    'cryptKey'=>'trumcode',
),

 

Có 1 vài thay đỗi với URL Manager so với mặc định nên cấu hình thêm

'urlManager'=>array(
    'class'=>'common.api.UrlManager',
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'caseSensitive'=>true,
    'matchValue'=>true,
    'rules'=>require(dirname(__FILE__).DS.'routes.php'),
),

 

Di chuyển các static params sang file khác

Chuyển

'params'=>array(
	'adminEmail'=>'webmaster@example.com',
),

Thành

'params'=>require(dirname(__FILE__).DS.'params.php'),

 

Tập tin params.php này sẽ chứa tất cả các tham số dùng chung trên toàn hệ thống

// params.php
return array(   
    'pathView'=>'uploads/system',
    'pathStore'=>'webroot.uploads.system',
    'pathTemp'=>'webroot.uploads.temp',
    
    'formatTime'=>'h:i:s',
    'formatDate'=>'d-m-Y',
    'formatDateJs'=>'dd-mm-yy',
    'formatDatetime'=>'d-m-Y H:i:s',
);

 

Đây là các tham số dùng chung, thông tin cấu hình kết nối database được lưu trong 2 tập tin projDev.php và proPublic.php. projDev.php chứa thông tin cấu hình chạy trên local và projPublic.php để chạy trên server

// projDev.php
return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components'=>array(
            'db'=>array(
            	'connectionString'=>'mysql:host=localhost;dbname=trumcode_com',
            	'emulatePrepare'=>true,
            	'username'=>'root',
            	'password'=>'12345',
            	'charset'=>'utf8',
                'tablePrefix'=>'tc_',
                
                'enableProfiling'=>true,
                'enableParamLogging'=>true,
            ),
    		'log'=>array(
    			'class'=>'CLogRouter',
    			'routes'=>array(
    				array(
                        'class'=>'CProfileLogRoute',
    					'levels'=>'trace, info, error, warning',
    				),
    			),
    		),
        ),
    )
);

 

// projPublic.php
return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components'=>array(
            'db'=>array(
            	'connectionString'=>'mysql:host=localhost;dbname=trumcode_com',
            	'emulatePrepare'=>true,
            	'username'=>'root',
            	'password'=>'12345',
            	'charset'=>'utf8',
                'tablePrefix'=>'tc_',
                
                'schemaCachingDuration'=>60*60,
            ),
    		'log'=>array(
    			'class'=>'CLogRouter',
    			'routes'=>array(
    				array(
    					'class'=>'CFileLogRoute',                        
    					'levels'=>'error, warning',
    				),
    			),
    		),
        ),
    )
);

 

Bây giờ bạn có thể dẽ dàng thiết lập các thông số khác nhau khi phát triển và triển khai ứng dụng mà không cần phải tạo file dự phòng.

Download Source: http://www.mediafire.com/?yeqpceb5fdzv8f6

Bài đăng khác

HỖ TRỢ TRỰC TUYẾN

Mr. Lĩnh

0939.898.458

linhnp@panda.com.vn

Mr. Lai

0939.38.77.39

lainp@panda.com.vn

Processing...