记得元旦的时候,曾经写过说今年要做几个自己的小项目。过去半个月了,抽时间总算弄了一部分,特在此分享。
首先按照计划,我要完成www.赵仝.com(个人主页) 和blog.赵仝.com (个人博客)两个web端的网站。首先硬件准备已经完成。
一台阿里云的ESC服务器
赵仝.com 域名备案完成(只有在工信部备案的阿里云才会允许你将服务部署于80端口)这个大四就弄了。
www.赵仝.com 和blog.赵仝.com 的https 证书申请完毕。
准备好了硬件,那就来说一下我们第一部做什么。第一步当然是先搞个静态网页出来,把前端环境准备好。想法如下:
首先我们使用容器来部署项目,其次前端使用Nginx作静态服务器,实现全站https ,将80端口的请求统一转向443端口。目前我们将个人主页和个人博客两个的环境都部署在一个容器里,后续将分开。
实现步骤:开发环境构建基于nginx的Docker镜像,镜像构建完成之后将镜像上传于DockerHub,在阿里云服务器上拉取镜像,目前跑一个容器。
开发环境:步骤如下
我的开发环境ubuntu18.10 安装Docker CE(社区版)安装教程。
2019-01-27 22-52-58 的屏幕截图.png
编写基于上游nginx的Dockerfile,Nginx 官方Docker镜像网址,我的建议看了它的教程,最好去看以下在github上维护的nginx默认配置,因为虽然我们基于Nginx构建Docker镜像,但我们要使用自己的配置。
基于VSCode 来搞一个我们本地的Docker工程。我的工程目录如下:
2019-01-27 23-03-36 的屏幕截图.png
首先我们说明以下,Dockerfile 当然是我们的镜像基本配置文件。nginx.conf 是我们用来覆盖Nginx镜像默认的配置的,然后zhaotong_web 文件夹就是我们的静态文件,目前里面就放了两个的测试网页和我们赵仝.com 和blog.赵仝.com 的证书。
编写Dockerfile ,内容如下:
# 基于上游Nginx 构建镜像FROM nginx # 作者MAINTAINER zhaotong <1427730623@qq.com># 标签LABEL "author"="zhaotong" "description"="zhaotong_web"# 向外暴露端口#http 协议浏览器默认监听端口80EXPOSE 80 #https 协议浏览器默认监听端口443EXPOSE 443# 覆盖nginx官方镜像默认配置文件COPY nginx.conf /etc/nginx/nginx.conf# 添加当前项目到镜像,COPY 指令拷贝文件夹,只拷贝文件夹内容COPY zhaotong_web /usr/share/nginx
编写我们的nginx.conf文件。内容如下:
user root; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # 将www.赵仝.com 和blog.赵仝.com 的http 请求全部重定向到443端口,实现全站https server { listen 80; server_name *.xn--gnqw93m.com ; rewrite ^(.*)$ https://$host$1 permanent; } # 监听443端口 server { listen 443; # 监听www.赵仝.com 的请求 server_name www.xn--gnqw93m.com; ssl on; # 换成对应的证书 ssl_certificate /etc/nginx/cert/1754897_www.xn--gnqw93m.com.pem; ssl_certificate_key /etc/nginx/cert/1754897_www.xn--gnqw93m.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/zt_web; index index_zhaotong.html; } } # 监听443端口 server { listen 443; # 监听blog.赵仝.com 的请求 server_name blog.xn--gnqw93m.com; ssl on; # 换成对应的证书 ssl_certificate /etc/nginx/cert/1571998_blog.xn--gnqw93m.com.pem; ssl_certificate_key /etc/nginx/cert/1571998_blog.xn--gnqw93m.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/zt_web; index index_blog.html; } } }
生成docker镜像。记住最后哪一个点(具体原因有时间说明)
sudo docker build -t ztweb-nginx-https:0.0.4 .
生成成功后,查看镜像
sudo docker image ls
2019-01-30 17-45-53 的屏幕截图.png
注:docker的命令参数不用记住,docker help build 自然知道build的参数了。
生成本地镜像之后,接下来我们就要将镜像push到DockerHub 上了,前提你首先需要注册,并创建自己的镜像仓库。地址
sudo docker login
2019-01-27 23-23-30 的屏幕截图.png
登陆成功之后我们还需要两个步骤。
将我们原先的镜像Tag 修改成合乎Docker push规范的。目前规范是,用户名/镜像,命令如下
sudo docker tag ztweb-nginx-https:0.0.1 zhaotong19941007/ztweb-nginx-https:0.0.1
修改成功之后如下图所示:
2019-01-30 22-42-54 的屏幕截图.png
接着上传我们的zhaotong19941007/ztweb-nginx-https:0.0.1 镜像到DockerHub
2019-01-30 22-27-52 的屏幕截图.png
我们可以在DockerHub中查看到我们的镜像。
2019-01-30 22-36-50 的屏幕截图.png
登陆我们阿里云服务器环境,拉取Docker 镜像。并运行。
docker login
docker pull zhaotong19941007/ztweb-nginx-https:0.0.1
docker run --name nginx -d -p 80:80 -p 443:443 zhaotong19941007/ztweb-nginx-https:0.0.4
2019-01-30 22-38-03 的屏幕截图.png
接着我们浏览器输入www.赵仝.com 和blog.赵仝.com 查看。我们的第一步算是完成了,再接再厉。
2019-01-30 22-38-25 的屏幕截图.png
2019-01-30 22-38-15 的屏幕截图.png
作者:赵仝
链接:https://www.jianshu.com/p/bca65f615f85
共同学习,写下你的评论
评论加载中...
作者其他优质文章