0.准备工作

在一台全新的服务器中新建用户以及用户的工作目录,之后的操作都以这个用户的身份进行,而不是直接用root。

举个栗子:

在服务器下新建用户rinka并赋予sudo权限

1) root登陆,sudo useradd rinka  新建用户rinka

2) sudo passwd rinka  给用户rinka设置密码

3) adduser rinka sudo  将用户rinka加入sudo组

4) cd /home  进入home目录

5) mkdir rinka  在home下新建目录rinka

6) chown rinka rinka  将/home/rinka目录的所有者改为rinka

7) su - rinka 切换到用户rinka登录

1.安装python

我使用的是anaconda来管理python包

1) 从anaconda官网下载Anaconda3-4.11-Linux-x86.64.sh,放到/home/rinka目录下

2) 安装anaconda3,运行bash /home/rinka/Anaconda3-4.11-Linux-x86.64.sh

3) 安装过程中可以选yes,自动在~/.bashrc中添加~/.anaconda3/bin

4) 运行source ~/.bashrc

注意:

如果定义的.bashrc不工作,原因是shell指向的是dash而不是bash。
要知道自己的/bin/sh指向何种解释器,可以用 ls /bin/sh -al 命令查看:
$ ls /bin/sh -al
 
lrwxrwxrwx 1 root root 4 11月 16 15:33 /bin/sh -> dash
以上结果就表示当前系统用的是dash解释器。
 
切换dash到bash很简单,运行 dpkg-reconfigure dash,然后选择 "No"。

2.安装mysql

1) 下载mysql-apt-config_0.7.3-1_all.deb,放到/home/rinka目录下

2) sudo dpkg -i mysql-apt-config_0.7.3-1_all.deb

3) sudo apt-get update

4) sudo apt-get install mysql-server

5)初始mysql密码为空,mysqladmin -u root password 设置密码

3.安装nginx、gunicorn、supervisor

1)sudo apt-get install nginx

2)pip install gunicorn

3)sudo apt-get install supervisor

4.安装django相关包

1)conda install django

2)conda install pymysql

5.配置gunicorn

1)在django项目star根目录下创建gunicorn.conf

# 指定workers的数目,使用多少个进程来处理请求(workers数量=CPU*2+1)
workers = 3
# 绑定本地端口
bind = '127.0.0.1:8000’
 
2)使用gunicorn.conf中的配置运行gunicorn,进入django项目start的根目录,运行以下命令来检验配置是否正确

gunicorn star.wsgi:application -c gunicorn.conf
 
3)我们可以使用nohup来使gunicorn一直运行django项目(不推荐)
nohup gunicorn star.wsgi:application -b 127.0.0.1:8000 --reload&
但这样做很繁琐,每次重新部署项目都要kill原来的进程,然后再起一个新的进程。推荐使用下面的supervisor来管理gunicorn
 
 
6.配置supervisor来管理gunicorn进程
1)superviosr通过配置文件来设置被监管的程序,一般配置文件都放置在/etc/supervisor/conf.d路径下面。
此处我们创建一个名为star.conf的配置文件:
[program:star]
command=/home/rinka/anaconda3/bin/gunicorn star.wsgi:application -c /home/rinka/star/gunicorn.conf
directory=/home/rinka/star
user = rinka
stdout_logfile = /var/log/supervisor/star.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

2)日志文件需要我们手动创建一下:

cd /var/log/supervisor
touch star.log
 
3)设置好上面的文件以后,我们可以通过supervisorctl工具来启用这些设置了:

$ sudo supervisorctl reread
star: available
$ sudo supervisorctl update
star: added process group
 
4)现在你可以start,stop或者restart你的进程了
$ sudo supervisorctl status star
star RUNNING pid 18020, uptime 0:00:50
$ sudo supervisorctl stop star
star: stopped
$ sudo supervisorctl start star
star: started
$ sudo supervisorctl restart star
star: stopped
star: started

5)当supervisorctl启动app失败,显示ERROR (abnormal termination),使用以下命令查看错误信息

$ sudo supervisorctl tail <APP_NAME>
 
 
7.配置nginx的80端口
1)编辑/etc/nginx/sites-enabled/default
注意:/etc/nginx/sites-enabled/目录下只保留一个配置文件
 
server {
       listen 80;
       server_name  www.rinka.site;

       location / {
           add_header Access-Control-Allow-Origin "*";
           include proxy_params;
           proxy_pass http://127.0.0.1:8000;
       }

       location /static/{
           root /var/www;
       }

       location /media/{
           root /var/www;
       }
}

2)检查nginx配置文件是否正确:sudo nginx -t

3)开启nginx:sudo service nginx start

