大家好,我是个非专业的码农,我现在在一家survey单位上班。
15年开始写程序,主要写管理系统方面的网站。之前一直用asp.net 构建网站,说是asp.net其实用到它最多的就是一个数据绑定和repeater控件了,前端用的都是现成的js框架。
为什么开始接触Python?
想接触的其他系统方面的东东。
目的,希望能够在自己新买的macbook pro上工作。
我的目标 开发web \ios\android\exe 能够在一台电脑上进行
python 可以 满足我 web开发 exe两者
说了这么多废话,下面记录一下我这几天的搭建python web环境的过程,顺便温故知新一下
一、系统准备
(1)服务器
我租用的某云服务器,ubuntu 系统刚开接触的肯定会比较晕,像我现在一样,所以上来可以安装个图形界面程序
apt-get install ubuntu-desktop
安装完是不是轻松多了。
(2)客户端
我的是17款MacBook Pro
二、安装python
这两个系统好像都自带了。好吧。
苹果没有带python3, ubuntu带了3.5版本
苹果:brew install python //请自行百度homebrew
ubuntu :apt-get install python
(1)关于两个版本的切换
其实你只要 用 python3的时候用python3就好了
(2)使用virtualenv
这个具体大家去了解 ?,我个人理解就是一个包,可以方便的让你在2,3之间来回切换
安装:pip install virtualenv
创建: virutualenv -p python3 python3env //如果系统只有一个python3 直接virtualenv python3env就可以了
我在服务器ubuntu环境中老是failed,在后面加一个 --no-setuptools,后面需要的时候再在虚拟环境中 pip install
具体原因不清楚 有可能是版本兼容问题
激活:source python3env/bin/activate
回到主程序:deactivate
不用了直接删除就可以了
三、选择一款web框架
我选择了flask
安装:pip install Flask
可以从网上找一个flask demo
git clone git@github.com:xm/xxx.git
flask框架具体怎么用,大家百度下
四、服务器配置
在这里我选择了gunicorn and nginx and supervisor
欢迎大神介绍一下这几个工具 ?
gunicorn 前面为什么加nginx?
nginx与guicorn的具体区别
supervisor 进程管理利器
安装 虚拟环境下
pip install gunicorn
apt-get install nginx
pip install supervisor
//supervisor 目前支持python2 所以要建一个python2的虚拟环境 在该环境下安装supervisor
(1)nginx 配置
首先编辑配置文件
这里有几个 etc/nginx/nginx.conf ,etc/nginx/sites-available/default ,etc/nginx/sites-enabled/default
我们可以在 sites-available中建立各个项目的配置文件
具体配置根据个人情况 可以百度一下
然后链接到sites-enabled中
最后被全部include到nginx.conf下
ln -s etc/nginx/sites-available/selfdefine etc/nginx/sites-enabled/selfdefine
或直接在/etc/nginx/conf.d/下新建配置文件
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload #如关闭了nginx会报错,此时先nginx
ps -ef | grep nginx #查看运行的nginx
(2)supervisor配置操控gunicorn
gunicorn启动flask的操作非常简单,
guincorn -w 3 yourapp:app -b 127.0.0.1:8000
3 是2*1个内核+1 yourapp是你的py启动文件名 app 是你里面的 app.run
这样我们的程序就启动了
但用supervisor更加方便
配置好后 每次
start myapp
restart myapp
stop myapp
配置方法具体我也不介绍了,自行百度吧
就是把command命令链接到里面
安装完后首先 生成myapp所需的配置文件模版
(python3env)$echo_supervisord_conf > supervisord.conf
然后修改这个配置文件(python3env)$vim supervisord.conf //也可以用nano命令
可以在配置文件最后加上以下语句用来关联相关的配置文件[include]
files =etc/self/*.conf
这样每次加载到时候都会加载self下到conf文件
配置文件中比较重要的几个
#[program:pythonapp]
#directory=%(ENV_HOME)s/flasky #程序所在目录
#command=%(ENV_HOME)s/flasky/py3env/bin/gunicorn -w 3 hello:app -b 127.0.0.1:8000
#stdout_logfile 为设置输出的日志文件
保存后准备启动:
supervisord -c supervisord.conf # 指定配置文件启动supervisord
supervisorctl -c supervisord.conf //启用控制
status start restart stop reload update //常用命令
五、上传部署flask项目
Mac 与 服务器之间的文件传输
打开终端命令,输入
sftp -p username@serverip
put 客户端文件 服务器文件
put -r 客户端文件夹 服务器文件夹
六、开始运行
supervisorctl -c supervisors.conf
项目文件更新后,由于缓存机制可能不会立即见到效果
解决办法:
一是nginx缓存配置 //自行百度
二是利用supervisor restart myapp
结束语
刚刚开始研究,希望大家能给出意见和建议,共同进步交流