序言

首先,自己是一个连 linux 都不了解的小白级别,开始了艰苦的部署之路

ubuntu 的安装

下载地址:https://www.ubuntu.com/download
一开始不知道,直接下载了 ubuntu server,安装到虚拟机后才发现,是纯命令行界面,瞬间傻眼,本来就不懂,还来纯命令,果断去搜索怎么安装桌面界面,一番搜索之后,失败,麻烦

在 ubuntu 下载页面继续研究,偶然点入 ubuntu flavours,终于发现不是有已经集成桌面界面的 ubuntu 了,
地址:https://www.ubuntu.com/download/flavours
这次选择了下载 Ubuntu GNOME,不要问我为什么选它,百度一下感觉这个比较正常而已!!

python 的相关(项目是 py3 项目)

安装完成之后,发现 py3 已经在里面了,非常开心,又不用愁 py 的各种啪啦吧啦安装,反正对于小白什么安装都坑

python 的坑

当你想运行 python

$ python

发现运行的是 py2 版本,擦;百度一下之后,输入下面命令(前提是下面目录下存在 python3)应该就可以切换 py 的默认版本了

$ alias python='/usr/bin/python3'

pip 的坑

当你想

$ pip install flask

发现是安装到 py2 那里去了,又一顿绝望了;这时候你可以运行下面命令,安装 pip3

$ sudo apt-get remove python3-pip

安装成功之后,输入下面命令,应该就可以安装 py3 的 flask 库了

$ pip3 install flask

还有个问题?就是在虚拟环境中怎么安装第三方库呢?又搜索了一番,感觉好麻烦啊

打开到虚拟环境 pip 的目录下,执行:./pip install pyyaml(试了一下,发现确实可以安装 yaml)

gunicorn(这个就非常简单了)

先简单介绍一下:Gunicorn 绿色独角兽 是一个 Python WSGI UNIX 的 HTTP 服务器。这是一个 pre-fork worker 的模型,从 Ruby 的独角兽(Unicorn )项目移植。该 Gunicorn 服务器大致与各种 Web 框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

$ pip install gunicorn

如无意外,应该安装成功了,然后弄个最简单的 flask 出来去试一试

# wsgi.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
  return 'hellow'

if __name__ == '__main__':
    app.run()

然后运行下面命令

$ gunicorn -w 4 -b 127.0.0.1:8080 wsgi:app

好了,==这个 wsgi:app 参数就很好理解了, 分两部:wsgi 就是引导用的 python 文件名称(不包括后缀/模块名)app 就是 Flask 实例的名称==。这样 gunicorn 就会找到具体要 host 哪一个 flask 实例了。
从这里开始就可以体现 gunicorn 的好了,我们根本不用配什么配置文件的,一个指令就可以将它起动

nginx 的坑

安装:

$ sudo apt-get install nginx

如无意外就直接安装成功了,启动的时候被坑了一下,当时一直运行命令:sudo nginx start 一直报错,然后又按照报错信息搜索一下还是没解决;最后发现是要执行

service nginx start

确实被坑得不轻,这是打开浏览器输入 localhost,应该会出现 welcome to nginx 的东西了

重头戏,把东西都连起来

先上 nginx 的配置

server {

listen 80;

server_name 192.168.238.144:8010;

charset utf-8;

client_max_body_size 75M;

location / {

root /home/fke/TesterWeb/dist;

index index.html;

location /api{

proxy_pass http://192.168.238.144:8080/;

}

}

}

server_name:就是个 IP 地址了

root vue 打包后直接把 dist 文件丢进 ubuntu 后的地址

index index.html;(按这里的意思应该就是访问 server_name 的时候就打开 dist 里面的 index.html 文件了)

location /api{proxy_pass http://192.168.238.144:8080/;} ;这个就是跨域问题了,当你前端发协议地址是有/api 时,就跳转到http://192.168.238.144:8080/

先把这个文件存到你 flask 项目的根目录吧(起个名字:flaskapi.conf),然后简单粗暴直接删除 nginx 的配置文件

$ sudo rm /etc/nginx/sites-enabled/default

然后软连接到 nginx 配置中(地址的一个坑,一般看桌面界面感觉地址就是:/home/TesterWeb/flaskapi.conf,其实输入 pwd 查看目录时,就会多一个用户路径进出/home/fke/TesterWeb/flaskapi.conf)

$ sudo ln -s /home/fke/TesterWeb/flaskapi.conf /etc/nginx/conf.d/

最后

gunicorn:192.168.238.144:8080 这个要和 nginx 配置的跨域 proxy_pass 要一致,(把先前上面的一些运行什么的都关闭,或则重启最方便) 然后输入下面命令后,如无意外,就可以打开浏览器输入 nginx 里配置的 server_name 来查看是否正常运行了

$ gunicorn -w 4 -b 192.168.238.144:8080 wsgi:app
$ service nginx start


↙↙↙阅读原文可查看相关链接,并与作者交流