在Upcloud Ubuntu 18.04係統用uwsgi nginx發布django app以及暴棄關

2019-01-11 约 2102 字 预计阅读 5 分钟

昨天看了一下aws的賬單,居然一下子衝到了800刀,查了一下report。

發現大筆支出在突然增加的帶寬使用上。Aws的價格以前不覺得,現在看真是巨大,12月居然說有4TB的帶寬使用,帶來了400多美刀的賬單。

應該不至於正常流量超出這麼多,也許有人用惡意代碼刷帶寬,但目前以aws 9 cents每GB的價格,查出來惡意代碼也得虧不少了。

算了,先整到vultr過渡一下,目前還沒查其他主機服務商的價格,但即使是正常流量,vultr的4TB帶寬也就是40美刀的價格,超出部分也才隻是1 cent每GB。

記錄一下將django app安裝到vultr裸機的過程,以備後用。

vultr Upcloud Ubuntu 18.04係統用uwsgi及nginx發布django app

本擬用vultr移植aws的站點,無意中搜到一個帖子,說Upcloud速度巨快,看了一下價格跟vultr比還便宜點,4TB帶寬20美刀,就改用這個了,安裝好了,感覺速度是挺快。

購買主機,建立root權限用戶

到Upcloud網站一看,號稱世界最快雲。一般敢直接這麼做廣告的應該還有些底氣。

我就來試試看。注冊了賬戶,得到一個促銷碼CS6AJC,讀者若也打算試試Upcloud,在注冊的時候貼上這個代碼,可以有25美金的信用額度。

主要流量是在美國,所以選了美國芝加哥的服務器。采用ubuntu 18.04係統,得到root用戶密碼,就需要建立一個root權限用戶了,此步驟即以前寫的老貼八步教程中的第四步,不再贅述。

安裝虛擬環境VirtualEnv,在此環境下安裝django

sudo apt-get update
sudo apt-get install python-pip
sudo pip install virtualenv
在項目目錄下運行
cd app
sudo virtualenv venv
會建立一個venv虛擬環境目錄,激活並安裝django等
. venv/bin/activate
pip install -r requirements.txt
運行
python manage.py runserver
發現沒有問題了,app啟動到http://127.0.0.1:8000
但需要將之投射到nginx上

安裝配置uwsgi

deactivate
sudo apt-get install python-dev
sudo apt-get install build-essential python
sudo pip install uwsgi
安裝好uwsgi後,需要建立一個ini文件
mkdir uwsgi
cd uwsgi
mkdir sites
cd sites
nano app.ini
打開了nano編輯器,app.ini內容如下
[uwsgi]
uid = www-data
gid = www-data
home = /home/username/app/venv
pythonpath = /home/username/
chdir = /home/username/app
module = app.uwsgi
socket = /home/username/uwsgi/app.sock
vacuum = true
chown-socket = www-data:www-data
chmod-socket = 660
master = true
harakiri = 30
touch-reload = /home/username/uwsgi/sites/app.ini
Ctrl-x存盤退出,運行
uwsgi app.ini

測試無問題,然後需要在啟動時運行uwsgi

sudo nano /etc/rc.local
exit 0代碼上加一行
/usr/local/bin/uwsgi --emperor /home/username/uwsgi/sites  --daemonize /var/log/uwsgi-emperor.log
這樣啟動就可以運行了。需要說明app.ini的最後一句touch-reload = /home/username/uwsgi/sites/app.ini,假如代碼有更新,無需重新啟動係統來運行uwsgi。隻需要touch一下這個ini文件,uwsgi就會自動運行,從而采用新的代碼。

安裝配置nginx

sudo apt update    
sudo apt install nginx
nginx配置很簡單了。
cd /etc/nginx/sites-available
sudo nano app
app的內容如下
server {  
    listen 80;  
    server_name youwebsite.com;

    location / {  
        include uwsgi_params;  
        uwsgi_pass unix:/home/username/uwsgi/app.sock;  
    }  
}
如此配置,則瀏覽器訪問http://youwebsite.com 即可。 至於要增加https支持,則參照老貼八步教程之六即可


## 通關文之暴棄關

至聖曰:“朝聞道,夕死可矣。”
顏子曰:“舜何人也,予何人也,有為者亦若是。”
孟子曰:“自暴者,不可與有言也;自棄者,不可與有為也。”
老祖曰:“吾非聖人,學而得之。”
上陽子曰:“釋迦聞佛半偈而欲舍其身,黃帝順下風膝行而進,問廣成子治身奈何而可以長生。”
此皆自貴自重,而不可自暴自棄也。
夫人秉天地五行之氣而生身,有氣而即有性,有性而即有命。
是理、氣、性、命,即寓於一身之中,不論賢愚高低,同此一理氣,同此一性命。
凡夫聖賢,原無分別,惟能了性命者,即是聖賢;不能了性命者,即是凡夫。
孟子所謂人之所以異於禽獸者幾希,庶民去之,君子存之者是也。
仙傳雲:自古飛升者三千,拔宅者八百,坐脫立亡者不計其數。
凡此皆是學而知,苦而成,未有不學不苦而能知能成者。
世間生知者有數,學知者居多。
雖雲生知,翻個筋鬥,即有迷處。
不學不成,學而方成。
故釋迦亦必師然燈;孔子亦必師項槖;老子亦必師元始。
至如玉、鍾、呂、劉、王、張、石、薛、陳、白諸位祖師,皆是脈脈相續,口口相授,可知能學而即成,不學不能成。
學之功力,豈小焉哉?
世間糊塗學人,不將自己性命看重,不將自己身心修持,身在道中而不知自己有道,身居寶林而不知現在有寶,認假棄真,以虛為實。
或曰性命長短,乃有定數,非人所能勝;或曰仙聖是天生,非凡人所能學;或曰大道至深至奧,非等閑所能知;於是自暴自棄,自畫其限,甘居苦海,蹈於沉淪,枉為人類矣。
殊不知既在人類,負陰抱陽,即有天地之造化,人人可以為聖賢,人人可以成仙佛,但要至誠進步,屈己求人,由近達遠,經久不怠耳。
試觀山中狐狸猿鹿,乃畜類耳,存神養氣,靜處於窟穴,年久功深,亦能隱形變化,延年益壽,而況人為萬物之靈,焉有修道不成者?
如曰人不能成道,豈乃獸之不如乎?
吾勸真心學道者,速將暴棄關口打通。
立不易方,把有生以後氣質偏病,習染累贅,一齊掃去。
專心慕道,從艱難困苦中磨煉出去。
不知者必欲學而知,不能者必欲學而能。
遷善改過,存誠去妄,始終如一,永無更變,大道可冀。
否則,自暴自棄,不以性命為重,不以道義為貴,打混過日,醉生夢死,空空一世,一失人身,萬劫難矣。

此關通法在《一代宗師》中數句名言

寧可一思進,莫可一思停

則自然會

念念不忘,必有回響


author

Jesse Lau

網名遁去的一,簡稱遁一。2012年定居新西蘭至今,自由職業者。
本文采用知識共享署名 4.0 國際許可協議進行許可。簡而言之,可隨意轉發轉載,轉載請注明出處。


留点评论吧: