Django + Gunicorn + Nginx 部署Ubuntu 服务器

Django + Gunicorn + Nginx 部署服务器 获取腾讯云 root权限

本人的服务器使用的是腾讯云,腾讯云默认是没有开放 root 用户的,我们来创建 root 用户。
创建 root 账号并设置密码。

sudo passwd root

设置 root 账户登录需要密码。

sudo vim /etc/ssh/sshd_config

修改 without-password 为 yes。

PermitRootLogin yes

重启 ssh 服务。

sudo service ssh restart

关闭窗口,重新使用 root 账号登录。
PS: 平时的话我们使用用户账号登录就行了,上面只是为了获取 root 权限。

更新下系统 sudo apt-get update sudo apt-get upgrade 安装必要的软件

这里我们需要用到的软件有: Nginx、Pytohn3、Git、pip 和 virtualenv。

sudo apt-get install nginx sudo apt-get install python3 sudo apt-get install python3-pip sudo apt-get install git sudo pip3 install virtualenv 启动 Nginx服务 sudo service nginx start

在浏览器中输入域名,如果能成功看到 Nginx 欢迎页面,便说明我们的Nginx 服务是成功启动的。

Django + Gunicorn + Nginx 部署Ubuntu 服务器

部署 Django 代码

我们将从本地上传到 GitHub 的代码下载到我们的服务器中(这里以我的博客代码为例)。
我们还要设置 Django 代码的存放路径,我的路径是在 /home/ubuntu/sites/weixuqin.cn 下。

mkdir -p /home/ubuntu/sites/weixuqin.cn cd /home/ubuntu/sites/weixuqin.cn git clone https://github.com/weixuqin/django_blog.git

创建虚拟环境并激活

virtualenv --python=python3 env source env/bin/activate

接下来我们便可以在虚拟环境中通过 pip 安装需要的依赖库了。

移动到下载好的源码目录:django_blog,安装需要的依赖库。

cd django_blog pip install -r requirements.txt

收集静态文件

pytohon manage.py collectstatic

安装 mysql
由于我的博客使用的是 MySQL 数据库,Linux 并没有带有 MySQL,所以需要我们另外安装。
使用 apt-get 安装并设置密码。

sudo apt-get install mysql-server

安装完成后进入数据库。

mysql -u root -p

创建名为 blog 的数据库。

create database blog;

在 settings.py 中设置 debug 为 False,同时设置可用域名,并修改数据库密码,

DEBUG = False ALLOWED_HOSTS = ['*'] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'blog', 'USER':'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '', } }

生成数据库文件和创建一个Django 超级用户。

python manage.py makemigrations python manage.py migrate python manage.py createsuperuser 更改 MySQL 数据库默认编码格式

liunx 上 MySQL 数据库的默认编码方式不是 utf8,一定要自己更改后使用,刚开始自己使用默认方式创建数据库,结果到了管理后台写文章的时候发现文章全部乱码(如下图),所以一定要注意数据库编码格式。

Django + Gunicorn + Nginx 部署Ubuntu 服务器

进入 MySQL,查看 MySQL 编码。

show variables like '%character%';

可以看到数据库默认编码为 latin1

Django + Gunicorn + Nginx 部署Ubuntu 服务器

需要修改MySQL 配置文件: /etc/mysql/my.cnf
打开 my.cnf ,在各项中添加如下语句。

[client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysql] default-character-set=utf8

保存并退出。

再次执行 show variables like '%character%'; ,便可以看到编码已经修改了。

Django + Gunicorn + Nginx 部署Ubuntu 服务器

删除原来创建的数据库,并重新创建一个同名数据库,执行 python manage.py migrate , 再次打开后台编写文章,我们的文章便不再显示乱码了。

Django + Gunicorn + Nginx 部署Ubuntu 服务器

Nginx 部署

在服务器 /etc/nginx/sites-available/ 目录下新建一个配置文件(这里以我的为例)。

sudo vim django_blog 打开文件。

server { charset utf-8; listen 80; server_name weixuqin.cn; location /media { alias /home/ubuntu/sites/weixuqin.cn/django_blog/uploads; } location /static { alias /home/ubuntu/sites/weixuqin.cn/django_blog/staticfiles; } location / { proxy_set_header Host $host; proxy_pass :/tmp/weixuqin.cn.socket; } }

设置监听端口,指定媒体文件和静态文件存放地址等。.socket 文件会自动生成,我们可以不用去管这个文件。

创建一个符号链接,将上述配置文件放到启用的网站列表中区。被启用网站的目录在 /etc/nginx/sites-enabled/ 。

sudo ln -s /etc/nginx/sites-available/django_blog /etc/nginx/sites-enabled/django_blog 使用 Gunicorn 管理进程

我们使用 gunicorn 来管理多个进程。

在虚拟环境下安装。

pip install gunicorn

移动到 django 项目中,用 Gunicorn 启动服务器进程。

gunicorn --bind unix:/tmp/weixuqin.cn.socket django_blog.wsgi:application

在浏览器中输入域名,便能看到访问成功了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspsxx.html