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/

Centos7下部署django项目(完整版)

③上传到Linux上并解压

tar -zxvf Python-3.6.8.tgz

cd Python-3.6.8

④编译

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

⑤安装

make && make install

Centos7下部署django项目(完整版)

⑦建立软链接

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

Centos7下部署django项目(完整版)

pip3 -V

Centos7下部署django项目(完整版)

以上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

Centos7下部署django项目(完整版)

11、关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

Centos7下部署django项目(完整版)

或者:

systemctl stop firewalld

systemctl disable firewalld

Centos7下部署django项目(完整版)

以上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

 Centos7下部署django项目(完整版)

10、配置redis

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

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

 Centos7下部署django项目(完整版)

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

②自定义配置redis

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

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

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

bind 127.0.01  注释掉:Centos7下部署django项目(完整版)

daemonize no  修改为 daemonize yes:Centos7下部署django项目(完整版)

requirepass 设置密码(可以不设置,设置之后,登录时需要密码):Centos7下部署django项目(完整版)

 以上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启动所用的配置文件所在路径

Centos7下部署django项目(完整版)

③授予权限

chmod 755 /etc/init.d/redis

④启动测试

/etc/init.d/redis start

Centos7下部署django项目(完整版)

⑤设置开机启动

chkconfig redis on

12、测试连接reids

Centos7下部署django项目(完整版)

以上redis安装完成。

13、redis启动与关闭

service redis start

service redis stop

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

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

Centos7下部署django项目(完整版)

 2、安装依赖

①在线安装

cd /opt/pro/TSDRM

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

Centos7下部署django项目(完整版)

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

②离线安装

首先在我们的/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:

Centos7下部署django项目(完整版)

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

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

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

①下载安装包

Centos7下部署django项目(完整版)

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

Centos7下部署django项目(完整版)Centos7下部署django项目(完整版)

cx_Oracle-5.3.tar.gz

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

Centos7下部署django项目(完整版)

 ②解压

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

Centos7下部署django项目(完整版)

测试:python3 -c "import cx_Oracle"

Centos7下部署django项目(完整版)

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

六、安装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

Centos7下部署django项目(完整版)

6、编译

make

Centos7下部署django项目(完整版)

7、安装

make install

Centos7下部署django项目(完整版)

查看nginx安装目录:whereis nginx

Centos7下部署django项目(完整版)

9、进入nginx程序目录

cd /usr/local/nginx

Centos7下部署django项目(完整版)

10、监测语法

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

Centos7下部署django项目(完整版)

11、启动nginx

cd /usr/local/nginx/sbin

./nginx

Centos7下部署django项目(完整版)

监测端口:netstat -lntup|grep 80

Centos7下部署django项目(完整版)

监测进程:ps -ef | grep nginx

Centos7下部署django项目(完整版)

12、访问nginx

Centos7下部署django项目(完整版)

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

报错:

Centos7下部署django项目(完整版)

 查看错误:systemctl status nginx.service

Centos7下部署django项目(完整版)

解决错误:

更改为./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

Centos7下部署django项目(完整版)

启动成功。

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

Centos7下部署django项目(完整版)

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命令查看:

Centos7下部署django项目(完整版)

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

九、访问项目

Centos7下部署django项目(完整版)

成功访问。

注意:如果不能正常访问项目,则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

如下:

Centos7下部署django项目(完整版)

2、安装supervisor

①在线安装supervisor

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

②离线安装supervisor

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

Centos7下部署django项目(完整版)https://pypi.org/project/meld3/2.0.0/#files

Centos7下部署django项目(完整版)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

Centos7下部署django项目(完整版)

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

ps -ef | grep celery

Centos7下部署django项目(完整版)

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

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

Centos7下部署django项目(完整版)

十一、安装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

Centos7下部署django项目(完整版)

Centos7下部署django项目(完整版)

 下载到本地,打开查看:

Centos7下部署django项目(完整版)

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

6、安装simsun.ttc

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

Centos7下部署django项目(完整版)

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

 Centos7下部署django项目(完整版)

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

Centos7下部署django项目(完整版)

无问题,安装成功。

十二、项目开启脚本

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

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

Centos7下部署django项目(完整版)

编辑脚本写入一下内容: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

Centos7下部署django项目(完整版)

Centos7下部署django项目(完整版)

 下载到本地,打开查看:

Centos7下部署django项目(完整版)

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

6、安装simsun.ttc

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

Centos7下部署django项目(完整版)

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

 Centos7下部署django项目(完整版)

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

Centos7下部署django项目(完整版)

无问题,安装成功。

十二、项目开启脚本

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

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

Centos7下部署django项目(完整版)

编辑脚本写入一下内容: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