zoukankan      html  css  js  c++  java
  • Centos7下部署django项目(完整版)

    以下所有安装包我们都在/opt/cs目录下进行上传下载与安装(没有此目录则创建)

    部署过程中所用到的安装包:

    下载地址:https://pan.baidu.com/s/1RJ1ONxMkzHI7Int2ezb8yw  提取码:yl9r

    一、安装python3.6

    ①安装依赖

    yum -y groupinstall "Development tools"

    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ unixODBC unixODBC-devel -y

    ②下载安装包:https://www.python.org/downloads/release/python-368/

    ③上传到Linux上并解压

    tar -zxvf Python-3.6.8.tgz

    cd Python-3.6.8

    ④编译

    ./configure --prefix=/usr/local/python3

    ⑤安装

    make && make install

    ⑦建立软链接

    ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

    ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

    ⑧查看python3与pip3版本

    python3

    pip3 -V

    以上python3.6安装成功。

    二、安装mysql5.6

    1、下载

    wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

    2、解压

    tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

    3、移动安装目录

    mv mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql

    4、添加用户和组

    groupadd mysql

    useradd -g mysql mysql

    5、安装mysql

    ①进入mysql目录:cd /usr/local/mysql

    ②把目录权限分配给mysql组下的mysql用户:chown -R mysql:mysql ./

    ③安装mysql:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    安装mysql语句报错执行,出现/usr/bin/perl: bad interpreter: No such file or directory

    执行:yum install -y perl perl-devel

    如果还出现please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper

    执行:yum install -y perl-Module-Install

    6、编辑配置文件

    ①进入目录:cd /usr/local/mysql/support-files

    ②复制配置文件:cp my-default.cnf /etc/my.cnf

    ③添加系统服务、开机自启动:

    先复制文件:cp mysql.server /etc/init.d/mysql

    开机启动:chkconfig mysql on

    ④配置my.cnf:编辑文件:vi /etc/my.cnf,添加以下内容

    [mysql]

    default-character-set=utf8

    [mysqld]

    basedir=/usr/local/mysql

    datadir=/usr/local/mysql/data

    port=3306

    socket=/tmp/mysql.sock

    symbolic-links=0

    character-set-server=utf8

    default-storage-engine=INNODB

    [mysqld_safe]

    log-error=/var/log/mysqld.log

    pid-file=/var/run/mysqld/mysqld.pid

    7、添加环境变量

    ①编辑文件:vi /etc/profile

    ②添加以下两行环境变量:

    export PATH=/usr/local/mysql/bin:$PATH

    ③设置环境变量生效:source /etc/profile

    ④软连接:ln -fs /usr/local/mysql/bin/mysql /usr/bin

    8、启动mysql

    service mysql start

    9、修改密码

    ①mysql刚安装完毕没有密码进入mysql命令行:mysql -uroot -p

    ②查询mysql用户:select User, Host, Password FROM mysql.user;

    ③修改root密码:update mysql.user set password=password('password') where User="root";

    ④刷新权限:flush privileges;

    10、添加远程访问权限

    ①登录mysql:mysql -uroot -ppassword

    ②使用mysql:use mysql;

    ③为root添加远程权限,%号表示允许任何ip访问数据库:grant all privileges on *.* to root@"%" identified by "password";

    ④刷新权限:flush privileges;

    ⑤重启mysql:service mysql restart

    11、关闭防火墙

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    或者:

    systemctl stop firewalld

    systemctl disable firewalld

    以上mysql5.6安装完成。

    12、建数据库,导入数据库文件

    ①先登录mysql -uroot -ppassword

    ②创建数据库:create database tesudrm_zjenergy charset=utf8;

    ③退出数据库,执行导入数据库文件操作:mysql -uroot -ppassword tesudrm_zjenergy < tesudrm_zjenergy.sql

    等待执行成功。(注意:tesudrm_zjenergy.sql文件要事前准备好)

    13、导出数据库

    mysqldump -uroot -ppassword tesudrm_zjenergy > tesudrm_zjenergy.sql

     

    三、安装redis3.2.1

    1、首先安装依赖环境gcc

    yum -y install gcc automake autoconf libtool make

    注:运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序运行的问题解决

    rm –f /var/run/yum.pid

    2、安装tcl8.6.1-src.tar.gz

    ①下载:wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz

    ②解压:tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/

    ③进入安装目录:cd /usr/local/tcl8.6.1/unix/

    ④安装:

    ./configure

    make && make install

    3 下载redis-3.2.1.tar.gz

    下载地址:http://download.redis.io/releases/  选择redis-3.2.1.tar.gz

    或者:wget http://download.redis.io/releases/redis-4.0.1.tar.gz

    4 解压

    tar zxvf redis-3.2.1.tar.gz

    5 切换目录

    cd redis-3.2.1

    6 执行

    make MALLOC=libc

    7 安装到指定目录

    make PREFIX=/usr/local/redis install

    8 安装好redis后,对make做测试

    执行:make test

    9 查看cd /usr/local/redis/bin

     

    10、配置redis

    redis端口号或启动有默认配置。但一般我们都会通过手动配置完成

    ①回到根目录找到解压文件中的reids.conf

     

    将配置文件复制到安装文件的目录下:cp redis.conf /usr/local/redis

    ②自定义配置redis

    进入对应的安装目录:cd /usr/local/redis

    修改配置文件redis.conf:vi redis.conf

    redis.conf中配置默认必须修改以下三处:

    bind 127.0.01  注释掉:

    daemonize no  修改为 daemonize yes:

    requirepass 设置密码(可以不设置,设置之后,登录时需要密码):

     以上redis.conf文件配置完成。

    11、redis设置开机自启动

     linux开机会执行/etc/init.d目录中的文件

    ①复制文件

    cp /opt/redis-3.2.1/utils/redis_init_script /etc/init.d/redis

    ②编辑文件

    vi /etc/init.d/redis

    只需修改四个地方:

    添加:#chkconfig: 2345 90 10

    修改地址:EXEC=/usr/local/redis/bin/redis-server      说明:redis文件夹所在的redis-server所在路径

    修改地址:CLIEXEC=/usr/local/redis/bin/redis-cli       说明:redis文件夹所在的redis-cli所在路径

    修改地址:CONF="/usr/local/redis/redis.conf"             说明:redis启动所用的配置文件所在路径

    ③授予权限

    chmod 755 /etc/init.d/redis

    ④启动测试

    /etc/init.d/redis start

    ⑤设置开机启动

    chkconfig redis on

    12、测试连接reids

    以上redis安装完成。

    13、redis启动与关闭

    service redis start

    service redis stop

    四、上传项目安装项目依赖

    1、上传项目到/opt/pro目录下

     2、安装依赖

    ①在线安装

    cd /opt/pro/TSDRM

    pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

     以上是有网情况下安装。如果没网,采用以下离线安装方式。

    ②离线安装

    首先在我们的/opt目录下放入离线安装包package(此包需要提前准备)与项目依赖文件requirements.txt

    (下载离线安装包:pip3 download -d /opt/package -r /opt/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/)

    然后执行:

    pip3 install --no-index --find-links=/opt/package -r /opt/requirements.txt

    等待安装完成。

    查看依赖:pip3 list:

     以上依赖安装完成。但是cx_oracle需要自己手动安装。如下:

    uwsgi记得做软连接:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

    五、cx_oracle5.3版本安装(如果不需要安装可以跳过此步骤)

    ①下载安装包

    instantclient-sdk-linux.x64-11.2.0.4.0.zip

    instantclient-basic-linux.x64-11.2.0.4.0.zip

    下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

    cx_Oracle-5.3.tar.gz

    下载地址:https://pypi.org/project/cx-Oracle/5.3/#files

     ②解压

    unzip instantclient-sdk-linux-11.2.0.4.0.zip

    unzip instantclient-basic-linux.x64-11.2.0.4.0.zip

    tar -xzvf cx_Oracle-5.3.tar.gz

    ③配置环境变量

    编辑文件:vi /etc/profile

    添加:

    export ORACLE_HOME=/opt/instantclient_11_2
    export LD_LIBRARY_PATH=/opt/instantclient_11_2:$LD_LIBRARY_PATH

    设置生效:source /etc/profile

    ④创建快捷键

    进入 /opt/instantclient_11_2 目录,执行以下命令:ln -s libclntsh.so.11.1 libclntsh.so

    ⑤安装cx_oracle

    cd cx_Oracle-5.3

    执行:python3 setup.py install

    测试:python3 -c "import cx_Oracle"

    如果没有报错,则安装成功。

    六、安装nginx

    1、安装依赖

    yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel

    2、下载nginx

    wget -c https://nginx.org/download/nginx-1.10.3.tar.gz

    3、创建nginx用户

    useradd nginx -s /sbin/nologin -M

    4、解压

    tar -zxvf nginx-1.10.3.tar.gz

    5、生成编译文件

    cd nginx-1.10.3

    ./configure

    6、编译

    make

    7、安装

    make install

    查看nginx安装目录:whereis nginx

    9、进入nginx程序目录

    cd /usr/local/nginx

    10、监测语法

    /usr/local/nginx/sbin/nginx -t

    11、启动nginx

    cd /usr/local/nginx/sbin

    ./nginx

    监测端口:netstat -lntup|grep 80

    监测进程:ps -ef | grep nginx

    12、访问nginx

    13、nginx关闭与重启

    cd /usr/local/nginx/sbin

    ./nginx -s stop 关闭

    ./nginx -s reload 重启

    14、启用systemctl start nginx.service(Failed to start nginx.service:unit not found报错解决)

    ①在/root/etc/init.d/目录下新建文件,文件名为nginx:touch /etc/init.d/nginx

    ②编辑文件:vi /etc/init.d/nginx

    ③加入一下内容:

    #!/bin/sh
    # nginx - this script starts and stops the nginx daemin
    #
    # chkconfig:   - 85 15
    
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse 
    #               proxy and IMAP/POP3 proxy server
    
    # processname: nginx
    # config:      /usr/local/nginx/conf/nginx.conf
    # pidfile:     /usr/local/nginx/logs/nginx.pid
    
    # Source function library.
    
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    
    . /etc/sysconfig/network
    
    # Check that networking is up.
    
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/local/nginx/sbin/nginx"
    
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    
    lockfile=/var/lock/subsys/nginx
    
    start() {
    
        [ -x $nginx ] || exit 5
    
        [ -f $NGINX_CONF_FILE ] || exit 6
    
        echo -n $"Starting $prog: "
    
        daemon $nginx -c $NGINX_CONF_FILE
    
        retval=$?
    
        echo
    
        [ $retval -eq 0 ] && touch $lockfile
    
        return $retval
    
    }
    
    
    stop() {
    
        echo -n $"Stopping $prog: "
    
        killproc $prog -QUIT
    
        retval=$?
    
        echo
    
        [ $retval -eq 0 ] && rm -f $lockfile
    
        return $retval
    
    }
    
    
    
    restart() {
    
        configtest || return $?
    
        stop
    
        start
    
    }
    
    
    reload() {
    
        configtest || return $?
    
        echo -n $"Reloading $prog: "
    
        killproc $nginx -HUP
    
        RETVAL=$?
    
        echo
    
    }
    
    force_reload() {
    
        restart
    
    }
    
    
    configtest() {
    
      $nginx -t -c $NGINX_CONF_FILE
    
    }
    
    
    
    rh_status() {
    
        status $prog
    
    }
    
    
    rh_status_q() {
    
        rh_status >/dev/null 2>&1
    
    }
    
    case "$1" in
    
        start)
    
            rh_status_q && exit 0
            $1
            ;;
    
        stop)
    
    
            rh_status_q || exit 0
            $1
            ;;
    
        restart|configtest)
            $1
            ;;
    
        reload)
            rh_status_q || exit 7
            $1
            ;;
    
    
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
    
    
        condrestart|try-restart)
    
            rh_status_q || exit 0
                ;;
    
        *)
    
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    
    esac

    ④用命令进入此目录

    cd /etc/init.d

    ⑤依此执行以下命令

    chmod 755 /etc/init.d/nginx

    chkconfig --add nginx   (注意add前面是两个短横线-)

    ⑥测试:使用systemctl start nginx.service开启nginx

    报错:

     查看错误:systemctl status nginx.service

    解决错误:

    更改为./nginx方式启动

    kill掉./nginx启动的进程,然后再换成systemctl start nginx.service方式启动即可

    七、配置uwsgi、nginx,

    1、配置uwsgi.ini

    ①在/opt/pro/script目录下创建uwsgi.ini文件:touch /opt/pro/script/uwsgi.ini

    ②添加内容:vi /opt/pro/script/uwsgi.ini

    [uwsgi]
    http-socket = 192.168.1.63:8080  # 改成你自己服务器ip
    # 项目目录
    chdir=/opt/pro/TSDRM/
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    # 指定项目的application
    module=TSDRM.wsgi
    # 指定sock的文件路径
    socket=/opt/pro/script/uwsgi.sock
    # 启用主进程
    master=true
    # 进程个数
    workers=5
    pidfile=/opt/pro/script/uwsgi.pid
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true
    # 序列化接受的内容,如果可能的话
    thunder-lock=true
    # 启用线程
    enable-threads=true
    # 设置自中断时间
    harakiri=30
    # 设置缓冲
    post-buffering=1024
    # 设置日志目录
    daemonize=/opt/pro/script/uwsgi.log

    注意项目的名称和路径。

    ③启动uwsgi

    cd /opt/pro/script

    执行:uwsgi --ini uwsgi.ini

    启动成功。

    可以使用ps -ef | grep uwsgi命令查看:

    uwsgi开启成功。

    停止uwsgi:uwsgi --stop uwsgi.pid(必须在/opt/pro/script目录下执行,因为在uwsgi.ini中指定了uwsgi.pid路径)

    2、配置nginx的配置文件

    vi /usr/local/nginx/conf/nginx.conf(注意nginx配置文件路径是否正确)

    worker_processes  1;
    
    error_log  /usr/local/nginx/logs/error.log warn;
    pid        /usr/local/nginx/logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /usr/local/nginx/conf/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /usr/local/nginx/logs/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
                listen 8001;
                server_name 192.168.1.63 ;
                access_log  /usr/local/nginx/logs/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_pass unix:/opt/pro/script/uwsgi.sock;
                }
                # 指定静态文件路径
                location /static/ {
                    alias  /opt/pro/TSDRM/static/;
                    index  index.html index.htm;
                }
        }
        
    }

    以上配置完成。

    开启nginx:systemctl start nginx.service

    可以使用ps -ef | grep nginx命令查看:

    nginx开启成功。

    停止nginx:systemctl stop nginx.service

    八、静态文件

    settings.py文件中写入静态文件物理路径(已经写了):

    SITE_ROOT=os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')

    STATIC_ROOT = os.path.join(SITE_ROOT,'static')

    ①添加静态文件访问逻辑路径:STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

    ②收集静态文件:在项目目录下执行:python3 manage.py collectstatic

    ③注销掉物理路径:# STATIC_ROOT,#SITE_ROOT

    ④重新启动nginx与uwsgi

    九、访问项目

    成功访问。

    注意:如果不能正常访问项目,则nginx配置的有问题或者是uwsgi配置的有问题:查看nginx错误日志:cat /usr/local/nginx/logs/error.log,uwsgi错误日志:cat /opt/pro/script/uwsgi.log。

    十、安装supervisor启动celery后台进程

    1、 先创建日志文件

    touch /opt/pro/script/log/beat.log

    touch /opt/pro/script/log/celerylog.log

    touch /opt/pro/script/log/flower.log

    如下:

    2、安装supervisor

    ①在线安装supervisor

    pip3 install supervisor -i https://pypi.tuna.tsinghua.edu.cn/simple/

    ②离线安装supervisor

    本地下载以下2个安装包:

    https://pypi.org/project/meld3/2.0.0/#files

    https://pypi.org/project/supervisor/4.0.1/#files

    下载之后上传服务器并解压,进入目录里,进行安装:python3 setup.py install(注意:这里先安装meld3,安装成功之后再安装supervisor)

    3、做软连接

    ln -s /usr/local/python3/bin/echo_supervisord_conf /usr/bin/echo_supervisord_conf

    ln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl

    ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord

    4、生成配置文件

    cd /usr/local/python3/bin/

    执行:echo_supervisord_conf > /etc/supervisord.conf

    5、修改配置文件

    vi /etc/supervisord.conf

    加入以下开启worker、beat、flower的命令:

    [program:celery.worker]  
    command=python3 manage.py celery -A TSDRM worker -l info     # 开启worker
    directory=/opt/pro/TSDRM_zjenergy/
    
    numprocs=1
    stdout_logfile=/opt/pro/script/log/celerylog.log             # celerylog日志文件,前面我们已经创建好了
    stderr_logfile=/opt/pro/script/log/celerylog.log
    autostart=true
    autorestart=true
    startsecs=10
    stopwaitsecs=600
    priority=16
    
    [program:celery.beat]  
    command=python3 manage.py celery -A TSDRM beat -l info       # 开启beat
    directory=/opt/pro/TSDRM_zjenergy/
    
    numprocs=1
    stdout_logfile=/opt/pro/script/log/beat.log                  # beat日志文件
    stderr_logfile=/opt/pro/script/log/beat.log
    autostart=true
    autorestart=true
    startsecs=10
    stopwaitsecs = 600
    priority=17
    
    [program:celery.flower]
    command=python3 manage.py celery -A TSDRM flower -l info     # 开启flower
    directory=/opt/pro/TSDRM_zjenergy/
    
    numprocs=1
    stdout_logfile=/opt/pro/script/log/flower.log                # flower日志文件
    stderr_logfile=/opt/pro/script/log/flower.log
    autostart=true
    autorestart=true
    startsecs=10
    stopwaitsecs = 600
    priority=18

    6、启动supervisord

    supervisord -c /etc/supervisord.conf

    7、查看supervisord进程信息

    ps -ef | grep supervisord

    发现进程已开启。那么我们查看celery进程信息

    ps -ef | grep celery

    发现worker、beat、flower都开起了。

    然后使用192.168.1.63:5555查看flower:web页面正常访问,那么我们的celery开启成功。

    十一、安装wkhtmltopdf

    1、安装环境

    yum install libXrender libXext fontconfig -y

    2、下载wkhtmltopdf安装包

    wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz

    3、解压

    tar vxf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz 

    4、复制

    cp wkhtmltox/bin/wk* /usr/local/bin/

    5、做软连接

    ln -fs /usr/local/bin/wkhtmltopdf /usr/bin

    6、测试是否安装成功

    wkhtmltopdf http://www.baidu.com ./test.pdf

     下载到本地,打开查看:

    发现是乱码的,需要安装下面的simsun.ttc字体。

    6、安装simsun.ttc

    把windows的C:WindowsFonts中的simsun.ttc:

    复制到 linux系统的/usr/share/fonts路径下

     

     再执行测试:wkhtmltopdf http://www.baidu.com ./test.pdf

    无问题,安装成功。

    十二、项目开启脚本

    创建脚本文件:touch /opt/pro/script/manage_tsdrm

    授予权限:chmod 755 /opt/pro/script/manage_tsdrm

    编辑脚本写入一下内容:vi manage_tsdrm

    #! /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/pro/TSDRM"
    # 指定脚本目录在哪里
    SCRIPTS_DIR="/opt/pro/script"
    # 描述
    DESC="TSDRM"
    # 名称
    NAME="TSDRM"
    # 脚本名称
    SCRIPT_FILENAME="manage_tsdrm.sh"
    # 脚本目录名称
    SCRIPTNAME=`pwd`/$SCRIPT_FILENAME
    
    
    # PID
    PID="uwsgi.pid"
    
    # 启动函数
    d_start(){
        
        # 终止现有celery
        ps auxww | grep 'celery' | awk '{print $2}' | xargs kill -9
        # 终止现有supervisord
        ps auxww | grep 'supervisord' | awk '{print $2}' | xargs kill -9
    
        # 每次在执行此脚本时,都会在项目目录下生成以下两个pid文件,需要删除
        rm -rf /opt/pro/TSDRM/celerybeat.pid /opt/pro/TSDRM/worker.pid /opt/pro/TSDRM/flower.pid
    
        # 进入到项目目录
        cd $SCRIPTS_DIR
        # 判断这个PID是否存在
        echo -e "
    33[34m$NAME项目启动中........33[0m"
        # 如果不存在执行
        uwsgi --ini uwsgi.ini
        killall nginx
        systemctl start nginx.service
    
        #cd $PROJECT_DIR
        #python3 manage.py celery multi start worker -A TSDRM -l info --logfile=/opt/pro/script/log/celerylog.log&&
        #python3 manage.py celery multi start beat -A TSDRM -l info --logfile=/opt/pro/script/log/beat.log&&
        #python3 manage.py celery multi start flower -A TSDRM  -l info --logfile=/opt/pro/script/log/flower.log
    
        # 开启supervisord后台进程:worker、beat、flower
        supervisord -c /etc/supervisord.conf
    
        echo -e "
    33[32m$NAME 项目启动完成........33[0m"
        exit 0
    }
    
    # 关闭函数
    # 关闭项目
    d_stop(){
        # 终止现有celery
        ps auxww | grep 'celery' | awk '{print $2}' | xargs kill -9
        # 终止现有supervisord
        ps auxww | grep 'supervisord' | awk '{print $2}' | xargs kill -9
    
        # 每次在执行此脚本时,都会在项目目录下生成以下两个pid文件,需要删除
        rm -rf /opt/pro/TSDRM/celerybeat.pid /opt/pro/TSDRM/worker.pid /opt/pro/TSDRM/flower.pid
    
        # 进入脚本目录
        cd $SCRIPTS_DIR
        # 判断这个pid文件是否存在
        if [ ! -f "uwsgi.pid" ];then
            # 这个项目已经关闭了
            echo -e "
    33[33m$NAME 项目已经关闭了请先启动33[0m"
        fi
        echo -e "
    33[34m$NAME 项目关闭中........33[0m"
        echo -e "
    Stop $DESC: $NAME"
        # 如果没有关闭
        uwsgi --stop uwsgi.pid
        # 是否停掉Nginx根据实际需要来操作~~!因为Nginx有对静态文件缓存[注意]
        killall nginx
        systemctl stop nginx.service
    
        echo -e "
    33[32m$NAME 项目关闭完成........33[0m"
    }
    
    d_restart(){
    d_stop
    sleep 1
    d_start
    }
    
    case "$1" in
    start)
    echo -e "
    starting $DESC: $NAME"
    d_start
    ;;
    stop)
    echo -e "
    Stop $DESC: $NAME"
    d_stop
    ;;
    restart)
    echo -e "
    Restart $DESC: $NAME"
    d_restart
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
    exit 3
    ;;
    esac

    cd /opt/pro/script

    开启项目:./manage_tsdrm start

    关掉项目:./manage_tsdrm stop

    重启项目:./manage_tsdrm restart

  • 相关阅读:
    vue本地项目静态资源管理
    vue-resource的使用
    查看Python已安装的模块
    getpass密码输入模块
    css之浮动
    Linux之常用命令和部分解析
    css之vertical-align(盒子垂直对齐方式)
    Octave 里的 fminunc
    Octave /Matlab--Control Statements:for,while, if statement----Coursera ML笔记
    Octave环境的安装
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/15076913.html
Copyright © 2011-2022 走看看