這是之前在學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