Fecshop Docker(把docker当成虚拟机)安装

通过docker镜像的方式快速部署fecshop,本部分是把docker当虚拟机用,也就是 在linux上面搞一个docker,然后所有的东西都在这个docker里面。 然后通过ssh直接连接docker虚拟机。

不建议提示

这种方式是不推荐的方式,违背了docker的哲学思想,强烈建议按照下面的文档安装: https://github.com/fecshop/yii2_fecshop_docker

不过,下面这种方式,因为是虚拟机的方式,新手入手操作会比较简单一些。

镜像信息

操作系统:centos6.9
php:7.1.13
nginxnginx-1.11.13
mysql: 5.6.14
redis: redis-3.2.9
mongodb: 3.6
xunsearch: laest
nodejs v5.12.0
npm  3.8.6
cnpm laest

安装docker

1.操作系统版本要求,Linux 操作系统,linux内核需要大于3.10,查看的方法:

在window下面也可以安装docker,但我不熟悉,因此不做陈述,这里说的是在centos7下面部署的过程

[root@42d099e3fdca ~]# uname -r
3.10.0-229.el7.x86_64
[root@42d099e3fdca ~]#

centos7 默认就支持,centos6需要升级linux内核,对于阿里云等云主机,是无法升级内核的,独立主机是可以的, 依次建议直接用centos7

2.docker 安装

sudo curl -sSL https://get.daocloud.io/docker | sh

3.docker 启动

// 启动docker
service docker start

// 开机启动
chkconfig docker on

经过了这些步骤,我们就把docker部署好了

安装Fecshop 镜像

1.下载镜像,并载入

镜像2G左右,阿里云地址:https://dev.aliyun.com/detail.html?spm=5176.1972343.2.2.usuXdL&repoId=110333

docker pull registry.cn-hangzhou.aliyuncs.com/fecshopsoft/fecshop:3.0.3.1

2.查看镜像,创建启动容器

关于镜像和容器的更多操作命令参看: docker 常用命令

查看镜像

docker images

创建启动容器

docker run -d -p 2222:22 -p 80:80 registry.cn-hangzhou.aliyuncs.com/fecshopsoft/fecshop:3.0.3.1 /usr/sbin/sshd -D

注意,创建启动容器命令使用一次后,不要重复使用,如果重复使用,将会创建多个容器

3.查看容器

docker ps         // 查看运行中的容器
docker ps -a      // 查看所有容器

4.通过宿主机,进入第2步启动的docker容器虚拟机

通过 docker ps -a 查看容器的id(CONTAINER ID),然后通过命令

docker exec -it 42d099e3fdca(这个替换成容器id) /bin/bash

执行后,就进入了docker容器里面的虚拟机.

exit 退出。

5.ssh 直接连接 docker容器虚拟机

注意,宿主机的2222和80端口要开放,对于阿里云的端口开放,可以参看:阿里云 ECS主机开启端口

使用xshell连接docker容器虚拟机

IP:宿主机的ip
端口:2222
root
fecshop123

连接成功后,启动里面的nginx php mysql 等等

/www/start.sh

您可以直接用notepad的远程加载文件功能,通过sftp连接, 加载文件结构树,详细参看: Linux 作为开发环境的方法分享

当然,您可以可以直接用vim编辑,或者您有更好的办法,编辑docker容器虚拟机 的文件。

6.镜像里面安装的软件以及fecshop的资料

mysql
root
drdf32SDFDAsse33r33F2sfdsa3Y
phpMyAdmin
访问: my.fecshop.com
账户密码为上面mysql的账户密码

7.设置,访问,以及文件架构

7.1设置host映射(如果您有域名,并做接解析,那么这个步骤不需要做) 打开C:\Windows\System32\drivers\etc\hosts,添加如下代码(将 127.0.0.1 替换成宿主主机的IP(注意这里不是docker容器虚拟机的IP)。):

127.0.0.1       my.fecshop.com       # mysql的phpmyadmin的域名指向
127.0.0.1       appadmin.fecshop.com # 后台域名指向
127.0.0.1       appfront.fecshop.com # 前台pc端域名指向
127.0.0.1       appfront.fecshop.es  # 前台pc端 es 语言的域名指向
127.0.0.1       apphtml5.fecshop.com # 前台html端的域名指向
127.0.0.1       apphtml5.fecshop.es # 前台html端的域名指向
127.0.0.1       appapi.fecshop.com   # api端的域名指向
127.0.0.1       appserver.fecshop.com # server端的域名指向
127.0.0.1       img.fecshop.com        #appimage/common   图片的域名指向
127.0.0.1       img2.fecshop.com    #appimage/appadmin 图片的域名指向
127.0.0.1       img3.fecshop.com    #appimage/appfront 图片的域名指向
127.0.0.1       img4.fecshop.com    #appimage/apphtml5 图片的域名指向
127.0.0.1       img5.fecshop.com    #appimage/appserver图片的域名指向
127.0.0.1       vue.fecshop.com     #VUE端的地址

7.3、fecshop的根目录为:/www/web/online/fecshop-1.3.0.3

7.4、phpmyadmin的根目录:/www/web/online/phpmyadmin

7.5、php的安装目录 /usr/local/php , 配置文件:/etc/php.ini

