林老师给我们每个入职TW的童鞋都带来一套升级computer配置的装备(固态硬盘SSD,8G内存条)开心!but 意味着电脑又要回到解放前,开始重装系统,各种装机配置,想想也想哭着笑!
重新装系统后,需要重新装机,参照http://thoughtworks-academy.github.io/linux-guide/zh-hans/
我在装机过程遇到问题请参考:http://www.jianshu.com/p/82ad51275fdf
安装docker
- 参考官网:https://docs.docker.com/engine/installation/linux/ubuntulinux/
(执行命令到:sudo docker run hello-world,结果出现“hello...docker...“即可) - 拷贝images文件夹, 下载load-images.sh文件到images下面
下载load-images.sh后可以看到images文件夹里的load-image.sh是白色的,绿色才是可执行的
所以在命令行输入:
$chmod 777 [load-image.sh](http://load-image.sh/)
(7=4+2+1 4 可读 2 可写 1 可执行第一个7是用户的权限,第2个是用户组的权限,第3个是其他的权限 )
然后就可以看到load-image.sh变成绿色的了接着执行:
$ ./load-image.sh
或者执行:$docker load -i assembly_jenkins.tar
如果上面的命令执行出错:
错误为:“ERROR presscsssing 。。。Invial tar header 。。。。”
或者执行脚本出错(其他错误可以先在网上找方法)
我建议如果实在找不到方法:就重新拷贝镜像images
然后在执行脚本,安装assembly_jenkins.tar
去项目下查看镜像:
$ cd recruiting-system
$ docker images
执行docker需要加上sudo的,可以这样弄就不需要使用sudo了:
docker命令跟默认docker daemon创建的unix socket 通讯都需要速冻权限, 这尅通过创建docker组来解决:
$sudo groupadd docker
将当前用户加入docker组
$sudo gpasswd -a ${USER} docker
重新启动docker服务
$sudo service docker restart
安装docker compose
参考官网:https://docs.docker.com/compose/install/
更便捷的方法:
拷贝docker compese 配置文件到 ubuntu的compose-> usr -> local -> bin 下面
随便那个目录下执行:$ chmod +x /usr/local/bin/docker-compose
下载项目:
https://github.com/thoughtworks-academy/recruiting-system
修改hosts文件,打开文件,独立一行添加
gedit /etc/hosts
在打开的记事本中加入下面的:
#linux
127.0.0.1 local.twars
进入项目 :
cd recruiting-system
git pull
git status
git submodule update
查看所有镜像有没有装好
docker images
导入mysql
进入项目的assembly目录下执行:
$docker-compose up -d mysql
查看数据库等
docker ps
#结果应该显示mysql 的版本号,如:”mysql:5.7“
查看该命令后面跟什么:
$ ./twars.sh
初始化数据库
$ ./twars.sh my
进入项目的paper-api目录下执行:
$ cd ../parper-api
查看任务:
#如果出现错误,如”ERROR:Java-Home is not set and no ’java‘ command 。。。。“
#说明没有安装JDK,先去安装JDK,然后再来执行./gradlew tasks ,
#查看任务,并且下载gradle,时间比较长哟!
$ ./gradlew tasks 查看任务(也可以不执行这个)
刷数据库 :
$ ./gradlew flywayMigrate
查看数据库mysql 、id、容器名等(看你目前运行了哪些容器):
docker ps
进入数据库:
docker exec -it assembly_mysql_1 bash
# assembly_mysql_1是容器名,是通过docker ps命令查看得到的。
登录mysql数据库(密码为thoughtworks):
mysql -u root -pthoughtworks
查看数据库:
show databases
创建数据库(一定要加”;“,不加为会报错):
use BronzeSword;
查看数据库中表:
show tables;
#应该有显示所初始化的表
退出数据库:
$ exit
进入assembly目录下执行:
./twars.sh rs 如果提示说没有权限那就加上sudo
#(如果网不好,可以找已经下载好的同学的电脑当做服务器,通过端口号访问她的电脑,获取她已经下载的东西)
./twars.sh jk 需要真正翻墙才可以执行成功(也可以不执行这个)
切换到web-api下
gedit app.js
注释下面两行
var captcha = require('./middleware/captcha');
app.use(captcha(params));
在assembly下执行
$ docker-compose up -d或者docker-compose up -d web-api
$ docker ps -a 查看隐藏的没有活起来的容器
如果出现node:5.8的STATUS是Exited (1) X seconds ago的提示,那就查看 docker log
项目根目录下:
$ docker logs assembly_web-api_1 (assembly_web-api_1只是针对我所出现的问题而言的)
执行后提示Error: Cannot find module 'newrelic'…
解决Error切换到web-api下执行: $ npm i
回到assembly下重新执行:$ ./twars.sh rs
$ docker-compose up -ddocker ps -a
此时应该可以看到node的status是 Up X seconds
切换回assembly下执行
docker exec -it assembly_web-api_1 bash
出现“root@e122f1d0af63:/#”root@e122f1d0af63:/# cd /var/app/
进入到“root@e122f1d0af63:/var/app#”继续执行:
root@e122f1d0af63:/var/app# npm uninstall canvas
root@e122f1d0af63:/var/app# npm install canvas
如果出现** canvas@1.5.0 invalid **
Ctrl+D退出
然后去到web-api下,将app.js中注释取消
继续在assembly下执行
docker ps 查看node:5.8是否up
docker-compose kill web-api
docker-compose up -d
在首页点击注册查看验证码是否成功显示:
解决注册的问题
#由于在注册的时候,无法注册成功,可以在控制台的Network中看到相应的错误,可以知道是因为代码中的数据没有被读入数据库,所以需要手动从容器中进入数据库,修改数据库,将那条数据(查看日志去代码中找到的)手动加入数据库
由于请求是先发给nginx,所以去nginx,在进入conf.d
里面的代码有一个协议:”proxy_pass http://web-api:3000“
所以去查看web-api日志:
查看assembly_web-api_1容器的日志:
$ docker logs 容器名字(如:assembly_web-api_1)或者容器的id
# docker logs assembly_web-api_1
日志中的错误提示是在项目目录:
web-api/controllers/register-controller.js:190行:25列
去项目中找
点到registerable, 两次ctrl B ,ctrl B后:
发现是由数据库configuration产生,找到
点到目录,ctrl B,就到定义Configuration的文件
依然在web-api下面:
讲这条数据复制后添加到数据库,具体步骤看下面
#查看容器
$ docker ps
#进入mongo容器
$ docker exec -it mongo的id bash
# 如:$ docker exec -it c6258a bash
进入数据库(如下图):
$ mongo
> show dbs
#使用数据库twars
>use twars
#创建集合configurations
>db.createCollection("configurations")
#给集合configurations插入一条数据(这条数据从代码中复制得来)
>db.configurations.insert({"registerable":true,"qaContent":""})
然后再去注册就好可以注册成功,进入个人中心页面:
查看docker日志
$ docker logs id(容器的id)
题目不能出来图片的解决:
修改下面文件中的一行代码:
将如下第31行代码:
修改为:
进入assembly ,从新启动服务器:
$ docker-compose kill
$ docker-compose up -d
刷新页面就可以了