搭建的环境是centos7.6.1810,本来是放在自己的服务器上的但奈何服务器带宽配置限制,访问起来非常的卡所以先搭建了vm的服务器来进行测试,我是先行安装了oneinstack(懒得自己一个个装过去)环境是LANMP。记得改成阿里云的源哦,怎么改自己百度。改完源 yum update下,更新下软件包。

下载项目

git clone https://github.com/CTFd/CTFd.git

安装

进目录

cd CTFd

安装(如果装的是oneinstack的LANMP的话应该是不会报错的)

./prepare.sh

然后就是更改配置了
这里需要进入CTFd目录下的一个CTFd文件夹,在那里配置config.py

cd CTFd
vim config.py

在config.py文件里改成

DATABASE_URL = "mysql+pymysql://账号:密码@localhost/ctfd"  

ps:改成mysql主要是便于管理,但mysql存在sql注入等问题,需要对sql进行过滤
ctf2.0.4(2019/3)里只需修改这个选项即可,进数据库创建一个ctfd的数据库,这样等下编译的时候就不会报错了。

之后运行serve.py,在上层目录里
cd ..
python serve.py

然后

gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"

在成功后,访问你的IP:8000就可以看到网页了,如果发现访问不了,看下你的iptables,或者安全组配置里是否开启了相应端口

vim /etc/sysconfig/iptables 

对照这里面的规则把8000端口打开即可。

这样确实可以访问了,但还是卡的很。毕竟小水管。

那优化下吧:
于是,还是配置nginx端口转发吧,会好很多

 vim /usr/local/nginx/conf/nginx.conf

然后,修改:

location /{
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}

记得开的端口要相同哦。
就ok了,然后重启nginx

nginx -s reload
gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"

做完了这些应该说服务器端搭建完了,但我是学校的内网没有公网ip的,所以想要访问只能做内网穿透,我用了sukura做了端口映射,这样就可以实现内网访问了。

后记:这个平台运行下来还是比较稳定的,之后的优化主要是做cdn转发和禁用websocket。这样访问就很流畅了,毕竟过服务器的流量就不多了。

附上网址:click

最后修改:2019 年 09 月 25 日 09 : 35 PM
如果你觉得有用,欢迎赞赏