首先更新软件源
sudo apt-get updat
安装Nginx:
sudo apt-get install nginx
安装uWSGI以及uWSGI对于Python的支持:
sudo apt-get install uwsgi uwsgi-plugin-python
安装git
sudo apt-get install git
这一步可选,因为你可以选择通过其他方式把项目上传到服务器,我在这儿安装是因为项目放在Github上面,安装Git可以直接clone项目。
安装virtualenv:
这里是一个个人选择问题,因为众多python包也可以通过apt源安装。
不过一个比较好的习惯是,一些python工具通过源安装,比如supervisor,管理和升级都比较方便,而python一些第三方库还是在virtualenv中通过pip安装,像是virtualenv这样的基础工具还是通过源安装。
sudo apt-get install python-virtualenv
在home目录下创建
mkdir myproject
cd myproject
然后使用virtualenv命令在sheep目录下创建Python虚拟环境
virtualenv venv
通过使用下面这个命令激活虚拟环境
source venv/bin/activate
激活虚拟环境后命令会修改命令行提示符,加入环境名,如下所示:
(venv)$
然后安装相关依赖:
pip install -r requirements.txt
安装的时候报EnvironmentError: mysql_config not found错误
需要安装 libmysqlclient-dev,可以参考上一篇文章。
但是再次安装依赖的时候又报
error: command 'i686-linux-gnu-gcc' failed with exit status 1
上网找了好多就这个办法好用
终端下输入
sudo apt-get install python-dev
然后是根据模型生成数据库表结构
python manage.py db init
python manage.py db migrate -m "initial migration"
python manage.py db upgrade
创建数据库的时候报
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run
错误,试着在命令行连接MySQL,报同样错误,解决方式如下,执行下面三条命令后重新执行上述三条命令,相关表成功创建。(注意:migrate不能自动生成database,所以database需要手动创建)
sudo service mysql stop
sudo service mysql start
sudo service mysql restart
接下来给项目目录配置权限,Nginx和uwsgi默认是以www-data用户和组来运行:
chown -R www-data:www-data /home/myproject/sheep/
chown -R 755 /home/myproject/sheep/
对于nginx和uwsgi我们可以使用vhost方式进行部署,这样既能保证每个项目使用独立的virtualenv又可以,共用一个uWSGI池,这样在使用、部署和管理上都比较方便。
然后配置Nginx配置文件:
vim /etc/nginx/site-available/sheep
在打开的sheep文件中加入以下代码
server{ listen 80; server_name hostname; location /static { alias /home/myproject/sheep/app/static; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9001; uwsgi_param UWSGI_PYHOME /home/myproject/sheep/venv; uwsgi_param UWSGI_CHDIR /home/myproject/sheep; uwsgi_param UWSGI_MODULE manage; uwsgi_param UWSGI_CALLABLE app; } error_page 404 /404.html; }其中mywebsite为项目目录下的manage.py文件,UWSGI_CALLABLE为其中的Flask实例名。
建立软连接到enabled目录
ln -s /etc/nginx/sites-available/sheep /etc/nginx/sites-enabled/sheep删除sites-enable目录下的default的link,(很重要)
uwsgi配置
vim /etc/uwsgi/apps-available/myuwsgi.ini在打开的文件中加入以下内容
[uwsgi] plugins=python vhost=true socket=127.0.0.1:9001uwsgi还有很多其他配置项,生产环境中需要好好配置。更多内容可参考官方文档。
建立软连接到enabled目录
ln -s /etc/uwsgi/apps-available/myuwsgi.ini /etc/uwsgi/apps-enabled/myuwsgi.ini重启服务
service nginx restartservice uwsgi restart部署完成
资料: