一,centos6.9部署django

​ 部署套件:centos6.9+nginx+mysql+uwsgi+python3+django

​ 首先还是要明白这几个部分之间的关系(自己也是初学者,希望大家多指正):

​ 项目需求租了三年腾讯云的服务器,准备用这台服务器练练手,加做点自己想做的事情;并且申请了一个域名:数据处理研究。那么,让我们开始吧。

  1. 远程登陆

    使用大名鼎鼎的SecureCRT,这是一个自己拥有一个属于自己的世界的感觉,虽然这个世界现在还一穷二白。

  2. 安装lnmp

    • 下载 下载版lnmp(这里下载的是1.4),修改其中的lnmp.conf,变更数据库目录和网站目录。

      Download_Mirror='https://soft.vpser.net'
      
      Nginx_Modules_Options=''
      PHP_Modules_Options='' ##MySQL/MariaDB database directory##
      MySQL_Data_Dir='/home/wwwdata/mysql/var'
      MariaDB_Data_Dir='/home/wwwdata/mariadb/var'
      ##Default website home directory##
      Default_Website_Dir='/home/wwwroot/default' Enable_Nginx_Openssl='y'
    • 使用rz将压缩包上传到服务器,存入/tmp,进入/lnmp1.4,安装

      # 进入tmp目录
      cd /tmp # 上传
      rz # 解压
      tar xf lnmp1.4.tar.gz #安装
      cd lnmp1.4
      ./install.sh

      安装过程中mysql选择3,即安装MySQL 5.6.36,需要有1G以上的内存。设置MySQL密码存储引擎安装:Y

      PHP选择5,即PHP 5.6.31。

      内存收集器安装,直接回车

      安装时间还是挺长的,耐心等待(我这花了28min)。

  3. 安装python3

    • 进入/tmp/,执行以下命令

      cd /tmp/
      wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

      如果实在是慢,可以采用迂回的方式(链接按着ctrl打开,是不是很神奇?)

    • 下载完成后,解压

      tar -xzvf Python-3.6.4.tgz
    • 进入解压后的Python-3.6.4文件夹,依次执行以下命令

      cd Python-3.6.4
      ./configure --prefix=/usr/local/python3
      #将python3安装到/usr/local/python3/路径下
      make && make install
      ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
      ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
      #这两个ln命令建立链接,方便在终端直接使用python3和pip3命令
    • 如果需要更新pip,使用命令

      pip3 install --upgrade pip
  4. 安装virtualenv并使用虚拟环境

    • 执行命令:

      pip3 install virtualenv
      python3 -m venv /home/virtualenv/django
      # 创建名字为django的虚拟环境,之后进入虚拟环境,执行命令:
      cd /home/virtualenv/django/bin
      source activate
  5. 安装第三方库

    • 在django虚拟环境下,安装第三方库:

      • 首先进入虚拟环境下的tmp,之后创建 requirements.txt

        cd /tmp
        vi requirements.txt
      • 将下列第三方库的名称写入文件中

        diff-match-patch==20121119
        Django==2.0.1
        django-crispy-forms==1.7.0
        django-formtools==2.1
        django-import-export==0.6.1
        django-pure-pagination==0.3.0
        django-ranged-response==0.2.0
        django-reversion==2.0.12
        django-simple-captcha==0.5.6
        djangorestframework==3.8.2
        et-xmlfile==1.0.1
        future==0.16.0
        httplib2==0.9.2
        jdcal==1.3
        odfpy==1.3.6
        openpyxl==2.4.9
        Pillow==5.0.0
        pytz==2018.4
        PyYAML==3.12
        six==1.11.0
        tablib==0.12.1
        unicodecsv==0.14.1
        uWSGI==2.0.17
        xlrd==1.1.0
        xlwt==1.3.0

        vi使用(i进入INSERT模式,右键粘贴,ESC进入命令模式,进入末行模式,输入wq+回车保存退出)

      • pip安装

        pip install -r requirements.txt
      • 之后安装 mysqlclient==1.3.12

        pip install mysqlclient==1.3.12

        如果报错 /bin/sh: mysql_config: command not found,执行以下命令手动安装:

        cd /tmp
        
        wget http://mirrors.163.com/pypi/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/mysqlclient-1.3.12.tar.gz#sha256=2d9ec33de39f4d9c64ad7322ede0521d85829ce36a76f9dd3d6ab76a9c8648e5
        
        tar -xzvf mysqlclient-1.3.12.tar.gz
        cd mysqlclient-1.3.12
        vi setup_posix.py #修改setup_posix.py下,mysql_config.path = "mysql_config" 改成 mysql_config.path = #"/usr/local/mysql/bin/mysql_config",保存并退出:wq! python setup.py install
  6. 上传项目

    • 压缩test1项目,之后使用rz上传到/home/wwwroot/

      cd /home/wwwroot/
      rz
      tar -xzvf test1.tar.gz
    • 下载uWSGI,并设置软链接。uWSGI可提供动态连接服务,往往与nginx配合使用(nginx处理静态文件),组成服务器软件。

      浏览器——》服务器——》服务器软件(uWSGI+nginx)——》django

      安装过lnmp后,nginx已经装好了,详情可见 LNMP安装了哪些软件?安装目录在哪?

      pip3 install uwsgi
      ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
      • 测试样例

        • 创建test.py,进行如下编辑

          def application(env, start_response):
          start_response('200 OK', [('Content-Type','text/html')])
          return [b"Hello World"]

          之后运行指令:

          uwsgi --http :8001 --wsgi-file test.py
          # 相应的服务器的安全组要开放8001的入规则

          之后进入 http://analysis1.space:8001/ 可以看到

        • 释放某一个端口

          netstat -lnp|grep 8001	#找到某一个端口的应用程序
          tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN ?????/java kill -9 ????? #结束对应的应用程序
    • 创建并启用test1_uwsgi.ini

      vi test1_uwsgi.ini
      
      # 在test1_uwsgi.ini中进行如下配置
      [uwsgi]
      #项目目录
      chdir=/home/wwwroot/test1
      # 启动uwsgi的用户名和用户组
      uid=www
      gid=www
      # 指定项目的application
      module=test1.wsgi
      # 指定sock的文件路径
      socket= :8001
      # 启用主进程
      master=true
      # 进程个数
      workers=2
      vacuum=true
      #环境
      virtualenv = /home/virtualenv/django
      # 序列化接受的内容,如果可能的话
      thunder-lock=true
      # 启用线程
      enable-threads=true
      # 设置自中断时间
      harakiri=30
      # 设置缓冲
      post-buffering=1028
      # 设置日志目录
      daemonize=/home/wwwroot/test1/uwsgi.log # 启动UWSGI命令:
      uwsgi --ini test1_uwsgi.ini
  7. 连接uwsgi与nginx

    • 创建test1.conf

      vim /usr/local/nginx/conf/vhost/test1.conf
      
      # 输入以下内容
      upstream django {
        server 127.0.0.1:8001;
      }
      server {
        listen 80;
        server_name analysis1.space;
        charset utf-8;
        client_max_body_size 1G;
        location /media {
          alias /home/wwwroot/test1/media;
        }
        location /static {
          alias /home/wwwroot/test1/static;
        }
         location / {
          root /home/wwwroot/test1;
          uwsgi_pass django;
          include uwsgi_params;
        }
      }
    • 分配用户组、文件读取权限、重启nginx

      chown -R www:www /usr/local/nginx/conf/vhost/test1.conf
      chmod -R 755 /usr/local/nginx/conf/vhost/test1.conf
      /etc/init.d/nginx restart

