相关依赖
- python >= 3.6
- node >= 6.10 (仅开发模式安装)
- nginx
- mysql >= 5.6
- Inception
安装
注意
Yearning 采用的是动静分离架构,为了接口安全后端接口并不对全域开放。
所以存在跨域的问题,请仔细阅读以下 配置文件说明!如配置错误将无法正常登陆!
本文档只介绍Yearning相关安装配置,对于Inceotion相关配置需自行添加。如只配置了Yearning却没有配置Inception则 仍然无法正常工作。所以请确保自己已熟读inception相关文档
生产模式安装(推荐):
安装 nginx mysql python3.6 (nginx,mysql推荐yum安装。python3.6官方自行下载安装)
安装Inception(install目录下有已经编译好的Inception可以直接运行)
建立数据库 (库字符集必须为UTF8或utf8mb4,不然会有未知错误)
git clone https://github.com/cookieY/Yearning.git
编辑 Yearning/src/deploy.conf
[mysql]
db = 所创建的库名
address = 数据库地址
port = 数据库端口
password = 数据库密码
username = 数据库用户
[host]
ipaddress = 服务器ip地址:端口 (涉及跨域十分重要!!设置不正确将无法登陆!!)
例如 本机地址为192.168.1.2 nginx端口为80(端口可自己定义,定义什么端口就填写什么端口)
则应填写为 192.168.1.2:80 之后只能通过该地址访问平台其他地址一概无效!
注意!访问的是nginx的端口不是后端8000端口!
[Inception]
ip = Inception地址
port = Inception端口
user = Inception用户名
password = Inception密码
backupdb = 备份数据库地址
backupport = 备份数据库端口
backupuser = 备份数据库用户名
backuppassword = 备份数据库密码
[LDAP] LDAP相关设置
LDAP_SERVER = LDAP服务地址
LDAP_SCBASE = LDAP dc 设置 如 dc=xxx,dc=com
LDAP_DOMAIN = LDAP域名 如 xxx.com
LDAP_TYPE = 1 1 通过域名进行ldap认证 2 通过uid进行ldap认证 3 通过cn进行ldap认证
[email] 邮箱推送相关设置
username = 邮箱发件账号 如 xxxx@163.com
password = 邮箱发件账号密码
smtp_server = 邮箱stmp地址, 具体地址请咨询对应邮箱提供者
[sql]
limit = 100 查询最高的Limit数量
[webhook]
dingding = 权限提交,查询工单等其他非sql工单提交消息推送钉钉webhook
开始安装
pip3 install -r requirements.txt 安装相应python依赖库
python3 manage.py makemigrations core && python3 manage.py migrate core 初始化数据库
echo "from core.models import Account;Account.objects.create_user(username='admin', password='Yearning_admin', group='admin',is_staff=1)" | python3 manage.py shell 添加初始化用户
echo "from core.models import grained;grained.objects.get_or_create(username='admin', permissions={'person': [], 'ddl': '1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', 'user': '1', 'base': '1', 'dicexport': '0'})" | python3 manage.py shell 初始化权限
注意: 对于v1.1.2以下的版本 permissions={}内还需添加'query': '1', 'querycon': []
cp -rf Yearning/webpage/dist/* $NGINX_HOME/html/ 复制编译好的静态文件到nginx html目录下(如自行更改Nginx静态路径地址则将静态文件复制到对应静态文件目录下)
systemctl start nginx 启动nginx
python3 manage.py runserver 0.0.0.0:8000 启动django
访问deploy.conf 配置文件中ipaddress 填写的地址
默认账号: admin 密码:Yearning_admin
注意事项
- 默认超级管理用户只拥有管理页面的访问权限,其他的权限需自行增加!详情请查看使用说明用户管理
- 由于Inception 并不原生支持pymysql,所以需更改pymysql相关源码
- 注: 在install 文件夹下有已经修改的connections.py 和 cursors.py 直接替换即可
- 修改 $PYTHON_HOME/lib/python3.6/site-packages/pymysql下
connections.py 和 cursors.py 两个文件
找到 connections.py 1108行
if int(self.server_version.split('.', 1)[0]) >= 5:
self.client_flag |= CLIENT.MULTI_RESULTS
更改为
try:
if int(self.server_version.split('.', 1)[0]) >= 5:
self.client_flag |= CLIENT.MULTI_RESULTS
except:
if self.server_version.split('.', 1)[0] >= 'Inception2':
self.client_flag |= CLIENT.MULTI_RESULTS
找到 cursors.py 345行
if self._result and (self._result.has_next or not self._result.warning_count):
return
更改为
if self._result:
return
Inception启动问题
如果启动失败报错如下:
libssl.so.10: cannot open shared object file: No such file or directory
解决办法:
先下载安装一次openssl
下载:https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz
执行./config shared zlib-dynamic 来生成Makefile文件。
通过make来生成生成libssl.so.1.0.0和libcrypto.so.1.0.0
将这2个文件拷贝到cd /usr/lib/,然后执行以下2条生成软连接解决。
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10