Ubuntu14 部署python项目
说明:
- 本文档测试所用系统为ubuntu14.04
- 安装mysql5.6参考: https://www.cnblogs.com/libaoshan/p/11298979.html
- 测试环境 python3.6 Ubuntu14 升级到Python3.6 参考:https://www.cnblogs.com/libaoshan/p/11294547.html mysql配置:https://blog.stdioa.com/2016/05/django-mysql-charset-problem/
- 部署大部参考:https://www.zmrenwu.com/courses/django-blog-tutorial/materials/15/ 从 “设置服务器目录结构” 开始,按照下面的步骤进行
安装nginx
$ sudo apt-get install nginx
创建代码运行的虚拟机环境
创建虚拟环境
# 安装环境管理软件virtualenv $ sudo python -m pip install virtualenv
解析域名到服务器的 IP 地址
https://dc.console.aliyun.com/next/index?spm=5176.12818093.my.ddomain.488716d0T5t1az&accounttraceid=35e46838-eca8-4bfc-9883-93191c6575fa#/domain/list/all-domain
#创建目录并进入该目录
$ mkdir -p ~/sites/taohuayuan.fun
$ cd sites/taohuayuan.fun/
# 接下来创建虚拟环境,先进入到 demo.zmrenwu.com 目录下,然后运行 virtualenv 命令创建虚拟环境: $ sudo virtualenv --python=python3.6 env # 激活环境 $ source env/bin/activate
# 拉取代码
$ sudo apt-get install git $ sudo git clone https://github.com/libaoshan55/MxOnline.git $ cd MxOnline/ #安装环境依赖文件
$ sudo apt-get install libmysqlclient-dev $ sudo python -m pip install -r requirements.txt # 虚拟环境下继续运行 python manage.py collectstatic 命令收集静态文件到 static 目录下: $ sudo python manage.py collectstatic # 清掉数据库文件 $ sudo find . -path "*/migrations/*.py" -not -name "__init__.py" -delete $ sudo find . -path "*/migrations/*.pyc" -delete
# 创建数据库
$ create database mxonline; # 创建数据库文件
$ sudo python manage.py makemigrations $ sudo python manage.py migrate # 创建超级用户,方便后台管理 $ sudo python manage.py createsuperuser
配置 Nginx
# 新建配置文件
$ sudo vim /etc/nginx/sites-available/www.taohuayuan.fun
server { charset utf-8; listen 80; server_name taohuayuan.fun; location /static { alias /home/libaoshan/sites/www.taohuayuan.fun/MxOnline/static; } location / { proxy_set_header Host $host; proxy_pass http://unix:/tmp/www.taohuayuan.fun.socket; } }
注:将proxy_pass http://unix:/tmp/www.taohuayuan.fun.socket; 中www.taohuayuan.fun.socket改为ip后仍未生效,域名或者服务器备案问题。
我们在 /etc/nginx/sites-available/ 放置了配置文件,接下来需要创建一个符号链接,把这个配置文件加入到启用的网站列表中去,被启用网站的目录在 /etc/nginx/sites-enabled/,你可以理解为从 sites-available/ 目录下发送了一个配置文件的快捷方式到 sites-enabled/ 目录。具体命令如下:
$ sudo ln -s /etc/nginx/sites-available/www.taohuayuan.fun /etc/nginx/sites-enabled/www.taohuayuan.fun
删除default文件
这个问题也困扰了很久,最终发现是sites-enabled文件夹里默认的default文件中的配置覆盖了自己写的配置,导致配置不生效,把default文件删掉
重启nginx服务
$ sudo service nginx stop
$ sudo service nginx start
使用 gunicorn
在虚拟环境下,安装 Gunicorn:
$ sudo python -m pip --default-timeout=100 install gunicorn
启用 Gunicorn 启动服务器进程:
$ cd /home/libaoshan/sites/taohuayuan.fun/MxOnline
$ sudo gunicorn --bind unix:/tmp/www.taohuayuan.fun.socket MxOnline.wsgi:application