ob欧宝·体育app官方网站
Mou Mou Jidian Generator
发电机维修 发电机回收
发电机出售 发电机租赁
客户统一服务热线

017-784503557
14587270704

您的位置: 主页 > 工程案例 > 酒店场所 >

从零开始搭建HTTPS服务

本文摘要:搭建 HTTPS 服务的最初目的是为了开发微信小法式,因为 wx.request 只允许提倡 HTTPS 请求,而且还必须和指定的域名举行网络通信。要从零开始搭建一个 HTTPS 的服务需要下面 4 个要素:域名,存案,云服务器,服务搭建。本文将划分先容这四要素的详细要求。简介HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer)叫超文本传输宁静协议,是一种通过盘算机网络举行宁静通信的传输协议。

ob欧宝官方体育

搭建 HTTPS 服务的最初目的是为了开发微信小法式,因为 wx.request 只允许提倡 HTTPS 请求,而且还必须和指定的域名举行网络通信。要从零开始搭建一个 HTTPS 的服务需要下面 4 个要素:域名,存案,云服务器,服务搭建。本文将划分先容这四要素的详细要求。简介HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer)叫超文本传输宁静协议,是一种通过盘算机网络举行宁静通信的传输协议。

HTTPS 经由 HTTP 举行通信,但使用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,掩护交流资料的隐私与完整性。

这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上,现在基本上所有的网站都使用了 HTTPS 协议。下面就围绕域名,存案,云服务器,服务搭建这 4 个方面来从零搭建 HTTPS 服务。域名域名[1](Domain Name)又叫网域,是由一串用点分开的名字组成的 Internet 上某一台盘算机或盘算机组的名称,用于在数据传输时标识盘算机的电子方位。例如, blog.haojunyu.com 是一个域名,可以通过域名名称系统(Domain Name System)将该域名映射成对应的 IP 地址。

该操作可以通过域名剖析来实现。域名注册息争析域名注册前,可以通过WHOIS[2] 来查询该域名是否被注册过。现在 BAT 都提供域名注册,如阿里的万网[3],百度的域名服务[4],的Dnspod[5]。

我的域名 haojunyu.com 是在阿里的万网注册的,之前注册域名的初衷是为了给 github 上面的小我私家博客作个性化的域名。并在其中的域名剖析中作了设置,这里并不需要做太多的改动,只需要添加如下图的剖析记载:设置完成后,当我们向 https://api.haojunyu.com/* 发送请求时,DNS 会自动将其剖析为映射的 IP 地址(上图中涂鸦的部门),并向目的服务器请求对应服务。存案这里的存案是针对像小我私家博客这类非谋划性网站所做的存案,其目的是为了利便网站的治理。因为只有守法的网站才会对促进信息共享、文化繁荣和社会进步发生努力的作用。

ob欧宝·体育app官方网站

现在网站域名的存案 BAT 都能提供,不外存案这个流程很长,或许要一个月,我的域名 haojunyu.com 是在百度云存案的,其时是先提交的资料(主要是身份证正反面照片),然后等百度快递来配景墙,再照相片上传核实后才可以存案乐成。云服务器服务器就是一台可以运行的电脑,可以是自己家里的电脑,也可以到 BAT 上买云服务。

这里因为云上面有免费8天的试用,所以就试着在云服务上面搭建个 https 的服务,以利便微信小法式能乐成提倡 request 请求。如果试用体验还不错的话,可以续费(74元/月)。新建云主机时要选一个操作系统,鉴于对 Ubutnu 的熟悉以及服务器的需要,所以选择了 Ubuntu Server 16.04.1 LTS 64 的镜像做系统。

当新建一个云主机后,百度云会提供一个对外的 IP 地址,这个 IP 地址就是域名剖析中要填入的记载值。服务搭建服务器的设置主要有三步个,第一步是应用法式的部署,第二步是Nginx服务器的设置,第三步是 http 升级为 https。前两步的设置是参考这篇博文在Ubuntu上使用Nginx部署Flask应用[6],第三步是参考云上Nginx证书安装[7]。

