大家好,我是個非專業(yè)的碼農(nóng),我現(xiàn)在在一家survey單位上班。
15年開始寫程序,主要寫管理系統(tǒng)方面的網(wǎng)站。之前一直用asp.net 構(gòu)建網(wǎng)站,說是asp.net其實用到它最多的就是一個數(shù)據(jù)綁定和repeater控件了,前端用的都是現(xiàn)成的js框架。
為什么開始接觸Python?
想接觸的其他系統(tǒng)方面的東東。
目的,希望能夠在自己新買的macbook pro上工作。
我的目標 開發(fā)web \ios\android\exe 能夠在一臺電腦上進行
python 可以 滿足我 web開發(fā) exe兩者?
說了這么多廢話,下面記錄一下我這幾天的搭建python web環(huán)境的過程,順便溫故知新一下
一、系統(tǒng)準備
(1)服務(wù)器
? ? ? 我租用的某云服務(wù)器,ubuntu 系統(tǒng)剛開接觸的肯定會比較暈,像我現(xiàn)在一樣,所以上來可以安裝個圖形界面程序
? ? ? apt-get install ubuntu-desktop
? ? ? 安裝完是不是輕松多了。
(2)客戶端
? ? ?我的是17款MacBook Pro ??? 重要的是學習這個過程
二、安裝python
? ? ? 這兩個系統(tǒng)好像都自帶了。好吧。
? ? ? 蘋果沒有帶python3, ubuntu帶了3.5版本
蘋果:brew install python //請自行百度homebrew
ubuntu :apt-get install python
(1)關(guān)于兩個版本的切換
其實你只要 用 python3的時候用python3就好了?
(2)使用virtualenv
這個具體大家去了解 ??,我個人理解就是一個包,可以方便的讓你在2,3之間來回切換
安裝:pip install virtualenv
創(chuàng)建: virutualenv -p python3 python3env //如果系統(tǒng)只有一個python3 直接virtualenv python3env就可以了
我在服務(wù)器ubuntu環(huán)境中老是failed,在后面加一個 --no-setuptools,后面需要的時候再在虛擬環(huán)境中 pip install?
具體原因不清楚 有可能是版本兼容問題
激活:source python3env/bin/activate
回到主程序:deactivate
不用了直接刪除就可以了
三、選擇一款web框架
我選擇了flask?
安裝:pip install Flask
可以從網(wǎng)上找一個flask demo
git clone git@github.com:xm/xxx.git
flask框架具體怎么用,大家百度下
四、服務(wù)器配置
在這里我選擇了gunicorn and nginx and supervisor
歡迎大神介紹一下這幾個工具 ??
gunicorn 前面為什么加nginx?
nginx與guicorn的具體區(qū)別
supervisor 進程管理利器
安裝 虛擬環(huán)境下
pip install gunicorn
apt-get install nginx
pip install supervisor
//supervisor 目前支持python2 ?所以要建一個python2的虛擬環(huán)境 在該環(huán)境下安裝supervisor
(1)nginx 配置
首先編輯配置文件
這里有幾個 etc/nginx/nginx.conf ,etc/nginx/sites-available/default ,etc/nginx/sites-enabled/default
我們可以在 sites-available中建立各個項目的配置文件
具體配置根據(jù)個人情況 可以百度一下
?然后鏈接到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
快速停止或關(guān)閉Nginx:nginx -s stop
正常停止或關(guān)閉Nginx:nginx -s quit
配置文件修改重裝載命令:nginx -s reload #如關(guān)閉了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個內(nèi)核+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命令
可以在配置文件最后加上以下語句用來關(guān)聯(lián)相關(guān)的配置文件[include]
files =etc/self/*.conf
這樣每次加載到時候都會加載self下到conf文件
#[program:pythonapp]
#command=%(ENV_HOME)s/flasky/py3env/bin/gunicorn -w 3 hello:app -b 127.0.0.1:8000
#stdout_logfile 為設(shè)置輸出的日志文件
保存后準備啟動:
supervisord -c supervisord.conf # 指定配置文件啟動supervisord
supervisorctl ?-c supervisord.conf //啟用控制
status start restart stop reload update //常用命令
五、上傳部署flask項目
Mac 與 服務(wù)器之間的文件傳輸
打開終端命令,輸入
sftp:username@serverip
put 客戶端文件 服務(wù)器文件
put -r 客戶端文件夾 服務(wù)器文件夾
六、開始運行
supervisorctl -c supervisors.conf
項目文件更新后,由于緩存機制可能不會立即見到效果
解決辦法:
一是nginx緩存配置 //自行百度
二是利用supervisor restart myapp
結(jié)束語
剛剛開始研究,希望大家能給出意見和建議,共同進步交流