CentOS搭建Flask、Gunicorn、Nginx服务器

拥有一个服务器的好处:你知道,在你睡觉的时候,在你烦闷苦恼的时候,在你追剧堕落的时候,有一个它,还在远处默默等待着你的访问…

初始化Flask运行环境

第一步,是把Flask工程拉到服务器上,然后,根据requirement.txt描述文件,下载依赖的python包。

这一步其实类似iOS的初始化,先Clone,然后pod install

Clone你的Flask工程

git clone xxxxxx.git

换pypi源

换用国内源,你就会发出呐喊:哇~~~好快!!

修改 ~/.pip/pip.conf (CentOS), %APPDATA%\pip\pip.ini (Windows 10) 或 $HOME/Library/Application Support/pip/pip.conf (macOS) (没有就创建一个), 修改 index-url至tuna,例如

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

pip 和 pip3 并存时,只需修改 ~/.pip/pip.conf。

安装虚环境

sudo yum install python-virtualenv

安装Python版本 管理工具pyenv

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

按提示修改bash配置文件,然后重启terminal

通过pyenv管理多python版本

pyenv搜狐镜像源加速

下载需要的版本放到~/.pyenv/cache文件夹下面

然后执行 pyenv install 版本号

安装对应的python版本

一键安装:wget http://mirrors.sohu.com/python/2.7.9/Python-2.7.9.tar.xz -P ~/.pyenv/cache/;pyenv install 2.7.9

通过pyenv创建虚环境

pyenv virtualenv 2.7.9 虚环境名称

pyenv activate 虚环境名称

pyenv deactivate

pyenv uninstall 虚环境名称

说明 – 通过这种方法创建的虚环境,包含了一个virtualenv创建的环境 – venv的目录在 ~/.pyenv/versions/虚环境名称/ 下,不需要的时候,直接暴力删除就好。详细戳 这里

注意,mac上安装pyenv之后,需要再单独安装pyenv-virtualenv才能正常使用

brew install pyenv-virtualenv

初始化虚环境

virtualenv venv

激活虚环境

source venv/bin/activate

安装依赖包

(venv) $ pip install -r requirements.txt

我这里安装的时候,由于一些库忘记写进描述文件里了,需要各种安装遗漏的库= =

错误信息:html5lib requires setuptools version 18.5 or above; please upgrade before installing (you have 0.6)

  • 尝试使用:pip install html5lib –upgrade升级,但是报错。

  • when i issue the above command it tells me to update the setup tools, and when I try to update or upgrade setuptools it says already up to date.

  • 解决方案来源

解决方案:pip install -U setuptools

错误信息:python2.6木有markdown库的一个文件

解决方案:

  • 升级到python2.7

    需要强调一点,我的python2.7安装到的目录和文中有出入,位置在/usr/local/lib/python2.7

  • 使用pyenv(见上文)

如果远程下载Python文件太慢,可以考虑

方案一:本地下载之后, 使用scp命令上传到服务器上

方案二:使用国内镜像 搜狐Python镜像

1、从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)

 例如scp root@192.168.0.101:/var/www/test.txt  把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)2、上传本地文件到服务器
scp /path/filename username@servername:/path   例如scp /var/www/test.php  root@192.168.0.101:/var/www/  把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中 

3、从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test  /var/www/  

4、上传目录到服务器
scp  -r local_dir username@servername:remote_dir例如:scp -r test  root@192.168.0.101:/var/www/   把当前目录下的test目录上传到服务器的/var/www/ 目录

当然,scp的本质是对ssh的封装,所以可以通过配置.ssh目录下的config文件实现快速复制文件的。我的操作命令如下:

scp Python-2.7.5.tar.bz2 ali-yun:/

其中,ali-yun是通过config文件自定义的阿里云ssh Host。定义如下: