这是之前在学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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。