阿里云网站部署(二),主域名解析及上线

一、     centos系统

# uname -r

3.10.0-514.26.2.el7.x86_64

# cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

# df -h

# ifconfig

 

二、静态网页部署

 

#yum install -y nginx

#vim /etc/nginx/conf.d/www.conf

server{

           listen 80;

           server_name www.qwe.com

           root /root/server/public我的项目包server,里面有一个静态网页包pubilc

           index index.html

}

#systemctl start nginx

访问查看:

问题:2.nginx部署报403错误

  解决:/etc/nginx/nginx.conf 上方将user改为root

         或者请看,我的其他解决方法:http://blog.csdn.net/vanilla_he/article/details/79205091

          重启systemctl restart nginx

浏览器访问查看:www.qwe.com

三、 docker安装及相关镜像制作,server.zip是项目开发包


[root@localhost ~]#yum install -y docker
[root@localhost ~]#systemctl start docker.service
[root@localhost ~]#systemctl enable docker.service

制作mymongo镜像时基础镜像

[root@localhost ~]#docker pull docker.io/centos

制作mynode镜像时需要的基础镜像

[root@localhost ~]#docker pull docker.io/google/nodejs


 查看镜像

# docker images
REPOSITORY             
docker.io/google/nodejs 
docker.io/centos       

四、  mongo容器的创建和启动

[root@localhost mongodb]# pwd
/root/mongodb
[root@localhost mongodb]#docker build -t mymongo .  //要看到successful
[root@localhost mongodb]#docker run -dit -p 27017:27017 -v /root/mongodb/backup:/usr/local/mongodb/data/db --name mongodb mymongo
ps: --name后的mongodb与项目中的开发代码指定的名字一样。

# docker ps //看到mongodb容器已经启动

=========*****----------- 

可能遇到的过程问题:无法启动

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

# docker logs mongodb

chown: cannot read directory'/data/db': Permission denied

# docker rm mongodb

答:容器里的数据目录加上绝对路径

  ========****----------

五、  nodejs容器启动

cd进入项目server目录下

[root@localhost server]# ls
Dockerfile  index.js  model  node_modules  package.json  

做mynode镜像

[root@localhost server]#docker build -t mynode . 

运行

[root@localhost server]#docker run -dit -p3000:3000 --name webnode --link mongodb:mongodb mynode

# docker images    ----###查看刚刚创建的镜像

查看容器运行

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
f1d10aef298d        mynode              "npm start"         8 weeks ago         Up 5 weeks          80/tcp, 0.0.0.0:3000->3000/tcp   webnode
f149acf61e43        mymongo             "/bin/bash"         11 weeks ago        Up 5 weeks          0.0.0.0:27017->27017/tcp         mongodb
[root@localhost ~]# 

进入mongo容器启动mongodb并查看是否可以连接本机的27017端口

[root@iemes ~]#docker exec -it mongodb /bin/bash 

root@9d297853365c/]# mongod -f /usr/local/mongodb/mongodb.cnf &

root@44d36a56f2f3:/# mongo

root@44d36a56f2f3:/# mongo172.17.0.1:27017

root@44d36a56f2f3:/# mongo 1.2.3.1:27017

ok的,我做的mymongo镜像不完美,倒是直接可以docker pull mongo:5.4

以上三个命令若都出现下图则说明mongo启动和端口开放是ok的

Exit退出

Mongo准备完毕

 

关于四个WARNING:

第一个.提醒你,最好使用xfs或者ext4文件系统,尤其是xfs文件系统。

第二个的意思是未对数据库启用访问控制,对数据库的访问和控制不受限制(危险)

答:never那个只需在主机主机中执行,不可以在容器中做,重启数据库就ok了

   其他只要加权限就ok

mongo无法连到主机。关闭放火墙ok了,但是web服务却启动不起来

解决方案1:清空防火墙规则#iptables -F

解决方案2:关闭firewalld,重建docker0网络(重建过程如下)


解决方案3:写一个防火墙规则,过程如下:

我用的是centos7系统,所以默认防火墙是firewalld

配置文件
#vim /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
*****======添加以下内容
  <service name="ssh"/>  
  <port protocol="tcp" port="27017"/>
  <rule family="ipv4">
    <source invert="True" address="172.17.0.2"/>
    <protocol value="icmp"/>
    <accept/>
  </rule>
***========添加以上内容
</zone>
#firewall-cmd --reload

试一下看数据库是否能访问宿主机。不能就进行下方操作

这时你会发现还是连接不上,甚至停掉容器,重新启动还会报错,报错如下:

 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.2:3000 ! -i docker0: iptables: No chain/target/match by that name.

这时我的状态是:防火墙开着,容器起不来或者已经起的容器没办法何主机交互。

我只要重建下我的docker0的网卡就ok啦。(参考解决方案2)

总结方案3:写个防火墙规则,重建docker0网卡,容器都重起一下(重建后容器都停了,也不算重起)


PS我的内心活动(防火墙规则不应该在配置文件里写吧,直接写在配置文件里就需要重新加载防火墙,重新加载防火墙就需要重建docker0,就需要重起容器。firewalld是动态防火墙,修改规则是不需要重新的加载的,我应该在界面用命令行写入)


六、  测试


浏览器输入www.qwe.com访问成功

 

填入数据:


mongodb数据库查看

进入mongodb容器:输入mongo

Web端没有输入数据

Web端输入数据:程序里写了在admin数据库里自动生成cooperation


哈哈哈哈


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值