参考

  1. bilibili万岁1-感谢 蜡笔凡鑫
  2. bilibili万岁2-感谢 再敲一行代码
  3. 与1相对应的博客
  4. lnmp一键安装包
  5. 重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  6. python官网
  7. 在SecureCRT上怎么下载/上传文件
  8. LNMP安装了哪些软件?安装目录在哪?

【Linux学习笔记1】-centos6.9部署django的更多相关文章

  1. Linux学习笔记之CentOS6.9 防火墙的关闭以及开启

    有的时候,我们需要对系统的防火墙进行操作,今天小编就给大家讲解一下如何开启以及关闭CentOS6.9系统下的防火墙. 输入:cat /etc/issue   查看版本 (一)通过service命令 s ...

  2. Linux~学习笔记目录索引

    回到占占推荐博客索引 本篇文章是对自己学习Linux及在它的环境下部署工具的一个总结,以方便自己查阅,也给他人一个帮助,本文章同时会不断的更新,欢迎大家订阅! 本目录包括的内容会包括linux基础命令 ...

  3. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  4. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

  5. Linux学习笔记(一)2015.4.13

    研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...

  6. 20160127 linux 学习笔记

    Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...

  7. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  8. Linux学习笔记-林耐斯Notes-Linux就该这么学

    Linux学习笔记... 参考的优秀Linux网站: http://www.w3cschool.cn/linux/ http://www.linuxeye.com/ http://linux.vbir ...

  9. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

随机推荐

  1. TypeScript keyof typeof All In one

    TypeScript keyof typeof All In one keyof typeof refs https://www.typescriptlang.org/docs/handbook/re ...

  2. taro ref & wx.createSeletorQuery

    taro ref & wx.createSeletorQuery https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.cr ...

  3. svg rect to polygon points & points order bug

    svg rect to polygon points & points order bug https://codepen.io/xgqfrms/pen/vYOWjYr?editors=100 ...

  4. js 获取包含emoji的字符串的长度

    let emoji_exp = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ ...

  5. 一次"内存泄漏"引发的血案

    本文转载自一次"内存泄漏"引发的血案 导语 2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写.重编发布一段时间后, ...

  6. 微信小程序(七)-项目实例(原生框架 MINA转云开发)==02-云开发-配置

    云开发:1.就是用云函数的型式来使用云存储和云数据库完成各种操作!     2.只关注调什么函数,完成什么功能即可,无需关心HTTP请求哪一套!     3.此模式不代表没有服务器,只是部署在云环境中 ...

  7. SpringBoot自定义注解

    1.注解的概念 注解是一种能被添加到java代码中的元数据,类.方法.变量.参数和包都可以用注解来修饰.注解对于它所修饰的代码并没有直接的影响. 2.注解的使用范围 1)为编译器提供信息:注解能被编译 ...

  8. python类的内部方法

    目录 一.绑定方法与非绑定方法 1.绑定方法 2.非绑定方法 二.property 1.什么是property? 2.为什么要用property? 3.如何使用property? 三.isinstan ...

  9. pyinstaller打包exe运行失败

    使用Pyinstaller来打包自己开发的软件时遇到的几个问题及解决方法.工具主要功能是数据分析,使用机器学习算法完成数据训练和预测功能.主要用到了两个学习库keras和sklearn,所以说在打包时 ...

  10. 第十届蓝桥杯省赛-试题E: RSA 解密

    试题E: RSA 解密 这里涉及到很多数论的知识:质因子分解,扩展欧几里得算法,快速幂算法,利用快速乘算法求解快速幂(mod太大导致不能直接乘,而是需要使用加法来替代乘法) 另外还需要注意扩展欧几里得 ...