您的位置:首页 > 运维架构 > Nginx

Nginx+gunicorn+Django 服务器部署

2017-11-30 11:36 483 查看
这两天参考网上的各种部署教程,总算是把Django的服务器初步搭建起来了。

软件安装

我这里用的是腾讯的云服务器,Ubuntn16.04操作系统。需要安装的软件:

pip3

Django

gunicorn

nginx

mysql (可选)

git ( 可选)

virtualenv (可选)
系统自带有Python2,Python3, 如果使用Python3运行Django,则需要安装 pip3, 安装命令 apt-get install python3-pip。有了pip3,就可以方便的安装Django和gunicorn , pip3 install django, gunicorn ,如果需要选择安装版本,参考命令 pip3 install django==1.10.5

安装ngnix,git和mysql,apt-get install nginx git mysql-server。这里mysql是Django使用的数据库。如果使用其他数据库,参考对应的数据库软件安装方法。git是用来把本机文件同步到服务器的版本管理软件,可以用其他软件代替,只要能把Django代码转移到在服务器上即可。

如果需要的话,还可以安装virtualenv,搭建python的虚拟环境。

Mysql数据库相关命令

根据setting.py文件的配置,创建数据库和相应的用户,需要的使用的命令如下:

登陆mysql数据库客户端 mysql -u root -h localhost -p,安装mysql时,根据提示设置root账户的密码,这里使用root账号登录

创建数据库 utf-8 字符编码

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

查看,修改数据库编码

use database_name;

show variables like 'character_set_database';

alter database <数据库名> character set utf8;

删除数据库

Drop database db_name;

创建MYSQL 用户

CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';

授权

GRANT privileges ON databasename.tablename TO 'username'@'host';

其中的privileges包括 select , delete , update 等权限,Django操作数据库需要全部的权限,可参考如下命令

GRANT ALL ON `discuz`.* TO 'discuz'@'localhost';

查看用户权限:

show grants for username@'localhost';

Django运行环境搭建

假设已经在本地电脑上调试好Django代码,通过git上传到服务器端的 /var/www/ 目录下。

安装Django 项目依赖的python包。

参考上一节创建空的utf8字符编码数据库,和授权用户。数据库名,登陆账号密码与Setting文件一致。

对每个app使用makemigrations命令,然后使用migrate命令。在服务器端第一次使用makemigrations时,最好分别对每个app执行一次,以免生成数据库是出错。如果已经出错,可以先进入mysql,删除原有数据库,再新建一个空的数据库后,重新操作。

创建管理员账号,并运行 runserver 0.0.0.0:8000,可在终端浏览器看到Django页面。
现在中断看到的是Django自带调试用的http服务器,不推荐使用,下面讲如何使用gunicorn 和 nginx。

gunicorn 配置

gunicorn 可简单配置为

gunicorn -b0.0.0.0:8999 dj.wsgi

执行命令之后,可以在浏览器访问页面,但是看不到静态文件(图片,CSS,JS等)。静态文件的路径需要在nginx中配置。

参考连接 http://blog.51cto.com/10452483/1769749

nginx配置

Django文件的路径 最好是放在 /var/www/ 目录下,否则访问静态文件可能因为权限问题出现 403 forbidden error 错误。参考链接 http://blog.51yip.com/apachenginx/1512.html

nginx配置文件的路径:

/etc/nginx/sites-available/ : 先把配置文件放在这里,编辑好之后,链接到目录 /etc/nginx/sites-enable/

简单的配置文件如下:

server

{

listen 80;

location /static/ {

alias /var/www/static/;

}

location / {

proxy_pass http://127.0.0.1:8999;
}

}

不出意外应该是可以在浏览器端(访问地址: x.x.x.x)看到完整的页面了。另外要特别主要服务器开放的端口号有哪些。比如阿里云默认开放的端口号为 3389,需要自行设置一下,开放相应端口号,以免出现无法访问的问题。

后续再对gunicorn 和 nginx 做细致的配置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: