发布于:2021-09-13 16:29:19
以下是ThinkCMF
官方为我们提供的如何在虚拟主机中部署,本人也没有一个一个尝试过,只是有朋友让帮忙出个站,因为用过tp
索性直接拉了这个cms
,因为底层文件全部放在了网站目录外,不像云服务器随意我们配置网站目录,刚用个阿里云的虚拟机就出现了问题,ftp
根目录不让我们创建文件夹,甚至修改原有文件夹的名字的权限都不给,所以在官方文档的基础上,遵循阿里云虚拟机的规则下来稍微修改下配置就可以了。
如何在虚拟机部署 ThinkCMF5.1
?
在 public/index.php
文件中有个常量CMF_ROOT
;
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../');
这个常量定义了 ThinkCMF
根目录的地址,public
目录是个例外,它是程序的 web 根目录,也就说这个目录可以随意调整,对有自己服务器的同学,可以直接把 public
目录当网站根目录,但对于虚拟机可能无法直接把 public 当网站根目录。
今天我们来说一下怎么在虚拟机部署 ThinkCMF5.1
?
一般空间目录结构基本是这样:
wwwroot(或 www)
logs
data
...
这时thinkcmf
默认的结构并不适用空间目录结构,因为空间的网站根目录是 wwwroot
或 www
,这时我们就要对默认的 cmf
进行改造了,其实很简单。
我们可以 thinkcmf
放到 wwwroot
之外,比如放在空间根目录的 thinkcmf
目录里
wwwroot(或 www)
logs
data
...
thinkcmf
app
data
public
index.php
...
vendor
...
然后把 public 目录的所有文件都移动到 wwwroot 目录下
wwwroot(或 www)
static
upload
index.php
...
logs
data
...
thinkcmf
app
data
public
vendor
...
这时我们再改一下 index.php
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../thinkcmf/');//NOTE 我改过了
下在完整 index.php 下如:
<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: 老猫 <zxxjjforever@163.com>
// +----------------------------------------------------------------------
namespace think;
// [ 入口文件 ]
// 调试模式开关
define('APP_DEBUG', true);
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', __DIR__ . '/../thinkcmf/');//NOTE 我改过了
// 定义CMF数据目录,可更改此目录
define('CMF_DATA', CMF_ROOT . 'data/');
// 定义应用目录
define('APP_PATH', CMF_ROOT . 'app/');
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
// 加载基础文件
require CMF_ROOT . 'vendor/thinkphp/base.php';
// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();
最后更改vendor/thinkphp/library/think/Loader.php
的getRootPath
方法为:
// 获取应用根目录
public static function getRootPath()
{
return CMF_ROOT;
}
虚拟机部署 ThinkCMF5.1
讲解完毕!
以上官方的讲解,下面说下阿里云虚拟主机的配置,有类似要求的都可以参照:
阿里云虚拟配置
因为阿里云不允许我们创建及修改目录,但是他给我们提供了几个类似data
、log
之类的文件夹,其中有一个文件夹myfolder
明显是为我们准备的嘛,所以,我们把底层文件全部上传到这个文件夹,将public下的文件全部上传到htdocs
文件夹。
修改htdocs/index.php
文件
1 2
| // 定义CMF根目录,可更改此目录 define('CMF_ROOT', __DIR__ . '/../myfolder/');//NOTE 我改过了
|
修改Loader.php
文件
该文件目录为/myfoldervendor/thinkphp/library/think/Loader.php
1 2 3 4 5
| // 获取应用根目录 public static function getRootPath() { return CMF_ROOT; }
|
再次尝试,完美了吧
https://www.diandian100.cn/ad8b0cf6.html
阅读 481+
10