Debian 服务器 Python 开发环境配置

2015-03-19

就像之前倒腾 octopress 一样,老是出现各种问题,不会 Ruby,一通乱弄,经过无数次的 rebuild,deploy,终于基本上是可以了,删除重来删除重来,我都能够把各个步骤背出来了,还有那个地方有坑,要注意。(以下操作都在 debian 7 下实际测试过)

0. 用户配置

照着阮一峰老师的文章做就行:Linux服务器的初步配置流程

1. 服务器监控

要是新 build 的机器的话,ssh 登录上去先在 root 下装个机器的运行状态监控NodeQuery, Linux 服务器监控程序太多了,免费的收费的都有,还有人不放心,自己写脚本监控,这个应用界面不错,免费支持十台机器,每三分钟更新一次数据,准确行还凑合,单有时候就误报 not respond,不知道怎么回事,high load 和 not respond 都会发邮件提醒。

2. 包管理

debian 和 ubuntu 本身自带一个 apt-get 的包管理,但不是所有的二进制程序和工具包都在里面的,Homebrew/linuxbrew 是一个从 OS X 平台上移植过来的包管理程序,用 ruby 写的,对于只用 OS X 的开发者十分有用,安装一些包能自动安装依赖项。但移植的毕竟是移植的,在 Linux 上还是有各种的问题,经过我在 debian 7 上实际使用的情况,安装 Python 2.7.9、分屏 tmux、Ruby 以及 Ruby 的包管理工具 rbenv 都没有问题,还有 go 和 node 也没有问题,就是编译的时间有点长,CPU 占用一直卡在百分之百,内存到还好,以为是死机了,等等就好了。

3. VIM 插件配置

Vundle 是一个 vim 插件管理程序,vim 作为一个 Linux 下最重要的工具之一,必须是熟练使用,有很多插件能都使 vim 更加好用,这个要根据个人使用的情况来配置。安装的话直接 git clone 下来就行了,我自己的本地机器上也有装,我就直接把~/.vimrc 直接复制到远程机器上了,scp -P 8964 ~/.vimrc chen@xxx.xxx.xxx.xxx:/home/chen, 我改了默认ssh 端口,所以要用大写P 指定端口号。然后打开vim, 命令模式 :PluginInstall, 等着 done 就行了。Python 有个 vim 里的自动补全插件叫 jedi,在服务器那么大的延迟下用就算了吧,简直噩梦,本地机器用用还行,但我本地机器还有更好用的 Sublime Text 3 呢。

4. 数据库安装

MySQL 直接 sudo apt-get update mysql-server 就行了,要设置 root 账户的密码。Python 和 MySQL 沟通要有一个接口,用 homebrew 安装好 Python 安装自带了 pip 工具,用来安装 Python 的各种包。这个接口叫 MySQL-python, 区分大小写,要是直接装是不行的,会出错,这个地方是有一个坑的,参见这个链接 pip install mysql-python fails with EnvironmentError: mysql_config not found - Stack Overflow。如果是一个小博客就没有必要用 MySQL了,直接 SQLite 就行了,这个和 Python 的接口是pysqlite,直接 pip 安装没有问题。

5. Python 的 pip 包安装

这个就有点坑了,我自己实测在 Ubuntu 和 Debian 下安装包的隔离工具 virtualenvwrapper 都不行,我也没找到解决方法,作罢,把所有包全混在了一起。

Django 相关包

  • Django
  • django-admin-bootstrapped
  • django-bootstrap
  • Markdown # markdown
  • MySQL-python # MySQL 接口
  • pip
  • pysqlite # SQLite 接口
  • setuptools
  • uWSGI

其他

  • pep8 # Python 编码规范,可以提示出代码不规范的地方
  • joe # 自动添加 .gitignore 文件,比如 *.pyc 这些就不 push 到仓库了
  • ngxtop # nginx 分析程序

对了,还有一个重要的地方,在 CLI 中或者在 Python 解释器中有时候不能使用方向键移动光标,readline 这个包,用 pip 装上去是没有用的,要用 easy_install readline 才行,easy_installsetuptools 的工具,也是和 Python 一起自带的。
virtualenvwrapper 是个大坑,我还没有研究出来这个怎么解决,就先算了,要不直接用virtualenv 用还行。

6. 补漏 Django 应用部署

之前一篇讲 Django 应用部署,有个 pcre 库的问题,自己编译太慢了,后来查了下还有直接从仓库里面安装的方法:

1
2
3
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev