一、基础环境配置
   1、Linux安装配置
       1、设置IP地址

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 # 网卡名
BOOTPROTO=static # 静态指定IP地址,也可以动态,但是建议是静态。
ONBOOT=yes # 是否是开机启动
TYPE=Ethernet # 类型(默认即可)
IPADDR=192.168.31.123 # IP地址
NETMASK=255.255.255.0 # 掩码
GATEWAY=192.168.31.1 # 网关

  2、 ssh DNS解析 (为了安全-判断IP是否有效IP)

      # /etc/ssh/sshd_config  # UseDNS no
         3、 iptables 防火墙关闭

     /etc/init.d/iptables stop  # 关闭iptables
[root@localhost ~]# chkconfig iptables off # 关闭机起动级别(开机不启动)
[root@localhost ~]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

       4、selinux 安全模块-用不到关闭
                  # vim /etc/selinux/config    # SELINUX=disabled
           5、设置dns

  [root@localhost ~]# cat /etc/resolv.conf
nameserver 192.168.31.1 # nameserver Dns地址和真机保持一致即可

   6、注意事项:
           #/etc/udev/rules.d/70-persistent-net.rules  ( 6.2版本和ubuntu 会有这个文件,这个文件是记录网口和 MAC地址关系的)
  2、Linux 下Python安装[用是升级不影响现有Python/多版本共存]
       1、下载Python

      略
       2、安装Python依赖包
              yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
            3、解压和安装软件包
              tar -xzvf /opt/Python-3.6.1.tgz -C /usr/local/src/  # src目录是存放源码的目录解压到src目录( .tar.xz 文件解压:xz -d   ***.tar.xz   然后 tar -xvf  ***.tar    或者tar xvJf  ***.tar.xz直接解压)
              cd /usr/local/src/Python-3.6.1
              ./configure --prefix=/usr/local/python3
              make && make install
            4、 添加环境变量
              vim /etc/profile
              export PATH="$PATH:/usr/local/python3/bin"
              source ../profile  # 重载文件
              echo $PATH  # 查看当前环境变量是否添加
  3、代码上传 xshell / Git 简单的Git命令
        yum -y install git
        git clone 你的git url

二、uwsgi+nginx部署

  1、上传项目至目标服务器并安装项目所需的模块,保证项目能正常通过runserver启动并且检查没有问题。
    python3 manage.py runserver 172.18.9.66:80

    注释:如果启动出现错误那么很有可能是数据库没有初始化,所以python3 manage.py migrate初始化下数据库即可
  2、安装uwsgi 并使用uWSGI启动这个服务(执行这条命令的时候:一定要在这个项目目录中~ )
    uwsgi --http 192.168.31.123:80 --file teacher/wsgi.py --static-map=/static=static

    

  3、使用配置文件启动uWSGI[ini]

   [uwsgi]
socket=8080
# 项目目录
chdir=/opt/project_teacher/teacher/
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 指定项目的application
module=teacher.wsgi:application
# 指定sock的文件路径
socket=/opt/project_teacher/script/uwsgi.sock
# 启用主进程
master=true
# 进程个数
workers=5
pidfile=/opt/project_teacher/script/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/opt/project_teacher/script/uwsgi.log 注释:启动:uwsgi --ini uwsgi.ini
    ps -ef |grep -i uwsgi
   关闭:uwsgi --stop uwsgi.pid
     只要启动uwsgi,就会自动生成uwsgi.ini和uwsgi.pid两个文件
   这个脚本的目的并不能使我们访问django服务,而是使nginx监控该配置文件端口,然后把客户端访问的请求转发到该端口的django上。

  4、设置Nginx的yum源

vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
# 下面这行centos根据你自己的操作系统修改比如:OS/rehel
# 6是你Linux系统的版本,可以通过URL查看路径是否正确
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

  5、安装nginx

yum -y install nginx
# 添加配置文件
vim teacher.conf # 这个名字随便起,最好是和项目一个名字
server {
listen 80; #django服务端口,端口转发
server_name 127.0.0.1 ;
access_log /var/log/nginx/access.log main;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 指定项目路径uwsgi
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/opt/project_teacher/script/uwsgi.sock;
}
# 指定静态文件路径
location /static/ {
alias /opt/project_teacher/teacher/static/;
index index.html index.htm;
} }

  6、添加默认静态文件目录

vim ../teacher/teacher/settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static_all") python3 manage.py collectstatic --noinput

  7、Nginx配置静态文件简单修改

    将nginx中的配置文件中的static改为static_all

  8、添加管理脚本

