记录一次flask+uwsig+nginx的https部署

安装必备的库

ubuntu18.04 LTS。首先安装必备的库:

sudo apt-get update

# 这里不安装的话在安装nginx时候可能会报错
sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev
sudo apt-get install zlib1g-dev

安装配置uwsgi

这里就直接在系统pyhon3环境下安装了,如果有需要的话可以创建python虚拟环境。

sudo apt-get install python3-dev python3-pip uwsgi uwsgi-plugin-python3
pip3 install uwsgi

然后在flask项目目录下创建配置文件uwsgiconfig.ini:

<uwsgi>
<!--  这里要指定plugin,否则可能报错 no python application found...  -->
<plugin>python3</plugin>
<!--  项目目录,这里就是本目录   -->
<pythonpath>.</pythonpath>
<!--  项目文件,这里是web_api.py   -->
<module>web_api</module>
<!--  项目文件中的可调用对象的名字,就是那个app =  Flask(__name__)  的app  -->
<callable>app</callable>
<!--  绑定的端口和ip,这里如果要外网nginx转发的话要填0.0.0.0的ip(非本机的nginx)   -->
<socket>127.0.0.1:5000</socket>
<master/>
<!--  进程数目,根据自己的内存定吧   -->
<processes>1</processes>
<memory-report/>
</uwsgi>

uwsgi启动和停止命令

# 启动uwsgi(守护进程方式运行),这里的-x参数的意思是解析xml格式的配置文件
uwsgi -x uwsgiconfig.ini -d uwsgi.log
# 停止uwsgi
killall -9 uwsgi

nginx

下载解压安装包:
这个网址https://nginx.org/en/download.html可以查看现有的nginx版本,选择需要的版本链接。

# 这里下载的是1.18.0版本
wget -c https://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
# 配置nginx,这里要加上--with-http_ssl_module选项以开启https
./configure --with-http_ssl_module
# 编译安装
sudo make
sudo make install
# 可以使用whereis命令查看安装路径
whereis nginx

可选,添加环境变量

使用nano打开.bashrc配置环境变量,执行命令:nano ~/.bashrc
在文件最末尾加上一句(路径是安装路径)

export PATH=$PATH:/usr/local/nginx/sbin/

tips: nano下按Ctrl+O写入文件(会让你确认保存到哪里,回车即可),然后按Ctrl+X即可退出。

nginx启动和停止命令:

# 如果没有配置环境变量,这些命令都要先进到nginx的安装目录下的/sbin目录才能执行
# 启动
nginx 
# 强制停止
nginx -s stop
# 处理任务完毕后停止
nginx -s quit
# 重启
nginx -s reload

启动nginx后,可以访问http://ip查看欢迎页面。

nginx配置https代理uwsgi

将两个证书文件( *.crt 和 *.key )复制到服务器。记录下路径。
编辑nginx配置文件(默认为安装目录下的conf/nginx.conf文件)

server {
        listen       443 ssl;   # 这里说明端口和协议
        server_name  localhost;
        ssl_certificate      /usr/local/nginx/cert/xxx.crt;  # 这里要替换成.crt文件的路径
        ssl_certificate_key  /usr/local/nginx/cert/xxx.key;  # 这里要替换成.key文件的路径
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
            include uwsgi_params;
			uwsgi_pass 127.0.0.1:5000;  # 这里填上uwsgi所在机器的地址和绑定的端口号
        }
    }

最后重新启动nginx就好了nginx -s reload,注意要保证uwsgi也启动了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值