应用法式思量到微信小法式主要是用 json 的数据,所以就想服务器能够提供 restful 服务,又因为对 python 语言比力喜欢,所以就挑了 python 里的 Flask 这个轻量级的 Web 框架。服务器选择的是 Nginx ,而毗连服务器和应用法式的是 uWSGI。详细的安装步骤如下:1.情况设置sudo apt-get update && sudo apt-get upgrade # 更新所有软件sudo apt-get install build-essential # 安装编译情况sudo apt-get install python python-dev python-setuptools # 安装python情况sudo easy_install pipsudo apt-get install nginx # 安装Nginxsudo apt-get install uwsgi uwsgi-plugin-python # 安装uwsgi及其插件sudo apt-get install supervisor # 安装历程治理软件2.应用设置sudo mkdir -p /var/www/flaskApp # 建立应用法式文件夹sudo chown -R ubuntu:ubuntu /var/www/flaskApp # 更改应用法式文件夹所有权sudo pip install virtualenv # 安装python虚拟情况# 建立python虚拟情况cd /var/www/flaskAppvirtualenv venv. venv/bin/activate # 激活python虚拟情况venvpip install flask flask-restful # 在虚拟情况中安装flask Web框架3.建立api.py代码#!flask/bin/pythonfrom flask import Flask, jsonifyapp = Flask(__name__)tasks = [ { 'id': 1, 'title': u'Buy groceries', 'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', 'done': False }, { 'id': 2, 'title': u'Learn Python', 'description': u'Need to find a good Python tutorial on the web', 'done': False }]@app.route('/todo/api/v1.0/tasks', methods=['GET'])def get_tasks(): return jsonify({'tasks': tasks})if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)执行剧本python api.py后可以通过浏览器来会见 http://主机IP:8080/todo/api/v1.0/tasks,以此来获取 tasks 数据。服务设置Nginx设置1.删除nginx默认设置文件sudo rm /etc/nginx/sites-enabled/default2.建立新的设置文件/var/www/flaskApp/config/flaskApp_nginx.confserver { listen 80; server_name api.haojunyu.com; #此时域名已经映射到主机IP charset utf-8; client_max_body_size 75M; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/var/www/flaskApp/config/flaskApp_uwsgi.sock; }}3.建立设置文件服务,重启服务sudo ln -s /var/www/flaskApp/config/nginx.conf /etc/nginx/conf.d/ #将应用文件夹里的设置文件链接到nginx设置文件处sudo nginx -t # 磨练nginx设置是否有误sudo nginx -s reload # 重新加载nginx设置sudo /etc/init.d/nginx restart # 重启nginx4.验证现在通过浏览器来会见 http://api.haojunyu.com/todo/api/v1.0/tasks ,无法获取到数据,因为 flaskApp_uwsgi.sock 尚未生成,无法让 uwsgi 在 Nginx 和 python 应用法式之间构建一座桥。

ob欧宝·体育app官方网站

