CTFd搭建记录

Author Avatar
Righteous 5月 15, 2017

准备环境
Ubuntu 16.04 LNMP
1.更新
sudo apt-get update # 获取最新资源包
sudo apt-get upgrade # 本机软件全部更新
sudo apt-get dist-upgrade # 本机系统软件更新

2.安装git

sudo apt install git

3.安装MariaDB

sudo apt-get install mariadb-server-10.0 mariadb-client-10.0

配置Mariadb的安全选项命令

sudo mysql_secure_installation
设定新密码需要输入,其余回车即可
Enter current password for root (enter for none): 当前root的密码,直接回车,因为新数据库没有密码。
Set root password? [Y/n] 回车,默认为输入Y。
New password: 输入新密码
Re-enter new password 再次输入新密码
Remove anonymous users? [Y/n] 移除匿名用户
Disallow root login remotely? [Y/n] 禁止root远程登录
Remove test database and access to it? [Y/n] 移除测试数据库
Reload privilege tables now? [Y/n] 重新加载权限表

4.Others
1)安装pip

sudo apt install python-pip

2)安装mysql-python

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo pip install mysql-python

若不安装,CTFd中运行serve.py会报错(ImportError: No module named MySQLdb)

3)安装gunicorn

sudo pip install gunicorn

安装CTFd
下载&安装&运行CTFd
sudo git clone https://github.com/isislab/CTFd.git
cd CTFd
sudo ./prepare.sh
sudo python serve.py

配置数据库
修改CTFd目录下的config.py

HOST = "47.76.**.**"
SQLALCHEMY_DATABASE_URI = 'mysql://root:<mysql_passwd>@localhost/CTFd?charset=utf8'

然后进入数据库

mysql -u root -p

新建一个数据库

CREATE DATABASE CTFd;

退出数据库返回CTFd目录运行一下serve.py,ctrl+c退出再进入数据库

use CTFd;

防止乱码,将里面的字符集全部修改为utf-8.

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 files CONVERT TO CHARACTER SET utf8;
ALTER TABLE hints 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;

退出mysql

sudo gunicorn --bind 0.0.0.0:4000 -w 1 "CTFd:create_app()"

访问平台,首次注册账号即为admin