通用技术 小白级别 ubuntu+flask+nginx+gunicorn+vue 的部署经过

yuan · April 19, 2018 · 3162 hits

序言

首先,自己是一个连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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up