7.6、mysql的安装目录:/usr/local/mysql, 配置文件:/usr/local/mysql/my.cnf

7.7、nginx的安装目录 /usr/local/nginx, 配置文件为:/usr/local/nginx/conf`

7.8、mongodb是通过yum安装的方式,参看:mongodb安装, 配置文件:/etc/mongod.conf

7.9、vue部分的路径

vue的线上发布路径:/www/web/online/vue_fecshop_appserver/dist ,nginx域名指向的是该路径

vue的开发文件路径为:/www/web/online/vue_fecshop_appserver/src

7.10访问即可,访问上面的域名

8.自定义

默认的账户都不安全,您需要设置成自己的账户信息

8.1更改docker容器虚拟机的root密码

通过上面第五步进入docker主机,然后执行 password root, 更改密码即可

8.2更改mysql的密码

进入mysql修改密码,修改完成后,在 @common/config/main-local.php 处修改mysql的配置密码

8.5、redis

【不需要更改设置】镜像中的redis是安全的,不需要进行设置,因为进行了ip绑定,只允许127.0.0.1访问,

如果您进行其他的改动,请注意下面几点:

8.5.1、设置默认绑定的ip,其他ip不允许访问redis,增强安全

8.5.2、端口是6379,这个端口不要开放(如果只有本机访问redis)

8.5.3、设置redis访问密码

如果您进行了redis的修改,那么,您需要去common/config/main-local.php中进行配置 更多redis的信息参看:yii2 – redis 配置

8.5、mongodb

【不需要更改设置】镜像中mongodb默认也是安全的配置,允许访问的ip为127.0.0.1,其他ip不允许,因此不需要改动

你可以使用 RoboMongo GUI工具连接mongodb,下载地址 , 因为mongodb默认设置无密码,只允许127.0.0.1登录, 因此,可以使用RoboMongo的ssh方式登录,填写您的主机的ssh信息即可登录。

8.6、更改域名

您需要更改为您自己的域名,那么,您需要进行几处的更改:

8.6.1、更改 appfront/config/fecshop_local_services/Store.php 更改域名,文档参考(第7部分): 配置文档

8.6.2、更改 apphtml5/config/fecshop_local_services/Store.php 更改域名,文档参考(第7部分): 配置文档

8.6.3、更改 appserver/config/fecshop_local_services/Store.php 更改域名,文档参考(第7部分): 配置文档

8.6.4、更改 common/config/fecshop_local_services/Image.php 更改图片域名,文档参考(第8部分): 配置文档

8.6.5更改vue端,后端支持的api配置

进入文件夹:/www/web/online/vue_fecshop_appserver/

config/dev.env.js: 开发环境设置,将 API_ROOT 改成您的appserver端对应的域名, WEBSITE_ROOT 改成您的vue端访问的域名。

config/prod.env.js:线上环境设置,将 API_ROOT 改成您的appserver端对应的域名, WEBSITE_ROOT 改成您的vue端访问的域名。

src/config/store.js:这里设置vue端的多语言store, 将domain改成您的vue端访问的域名,并设置相应的语言, 您还可以在这里添加其他的域名,设置默认访问的语言

vue设置完成后,您需要重新编译一下:npm run build

其他:(不需要操作)

1.通过容器生成镜像 docker commit -m "fecshop docker" -a "terry" e33e7292f603 alifechop:3.0.3.1

2.将镜像 打包导出为 本地tar文件 docker save -o fecshop_3.03.tar fecshop:3.03

3.将本地tar文件 导入到docker仓库,成为一个镜像 docker load --input fecshop_3.03.tar

4.通过镜像生成容器 docker run -d -p 2222:22 -p 80:80 alifechop:3.0.3.1 /usr/sbin/sshd -D

5.停止启动容器 docker stop 容器id

docker start 容器id

阿里云docker

阿里云docker地址:https://dev.aliyun.com/search.html登录阿里云docker registry: docker login --username=hi35488735@aliyun.com registry.cn-hangzhou.aliyuncs.com

从registry中拉取镜像: docker pull registry.cn-hangzhou.aliyuncs.com/fecshopsoft/fecshop

将镜像推送到registry: docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/fecshopsoft/fecshop:[镜像版本号] docker push registry.cn-hangzhou.aliyuncs.com/fecshopsoft/fecshop

https://dev.aliyun.com/detail.html?spm=5176.1972343.2.2.usuXdL&repoId=110333

docker hub

docker login --username=xxxx

在DockerHub上创建账号:https://hub.docker.com/ 这里我的账号是firewarm 本地下载镜像(这里拿alpine做示例),并为镜像打tag

[root@host-30 ~]# docker pull alpine:3.4
[root@host-30 ~]# docker tag alpine:3.4 firewarm/alpine:3.4

登录到DockerHub上

[root@host-30 ~]# docker login
# 输入用户名和密码 
fecshop

push镜像到DockerHub上

[root@host-30 ~]# docker push firewarm/alpine:3.4
The push refers to a repository [docker.io/firewarm/alpine]
4fe15f8d0ae6: Pushed 
3.4: digest: sha256:dc89ce8401da81f24f7ba3f0ab2914ed9013608bdba0b7e7e5d964817067dc06 size: 528

https://hub.docker.com/r/fecshop/fecshop/tags/