-
-
Notifications
You must be signed in to change notification settings - Fork 129
环境配置
系统环境相关的安装与配置,以Ubuntu系统为例。
Windows 请参考 獭窝配置教程(Windows)
即Linux+Nginx+Mysql+PHP
的环境, 有能力的可以自行编译安装,实际需要的组件是 Nginx & Mysql
注意,Mysql 5.5已不支持Django2.1以上版本,如需要高版本Django请安装Mysql的5.6版本或以上。
如果啥都不懂推荐使用军哥的一件LNMP脚本安装,地址:https://lnmp.org/install.html
当然,如果你像我一样够懒或是小白用户,也可以请务必通过安装宝塔面板一键安装。
sudo apt-get install redis-server
兔子队列的坑比较多,最好先更新源,装最新版erlang,再装最新版rabbitmq,可以参考https://www.rabbitmq.com/install-debian.html
当然,直接安装的版本也可能没有问题,是否安装最新版取决于你想不想折腾了
国内的服务器请直接安装,官方源慢死你。
具体的命令可能如下,请烧高香它不报错:
#换源,安装Erlang
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang
#换源,安装RabbitMQ
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash #这个命令很可能卡住,请尽情重试或手动安装
sudo apt-get update
sudo apt-get install rabbitmq-server
目前我的机器上的版本是RabbitMQ 3.7.9 Erlang 21.1
如果希望使用web来观察队列情况,可以
sudo rabbitmq-plugins enable rabbitmq_management
使用浏览器访问 http://127.0.0.1:15672 使用默认的guest/guest用户登录即可。
出于安全的考虑,guest这个默认的用户只能通过 http://localhost:15672 来登录,其他的IP无法直接使用这个账号。如果希望远程登录web,需要自行添加superuser,这方面内容还请自行Google或百度。
安装Pyenv
建议使用pyenv,地址:https://github.com/pyenv/pyenv,一键脚本如下:
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
当然,如果不嫌麻烦(或是科研dalao),也可以通过Anaconda创建虚拟环境。
脚本跑完之后会有提示 按照提示修改自己的~/.bash_profile
或~/.bashrc
# 打开配置文件
nano ~/.bashrc
# 复制刚才提示中的类似这三段添加到最后
# 不能直接复制我的,每个人的不一样
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 使自己的profile生效
source ~/.bashrc
安装 Python3
# 安装前置依赖(Cent OS)
yum -y install gcc
yum -y install make
yum -y install zlib zlib-devel
yum -y install readline readline-devel readline-static
yum -y install openssl openssl-devel openssl-static
yum -y install sqlite-devel
yum -y install bzip2-devel bzip2-libs
yum -y install python-devel mysql-devel
yum -y install python3-devel
# 安装Python3.9(如果很慢参考下文换TUNA源)
pyenv install 3.9.0
创建虚拟运行环境
-
创建 OtterBot 运行的虚拟环境
pyenv virtualenv 3.9.0 venv-ffxivbot-39
-
切换到项目所在目录
cd /home/ubuntu/
Clone并编写配置
-
clone 项目到本地
git clone -b master https://github.com/Bluefissure/OtterBot.git cd OtterBot
-
将项目文件夹的环境设置为 virtualenv
pyenv local venv-ffxivbot-39
如果没有错误,此时在此目录下运行命令会有
(venv-ffxivbot-39)
的前缀,那么,恭喜你创建了一个干净的python环境 -
安装依赖
pip install -r requirements.txt
如果很慢,可以将软件源切换到TUNA
wget https://tuna.moe/oh-my-tuna/oh-my-tuna.py python oh-my-tuna.py
复制OtterBot/FFXIV/settings_example.py
到OtterBot/FFXIV/settings.py
,找到ALLOWED_HOSTS相关代码,修改为:
ALLOWED_HOSTS = ['127.0.0.1', '*']
否则无法远程访问,再找到DATABASE相关代码,按照下面修改:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'FFXIV', #数据库名
'USER': 'root', #数据库用户
'PASSWORD': 'PASSWORD', #数据库密码
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'},
}
}
-
建立FFXIV数据库
mysql -uroot -p # 输入安装LNMP时mysql的密码 create database FFXIV; # 创建数据库,请注意要与settings.py里保持一致
-
迁移数据库(注意每次数据库结构更新需要重新迁移)
python manage.py makemigrations ffxivbot# 通过djang ORM 给ffxivbot建立initial migration python manage.py migrate # 通过djang ORM 建立所需数据库表
-
初始化基础数据 某些基础的数据(比如boss名称、天气、服务器、gif沙雕图之类的)被导出到了
db
文件夹内,需要进入导入数据库文件:python manage.py loaddata db/*.json; # 通过Django导入数据库 文件
请注意,如果数据库结构不匹配,可能会出奇怪的问题,这时可以自己看看报错然后向上天祈祷解决(大概)。
复制OtterBot/ffxivbot/config_example.json
到OtterBot/ffxivbot/config.json
,修改对应的设置:
- WEB_BASE_URL: 网站地址,会用来生成配置文件的上报地址,请务必填写正确。
- QQ_BASE_URL:用来存储云吸的图片的老服务器,无需改动。
- ACCESS_TOKEN:遗留配置项,无需改动
- SECRET_KEY:遗留配置项,无需改动
- RANDOMORG_TOKEN:https://random.org的API Token,需要申请。业务中的/lottery命令需要用到
- WHATANIME_TOKEN: https://trace.moe/的API Token,需要申请。业务中的以图搜番需要用到
- ***_URL:各项服务的URL,除非地址迁移等原因无需改动
- TULING_API_KEY:图灵机器人的token,请关闭密码认证功能。业务中的艾特聊天需要用到。
- OCR_TYPE:OCR服务商,目前只支持
"baidu"
与"tencent"。
建议使用百度,辣鸡腾讯云太贵。 - BAIDU_OCR_ACCESSTOKEN:参考百度云的鉴权认证机制获取Access Token,每个月需要刷新一次。
- TENCENT_OCR_SECRET***:腾讯云OCR的SecretID与SecretKey,用于OCR识别。
- CONFIG_GROUP_ID:獭窝管理群群号。机器人会自动检索申请入群是否为本窝用户并自动通过加群请求。
- ADMIN_ID:獭窝窝主的QQ号。业务中的留言功能会推送到此账号。
- ADMIN_BOT:窝主的机器人QQ号。业务中的留言功能通过此机器人推送。
- TIMEFORMAT*:日期格式,无需改动。
- GLOBAL_EVENT_HANDLE:这是干啥用的?
- BOT_FATHER:机器人的默认父亲姓名(其实就是个
replace("图灵工程师爸爸",BOT_FATHER)
) - BOT_MOTHER:机器人的默认母亲姓名(其实就是个
replace("图灵工程师妈妈",BOT_MOTHER)
) - USER_NICKNAME:机器人对与其聊天的人的默认称呼(其实就是个
replace("小主人",USER_NICKNAME)
)
python manage.py check
如果返回了System check identified no issues (0 silenced).
则说明系统环境安装完成。
python manage.py runserver 0.0.0.0:8080
如果没有报错,可以访问服务器IP:8080
添加机器人了。
python manage.py createsuperuser # 按照提示创建即可
然后,就可以登录服务器IP:8080/admin
来检查天气、boss副本等数据是否成功添加。
如果使用管理员登录网站出现 User has no QQ user
的问题,请前往 IP:8000/admin
界面登录,然后给管理员用户绑定一个QQ。