失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [从零开始]Flask+Nginx在云服务器上部署服务

[从零开始]Flask+Nginx在云服务器上部署服务

时间:2019-12-02 13:38:10

相关推荐

[从零开始]Flask+Nginx在云服务器上部署服务

服务器:百度智能云轻量应用服务器 2H4G

换源

mv /etc/apt/sources.list /etc/apt/sources_bak.listvi /etc/apt/sources.list

清华源

deb https://mirrors.tuna./ubuntu/ bionic main restricted universe multiversedeb-src https://mirrors.tuna./ubuntu/ bionic main restricted universe multiversedeb https://mirrors.tuna./ubuntu/ bionic-updates main restricted universe multiversedeb-src https://mirrors.tuna./ubuntu/ bionic-updates main restricted universe multiversedeb https://mirrors.tuna./ubuntu/ bionic-backports main restricted universe multiversedeb-src https://mirrors.tuna./ubuntu/ bionic-backports main restricted universe multiversedeb https://mirrors.tuna./ubuntu/ bionic-security main restricted universe multiversedeb-src https://mirrors.tuna./ubuntu/ bionic-security main restricted universe multiversedeb https://mirrors.tuna./ubuntu/ bionic-proposed main restricted universe multiversedeb-src https://mirrors.tuna./ubuntu/ bionic-proposed main restricted universe multiverse

中科大源

deb https://mirrors./ubuntu/ focal main restricted universe multiversedeb-src https://mirrors./ubuntu/ focal main restricted universe multiversedeb https://mirrors./ubuntu/ focal-updates main restricted universe multiversedeb-src https://mirrors./ubuntu/ focal-updates main restricted universe multiversedeb https://mirrors./ubuntu/ focal-backports main restricted universe multiversedeb-src https://mirrors./ubuntu/ focal-backports main restricted universe multiversedeb https://mirrors./ubuntu/ focal-security main restricted universe multiversedeb-src https://mirrors./ubuntu/ focal-security main restricted universe multiversedeb https://mirrors./ubuntu/ focal-proposed main restricted universe multiversedeb-src https://mirrors./ubuntu/ focal-proposed main restricted universe multiverse

vim

方向键变ABCD

echo "set nocp" >> ~/.vimrcsource ~/.vimrc

backspace无法删除 - 卸载旧版的vim重新安装

apt remove vim-commonapt install vim

Miniconda3

安装

# 官网 - https://conda.io/en/latest/miniconda.htmlwget /miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh# 如果环境变量没有自动写入则修改环境变量# echo "export PATH=/root/Miniconda3/bin:\$PATH" >> ~/.bashrcsource ~/.bashrc

pip换源 - 创建~/.pip/pip.conf,写入以下内容

[global]index-url = https://pypi.tuna./simple[install]trusted-host = https://pypi.tuna.

创建虚拟环境 - 防止包冲突

conda create -n envname python=x.x.x

Flask

安装

pip install flask

编写一个简单的服务端

from flask import Flaskapp = Flask(__name__)@app.route('/')def index():return "hello world";if __name__ == '__main__':app.run('127.0.0.1', '8080', debug=True)

使用nginx代理需要获取真实的IP

from flask import Flaskapp = Flask(__name__)@app.route('/')def index():return "hello world";def fix_werkzeug_logging():from werkzeug.serving import WSGIRequestHandlerdef address_string(self):return"[%s]-[%s]" % (self.headers.get('X-Forwarded-For', self.client_address[0]), self.headers.get('X-Real-Ip', self.client_address[0]))WSGIRequestHandler.address_string = address_stringif __name__ == '__main__':fix_werkzeug_logging()app.run('127.0.0.1', '8080', debug=True)

Nginx

安装

# installapt install nginx# 查找位置whereis nginx# nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz# 启动服务service nginx start

修改配置文件实现域名/IP访问服务

配置文件在/etc/nginx里面,使用vim打开nginx.conf可以看到一系列配置,网站的访问主要在http里面,创建一个server即一个访问路由,根据域名跳转到本地IP和端口。其中listen的端口号为80才能实现原始域名访问,否则需要在域名后面加入端口号。

# 在http中创建一个监听服务http {server {listen 80; # 监听的端口server_name ; # 域名 (也可以是IP)location /{proxy_pass http://127.0.0.1:8080; # 本地ip和端口proxy_set_header X-Real-IP $remote_addr; # flask中获取原始ip需要这个proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理ip之前的原始ip}}}

以下内容需要有域名
配置SSL安全访问 https

SSL证书可以免费申请,下载下来的包括一个crt文件和一个key文件,然后配置到Nginx中,需要注意的是listen端口变成了443。如果要把http访问全部转成https则把http的server监听并重定向。

需要注意的是每一个SSL证书只对应一个域名,二级域名实现SSL需要重新申请。

http {server {listen 443 ssl;server_name ;# 配置crtssl_certificate "/path/to/xxx.crt";# 配置keyssl_certificate_key "/path/to/xxx.key";location /{proxy_pass http://127.0.0.1:8090;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_redirect default;}}server {listen 80;server_name *. ; # 泛解析形式,不管二级域名是什么都直接跳转,还要补一个没有前缀的rewrite ^(.*)$ https://$host$1 permanent; # 把http访问的域名转换到https}}

配置完成后可以先测试,成功后重启服务就可以使用https访问了。

nginx -t# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok# nginx: configuration file /etc/nginx/nginx.conf test is successfulservice nginx restart

禁用IP访问

server {listen 80 default;server_name _;return 403;}server {listen 443 ssl default;server_name _;# 随便选一个就行ssl_certificate "/path/to/xxx.crt";ssl_certificate_key "/path/to/xxx.key";return 403;}

如果觉得《[从零开始]Flask+Nginx在云服务器上部署服务》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。