感觉网上说的thinkcmf的安装部署不是很友好。现在记录一下我的部署。(只针对新手,老鸟一般都知道,不用往下看了)
1 去https://github.com/thinkcmf/thinkcmf 下载最新的代码。
下载解压后,会看到有一个public目录,默认这个目录是网站的根目录的。但我们一般会不会要这个目录,而是直接把里面的文件放根目录。
开始是这样
新建一个thinkcmf目录,把除public目录外的文件都移动到thinkcmf下。然后把public里的所有文件移动到根目录。
最后目录如下:
2 接下来要要修改index.php里的代码。
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../');
修改为
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/thinkcmf/');
这样,index.php入口文件就可以找到框架了。
为了安全考虑,你可以把thinkcmf移动到网站根目录外,这样可以提升安全系数。只是有些虚拟机不支持,就可以按我的这个目录结构来部署。目录名thinkcmf可以修改成你自己想要的。
3
访问网站域名就可以开始安装了,注意服务器要支持fileinfo和rewrite,不支持rewrite也可以安装,但是会比较麻烦,访问网站的时候要带上index.php这个入口文件名。
伪静态rewrite规则如下,apache的话,直接用.htacess里的规则就好了。 ngnix的用如下的规则
server{
... 省略
location / {
index index.php index.html index.htm;
#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if (!-e $request_filename)
{
#地址作为将参数rewrite到index.php上。
rewrite ^/(.*)$ /index.php?s=$1;
#若是子目录则使用下面这句,将subdir改成目录名称即可。
#rewrite ^/subdir/(.*)$ /subdir/index.php?s=$1;
}
}
... 省略
}
4 可以添加api应用代码
https://github.com/thinkcmf/thinkcmfapi
如果你需要api接口功能,访问上面的github下载源码,解压。
注意,按我上面的目录结构,需要把api目录名的文件全部放到thinkcmf目录。 把public目录下的所有文件放网站根目录。这样才能正常运行。不然按项目上的安装方法是不对的。为什么要这样,自己想一下吧。
移动完文件后,修改根目录下的api/index.php(也就是直接解压后public/api/index.php)的入口地址。修改后的代码如下,修改的地方比较多,自己比较一下,主要是框架地址的目录部分要修改。
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
// 调试模式开关
define("APP_DEBUG", true);
// 定义 APP 命名空间
define("APP_NAMESPACE", 'api');
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../thinkcmf/');
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'api/');
// 定义CMF目录
define('CMF_PATH', CMF_ROOT . '/simplewind/cmf/');
// 定义插件目录
define('PLUGINS_PATH', __DIR__ . '/../plugins/');
// 定义扩展目录
define('EXTEND_PATH', CMF_ROOT . '/simplewind/extend/');
define('VENDOR_PATH', CMF_ROOT . '/simplewind/vendor/');
// 定义应用的运行时目录
define('RUNTIME_PATH',CMF_ROOT.'/data/runtime/api/');
// 加载框架基础文件
require CMF_ROOT . '/simplewind/thinkphp/base.php';
// 执行应用
\think\App::run()->send();
nigix上还要添加支持api入口的伪静态规则
location /api {
index index.php index.html index.htm;
#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if (!-e $request_filename)
{
#地址作为将参数rewrite到index.php上。
#rewrite ^/(.*)$ /index.php?s=$1;
#若是子目录则使用下面这句,将subdir改成目录名称即可。
rewrite ^/api(.*)$ /api/index.php?s=$1;
}
}
ok,这样就部署好了,直接安装吧。