在Ubuntu16.04上使用uWSGI和nginx部署Django项目

    前段时间简单学习了一下Django框架,跟着网上的视频和文档写了一个简单的博客想把它部署到我的服务器上。

    直接上步骤吧。

1、更新源
sudo apt-get update
sudo apt-get upgrade

2、修改系统地Python默认版本

Ubuntu自带Python2和Python3,所以不用再安装Python3。但是系统默认版本是2,所以要换成3。

查看系统python默认版本

python -V

python 2.7.12  默认是2.

修改为python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

查看一下
python -V
python 3.5.2 ok了,默认为Python3了。

3、安装pip3
sudo apt-get install python3-pip

4、安装Django以及uwsgi

pip3 install Django
pip3 install uwsgi

5、安装nginx
apt-get install nginx
访问域名,出现欢迎界面就安装成功了

6、安装ubuntu桌面系统

这一步看需要执行,我是为了在服务器上测试项目方便查看安装个桌面。

1)apt-get install ubuntu-desktop

2)vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
   修改为:
    [Seat:*]
    user-session=ubuntu
    greeter-show-manual-login=true
    allow-guest=false
3)vim /root/.profile
  修改为:
 # ~/.profile: executed by Bourne-compatible login shells.
  if [ "$BASH" ]; then
    if [ -f ~/.bashrc ]; then
      . ~/.bashrc
    fi
  fi
tty -s && mesg n || true

重启
7、 安装MYSQL

Django自带的sqlite性能较差,我用的是MySQL数据库,所以要安装。

sudo apt-get install mysql-server mysql-client

sudo apt-get install libmysql-dev    //这个好像没有用。

sudo apt-get install libmysqlclient-dev

sudo apt-get install python-dev

pip3 install mysqlclient


安装过程中需要设置密码。

验证一下,命令:mysql -uroot  -p

输入密码后就进入MySQL数据库管理系统了。

运行show databases; 查看到当前安装的数据库

顺便把项目要用的数据库建立一下:create database djangoblog;

再次show databases;


8、部署django项目
pip3 install 你需要用到的库

进入项目目录

执行:
python3 manage.py makemigrations
python3 manage.py migrate

创建超级用户

执行:
python3 manage.py createsuperuser

收集静态文件
执行: 
python3 manage.py collectstatic --noinput
python3 manage.py compress --force

开始运行:

执行: python3 manage.py runserver

浏览器打开: http://127.0.0.1:8000/ 。


9、部署uwsgi服务器
pip3 instll uwsgi

测试uWSGI是否正常,在项目目录中创建一个测试用的Python文件uwsgi_test.py
def application(env, start_response):
        start_response('200 OK',[('Content-Type', 'text/html')])
        return (b'Hello world' )

测试一下,在浏览器中访问9000端口,应该看到Hello world字样

uwsgi --http 127.0.0.1:9000 --wsgi-file uwsgi_test.py

10、在项目目录下新建uwsgi.ini
[uwsgi]
http=127.0.0.1:8000
chdir=/home/zxy/DjangoBlog/
master=true
processes=4
threads=2
module=DjangoBlog.wsgi

通过下面命令同样可以启动uWSGI加载Djiango项目

uwsgi --ini uwsgi.ini

访问127.0.0.1:8000 成功运行项目

11、用nginx代理,让我们可以通过域名访问项目
修改uwsgi.ini
[uwsgi]
http=127.0.0.1:8000
socket = /home/zxy/DjangoBlog/DjangoBlog.sock
chdir = /home/zxy/DjangoBlog
wsgi-file = DjangoBlog/wsgi.py
#touch-reload = /home/zxy/DjangoBlog/reload
processes = 2
threads = 4
chmod-socket = 664
chown-socket = zxy:www-data
vacuum = true

在/etc/nginx/sites-available下新建一个DjangoBlog.conf,文件名你根据自己情况取,其实叫什么没关系,xxx.conf这种形式就行。然后复制一份到/etc/nginx/sites-enabled。可以用命令 cp。
内容为
server {
    listen      80;
    server_name www.XXX.top;  //你的域名
    charset     utf-8;
    client_max_body_size 75M;
    location /media  {
        alias /home/zxy/DjangoBlog/media;
    }
 
    location /static {
        alias /home/zxy/DjangoBlog/collectedstatic;
    }
 
    location / {
        uwsgi_pass  unix:///home/zxy/DjangoBlog/DjangoBlog.sock;
        include     /etc/nginx/uwsgi_params;
    }
}



主要内容都配置好了

打开一个终端运行:sudo uwsgi --ini uwsgi.ini

再打开一个运行:sudo service nginx start

ok,通过域名访问一下试试。

因为这两天在赶论文,这篇学习笔记写的不够详细。配置过程中还遇到权限不够等一些小问题,这些都不难解决,有时间再完善一下这篇笔记。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值