ThinkCMF阿里云虚拟主机配置

发布于: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.phpgetRootPath方法为:

// 获取应用根目录
public static function getRootPath()
{
    return CMF_ROOT;
}

虚拟机部署 ThinkCMF5.1 讲解完毕!

以上官方的讲解,下面说下阿里云虚拟主机的配置,有类似要求的都可以参照:

阿里云虚拟配置

因为阿里云不允许我们创建及修改目录,但是他给我们提供了几个类似datalog之类的文件夹,其中有一个文件夹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+

一片空白

父爱如山,不善表达。回想十多年前,总记得父亲有个宽厚的肩膀,小小的自己跨坐在上面,越过人山人海去看更广阔的天空,那个时候期望自己有一双翅膀,能够像鸟儿一样飞得高,看得远。虽然父亲有时会和自己开玩笑,但在做错事的时候会受到严厉的训斥。父亲有双粗糙的大手掌。