Python+Django+mysql+redis+wsgi+Nginx项目部署到服务器Centos6.5

环境

  • 全新的CentOS6.5(腾讯云服务器)
  • Python3.6
  • MySql5.7
  • Django 2.0
  • Wsgi
  • Nginx
  • Redis

开始

1. 准备一个CentOS 6.5服务器

在这里插入图片描述

2.安装Python3.6
  1. 到官网下载Python3.6的源码包(注意是源码包,不是win osx)
https://www.python.org/
  1. 借助Xptf工具(也可以用其他工具)把刚刚下载好的Python源码包,上传到服务器上
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 在centos安装Python依赖包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
  1. 解压Python( /opt/Python-3.6.4.tgz 是Python源码包的存放路径 )
tar -xzvf /opt/Python-3.6.4.tgz -C /usr/local/src/

在这里插入图片描述

  1. 进入解压后的目录
cd /usr/local/src/

在这里插入图片描述

  1. 检测
    在/usr/local/src/Python-3.6.4下输入:
./configure --prefix=/usr/local/python3

在这里插入图片描述

  1. 安装Python
make && make install

在这里插入图片描述
在这里插入图片描述
安装完成

  1. 永久添加环境变量

进入/etc/profile.d/ 新建python3.sh文件,在python3.sh文件中添加export PATH="$PATH:/usr/local/python3/bin"

cd /etc/profile.d/
vi python3.sh
export PATH="$PATH:/usr/local/python3/bin"

在这里插入图片描述
在这里插入图片描述
9. 重载环境变量

source ../profile

在这里插入图片描述
安装Python到此结束 !!!

3.安装mysql

安装mysql文档,点这里

4.把项目拖到服务器上(利用Xftp工具)
  1. 安装项目所需要的包

因为我把需要安装的包放到requirements.txt文件中,所以只要执行下面的代码,就能全部安装(也可以一个一个的pip安装)
在这里插入图片描述

pip3 install -r requirements.txt

在这里插入图片描述

5.安装wsgi
pip3 install uwsgi

在这里插入图片描述
成功安装Wsgi

6.在mysql中创建数据库
  1. 在django的项目中的settings.py文件中把mysql配置好(数据库名:api_service 名字任意起)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'api_service',
        'USER': 'root',
        'PASSWORD': 'r',
        'HOST': '127.0.0.1',
        'PORT': 3306
    }
}
  1. 在服务的mysql中创建数据库(名字和settings.py中必须一致)

    • 进入mysql

      mysql -u root -p
      
    • 创建数据库(我用的名字是:api_service,和settings.py保持一致)

      mysql -u root -p
      

    在这里插入图片描述

8.安装redis
  1. 下载redis / 解压 /安装

    wget http://download.redis.io/releases/redis-4.0.2.tar.gz
    

在这里插入图片描述

tar xzf redis-4.0.2.tar.gz
cd redis-4.0.2
make
make test

进入src目录执行启动命令

cd src
./redis-server

在这里插入图片描述
新开个终端,进入到src文件夹,执行命令
在这里插入图片描述

./redis-cli

redis的基本使用

# 插入数据
SET key value
# 查询数据
get key

在这里插入图片描述

Redis完成 !!!

  1. 在django的项目中的settings.py文件中把redis配置好
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}   #最大连接数
        }
    }
}
  1. 在django中如何使用redis请看另一篇文档
    redis在django中的基本使用,点我
9.尝试通过django自带web服务器启动项目

进到项目所在的目录下
在这里插入图片描述

python3 manage.py  makemigrations
python3 manage.py  migrate
python3 manage.py runserver 0.0.0.0:8888

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以正常访问我的项目接口

10.配置Nginx(一键配置)
需要注意一处地方:
  • 把脚本放到和项目同级目录下
需要修改三处地方
  1. 修改IP地址
SERVER_NAME="192.144.xxx.xxx" #也可以是域名
  1. 修改项目名
PROJECT_NAME="jiekoufuwu"
SERVER_PORT=80
  1. 修改服务器中python的安装路径
export PATH=\$PATH:/usr/local/python3/bin

在这里插入图片描述

添加脚本

在项目的同级目录下新建dp.sh文件
在这里插入图片描述
把下面的脚本复制到dp.sh文件中
运行项目

sh dp.sh

在这里插入图片描述

在这里插入图片描述

#! /bin/sh
# description:一键部署Nginx+uWSGI+Django
# Author: Coxhuang
# blog:https://blog.csdn.net/Coxhuang/article/details/84068509

MANAGE_DIR=`pwd`
#**************************您的配置区域其他的无需修改**************************
# [config1]项目名称
PROJECT_NAME="teacher"
# [config2]nginx域名或者IP地址和端口,我们用来访问的
SERVER_NAME="192.168.31.xxx" #也可以是域名
SERVER_PORT=80

