ctfd平台的搭建和优化

ctfd平台的搭建和优化

搭建环境

​ 本次环境搭建使用的是腾讯云的学生机(1核2G,1M带宽),ubuntu16.04 64位。

开始搭建

1.安装git

sudo apt-get install git

2.安装pip

sudo apt-get install python-pip

3.安装Flask

sudo pip install Flask

4.下载CTFd

我下载在ubuntu的家目录下

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

5.安装CTFd

  1. cd CTFd

  2. sudo ./prepare.sh

6.修改CTFd

执行完第5步后所需的依赖应该都已经安装好了。先别急着运行CTFd。先修改CTFd/config.py文件,对数据库进行相关的设置(这里以MYSQL为例)

格式为mysql+pymysql://root:数据库密码@localhost/你创建的数据库名字

7.mysql设置

关于mysql的安装请大家自行google

进入mysql,新建一个ctfd数据库

  1. create database ctfd;

  2. exit;

8.运行CTFd

9.设置ctfd数据库字段,防止字符乱码

再次进入mysql数据库,输入下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use ctfd;

ALTER TABLE awards CONVERT TO CHARACTER SET utf8;

ALTER TABLE challenges CONVERT TO CHARACTER SET utf8;

ALTER TABLE config CONVERT TO CHARACTER SET utf8;

ALTER TABLE containers CONVERT TO CHARACTER SET utf8;

ALTER TABLE files CONVERT TO CHARACTER SET utf8;

ALTER TABLE keys CONVERT TO CHARACTER SET utf8;

ALTER TABLE pages CONVERT TO CHARACTER SET utf8;

ALTER TABLE solves CONVERT TO CHARACTER SET utf8;

ALTER TABLE tags CONVERT TO CHARACTER SET utf8;

ALTER TABLE teams CONVERT TO CHARACTER SET utf8;

ALTER TABLE tracking CONVERT TO CHARACTER SET utf8;

ALTER TABLE wrong_keys CONVERT TO CHARACTER SET utf8;

10.开始运行

sudo python serve.py

部署

1.gunicorn部署

1
2
3
4
5
1、pip install gunicorn

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

此时在浏览器访问你的服务器公网ip:4000就可以进入平台了

但是这样运行起来性能还是不好,所以我采用了nginx+uwsgi的方法来提高性能

2.nginx和uwsgi部署

安装nginx和uwsgi

1
2
3
1.apt-get install nginx

2.pip install uwsgi

/etc/nginx/sites-enabled/site中删除default,新建site文件,配置如下

1
2
3
4
5
6
7
8
9
server { 
listen 23333;
server_name 1.1.1.1;#这里填写你服务器的ip地址,不是1.1.1.1

location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock; #注:这里的sock文件和uwsgi的sock文件配的是同一个文件,因为nginx和uwsgi需要通过这个socket进行交互
}
}

然后把site软链接到/etc/nginx/sites-available/site下,或者把文件copy到/etc/nginx/sites-available/site

之后进入~/CTFd目录,运行

uwsgi -s /tmp/uwsgi.sock --chmod-socket=666 -w 'CTFd:create_app()'

然后在浏览器访问你的公网IP,应该就OK了。

遇到的坑

坑1

uwsgi -i xxx.ini时候出现了!!! no internal routing support, rebuild with pcre support !!!

这是因为pip缓存的坑,具体内容可以参考pip 缓存坑

解决:1.pip uninstall uwsgi

2.sudo apt-get install libpcre3 libpcre3-dev

3.pip install uwsgi --no-cache-dir

优化

1.nginx反向代理,开启多个个进程去代理,可惜我是学生机,只有1核啊!!

2.把静态文件目录地址添加到到nginx配置中

3.云服务器的话可以考虑CDN加速

4.redis缓存配置,可惜我不会。。

暂时就这些吧,有空再进一步研究如何优化!

##

本文标题:ctfd平台的搭建和优化

文章作者:xianyu123

发布时间:2019年03月19日 - 14:35

最后更新:2019年08月08日 - 15:19

原始链接:http://0clickjacking0.github.io/2019/03/19/ctfd平台的搭建和优化/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------