-该部署是在Ubuntu 14.04.2完成
-参考文献
-更多配置文档说明
NGINX
uWSGI
flask
virtualenv
sudo apt-get install nginx
运行nginx服务器
sudo nginx
打开浏览器,输入localhost,如果服务器启动成功则出现nginx欢迎界面
PS:如果出现端口已经使用的错误,一般是没有正常退出导致的,使用下面命令,80可以为其他端口号。
sudo fuser -k 80/tcp
关闭nginx服务器
sudo nginx -s stop
安装virtualenv
sudo pip install virtualenv
安装virtualenvwrapper
sudo pip install virtualenvwrapper
**PS: virtualenvwrapper provides a set of commands which makes working with virtual environments much more pleasant. **
设置环境变量和初始化
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh
创建虚拟环境
mkvirtualenv venv
进入/切换虚拟环境,刚创建完默认是进入的
workon venv
退出虚拟环境
deactivate
删除虚拟环境,只有退出当前环境才能删除环境
rmvirtualenv venv
注意因为我们要使用python的版本是python3.4所以重新做一下操作
mkvirtualenv -p python3 venv
测试python版本
python -V
进入虚拟环境后使用pip3确保安装的flask是支持python3的
pip3 install flask
首先安装C编译器
apt-get install build-essential python
And if you want to build a binary with python/wsgi support
apt-get install python-dev
同样的操作对于python3
sudo apt-get install python3-dev
使用pip3来安装
pip3 install uwsgi
Exception: you need a C compiler to build uWSGI解决方法:
export CC=gcc
查看已经安装的python包
pip list
sudo mkdir /var/www;sudo mkdir /var/www/mysite
赋予牛逼的权限
sudo chmod -R 777 /var/www/mysite
跳转到项目目录下
cd /var/www/mysite
编辑文件
vim mysite_nginx.conf
mysite_nginx.conf:
server {
listen 8888;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
error_log /var/www/mysite/logs/error.log warn;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/var/www/mysite/mysite_uwsgi.sock;
}
location /static/ {
root /var/www/mysite/;
}
}
生成软链接,将nginx的配置文件和我们项目目录下的文件绑定起来
sudo ln -s /var/www/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
uwsgi python3 插件
下载安装包
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
解压
tar zxvf uwsgi-latest.tar.gz
进入安装包目录
cd <dir>
执行python脚本
python uwsgiconfig.py --plugin plugins/python core python34
将文件 python34_plugin.so放在项目目录下
之后就可以将tar文件和uwsgi-2.0.11.2(名字可能变化)文件删掉了
在项目目录下
编辑文件
vim mysite_uwsgi.ini
[uwsgi]
#set python version
plugin = python34
#application base folder
base = /var/www/mysite
#python module to import
app = hello
module = %(app)
#socket file's location
socket = /var/www/mysite/%n.sock
#permissions for the socket file
chmod-socket = 666
#the variable that holds a flask application inside the module imported at line #6
callable = app
master = true
#number of thread
processes = 4
#clean up the socket when the process stops
vacuum = true
#to avoid ImportError
no-site = true
#location of log files
logto = /var/www/mysite/log/uwsgi/%n.log
编辑文件(注意python中的对齐)
vim hello.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__== "__main__":
app.run(debug=True)
在项目目录下
mkdir logs; mkdir logs/uwsgi; mkdir static; touch /logs/error.log
sudo nginx
uwsgi --ini mysite_uwsgi.ini
进入localhost:8888查看结果,返回Hello World说明部署成功
首先下载python3.4.3的包
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
解压缩
tar xzf Python-3.4.3.tgz
把python3.4.3的所有包拷贝到我们虚拟环境venv的python包下
cp -R Python-3.4.3/Lib/* ~/Envs/venv/lib/python3.4/
在mysite_uwsgi.ini文件中加入一行内容
pythonpath = /home/yubokai/Envs/venv/lib/python3.4/site-packages
其中,把‘yubokai’换成你的用户名,uwsgi无法识别‘~’符号 = =
以上操作完成就可以把Python3.4.3的tgz文件和Python3.4.3源文件删掉了
再次运行以下命令,bingo!!!!
uwsgi --ini mysite_uwsgi.ini
为了使下次登录终端的时候能找得到virtualenvwrapper的命令,将以下shell代码添加到 ~/.bashrc文件
source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/Envs
PostgreSQL
上网下载PostgreSQL最新稳定版
安装下列包
sudo apt-get install libpg-dev
如果安装libpg-dev时遇到了E: Unable to locate package libpg-dev的报错则先执行
sudo apt-get remove libpq5
安装好libpg-dev后
pip install psycopg2
Mac OS X用户可能遇到的问题(Linux用户可以忽略)
**Install libpq-dev **
PATH=$PATH:/Library/PostgreSQL/9.4/bin/
软链接防止not image found 错误(Linux用户可以忽略)
sudo ln -s /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /usr/local/lib/
sudo ln -s /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /usr/local/lib/
完全删除nginx
rm -rf /etc/nginx
rm -rf /usr/sbin/nginx
rm /usr/share/man/man1/nginx.1.gz
apt-get remove nginx* (apt-get remove --purge nginx)
sudo apt-get remove nginx #Removes all but config files.
sudo apt-get purge nginx #Removes everything.
重新安装
apt-get purge nginx nginx-common nginx-full
apt-get install nginx
有一天在调试的时候发生了502错误,uWSGI的报错是:
upstream prematurely closed connection while reading response header from upstream
最后发现不是配置文件的的问题,而是数据库连接问题