ubuntu 14.04 部署Django项目
一、购买服务器
推荐 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 update
mu@localhost:~$ sudo apt-get upgrade
安装Nginx、pip、virtualenv
mu@localhost:~$ sudo apt-get install nginx
mu@localhost:~$ sudo apt-get install git python3 python3-pip
mu@localhost:~$ sudo pip3 install virtualenv
启动Nginx
mu@localhost:~$ sudo service nginx start
在项目的配置文件中修改成如下:
DEBUG = False
ALLOWED_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.fun
mu@localhost:~$ cd ~/sites/tianbaoo.fun
mu@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.fun server {
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.conf start on net-device-up
stop on shutdown respawn 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 reload
sudo 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/ackblog
mu@localhost:~$ cd ~/sites/ackblog
mu@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信息
# 这个文件里包含了三个项目的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;
}
}
添加完server之后要在ackblog的虚拟环境中安装gunicorn
(env) mu@localhost:~/sites/ackblog/ackblog$ pip install gunicorn
设置ackblog的自启动gunicorn脚本
# /etc/init/gunicorn-ackblog.conf start on net-device-up
stop on shutdown respawn setuid mu
chdir /home/mu/sites/ackblog/ackblog exec ../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 reload
sudo restart gunicorn-ackblog
第三个项目awmonlin过程步骤和第二个的步骤是一样的,就是有些参数不同
mu@localhost:~$ mkdir -p ~/sites/awmonline
mu@localhost:~$ cd ~/sites/awmonline
mu@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;
}
}
添加完server之后要在awmonline的虚拟环境中安装gunicorn
(env) mu@localhost:~/sites/awmonline/AwmOnline$ pip install gunicorn
设置awmonline的自启动gunicorn脚本
# /etc/init/gunicorn-awmonline.conf start on net-device-up
stop on shutdown respawn setuid mu
chdir /home/mu/sites/awmonline/AwmOnlin exec ../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 reload
sudo restart gunicorn-awmonline
ubuntu 14.04 部署Django项目的更多相关文章
- Ubuntu 14.04下Django+MySQL安装部署全过程
一.简要步骤.(Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的环境是 ...
- 【转】Ubuntu 14.04下Django+MySQL安装部署全过程
一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的 ...
- .Net Core 之 Ubuntu 14.04 部署过程
No.1 准备应用程序 1. 创建.Net Core Web项目 2. 使用VS2015发布 No.2 安装.Net Core for Ubuntu Ubuntu的安装就不介绍了,百度搜索一大堆.本人 ...
- ubuntu 14.04搭建PHP项目基本流程
首先准备需要安装东西的列表1.apache服务器,2.php,3.mysql,4.几个软件包的链接包,安装方式是以apt-get方式安装; 1.安装apache服务器: apt-get install ...
- Ubuntu 14.04 部署 CEPH集群
注:下文的所有操作都在admin节点进行 1.准备三台虚拟机,其中一台作为admin节点,另外两台作为osd节点,并相应地用hostname命令将主机名修改为admin,osd0,osd1,最后修改/ ...
- [django] Deploy Django Applications Using uWSGI and Nginx on Ubuntu 14.04
关键点1:chmod-socket=666 (mysite_uwsgi.ini) 关键点2 : 工程目录和虚拟环境目录搞清楚 几个参考: http://uwsgi-docs.readthedocs.i ...
- Ubuntu 14.04 LTS 下使用源码编译安装 Sagemath 6.7 x64 (小结)
原先博客放弃使用,几篇文章搬运过来 下载源码包 系统的最低要求: 6GB 硬盘 : 2GB RAM. 命令行工具: A C/C++ compiler: Since Sage builds its ow ...
- Ubuntu 14.04 上使用 Nginx 部署 Laravel
本教程将会涉及以下工具: Ubuntu 14.04 LTS PHP 5.5 MySQL Laravel 5.0 Nginx 参考文章:Ubuntu 14.04 上使用 Nginx 部署 Laravel ...
- nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!
前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...
随机推荐
- EasyPlayerPro(Windows)流媒体播放器功能介绍及应用场景
EasyPLyerPro(Windows)经过为期一个月的开发已经基本完成,虽然目前仍存在一些小问题,但是总体功能还是趋于比较稳定和强大的,下面对其功能和应用场景做简要介绍. 一.EasyPlayer ...
- file标签样式修改
1. 这是默认的file样式,无法修改,在网页中用它感觉非常不合群,大部分修改的办法就是把它隐藏,绝对定位一个文本框和一个按钮 这是修改后的样式,之后修改样式就是分别修改文本框和按钮样式了,就非常简单 ...
- python数据分析之:数据加载,存储与文件格式
前面介绍了numpy和pandas的数据计算功能.但是这些数据都是我们自己手动输入构造的.如果不能将数据自动导入到python中,那么这些计算也没有什么意义.这一章将介绍数据如何加载以及存储. 首先来 ...
- while 循环中的break continue pass 的用法
while break:跳出最近的循环 continue:跳到最近所在循环的开头处 pass:什么也不做,只是空占位语句,它本身与循环没什么关系,但属于简单的单个单词语句的范畴: pass 语句是无运 ...
- IDEA tomcat三步实现热部署
IDEA tomcat三步实现热部署 添加Artifacts选项 添加Artifacts选项,XXXwar 和 XXXwar exploded二选一,若要热部署须选后者. 设置tomcat部署方案 设 ...
- Java图像处理最快技术:ImageJ 学习第一篇
ImageJ是世界上最快的纯Java的图像处理程序. 它能够过滤一个2048x2048的图像在0.1秒内(*). 这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Ima ...
- .net 调用SAP RFC的几种方法
转自:http://www.cherpservice.com/pub/newsdetail.asp?Newsid=3613 第一种方式采用SAP.net Connector: 最新版本是3.,不开源, ...
- perl之创建临时文件夹遇到同名文件该咋办
当你在目录下进行一系列操作时,若要创建许多文件或者修改文件,可能会遇到许多麻烦的事.所以呢,新建一个文件夹,然后在这个文件夹下新建文件或者修改文件.假设,你的代码要在一个目录下新建一个文件夹,名为Tm ...
- NPM 与 Nodejs
安装了Nodejs之后,NPM也安装好了 如何知道当前是否已经安装Nodejs和NPM了呢? node -v //查看当前nodejs的版本 npm -v //查看当前npm的版本 NPM 初始化 n ...
- 在Linux下创建7种类型的文件
在测试的时候有时会需要每种类型的文件,在系统中进行搜索都会找到,当然最方便的还是手动创建它们进行测试使用. 普通文件: $ touch regular 目录: $ mkdir directory 符号 ...