Ubuntu環境下Tornado環境部署

兩岸風景發表於2015-11-24

這是之前在學tornado時記的一點小東西,但是在伺服器上搭環境時其實還是很簡單的(比起rails而言,手動斜眼笑)
但是安裝過程中也遇到一些問題就記下來

安裝

先安裝python的pip,這個類似於ruby的gem,用於包管理和下載
然後用命令可以下載tornado

apt-get install python-pip
pip install tarnado

資料庫配置

MYSQL

我之前用的是mysql,然後使用的ORM工具是sqlalchemy,當然首要的還是先安裝mysql

但是安裝前有一些必要的準備工作。就是裝下面的包,使用apt-get install命令即可

libmysqld-dev
libmysqlclient-dev
python-dev

前兩個包需要安裝的原因是,通過apt-get install 安裝的mysql沒有mysql_config配置檔案,會在後面要配置mysql時遇到問題
後一個是為了用來編譯安裝包
(安裝順序切勿不要混亂,因為之前這個地方我嘗試過前兩個包的安裝順序顛倒會有問題,我也不知道為什麼,如果裝了python-dev後執行python setup.py build還不行。可以重灌libmysqlclient-dev)

下載mysql

wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

解壓

tar zxvf MySQL-python-1.2.3.tar.gz

安裝

$ cd MySQL-python-1.2.3
$ python setup.py build
$ python setup.py install  //這裡就是前面提到的執行python setup.py build可能會出問題,可以重灌libmysqlclient-dev試試

如果遇到如下的錯誤

EnvironmentError: mysql_config not found

首先查詢mysql_config的位置,使用下面的命令找到所在目錄

find / -name mysql_config 

比如我的在

/usr/local/mysql/bin/mysql_config

再修改setup_posix.py檔案,在26行:

mysql_config.path = “mysql_config” 

修改mysql_config的path為剛剛用find找到的路徑,程式碼如下:

mysql_config.path = “/usr/local/mysql/bin/mysql_config

之後就可以使用tornado進行開發了

如果要向伺服器傳程式碼可以使用scp和伺服器進行資料交換
具體操作是 scp filename root@XXX.XXX.XXX.XXX:~
接下來按照提示輸入密碼,然後filename檔案會被傳至根目錄下

部署方式

tornado一般是執行包含啟動應用程式的main.py檔案來執行webapp的,部署時我們需要使用

python main.py &

後面的&的意思是這個程式會以後臺程式執行
如果想保持程式在ssh下線後還繼續掛在伺服器上,可以使用

nohup python main.py &

這樣這個程式的log資訊會輸出到nohup.out檔案中

關閉服務

如果這個程式在前臺跑,那麼只需要ctrl + c就可以關掉了,如果在後臺則需要先檢視程式的pid號
有一個檢視活躍的聯網程式埠占用的方法:

netstat -anp 

檢視3000埠:

netstat -anp |grep 3000

會顯示

Proto Recv-Q   Send-Q   Local Address           Foreign Address         State       PID/Program name
tcp        0        0   0.0.0.0:3000            0.0.0.0:*               LISTEN      12074/ruby

這裡我在3000埠跑的是一個rails的程式,使用kill 12074可以殺掉這個程式

如果是tornado部署在這裡可能會顯示

tcp        0        0   0.0.0.0:3000            0.0.0.0:*               LISTEN      25239/python

但是有的時候使用這個命令由於自己程式比較多的話就很難找,可以使用

pgrep -l python

這個命令的作用是顯示含有python關鍵字的程式的pid號,比如

25239 python

然後使用 kill 25239 命令就可以關閉這個程式了
pgrep的-l引數如果程式比較少,有時可以省略,其作用是顯示程式名字,如果不加時結果就是

pgrep  python
25239 

相關文章