第一期考试系统:环境配置

林老师给我们每个入职TW的童鞋都带来一套升级computer配置的装备(固态硬盘SSD,8G内存条)开心!but 意味着电脑又要回到解放前,开始重装系统,各种装机配置,想想也想哭着笑!

重新装系统后,需要重新装机,参照http://thoughtworks-academy.github.io/linux-guide/zh-hans/

我在装机过程遇到问题请参考:http://www.jianshu.com/p/82ad51275fdf

安装docker

  1. 参考官网:https://docs.docker.com/engine/installation/linux/ubuntulinux/
    (执行命令到:sudo docker run hello-world,结果出现“hello...docker...“即可)
  2. 拷贝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.8STATUSExited (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

访问http://localhost:8888/查看
如:

成功的样子

在首页点击注册查看验证码是否成功显示:


登录页面的验证码也成功显示

解决注册的问题

#由于在注册的时候,无法注册成功,可以在控制台的Network中看到相应的错误,可以知道是因为代码中的数据没有被读入数据库,所以需要手动从容器中进入数据库,修改数据库,将那条数据(查看日志去代码中找到的)手动加入数据库

由于请求是先发给nginx,所以去nginx,在进入conf.d
里面的代码有一个协议:”proxy_pass http://web-api:3000

Paste_Image.png

所以去查看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列

去项目中找


项目目录web-api/controllers/register-controller.js:190行:25列

点到registerable, 两次ctrl B ,ctrl B后:

Paste_Image.png

发现是由数据库configuration产生,找到


Paste_Image.png

点到目录,ctrl B,就到定义Configuration的文件

Paste_Image.png

依然在web-api下面:


Paste_Image.png
要写入数据库的内容

讲这条数据复制后添加到数据库,具体步骤看下面

#查看容器
$ docker ps

#进入mongo容器
$ docker exec -it mongo的id  bash
# 如:$ docker exec -it c6258a bash
运行$docker ps 后显示的内容

进入数据库(如下图):

$ mongo
> show dbs

#使用数据库twars
>use twars

#创建集合configurations
>db.createCollection("configurations")

#给集合configurations插入一条数据(这条数据从代码中复制得来)
>db.configurations.insert({"registerable":true,"qaContent":""})
从容器中进入数据库
执行结果

然后再去注册就好可以注册成功,进入个人中心页面:

Paste_Image.png
查看docker日志

$ docker logs id(容器的id)

题目不能出来图片的解决:

Paste_Image.png

修改下面文件中的一行代码:


Paste_Image.png

将如下第31行代码:


Paste_Image.png

修改为:

Paste_Image.png

进入assembly ,从新启动服务器:

$ docker-compose kill 
$ docker-compose up -d

刷新页面就可以了

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装ubuntu系统 点击并按步骤安装Ubuntu系统,并根据内容安装相应内容。 ubuntu自带的中文真的大写尴...
    恐怕是小珠桃子阅读 184评论 0 0
  • 安装Docker 按照Docker官网的步骤执行(要注意自己系统的版本号)https://docs.docker....
    半生不熟_阅读 621评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 今天,与一位朋友说笑。她对我说有关于男生的话题,然后我就笑话说:你一天到晚谈论的都是男生。突然我想起来,说了一句:...
    miss琴先生阅读 420评论 0 1
  • 穷是分程度的,也是分种类的。一种是身穷,另一类则是心穷。心穷是骨子里的,是根植在内心里的潜在病毒。 身穷久了,心便...
    Ji_Ahn阅读 326评论 0 0