基于nginx,如何搭建thinkcmf开源cms系统
发布于 作者:苏南大叔 来源:程序如此灵动~
thinkcmf是基于thinkphp的一款cms系统,当年thinkphp官方的onethink并不给力,thinkcmf就顺风而起。目前,thinkphp更新到5系列,thinkcmf的版本也更新到了5.0.180123。苏南大叔正式向大家推荐这款thinkcmf系统,在其基础上做二次开发,还是蛮容易的。据说,这款cms系统,正式开始支持小程序的开发了。

在本篇文章中,苏南大叔描述一下: 基于nginx如何搭建thinkcmf的基本过程。注意,苏南大叔说的是nginx,而不是apache。
thinkcmf代码下载
最新版thinkcmf下载地址:

nginx配置
对于搭建thinkcmf这件事情来说,下载得到代码后,我们需要关注到的目录是public目录,这个目录就是网站的根目录,这点和传统的网站是有所区别的。
在这个public目录下,有个thinkcmf.conf文件,这个就是nginx的配置文件demo。这个文件最终是要放到nginx的配置目录下面的,也就是说最终是要移动走的,不是放在目前的这个public目录下的哦。放在这里仅仅是个demo,是个范例,给小白看的。


- 关于
nginx设置vhost网站,可以参照:https://newsn.net/say/nginx-vhost-php.html - 如何测试
nginx的配置是否正确,请参照:https://newsn.net/say/apache-nginx-conf.html
thinkcmf.conf范例代码如下:
server {
listen 80;
#域名设置
server_name thinkcmf.com;
#项目目录
root /www/thinkcmf/public;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}注意要修改,配置文件中的server_name和root。root一定要指向代码目录下面的public目录。一旦这个vhost启动成功后,public目录下面的thinkcmf.conf文件就没有用了。
当然,这个目录下面的很多.htaccess文件也是没用的了,因为.htaccess是用于apache的,而不是nginx。当然,如果您的服务器容器,用到的是apache的话,请删除thinkcmf.conf保留众多.htaccess即可。
配置拓展
关于这个官方给出的nginx配置,苏南大叔表示:可以用。但是显然是有些问题的。比如最明显的就是public目录下的themes目录,这个目录的位置显然是有问题的。
themes下面的html文件就是网站的模版页面,里面扩展名默认为.html。但是里面真实夹杂着大量php代码。也就是说,有代码泄露的风险。这个目录下面的.htaccess文件是禁止访问相关模版文件的。
但是,这些配置在nginx的官方配置demo中,确没有体现出这一点出来。这不得不说是个较大的安全问题。关于thinkcmf的themes设置,苏南大叔会在接下来的文章中,重点分析,敬请关注。

当然,针对这种情况,苏南大叔先给出一个简单的治标不治本的方案,暂时方案而已。
server {
## 这里请替换为原来的配置
location ~* ^\/upload\/.+\.(html|php|json)$ {
return 404;
}
location ~* ^\/plugins\/.+\.(html|php|json)$ {
return 404;
}
location ~* ^\/themes\/.+\.(html|php|json)$ {
return 404;
}
}您可以根据您的实际情况,修改您的nginx配置文件。
安装搭建
上述配置配好之后,就是我们的php上场了,既然是thinkphp5系列了,我们就采用最新的php72吧。需要注意的一点是:需要的扩展有:dom,openssl,pdo_mysql,gd 等等。最值得一提的就是gd,里面必须包含freetype子模块。否则,后台验证码是显示不出来的。具体可以参见这篇文章。https://newsn.net/say/mac-php-gd-freetype.html 。


另外,对于根目录下面的data目录,需要有写入权限,因为缓存及配置等等都存在这里。对于linux或者mac系统,推荐修改属主为www,然后修改目录权限为755。当然对于小白来说,直接777是最好的选择。win系统的话,就不用考虑这事了,应该是没有啥关系的。
安装界面截图
如果上述设置都ok的话,就可以进入安装界面了。



utf8mb4是目前最好的字符集选择了,不解释。可以参见这篇文章。https://newsn.net/say/mysql-charset-utf8mb4.html 。

这里请一定要遵照提示说明,删除对应的install文件夹,这个是最基本的安全设置。

总结
至此,thinkcmf的demo网站,就算是搭建成功了。万里长征第一步而已,而后,对于thinkcmf的深度发掘,才是更加重要的事情,你说对么?
更多有关thinkcmf的经验文章,请点击苏南大叔的链接:https://newsn.net/tag/thinkcmf/ ,感谢您的阅读。欢迎您做任何形式的转载,请保留链接即可。谢谢。
按您的博客搭建好后,访问域名。报502的错误,请问怎么破?
你网上买的虚机空间吧?虚拟空间的php版本一般都是5.2。看看版本是不是太低了。现在都是php7了,还有检查是不是没有写入权限,修改一下文件的777权限。如果还是不行的话,就开启一下debug模式,会显示出具体的错误信息的。
我想知道thinkcmf.conf这个文件放在哪个目录下呢?
是放在nginx的配置目录下面的,你服务器上面是不是nginx?如果不是的话,是用不到这个东西的。而且你的服务器的nginx的具体目录在哪里,这个可是因人而异的。