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/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安装到的目录和文中有出入,位置在/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。定义如下: