首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python+Django+mysql+redis+wsgi+Nginx项目部署到服务器Centos6.5

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

作者头像
Autooooooo
发布2020-11-09 11:19:02
发布2020-11-09 11:19:02
1K0
举报
文章被收录于专栏:CoxhuangCoxhuang

环境

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

开始

1. 准备一个CentOS 6.5服务器
2.安装Python3.6
  1. 到官网下载Python3.6的源码包(注意是源码包,不是win osx)
代码语言:javascript
复制
https://www.python.org/
  1. 借助Xptf工具(也可以用其他工具)把刚刚下载好的Python源码包,上传到服务器上
  1. 在centos安装Python依赖包
代码语言:javascript
复制
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源码包的存放路径 )
代码语言:javascript
复制
tar -xzvf /opt/Python-3.6.4.tgz -C /usr/local/src/
  1. 进入解压后的目录
代码语言:javascript
复制
cd /usr/local/src/
  1. 检测 在/usr/local/src/Python-3.6.4下输入:
代码语言:javascript
复制
./configure --prefix=/usr/local/python3
  1. 安装Python
代码语言:javascript
复制
make && make install

安装完成

  1. 永久添加环境变量

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

代码语言:javascript
复制
cd /etc/profile.d/
vi python3.sh
export PATH="$PATH:/usr/local/python3/bin"
  1. 重载环境变量
代码语言:javascript
复制
source ../profile

安装Python到此结束 !!!

3.安装mysql

安装mysql文档,点这里

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

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

代码语言:javascript
复制
pip3 install -r requirements.txt
5.安装wsgi
代码语言:javascript
复制
pip3 install uwsgi

成功安装Wsgi

6.在mysql中创建数据库
  1. 在django的项目中的settings.py文件中把mysql配置好(数据库名:api_service 名字任意起)
代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'api_service',
        'USER': 'root',
        'PASSWORD': 'r',
        'HOST': '127.0.0.1',
        'PORT': 3306
    }
}
8.安装redis
代码语言:javascript
复制
tar xzf redis-4.0.2.tar.gz
cd redis-4.0.2
make
make test

进入src目录执行启动命令

代码语言:javascript
复制
cd src
./redis-server

新开个终端,进入到src文件夹,执行命令

代码语言:javascript
复制
./redis-cli

redis的基本使用

代码语言:javascript
复制
# 插入数据
SET key value
# 查询数据
get key

Redis完成 !!!

  1. 在django的项目中的settings.py文件中把redis配置好
代码语言:javascript
复制
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服务器启动项目

进到项目所在的目录下

代码语言:javascript
复制
python3 manage.py  makemigrations
python3 manage.py  migrate
python3 manage.py runserver 0.0.0.0:8888

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

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

在项目的同级目录下新建dp.sh文件

把下面的脚本复制到dp.sh文件中

运行项目

代码语言:javascript
复制
sh dp.sh
代码语言:javascript
复制
#! /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://cloud.tencent.com/developer/article/1744969

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/11/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 开始
    • 1. 准备一个CentOS 6.5服务器
    • 2.安装Python3.6
    • 3.安装mysql
    • 4.把项目拖到服务器上(利用Xftp工具)
    • 5.安装wsgi
    • 6.在mysql中创建数据库
    • 8.安装redis
    • 9.尝试通过django自带web服务器启动项目
    • 10.配置Nginx(一键配置)
    • Apache + Django 部署生产环境
    • https://cloud.tencent.com/developer/article/1744969
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档