博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ubuntu 14.04 部署Django项目
阅读量:5014 次
发布时间:2019-06-12

本文共 7882 字,大约阅读时间需要 26 分钟。

一、购买服务器

  推荐 vultr的服务器,还可以_ _ _,链接:

  操作系统建议选 ubuntu 14.04 64位

二、购买域名

  链接:

三、安装相关软件

# 创建一个叫mu的用户root@localhost:~# useradd -m -s /bin/bash mu# 把新创建的用户加入超级权限组root@localhost:~# usermod -a -G sudo mu# 为新用户设置密码# 注意在输密码的时候不会有字符显示,接着敲即可root@localhost:~# passwd mu# 切换到创建的新用户root@localhost:~# su - mu# 切换成功mu@localhost:~$

 

   更新系统

mu@localhost:~$ sudo apt-get updatemu@localhost:~$ sudo apt-get upgrade

  安装Nginx、pip、virtualenv

mu@localhost:~$ sudo apt-get install nginxmu@localhost:~$ sudo apt-get install git python3 python3-pipmu@localhost:~$ sudo pip3 install virtualenv

 

   启动Nginx

mu@localhost:~$ sudo service nginx start

 

   在项目的配置文件中修改成如下:

DEBUG = FalseALLOWED_HOSTS = ['*']STATIC_URL = '/static/'#STATICFILES_DIRS = (#    os.path.join(BASE_DIR,'static'),#)# 加入下面的配置STATIC_ROOT = os.path.join(BASE_DIR, 'static')

 

   生成安装依赖文件,在manage.py目录下打开cmd运行以下命令

pip freeze > requirements.txt

  将项目推送到github上

  一台服务器可能部署多个网站,所有网站代码都放在 sites/ 目录下。

home/mu/    sites/        tianbaoo.fun/            env            blog-sky        ackblog/            env            ackblog        awmonline/            env            AwmOnlin

 

   上面是三个网站的文件,各自有各自的env和项目

   举例如何创建tianbaoo.fun以下的两个也是类似的创建方法。

mu@localhost:~$ mkdir -p ~/sites/tianbaoo.funmu@localhost:~$ cd ~/sites/tianbaoo.funmu@localhost:~/sites/tianbaoo.fun$ virtualenv --python=python3 env# 拉取项目文件mu@localhost:~/sites/tianbaoo.fun$ git clone https://github.com/tianbaoo/blog-sky.git# 激活虚拟环境并安装依赖mu@localhost:~/sites/tianbaoo.fun$ source env/bin/activate(env) mu@localhost:~/sites/tianbaoo.fun$ cd blog-sky/(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ pip install -r requirements.txt# 收集静态文件(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ python manage.py collectstatic# 生成数据库(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ python manage.py migrate# 创建超级用户(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ python manage.py createsuperuser

 

四、配置Nginx

  先在服务器的 /etc/nginx/sites-available/ 目录下新建一个配置文件,文件名我一般就设置为域名 

