安装必备的库
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也启动了。