近来做过一些中小型项目,用的轻量级codeigniter3,逐渐总结出一些经验,分享出来,希望对大家有所帮助。
一、 项目目录
之前我也百度+雅虎了一大堆国内国外的资料,最终结合了laravel的一些目录思路。整理出如下的项目结构。比如我项目名、域名是abc
config (公共配置目录)
shell (shell脚本目录,存放一些项目的定时脚本,可无)
storage (文件缓存目录)
system (ci系统目录,这个不需要多介绍了)
upload (文件上传目录) upload.abc.com
web_admin (系统后台) admin.abc.com
web_www (www前台) www.abc.com
web_wechat (微信端) wx.abc.com
……
总之web_开头的是一个子项目对应一个目录。其实也建议和二级域名相对应。
每个子项目下都新建一个public目录,里面放index.php和.htaccess(apapche才有)
每个子项目的二级域名,都配置对应的public目录(这是学习的laravel),如admin.ab.com配置网站根目录是web_admin/public/
优点是:1、整个public的目录,相当于只有index.php暴露出去,很安全。
2、如果是系统后台,不需要前端工程师参与的,public可以新建任意的css、image、js等目录,很方便访问。
3、如果是前后端分离的开发方式,也让前端工程师很方便整合,这个public目录除了一个index.php文件,其他都是给前端用,很简洁。
继续细化每个子目录:
config目录
1、config/config.php 公共的域名配置文件
比如我通常用
$config['site_name'] = 'XXX管理系统';
$config['author'] = '周润发';
$config['version'] = 'V1.1';
$config['url_admin'] = 'http://admin.abc.com/';
$config['url_www'] = 'http://www.abc.com/';
$config['url_wechat'] = 'http://wx.abc.com/';
$config['url_upload'] = 'http://upload.ai.com/';
$config['dir_base'] = 'D:\\web\\abc\\'; //正式服务器用服务器上的目录
$config['dir_upload'] = $config['dir_base'] . 'upload\\';
可以根据喜好自己配置
2、config/databases.php 数据配置文件
$db['default'] = array(
'dsn' => '',
'hostname' => '127.0.0.1',
'username' => 'root',
'password' => '123456',
'database' => 'abc',
'dbdriver' => 'mysqli',
'dbprefix' => 'ai_',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
不用多说了,总之就是把数据配置文件独立出来,成为公共的,方便统一管理,而不用每个子项目去分别配置自己的database.php
3、其他公共配置,如config/wechat.php
$config['appid'] = 'wxXXXXX'; // 必填
$config['appsecret'] = 'XXXXXXXXXXXXXX'; // 必填
$config['token'] = 'XXXXX';
$config['url'] = 'http://wx.abc.com/wechat/callback';//微信的回调,根据自己的项目对应写
$config['encodingaeskey'] = 'XXXXXXX';
$config['WECHAT_TPL_MESSAGE'] = array(
'welcome' => 'XXXXXX',//一些模版消息,这里不详细举例了,自己根据项目情况添加
各个子项目的config/config.php改动
比如web_admin/config/config.php
<?php
//引入公共的站点配置文件
require '../../config/config.php';
$config['site_name'] = 'XXX后台管理系统';
//……
?>
使用
require '../../config/database.php';
优点是1、公共的配置文件独立管理
2、 .gitignore直接排除整个config目录
storage目录
storage/cache 缓存
storage/logs 自己记录的一些日志
storage/sessions 如果是文件session的存储方式
累了,打盘LOL,就休息了,下一篇接着介绍。