/etc/nginx/sites-available/tianbaoo.funserver {    charset utf-8;    listen 80;    server_name tianbaoo.fun;     location /static {         alias /home/mu/sites/tianbaoo.fun/blog-sky/static;     }    location / {         proxy_set_header Host $host;        # /tmp/tianbaoo.fun中的 tianbaoo.fun是sites目录下的文件夹名        proxy_pass http://unix:/tmp/tianbaoo.fun.socket;    }}

 

   多个网站项目时,在上面的文件里边多写几个server监听不同的端口即可,下面会有介绍。

   建立软连接

(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ sudo ln -s /etc/nginx/sites-available/tianbaoo.fun /etc/nginx/sites-enabled/tianbaoo.fun

 

   只能看到 Nginx 欢迎页面的问题:

    sites-enabled文件夹里默认的default文件中的配置覆盖了自己写的配置,导致配置不生效,把default文件删掉就可以正常

  

  安装gunicorn

(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ pip install gunicorn

 

   自动启动 Gunicorn

   写一个启动脚本,这样当服务器重启后能自动引导 Gunicorn 的启动。脚本位于 /etc/init/ 目录下,且脚本文件名必须以 .conf 结尾:

# /etc/init/gunicorn-tianbaoo.fun.confstart on net-device-up stop on shutdownrespawn setuid mu chdir /home/mu/sites/tianbaoo.fun/blog-sky #blog-sky.wsgi   blog-sky是wsgi.py所在的目录名
exec ../env/bin/gunicorn --bind unix:/tmp/tianbaoo.fun.socket blog-sky.wsgi:application

 

   用 start 命令启动 Gunicorn

(env) mu@localhost:~/sites/tianbaoo.fun/blog-sky$ sudo start gunicorn-tianbaoo.fun# 以后如果更新了代码,只要运行下面的命令重启一下 Nginx 和 Gunicorn 就可以使新的代码生效了:sudo service nginx reloadsudo restart gunicorn-tianbaoo.fun

 

五、一个服务器部署多个网站

  我们现在有三个网站项目文件夹:tianbaoo.fun、ackblog、awmonline,文件夹里对应着它们自己的虚拟环境和实际项目文件

home/mu/    sites/        tianbaoo.fun/            env            blog-sky        ackblog/            env            ackblog        awmonline/            env            AwmOnlin

 

  我们现在已经成功运行了tianbaoo.fun文件夹里的blog-sky项目,现在要来多添加ackblog和AwmOnline项目。

  下面先加ackblog项目

mu@localhost:~$ mkdir -p ~/sites/ackblogmu@localhost:~$ cd ~/sites/ackblogmu@localhost:~/sites/ackblog$ virtualenv --python=python3 env# 拉取项目文件mu@localhost:~/sites/ackblog$ git clone https://github.com/tianbaoo/ackblog.git# 激活虚拟环境并安装依赖mu@localhost:~/sites/ackblog$ source env/bin/activate(env) mu@localhost:~/sites/ackblog$ cd blog-sky/(env) mu@localhost:~/sites/ackblog/ackblog$ pip install -r requirements.txt# 收集静态文件(env) mu@localhost:~/sites/ackblog/ackblog$ python manage.py collectstatic# 生成数据库(env) mu@localhost:~/sites/ackblog/ackblog$ python manage.py migrate# 创建超级用户(env) mu@localhost:~/sites/ackblog/ackblog$ python manage.py createsuperuser

 

  在 /etc/nginx/sites-available/tianbaoo.fun文件里我们写了第一个项目blog-sky的server

  现在我们同样在里面写入第二个项目ackblog的server信息

# 这个文件里包含了三个项目的serverserver {    charset utf-8;    listen 80;    server_name 207.246.124.116;    location /static {    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/tianbaoo.fun.socket;    }}server {    charset utf-8;    listen 6060;    server_name 207.246.124.116;    location /static {        alias /home/mu/sites/awmonline/AwmOnline/static;    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/awmonline.socket;    }}server {    charset utf-8;    listen 5050;    server_name 207.246.124.116;    location /static {        alias /home/mu/sites/ackblog/ackblog/static;    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/ackblog.socket;    }}
View Code

 

  添加完server之后要在ackblog的虚拟环境中安装gunicorn

(env) mu@localhost:~/sites/ackblog/ackblog$ pip install gunicorn

  设置ackblog的自启动gunicorn脚本

# /etc/init/gunicorn-ackblog.confstart on net-device-up stop on shutdownrespawn setuid mu chdir /home/mu/sites/ackblog/ackblogexec ../env/bin/gunicorn --bind unix:/tmp/ackblog.socket ackblog.wsgi:application (env) mu@localhost:~/sites/ackblog/ackblog$ sudo start gunicorn-ackblog

  以后如果更新了代码,只要运行下面的命令重启一下 Nginx 和 Gunicorn 就可以使新的代码生效了:

sudo service nginx reloadsudo restart gunicorn-ackblog

  

  第三个项目awmonlin过程步骤和第二个的步骤是一样的,就是有些参数不同

mu@localhost:~$ mkdir -p ~/sites/awmonlinemu@localhost:~$ cd ~/sites/awmonlinemu@localhost:~/sites/awmonline$ virtualenv --python=python3 env# 拉取项目文件mu@localhost:~/sites/awmonline$ git clone https://github.com/tianbaoo/AwmOnline.git# 激活虚拟环境并安装依赖mu@localhost:~/sites/awmonline$ source env/bin/activate(env) mu@localhost:~/sites/awmonline$ cd AwmOnline/(env) mu@localhost:~/sites/awmonline/AwmOnline$ pip install -r requirements.txt# 收集静态文件(env) mu@localhost:~/sites/awmonline/AwmOnline$ python manage.py collectstatic# 生成数据库(env) mu@localhost:~/sites/awmonline/AwmOnline$ python manage.py migrate# 创建超级用户(env) mu@localhost:~/sites/awmonline/AwmOnline$ python manage.py createsuperuser

 

  在 /etc/nginx/sites-available/tianbaoo.fun文件里我们写了第一个项目blog-sky的server和第二个项目ackblog的server

  现在我们同样在里面写入第三个项目AwmOnline的server信息

server {    charset utf-8;    listen 80;    server_name 207.246.124.116;    location /static {    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/tianbaoo.fun.socket;    }}server {    charset utf-8;    listen 6060;    server_name 207.246.124.116;    location /static {        alias /home/mu/sites/awmonline/AwmOnline/static;    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/awmonline.socket;    }}server {    charset utf-8;    listen 5050;    server_name 207.246.124.116;    location /static {        alias /home/mu/sites/ackblog/ackblog/static;    }    location / {        proxy_set_header Host $host;        proxy_pass http://unix:/tmp/ackblog.socket;    }}
View Code

 

  添加完server之后要在awmonline的虚拟环境中安装gunicorn

(env) mu@localhost:~/sites/awmonline/AwmOnline$ pip install gunicorn

 

  设置awmonline的自启动gunicorn脚本

# /etc/init/gunicorn-awmonline.confstart on net-device-up stop on shutdownrespawn setuid mu chdir /home/mu/sites/awmonline/AwmOnlinexec ../env/bin/gunicorn --bind unix:/tmp/awmonline.socket AwmOnlin.wsgi:application (env) mu@localhost:~/sites/awmonline/AwmOnlin$ sudo start gunicorn-awmonline

 

  以后如果更新了代码,只要运行下面的命令重启一下 Nginx 和 Gunicorn 就可以使新的代码生效了:

sudo service nginx reloadsudo restart gunicorn-awmonline

 

转载于:https://www.cnblogs.com/guotianbao/p/8981605.html

你可能感兴趣的文章
Maven入门笔记
查看>>
iOS webView的常见属性和方法
查看>>
理解position:relative
查看>>
Codeforces Round #344 (Div. 2) Messager KMP的应用
查看>>
20145308刘昊阳 《Java程序设计》第4周学习总结
查看>>
js倒计时
查看>>
EasyUI datagrid 格式 二
查看>>
Android虹软人脸识别sdk使用工具类
查看>>
UI:基础
查看>>
浅谈 @RequestParam 和@PathVariable
查看>>
设计模式之---装饰器设计模式
查看>>
基于WordNet的英文同义词、近义词相似度评估及代码实现
查看>>
Equation漏洞混淆利用分析总结(上)
查看>>
shell学习1shell简介
查看>>
Qt 【无法打开 xxxx头文件】
查看>>
JAVA项目将 Oracle 转 MySQL 数据库转换(Hibernate 持久层)
查看>>
三层架构(我的理解及详细分析)
查看>>
Django模板语言相关内容
查看>>
前端开发工程师如何在2013年里提升自己【转】--2016已更新升级很多何去何从?...
查看>>
markdown语法测试集合
查看>>