uWSGI设置1.建立新的设置文件/var/www/flaskApp/config/flaskApp_uwsgi.ini[uwsgi]#application's base folderbase = /var/www/flaskApp#python module to importapp = apimodule = %(app)home = %(base)/venvpythonpath = %(base)## 使用virtualenvwrapper治理virtualenv后用下面的两个参数取代home和pythonpath#chdir = %(base)#virtualenvs = %HOME/.virtualenvs/flaskEnv#socket file's locationsocket = /var/www/flaskApp/%n.sock#permissions for the socket filechmod-socket = 666#the variable that holds a flask application inside the module imported at line #6callable = app#location of log fileslogto = /var/log/uwsgi/%n.log2.建立uWSGI日志文件夹,并更改文件所有权sudo mkdir -p /var/log/uwsgi # uWSGI日志文件夹sudo chown -R ubuntu:ubuntu /var/log/uwsgi # 更改uWSGI日志文件夹所有权uwsgi --ini /var/www/flaskApp/config/flaskApp_uwsgi.ini --plugin python & # 后台启动uwsgisupervisor设置supervisor 是为了利便治理历程而存在的,因为每次开机后,都得重新执行 uwsgi --ini /var/www/flaskApp/config/flaskApp_uwsgi.ini 下令来启动 uwsgi ,这个很费心,因为你不行能永远记得清楚这么个应用,这么个设置。所以使用 supervisor 来治理,而我们只需要在开发这个应用时建立一个 flaskApp_supervisor.conf 设置文件,而重启机械后启动 supervisor 服务,即执行 sudo service supervisor start。1.安装 supervisorsudo apt install supervisor2.建立设置文件:[program:flaskApp]# 启动下令入口command=/usr/local/bin/uwsgi --ini /var/www/flaskApp/flaskApp_uwsgi.ini# 运行下令的用户名user=ubuntuautostart=trueautorestat=true#日志地址stdout_logfile=/var/log/supervisor/flaskApp_supervisor.log3.建立设置文件副本并重启服务sudo ln -s /var/www/flaskApp/flaskApp_supervisor.conf /etc/supervisor/conf.d/sudo service supervisor restartHTTP 升级 HTTPS升级 HTTP 需要证书的支持,这里 BAT 都提供这样的服务,都有相对应的设置安装说明。我这里是根据 云上Nginx证书安装[8],主要就是将申请的证书生存到 config 目录中,并将 flaskApp_nginx.conf 修改如下:server { listen 80; server_name api.haojunyu.com; return 301 https://api.haojunyu.com$request_uri;}server { listen 443 ssl; server_name api.haojunyu.com; #此时域名已经映射到主机IP ssl on; ssl_certificate /var/www/flaskApp/1_haojunyu.com_bundle.crt; ssl_certificate_key /var/www/flaskApp/2_haojunyu.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #根据这个协议设置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#根据这个套件设置 ssl_prefer_server_ciphers on; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/var/www/flaskApp/config/flaskApp_uwsgi.sock; }}其时 SSL 的证书有免费的可以用,限制就是一个证书只能帮助一个二级域名或子域名。

如果愿意折腾,可以使用 certbot[9] 来自动化来设置 SSL 证书和定时更新。详细的安装设置步骤可以参考官网(需要选择署理软件 nginx/apache 等和操作系统 Ubuntu/CentOS/MacOS 等)。# 安装下令sudo apt install certbot python-certbot-nginx # cerbot及其插件# 设置域名 sudo certbot certonly --nginx --cert-name haojunyu.com -d api.haojunyu.com# 删除设置的域名sudo certbot delete --cert-name haojunyu.com# 检察设置的域名sudo certbot certificates# 更新证书sudo certbot renew --dry-run最终效果如下图所示, 会见 https://api.haojunyu.com/todo/api/v1.0/tasks 可以获得对应的数据。

参考文献1.wiki-域名[10]2.whois域名查询[11]3.万网[12]4.百度域名服务[13]5.Dnspod[14]6.在Ubuntu上使用Nginx部署Flask应用[15]7.云上Nginx证书安装[16]8.certbot[17]References[1] 域名: https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D[2] WHOIS: https://who.is/[3] 万网: https://wanwang.aliyun.com/?spm=5176.8142029.388261.26.C75xLA[4] 域名服务: https://cloud.baidu.com/product/bcd.html[5] Dnspod: https://dnspod.qcloud.com/?from=console[6] 在Ubuntu上使用Nginx部署Flask应用: https://www.oschina.net/translate/serving-flask-with-nginx-on-ubuntu[7] 云上Nginx证书安装: https://www.qcloud.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2[8] 云上Nginx证书安装: https://www.qcloud.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2[9] certbot: https://certbot.eff.org/[10] wiki-域名: https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D[11] whois域名查询: https://who.is/[12] 万网: https://wanwang.aliyun.com/?spm=5176.8142029.388261.26.C75xLA[13] 百度域名服务: https://cloud.baidu.com/product/bcd.html[14] Dnspod: https://dnspod.qcloud.com/?from=console[15] 在Ubuntu上使用Nginx部署Flask应用: https://www.oschina.net/translate/serving-flask-with-nginx-on-ubuntu[16] 云上Nginx证书安装: https://www.qcloud.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2[17] certbot: https://certbot.eff.org/如果该文章对您发生了资助,或者您对技术文章感兴趣,可以关注微信民众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!。


本文关键词:ob欧宝官方体育,从,零,开始,搭建,HTTPS,服务,搭建,HTTPS,服务,的

本文来源:ob欧宝·体育app官方网站-www.gjcf88.com

Copyright © 2004-2022 www.gjcf88.com. ob欧宝·体育app官方网站科技 版权所有  ICP备案:ICP备94661163号-8