安装ubuntu系统
安装镜像
- 拷贝images文件夹, 下载load-images.sh文件到images下面
- 执行load-images.sh脚本
注:下载load-images.sh后可以看到images文件夹里的load-image.sh是白色的,绿色才是可执行的,所以在命令行输入$chmod 777 load-image.sh
(7=4+2+1 4 可读 2 可写 1 可执行第一个7是用户的权限,第2个是用户组的权限,第3个是其他的权限 )
然后就可以看到load-image.sh变成绿色的了,接着执行./load-image.sh
安装Docker
- 点击安装docker,按教程顺序执行
- 如果是64位机要注意的是步骤7,应该将
deb https://apt.dockerproject.org/repo ubuntu-xenial main
修改为
deb [arch = amd64] https://apt.dockerproject.org/repo ubuntu-xenial main
因为这里默认是32位机。 - 如果所有步骤正确执行,最后一步会输出
hello Docker
- 这里要注意的是,安装docker后,执行docker命令是要用sudo权限的,执行以下3条命令可以解决此问题:
$ sudo groupadd docker
将当前用户加入docker组
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
重新启动docker服务
安装Docker compose
- 点击官网按步骤安装Docker compose
- 下载的过程可能比较慢,也可以找下载好的小伙伴拷贝docker compose 可执行文件文件到 ubuntu的compose-> usr -> local -> bin 下面任意目录下执行:$ chmod +x /usr/local/bin/docker-compose
clone代码并配置环境
- clone代码,根据readme执行
$ git submodule init
$ git submodule update
$ git pull
$ git status
$ git submodule update
- 修改hosts文件
进入hosts文件,另起一行添加127.0.0.1 local.twars
- 进入assembly,执行以下命令
$ docker-compose up -d mysql //启动mysql
$ docker ps //查看当前运行的容器
$ ./twars.sh ls //查看数据库的初始化文件
$ ./twars.sh my //初始化数据库和用户
- 进入paper-api执行以下命令
$ ./gradlew tasks
$ ./gradlew flywaymigrate
这个时候执行docker ps
就可以看到容器中正在运行的服务,找到mysql的容器名或容器id,执行docker psdocker exec -it 容器名/id bash
就会进入mysql数据库,然后执行:
$ mysql -u root -pthoughtworks
$ show databases; //查看数据库
$ use BronzeSword //切换到BronzeSword数据库
$ show tables //查看数据库中的表
上述过程如果结果正常输出即可输入exit
退出
- 进入assembly下执行以下命令
$ ./twars.sh rs //如果提示说没有权限那就加上sudo
$ ./twars.sh jk //需要真正翻墙才可以执行成功
- 切换至web-api目录下,打开app.js,注释下面两行代码
var captcha = require('./middleware/captcha');
app.use(captcha(params));
- 切换至assembly下
- 继续执行
docker-compose up -d
或者docker-compose up -d web-api
接着执行docker ps
- 如果你看到8个容器,直接进入步骤8进行操作
- 如果发现7个容器(node没有启动),就查看一下web-api的日志,
docker logs assembly_web-api_1
(这里的assembly_web-api_1是web-api对应的容器名) - 假如执行后后出现Error: Cannot find module 'newrelic'…等等缺少模块的错误,切换至web-api目录下,执行
npm i
,这里友情提醒一下,一定要用npm,不要用cnpm之类的,这是个坑,你会发现后续执行所有命令都没毛病,然而就是会出现奇奇怪怪的问题! - 如果你实在觉得npm安装的太慢,执行
npm config set registry https://registry.npm.taobao.org
进行换源出来,然后,继续使用npm进行安装 - 回到assembly下重新执行:
$ ./twars.sh rs
$ docker-compose up -d
$ docker ps -a
- 此时应该可以看到node的status是 Up X seconds
- 继续在assembly目录下
- 执行
docker exec -it assembly_web-api_1 bash
进入web-api容器 - 执行
cd /var/app/
到达此目录下执行以下命令:
$ npm uninstall canvas
$ npm install canvas
- 如果npm install canvas出错可尝试修改assembly/twars.sh中将
JENKINS_ADDR=192.168.99.100:8088
改为JENKINS_ADDR=local.twars:8088
- 安装成功会出现** canvas@1.5.0 invalid **,Ctrl+D退出然后去到web-api/app.js中,找到之前注释的内容,去掉注释!
- 回到assembly目录下
- docker ps 查看node:5.8是否up,如果node没有终止就执行
docker-compose kill web-api
- 执行
docker-compose up -d
- 打开浏览器
- 访问
http://localhost:8888/
,在首页点击注册查看验证码是否成功显示。 - 填写相关信息进行注册,当然,现在还不能成功注册
- 回到项目下
- 不能成功注册是因为mongo的twars数据库中不存在configurations表,也不存在相关记录
- 执行
docker exec -it assembly_mongo_1 bash
进入mongo容器 - 执行
mongo
开启数据库 -
show dbs
查看数据库 -
use twars
切换到twars数据库 -
show collections
查看表可以看到没有configurations表 -
db.createCollection("configurations")
创建configurations表 -
db.configurations.insert({"registerable":true,"qaContent":""})
向表中插入数据
- 重启Docker
$ service docker stop
$ service docker start
$ docker-compose up -d
- 重新注册账号
- 访问
http://localhost:8888/
注册账号 - 补全信息后点击开始答题,这时会发现题出来了,图出不来
- 让图片重出江湖
- 到
>web-api>config>config.yml
文件下,修改31行的代码为staticFileServer: 'http://127.0.0.1:8888/fs/'
- 哦啦,就酱紫~~