#******************************************************************************
# 项目目录
PROJECT_DIR=$MANAGE_DIR/$PROJECT_NAME


# 检查项目目录是否存在
check_project(){
if [ ! -d $PROJECT_DIR ]; then
echo -e "\n\033[33m PROJECT_DIR 没有指定,请指定项目目录\033[0m"
exit 0
elif [ -d $PROJECT_DIR ]; then
echo -e "\033[32m项目目录存在是:$PROJECT_DIR........\033[0m"
fi


}


# 创建脚本管理配置
make_script_init(){
echo -e "\033[32m开始创建script目录........\033[0m"
mkdir script
echo -e "\033[32m开始创建管理文件........\033[0m"
cat > script/manage_$PROJECT_NAME<<EOF
#! /bin/sh
# chkconfig: 345 85 15
# 上面一行注释:哪些Linux级别需要启动manage_teacher(3,4,5);启动序号(85);关闭序号(15)。
# description: manage script is the $PROJECT_NAME daemon.
# Author: luotianshuai
# 重载环境变量
export PATH=\$PATH:/usr/local/python3.6/bin
# 指定项目目录
PROJECT_DIR=$PROJECT_DIR
# 指定脚本目录在哪里
SCRIPTS_DIR=$MANAGE_DIR/script
# 描述
DESC="$PROJECT_NAME daemon"
# 名称
NAME=$PROJECT_NAME
# 脚本名称
SCRIPT_FILENAME=manage_$PROJECT_NAME
# 脚本目录名称
SCRIPTNAME=$MANAGE_DIR/script
# PID
PID="uwsgi.pid"

# 启动函数
d_start(){
# 进入到项目目录
cd $MANAGE_DIR/script/
# 判断这个PID是否存在
if [ ! -f "uwsgi.pid" ];then
echo -e "\n\033[34m$NAME项目启动中........\033[0m"
# 如果不存在执行
uwsgi --ini uwsgi.ini
killall nginx
/etc/init.d/nginx start
# 自动收集静态文件
cd $MANAGE_DIR/$PROJECT_NAME&& 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 $MANAGE_DIR/script/
# 判断这个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
EOF
chmod 755 $MANAGE_DIR/script/manage_$PROJECT_NAME
echo -e "\033[32m开始添加uwsgi.ini配置文件........\033[0m"
cat > script/uwsgi.ini<<EOF
[uwsgi]
# 项目目录
chdir=$PROJECT_DIR
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 指定项目的application
module=$PROJECT_NAME.wsgi:application
# 指定sock的文件路径
socket=$MANAGE_DIR/script/uwsgi.sock
# 启用主进程
master=true
# 进程个数
workers=5
pidfile=$MANAGE_DIR/script/uwsgi.pid
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=$MANAGE_DIR/script/uwsgi.log
EOF
echo  "STATIC_ROOT = os.path.join(BASE_DIR, 'static_all')">> $MANAGE_DIR/$PROJECT_NAME/$PROJECT_NAME/settings.py
}

make_nginx_init(){
echo -e "\033[32m初始化Nginx........\033[0m"
cat > /etc/yum.repos.d/nginx.repo<<EOF
[nginx]
name=nginx repo
# 下面这行centos根据你自己的操作系统修改比如:OS/rehel
# 6是你Linux系统的版本,可以通过URL查看路径是否正确
baseurl=http://nginx.org/packages/centos/6/\$basearch/
gpgcheck=0
enabled=1
EOF
yum -y install nginx
echo -e "\033[32m添加Nginx配置文件........\033[0m"

cat > /etc/nginx/conf.d/$PROJECT_NAME.conf<<EOF
    server {
                    listen $SERVER_PORT;
                    server_name $SERVER_NAME ;
                    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:$MANAGE_DIR/script/uwsgi.sock;
                    }
                    # 指定静态文件路径
                    location /static/ {
                        alias  $MANAGE_DIR/$PROJECT_NAME/static_all/;
                        index  index.html index.htm;
                    }

    }
EOF
}
add_server(){
echo -e "\033[32m添加管理至服务........\033[0m"
cp $MANAGE_DIR/script/manage_$PROJECT_NAME /etc/init.d/
chkconfig --add /etc/init.d/manage_$PROJECT_NAME
chkconfig /etc/init.d/manage_$PROJECT_NAME on

# 启动服务
echo -e "\033[32m启动服务........\033[0m"
service manage_$PROJECT_NAME start
}


check_project
make_script_init
make_nginx_init
add_server

Apache + Django 部署生产环境

https://blog.csdn.net/Coxhuang/article/details/84311646

|
|
|

完 !!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值