给我一台全新的服务器,使用nginx+gunicorn+supervisor部署django的更多相关文章

  1. ubuntu服务器上用Nginx和Uwsgi部署django项目

    开发环境:ubuntu系统,python3环境 django项目目录: fast_foot 为项目根目录,app为项目应用 现在,我们登陆远程服务器 安装Nginx 安装好了,我们看一下nginx的配 ...

  2. nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!

    前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...

  3. 中小企业上云首选,华为云全新云服务器S6性能评测分析

    转: 中小企业上云首选,华为云全新云服务器S6性能评测分析 [小宅按]今天,华为云全新弹性云服务器ECS通用计算型云服务器S6(以下简称为"华为云S6云服务器")正式发布,至顶网云 ...

  4. 使用Java管理千台规模Linux服务器_入门

    http://www.oschina.net/code/snippet_222919_11734 代码分享 当前位置: 代码分享 » Java  » 网络编程 搜 索   [饶过] 使用Java管理千 ...

  5. 搭建一台deeplearning的服务器

    在计算机时代的早期,一名极客的满足感很大程度上来源于能DIY一台机器.到了深度学习的时代,前面那句话仍然是对的. 缘起在2013年,MIT科技评论将深度学习列为当年十大科技突破之首.其原因在于,模型有 ...

  6. 为一个支持GPRS的硬件设备搭建一台高并发服务器用什么开发比较容易?

    高并发服务器开发,硬件socket发送数据至服务器,服务器对数据进行判断,需要实现心跳以保持长连接. 同时还要接收另外一台服务器的消支付成功消息,接收到消息后控制硬件执行操作. 查了一些资料,java ...

  7. 在阿里云服务器windows server2012r iis上部署.net网站

    先说一堆废话:之前在阿里云上租了一个服务器,也配置了相关的环境,然后准备把自己手上的一个小网站挂上去,就按照我的上篇博客记载的方法把发布好的网站发布到服务器的iis上,结果发布之后死活访问不了,始终显 ...

  8. 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站

    如何在IIS上发布网站   本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...

  9. 阿里云轻量级服务器和NGINX部署Django项目

    部署条件: 1.一台阿里云服务器(本人的是CentOS系统的服务器) 2.已经构建好的项目 3.服务器上安装并配置Nginx 首先第一步:在服务器上安装并配置Nginx 进入服务器 $ ssh roo ...

随机推荐

  1. Java生成文件夹

    Java生成文件夹 1.说明 判断文件夹是否存在,如果不存在就创建该文件夹,并打印其路径:如果存在,打印其路径 2.实现源码 /** * @Title:BuildFolder.java * @Pack ...

  2. MyEclipse10中配置WebLogic10

    MyEclipse10中配置WebLogic10 1.双击打开MyEclipse10,依次操作"Window--->Preferences" 2.在左侧菜单中找到" ...

  3. TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClick ...

  4. Flex上传文件报“Error #2038”

    1.错误描述 ioerror: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 t ...

  5. AJAX跨域问题总结

    跨域是什么? 首先说下同源,同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同.而跨域就是不同源 ! 能够进行跨域的请求 一般a,img,link[rel=stylesheet], ...

  6. class-决策树Decision Tree

    顾名思义,决策树model是树形结构,在分类中,表示基于特征对实例进行分类的过程.可以认为是"if-else"的合集,也可以认为是特征空间,类空间上条件概率分布.主要优点是分类速度 ...

  7. 新建.Net Core应用程序后引用项一直黄色感叹号怎么办?

    我们在vs中创建.Net Core应用程序后,引用项可能出现黄色感叹号,正常情况下,这种黄色感叹号时能在项目创建成功之后迅速消失的,可也有些时候一直不消失,怎么办? 我们可以选中异常的项目,然后右键菜 ...

  8. JS对select动态添加options操作(主流浏览器兼容)

    之前项目中,遇到一个表单提交的页面,里面有多级下拉框联动的复杂逻辑,因此当时在做的过程中也是学到了不少容易出现问题的地方,下面就整理下当时遇到的一些关于下拉框的操作,并指出其中的一些注意点和坑: 有如 ...

  9. 在实训时做的项目出现的ajax json数据传送的问题

    json数据在前后端数据交互的时候非常常见,但是大部分人对json都么有系统的学习过,所以就会出现一些很简单的问题却要非很大劲去解决. 在用json传递数据的时候属性必须用双引号括住,一般如果在进行字 ...

  10. GridView添加事件监听和常用属性解析

    1. 使用流程 graph LR 准备数据源-->新建适配器 新建适配器-->绑定数据源 绑定数据源-->加载适配器 2. 常用属性 android:columnWidth:每一列的 ...