Django项目部署(Ubuntu+nginx)

Ubuntu+nginx+uwsgi部署django项目到阿里云上

本文的Ubuntu版本为16.04 64位,使用python3 + django2进行部署,数据库为MySQL。

本文并不能一通到底完成部署,相信你也很难找到能一直正确的部署教程,遇到问题一定要记住:看完错误提示!看完错误提示!看完错误提示!!!

一、安装python虚拟环境

远程连接阿里云服务器后第0件事情是更新一下已经安装的软件包。

apt update
apt upgrade

1、安装python3
大多数机器里边默认安装过python3,可以执行下边的语句检查一下python3是否已经安装。

apt-get install python3

2、安装pip3
安装pip3的版本过低,会造成很多版本不兼容的问题,所以在安装完pip3之后要先对pip3进行更新升级

apt install python3-pip
pip3 install --upgrade pip

3、首先安装支持包

apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev libpng12-dev

4、安装pillow、virtualenv和virtualenvwrapper(虚拟环境)

pip3 install pillow virtualenv virtualenvwrapper

5、创建并使用虚拟环境
创建文件夹放置虚拟环境。

 mkdir .virtualenvs

6、配置virtualenvwrapper
到 .bashrc 文件中在最后加上下面几段代码。

# virtualenv
export WORKON_HOME=/root/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

保存并退出之后激活环境

source ~/.bashrc

7、创建和使用虚拟环境

mkvirtualenv -p /usr/bin/python3 myenv

执行完上面的语句后可以看到自己命令行的开头括号括起来自己虚拟环境的名字,那么虚拟环境就可以使用了。

# 进入虚拟环境
workon myenv
# 退出虚拟环境
deactivate

二、安装nginx、uwsgi和mysql

1、安装nginx

sudo apt-get install nginx

安装完成后,就可以用其他电脑或者手机的浏览器服务器的公网ip地址,网页上会显示 welcome to nginx!的画面。
2、安装uwsgi
你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html
,下载Stable/LTS 版本的源文件,用本地下解压这个源文件,然后用 Xftp 把解压出来的文件(一个文件夹和一个文件)拖放到阿里云的Ubuntu的家目录 /home下。或者在虚拟环境中安装uwsgi,即 pip3 install uwsgi。

建议新手在虚拟环境外和虚拟环境里分别进行一次uwsgi的安装,操作均为pip3 install uwsgi 。
3、安装配置mysql

apt-get install mysql-server mysql-client

安装过程中会让你设置 root 的密码,完成后配置 mysql。
进入 mysqld.cnf 文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉这行代码

bind-address            = 127.0.0.1

三、配置项目

先暂时不用阿里云的服务器,回到你自己的电脑界面
1、配置 django 项目
导出项目的所有依赖,到项目根目录下执行命令。

pip freeze > requirement.txt

进入 settings.py 文件内,更改内容!

DEBUG = False
ALLOWED_HOSTS = ["*"]

2、配置uwsgi
在你的 django 项目的根目录下,也就是有 manage.py 文件的目录下,新建一个 uwsgi.ini 文件用作 uwsgi 的配置文件,(本文的 django 工程将要放在/home文件夹下,以此为例)写入:

[uwsgi]
# 使用nginx连接时使用
 socket = 127.0.0.1:8000  #此处端口号要和nginx的配置文件对应内容一致
# 直接做web服务器使用
#http=0.0.0.0:80
# 配置工程目录
chdir=/home/项目名
# 配置项目的wsgi目录,相对于工程目录
wsgi-file=项目名/wsgi.py

processes=4
threads=2
enable-threads=True
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

这时候,使用Xftp或其他工具将你的项目放到阿里云服务器的 /home 文件夹下。
3、配置虚拟环境
用 workon 命令进入虚拟环境,用 cd 切换到之前导出项目依赖文件 requirement.txt 的目录下,安装所有依赖。

pip3 install -r requirement.txt

这个时候可能会出现找不到版本的错误,可以在 requirement.txt 文件中删除对应的依赖,然后用 pip3 直接下载。

4、配置MySQL
创建一个与 django 项目里 settings.py 文件相匹配的数据库,将数据表的 .sql 文件放到 /home 文件夹下,然后在命令行下输入命令恢复数据。

sudo mysql -u root -p table名字<table名字.sql

5、配置nginx
切换到 sites-available 文件夹下。

cd /etc/nginx/sites-available

用 vim 打开这个文件夹下唯一的default文件,将 default 改变为下列内容,然后保存退出。

 server {
           listen 80 default_server;
           listen [::]:80 default_server;
   
           root /var/www/html;  # 这里nginx默认界面的存放位置
           index index.html; # 这里是nginx默认界面的文件名
           server_name xxx.xxx.xxx.xx; # 这里是公网ip地址   
           location / {
              include  uwsgi_params;
                  uwsgi_pass  127.0.0.1:8000; # 此处端口名要和uwsgi.ini对应位置一致
          }
          location /static {
              alias /home/项目名/static;
          }
          location /media {
              alias /home/项目名/media;
          }
  }

static 那里也要替换成你自己 Django 项目的 static 路径,media 同理换成你自己 Django 项目的 media 路径,这是媒体文件的文件夹。
6、启动项目
到项目根目录下,输入以下命令启动项目:

uwsgi --ini uwsgi.ini
service nginx restart

到此,项目可以被访问了!!!

:部署完成后遇到修改代码无效的情况,是因为没有重新启动uwsgi,首先在更改代码后终止uwsgi,命令如下:

killall -9 uwsgi

可以用bash ps -ef|grep uwsgi查看是否存在uwsgi进程。确定uwsgi进程结束后再次使用

uwsgi --ini uwsgi.ini

重启uwsgi服务,代码修改生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值