CTFd环境搭建 遇到数据库不匹配的解决办法

  • 系统: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目录下的三个日志文件全部给足权限(读写权限),可以直接:

chmod -R 777 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章