- 系统:CentOS 7.5版 (腾讯云)
- Apache
- Mysql
- Python:2.7.10
- git
- gunicorn
- flask, pip
准备:
#先下载CTFd
git clone https://github.com/isislab/CTFd.git
# 安装需要安装的包
cd CTFd/
./prepare.sh
# 安装python需要的包
pip install -r requirements.txt
# 运行CTFd
python serve.py
配置:
1. 修改CTFd/config.py
文件 (红箭头必修改)
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/ctfd'
HOST="1.1.1.1"
2. 进入MySQL里新建一个数据库:
mysql -u root -p
CREATE DATABASE CTFd;
exit;
python serve.py
#再次进入数据库, 将其转变为utf-8
USE CTFd;
show tables;
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;
3.CTFd/logs
目录下的三个日志文件全部给足权限(读写权限
),可以直接:
|
4. 直接在ctfd目录下运行 (gunicorn --bind 0.0.0.0:4000 -w 1 "CTFd:create_app()" &)
记得安全组或者防火墙开放4000的端口,不然无法访问, 此命令是让后台也运行CTFd
注:
(_mysql_exceptions.OperationalError) (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)") (Background on this error at: http://sqlalche.me/e/e3q8)
#出现此错误: MySQLdb这个模块是独立的,有自己独立的socket
#解决办法:
cat /etc/my.cnf
#查看[mysql]里的socket路径 和 [mysqld]里的socket路径 是否为/var/lib/mysql/mysql.sock
#如果不是, 做个软连接
ln -s /你的路径/mysql.sock /var/lib/mysql/mysql.sock