cd /etc/init.d/
vim manage_teacher
#! /bin/sh
# chkconfig: 345 85 15
# 上面一行注释:哪些Linux级别需要启动manage_teacher(3,4,5);启动序号(85);关闭序号(15)。
# description: manage script is the teacher daemon.
# Author: luotianshuai
# 指定项目目录
PROJECT_DIR="/opt/project_teacher/teacher"
# 指定脚本目录在哪里
SCRIPTS_DIR="/opt/project_teacher/script"
# 描述
DESC="teacher daemon"
# 名称
NAME="teacher"
# 脚本名称
SCRIPT_FILENAME="manage_teacher.sh"
# 脚本目录名称
SCRIPTNAME=`pwd`/$SCRIPT_FILENAME # PID
PID="uwsgi.pid" # 启动函数
d_start(){
# 进入到项目目录
cd $SCRIPTS_DIR
# 判断这个PID是否存在
if [ ! -f $PID ];then
echo -e "\n\033[34m$NAME项目启动中........\033[0m"
# 如果不存在执行
uwsgi --ini uwsgi.ini
killall nginx
/etc/init.d/nginx start
# 自动收集静态文件
cd $PROJECT_DIR && python3 manage.py collectstatic --noinput
echo -e "\n\033[32m$NAME 项目启动完成........\033[0m"
exit 0
fi
echo -e "\n\033[33m$NAME 项目已启动请勿重复启动\033[0m"
}
# 关闭函数
# 关闭项目
d_stop(){
# 进入脚本目录
cd $SCRIPTS_DIR
# 判断这个pid文件是否存在
if [ ! -f "uwsgi.pid" ];then
# 这个项目已经关闭了
echo -e "\n\033[33m$NAME 项目已经关闭了请先启动\033[0m"
fi
echo -e "\n\033[34m$NAME 项目关闭中........\033[0m"
echo -e "\nStop $DESC: $NAME"
# 如果没有关闭
uwsgi --stop uwsgi.pid
# 是否停掉Nginx根据实际需要来操作~~!因为Nginx有对静态文件缓存[注意]
killall nginx
/etc/init.d/nginx start
echo -e "\n\033[32m$NAME 项目关闭完成........\033[0m"
} d_restart(){
d_stop
sleep 1
d_start
} case "$1" in
start)
echo -e "\nstarting $DESC: $NAME"
d_start
;;
stop)
echo -e "\nStop $DESC: $NAME"
d_stop
;;
restart)
echo -e "\nRestart $DESC: $NAME"
d_restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac

  9、设置开机自启动

# 添加服务
chkconfig --add manage_teacher
# 开机启动
[root@localhost init.d]# chkconfig manage_teacher on
# 查看启动级别
[root@localhost init.d]# chkconfig --list manage_teacher
manage_teacher 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 然后就可以通过命令
[root@localhost ~]# service manage_teacher start
[root@localhost ~]# service manage_teacher stop
[root@localhost ~]# service manage_teacher restart

uwsgi+nginx项目上线的更多相关文章

  1. Diango + uwsgi + nginx 项目部署(可外网访问)

    自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 安装Nginx: #安装n ...

  2. Django+Uwsgi+Nginx项目部署文档

    一.基本环境搭建 1)查看服务器 [root@Myjumpserver ~]# cat /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targ ...

  3. docker简单使用+django+uwsgi+nginx项目部署

    使用docker 搭建 centos7 环境: 主机环境:windows 10专业版 一.安装docker Hub.docker.com官网下载 docker for windows 安装完成后,任务 ...

  4. django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从

    一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.d ...

  5. 使用uWSGI+nginx部署Django项目

    最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...

  6. django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

    1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压 ...

  7. 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署

    准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...

  8. [py]django上线部署-uwsgi+nginx+py3/django1.10

    https://github.com/lannyMa/django-uwsgi-nginx.git 单机调试启动-确保项目代码没问题 - 克隆代码进入项目 git clone https://gith ...

  9. Django+uwsgi+nginx+angular.js项目部署

    这次部署的前后端分离的项目: 前端采用angular.js,后端采用Django(restframework),他俩之间主要以json数据作为交互 Django+uwsgi的配置可以参考我之前的博客: ...

随机推荐

  1. Atitit.python web环境的配置 attilax 总结

    Atitit.python web环境的配置 attilax 总结 1. 下载modpython/1 1.1. 安装python2.5.11 1.2. 安装modpython1 2. 设置py文件的u ...

  2. java中Calendar.getInstance()和new Date()的差别是什么?

    java中Calendar.getInstance()和new Date()的差别如下: Calendar.getInstance()是获取一个Calendar对象并可以进行时间的计算,时区的指定ne ...

  3. C# 子类实例化过程

    刚研究了一下C#子类实例化的过程. 首先我遇到了如下一个问题: 有类A,里面写了一个有参的构造函数,并没有提供默认的无参构造函数.现在类B继承了类A,没有写任何的构造函数. 这时如果想实例化类B就会产 ...

  4. 配置Redmine的邮件通知功能

    依据<Windows下安装Redmine 2.5.2不全然指南 >一文,我们搭建主要的 Redmine 平台.如今是时候做进一步的配置了. 作为一个项目管理平台,必须能够通知项目成员有关项 ...

  5. Java并发编程(三)概念介绍

    在构建稳健的并发程序时,必须正确使用线程和锁.但是这终归只是一些机制.要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问. 对 ...

  6. nginx+python+fastcgi环境配置(flup版本)

    昨天花了一整天的时间研究搭建了nginx+python+fastcgi环境,并测试没问题,由于是第一次,并且参考了网上很多东西,网上也有很多,但还是把自己的过程记录下. 主要感谢这位兄弟的文章给了我很 ...

  7. 深度历险:Redis 内存模型详解

    https://mp.weixin.qq.com/s/Gp6Ur7omGY6ZqDWygU2meQ Redis 是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说 Redi ...

  8. OC 内存管理-02 autorelease 概念 以及用法

    (1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的 ...

  9. pycharm2018.1.4激活破解方法与汉化包-2018年6月19日

    记录下来备用,顺便分享给大家,有能力的还是希望能够支持正版!支持正版!支持正版! 方法1:激活服务器,最简单快速(截止2018年6月19日可用) 在激活Jetbrains旗下任意产品的时候选择激活服务 ...

  10. execute,executeQuery和executeUpdate的区别

    在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdate execute执行增删改查操作 execute返回的结果是个boolean型,当返回的是t ...