环境配置 - sandtechnology/OtterBot GitHub Wiki
系统环境相关的安装与配置,以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.7(如果很慢参考下文换TUNA源)
pyenv install 3.7.9创建虚拟运行环境
- 
创建 OtterBot 运行的虚拟环境 pyenv virtualenv 3.7.9 venv-ffxivbot-37 
- 
切换到项目所在目录 cd /home/ubuntu/
Clone并编写配置
- 
clone 项目到本地 git clone -b master https://github.com/Bluefissure/OtterBot.git cd OtterBot
- 
将项目文件夹的环境设置为 virtualenv pyenv local venv-ffxivbot-37如果没有错误,此时在此目录下运行命令会有 (venv-ffxivbot-37)的前缀,那么,恭喜你创建了一个干净的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副本等数据是否成功添加。