前段时间使用ThinkCMF搭建了一个局域网内运行的小型站点,对于CMF有了一丢丢的新认识,于是又意识到好记性不如烂笔头,烂笔头不如Blog,看来需要将这些认识变成字符串,才能逐渐成为一名合格的攻城狮/程序猿。
姓名:ThinkCMF,类型:开发框架,适用人群:程序猿/码农,该框架是目前较为流行的一款基于ThinkPHP+Mysql开发的中文内容管理框架。此框架含有多种可定制的功能模块以供开发者使用,力争将模块、功能等做成积木的模式,使用时直接取用即可;此外,开发者还可以在遵循框架作者制定的标准的前提下,对框架进行扩展。而Thinkcmf框架除了含有多种可扩展的功能、模块、插件外,还含有基础的管理功能,如用户管理、权限管理、角色管理等,开发者可以将主要精力投入到关注的功能模块中。
Thinkcmf开发语言是php,因为它本身就是一款基于Thinkphp+Mysql开发的中文内容管理框架。
该开发框架定位于CMF(Content Management Framework,即内容管理框架),与CMS(Content Management System,即内容管理系统)是有区别的。
CMS与CMF:
CMS为一款内容管理系统,主要从事内容发布工作,适用于新闻发布、内容管理站点等场景,开发者/用户直接在该系统中进行一些维护、调整,即可直接上线使用,但扩展性较差。
而CMF作为一款开发框架,定位就是像我一样对编程有一丢丢认识的Codinger,根据框架提供的接口、模块等,拼凑出自己需要的站点进行上线使用。
下载:
截止到写本文前,框架版本已经到了5.0.170927,可以直接通过Github网站下载:https://github.com/thinkcmf/thinkcmf。
安装:
需要搭建Php+Mysql环境,在Windows环境下,一般选择WampServer或phpstudy即可。目前较流行的是将它搭建在nginx平台上。
PHP版本要求5.5以上,Mysql要求5.6,安装时要求不开xdebug扩展
浏览器进入网站目录/public页面,会自动提示安装,填写相应的参数,录入数据库服务器地址、端口号、用户名、口令、数据库名称等,并要求填写管理员的登录口令。完成以上,即可进入下一步,创建相应的参数文件即可。
根据以往的经验,这种搭建的教程,大多数流程是想通的,所谓一法通万法通嘛,所以下来就直接说说在内网搭建站点遇到的坑吧,将坑避过,自然本文的目的也就达到了。
坑1:
在测试的环境下安装wampserver2.5时报错,环境为64位Windows 2008 Server的虚机,报错提示为“没有找到MSCVR110.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。“
最开始想到的是系统安装时是否不是完全安装,以至于缺少动态库,下载MSVCR110.dll即可。于是在后面的过程中一步步陷入死循环:
1.网上搜索下载该dll文件,发现大部分支持下载的都是只支持32位操作系统的文件,无法使用;
2.在某论坛搜寻到64位版本的后,分别复制粘贴到C:/Windows/System32、C:/Windows/SysWOW64路径下时,提示该文件正在使用,无法复制;
3.进入安全模式进行复制,依然提示无法复制。
难道非得使用WinPe然后再复制吗?(+﹏+)~晕
后经高人指点(估计也是在此坑过),需要下载安装 Visual C++ Redistributable for Visual Studio 2012 Update 4的Windows补丁。
该网站的网址为:http://www.microsoft.com/en-us/download/details.aspx?id=30679
分别提供32位和64位两个版本的程序文件,建议都下载安装,因为后来发现在Windows 2008 Server的64位服务器上安装WampServer的32位版本,也是可行的。
那么下来就简单了,下载程序文件,双击安装,并重启该服务器,WampServer就能正常运行了。
坑2:
wampserver的配置问题。
众所周知,wampserver安装过后,默认只能本机访问,需要其他设备访问,需要修改httpd.conf的参数。
而wampserver的2.4.9以及之后的版本,将对访问策略参数的修改方式进行了变更。allow from all→Require all granted allow from 127.0.0.1 → Require local
另外,其他计算机无法访问,可能运行wampserver的计算机的防火墙未正确配置。关闭防火墙或添加防火墙访问规则。
防火墙添加访问规则的方式:打开防火墙,点击高级设置,点击入站规则,右键新建规则,选择端口,选择TCP协议并填写端口号,选择允许连接,选择所有情况下允许,输入描述和名称,点击完成。
坑3:
本文标题之所以 提到“内网”二字,确实是因为内网/局域网中搭建、运行网站与公网存在很大的不同。
其最大的不同在于,目前大多数网站加载流行前段框架的js、css都是使用在线CDN,而内网根本无法满足此要求,于是需要将这些加载的内容摘出并下载到本地。这些,同样适用于Html5.js、respond.min.js这些为兼容IE7、IE8而服务的文件。
否则,页面浏览时就会出现各种各样的问题,尤其是使用IE时。
目前流行CMF介绍:
OneThink(目前好像暂时没有人维护)、ThinkCMF、CoreThink,都是从ThinkPHP而来。针对于这种CMF框架,目前还在发展中,没有特别令人青睐的框架。本人试用过OneThink、ThinkCMF,个人觉得还是ThinkCMF较好使用一些,毕竟还在运营维护中。