前提环境需要Python3.7、 node8.12、nginx、 mysql 5.7,这里不做过多的描述,主要记录Tcloud的搭建过程。
目录
2、配置nginx( 配置路径 etc/nginx/nginx.conf),server_name改成服务器ip
5、设置配置local_config.py,将其中的数据库连接等修改成自己的
6、新建一个logs目录(启动时会报没有这个目录,提前建好)
3、在前端项目根目录下npm install,稍等片刻安装依赖包
5、运行npm run dev即可打开本项目,访问47.106.82.100:8080
四、Tcloud 接入stf(特别感谢Tcloud群@爱笑)
一、服务端部署
1、下载代码
git clone https://github.com/bigbaser/TcloudServer.git
2、配置nginx( 配置路径 etc/nginx/nginx.conf),server_name改成服务器ip
server {
listen 80;
server_name 47.106.82.100;
location /v1/datashow/ {
proxy_pass http://127.0.0.1:9022;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location /v1/jobs/ {
proxy_pass http://127.0.0.1:9038;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location /v1/message/ {
proxy_pass http://127.0.0.1:9030;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location /v1/tcdevices/ {
proxy_pass http://127.0.0.1:9036;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location /v1/public/ {
proxy_pass http://127.0.0.1:9034;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location /v1/monkey/ {
proxy_pass http://127.0.0.1:9022;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location ~* /v1/(flow|deploy)/ {
proxy_pass http://127.0.0.1:9026;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location ~* /v1/(cidata|tool)/ {
proxy_pass http://127.0.0.1:9024;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location ~* /v1/interface.* {
proxy_pass http://127.0.0.1:9028;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location ~* /v1/(user|track|role|ability|feedback|wxlogin)/ {
proxy_pass http://127.0.0.1:9020;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
location / {
proxy_pass http://127.0.0.1:9032;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, projectid';
add_header 'Access-Control-Allow-Methods' 'POST, GET, DELETE, OPTIONS';
}
}
替换后输入 nginx -t 检查配置是否正确
关闭httpd服务,释放80端口(netstat -tnlp先查看是否占用,没有就跳过)
service httpd stop
再启动nginx
service nginx start
3、执行数据库文件
使用Navicat连接数据,导入deploy/init目录下的init.sql去执行创建数据库、表操作
4、安装项目依赖
pip install -r requirement.txt -i https://mirrors.aliyun.com/pypi/simple
5、设置配置local_config.py,将其中的数据库连接等修改成自己的
vim local_config.py
SQLALCHEMY_DATABASE_URI = 'mysql://root:数据库密码@47.106.82.100:3306/demo?charset=utf8'
6、新建一个logs目录(启动时会报没有这个目录,提前建好)
mkdir logs
7、使用sh start.sh来启动服务
8、查看服务端口
netstat -tnlp
id | service name | port |
1 | auth | 9020 |
2 | autotest | 9022 |
3 | extention | 9024 |
4 | flow | 9026 |
5 | interface | 9028 |
6 | message | 9030 |
7 | project | 9032 |
8 | public | 9034 |
9 | tcdevices | 9036 |
10 | jobs | 9038 |
11 | ws | 9040 |
二、前端部署
1、安装node环境(node 8.12)
2、拉取前端代码
git clone https://github.com/bigbaser/Tcloud.git
3、在前端项目根目录下安装依赖包,稍等片刻
npm install
4、修改配置
4.1、修改config/dev.env.js中的BASE_URL地址为上面的后端地址http://47.106.82.100:80
4.2、修改config/index.js的host localhost改为0.0.0.0
5、运行npm run dev即可打开本项目,访问47.106.82.100:8080
登录时会报 not login
5.1、修改 src/store/modules/login.js,修改第57行,把
domain: process.env.NODE_ENV === 'development' ? 'localhost' : COOKIE_DOMAIN
修改为
domain: COOKIE_DOMAIN
5.2、修改config/dev.env.js中把 COOKIE_DOMAIN 改成前端当前访问域名 47.106.82.100
6、重新启动,登录即可(admin 123456)
三、启动顺序
1、检查端口是否被占用,释放端口 如80
netstat -tnlp
service httpd stop
2、启动nginx
service nginx start
3、启动服务端
cd /soft/TcloudServer
sh start.sh
4、启动前端
npm run dev
四、Tcloud 接入stf
(特别感谢Tcloud群@爱笑提供帮助)
1、在STF设置里生成一个token,要做好记录,确认后就看不到了
2、在数据库config表配置stf的content内容,按照下面格式,替换ip跟token即可
第一个
{"URL":"
http://47.106.82.100:7100/api/v1/devices","headers":{"Authorization": "Bearer 13ca9e962cfb4038a0449d89ddcc138d75536f7b91d84fd9989318e1d5c6aee8"}}
第二个
{"URL":"
http://47.106.82.100:7100/api/v1/user/accessTokens/","headers":{"Authorization": "Bearer 13ca9e962cfb4038a0449d89ddcc138d75536f7b91d84fd9989318e1d5c6aee8"}}
第三个
{"URL":"
http://47.106.82.100:7100/api/v1/user/devices/","headers":{"Authorization": "Bearer 13ca9e962cfb4038a0449d89ddcc138d75536f7b91d84fd9989318e1d5c6aee8"}}
3、在Tcloud/config/dev.env.js加上添加一行:STF_URL:'"http://47.106.82.100:7100"'(注意要给上一行加个逗号)
4、重启前端
npm run dev
5、给设备添加手机图片
在数据库tc_devicesn_info表给对应设备添加pic字段的图片链接
比如 http://ctsssource.oss-cn-shanghai.aliyuncs.com/devices_pic/OPPO-PBAT00.png
效果如下
五、遇到问题
1、安装项目依赖问题
pip install mysqlclient时报出了OSError: mysql_config not found错误
解决 :安装mysql相关的一些依赖包
yum install mysql-devel gcc gcc-devel python-devel
2、ImportError: No module named pip._internal.cli.main
安装上面时python被切换到Python2.7了,需要重新设置py3
解决:ln -s /usr/local/python3/bin/python3 /usr/bin/python
3、未开放端口
firewall-cmd --permanent --zone=public --add-port=80/tcp #开放端口
firewall-cmd --permanent --zone=public --remove-port=80/tcp # 取消端口开放
firewall-cmd --query-port=80/tcp # 检查端口是否开放
firewall-cmd --list-port # 查看开放了哪些端口
firewall-cmd --reload # 重启防火墙
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效