centos7 django mysql_centos7_64+Django2.1.8+nginx+uwsgi+mysql+python3.6.3部署

centos7_64+Django2.1.8+nginx+uwsgi+mysql+python3.6.3部署

学习交流qq: 1009682660

一、python环境搭建

创建安装环境

安装相关包

yum install gcc

yum install zlib*

创建安装目录

# mkdir -p /usr/local/python3

下载python安装包( /opt/Python-3.6.3.tgz )

# 解压: tar -zxvf Python-3.6.3.tgz

进入解压目录: cd Python-3.6.3

执行: ./configure --prefix=/usr/local/python3 #/usr/local/python3为安装目录

# configure 命令执行完之后,会生成一个 Makefile 文件

执行make指令: make && make install

建立python3的软链( 可以在任何路径使用 )

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

# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

测试是否安装成功

# python3 -V

Python 3.6.3

# pip3 -V

pip 18.1 from /usr/local/python3/lib/python3.6.3 /site-packages/pip (python 3.6.3 )

二、mysql安装

下载mysql安装包( /opt/mysql/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar )

# 解压:tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

创建安装环境

# 卸载系统自带mariadb

查询:rpm -qa | grep mariadb

卸载:rpm -e --nodeps mariadb...(查询出来的包名)

# 卸载旧版本mysql

查询:rpm -qa | grep mysql

卸载:rpm -e --nodeps mysql... (查询出来的包名)

安装mysql

# 因为有依赖,所以顺序安装

rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm

配置mysql

# 删除原有文件

rm -rf /var/lib/mysql

# 数据库操作 #

查看mysql服务是否启动

service mysqld status

启动服务:

systemctl start mysqld

停止服务:

systemctl stop mysqld

创建用户组:groupadd mysql

创建用户:useradd -g mysql mysql

设置密码:passwd mysql

初始化数据库

mysqld --initialize --user=mysql

进入使用mysql

# 获取原有初始化密码

grep 'temporary password' /var/log/mysqld.log

mysql -u root -p

mysql> Enter password: (输入刚才查询到的随机密码)

重新设置密码为:123456 # mysql> SET PASSWORD FOR 'root'@'localhost'= "123456";

先修改mysql的密码策略,才可修改为123456

设置密码的验证强度等级:set global validate_password_policy=LOW;

设置密码长度:set global validate_password_length=6;

三、uwsgi安装

安装uwsgi

# pip3 install uwsgi

软链:ln -s /usr/local/python3/bin/uwsgi /usr/local/uwsgi3

测试uwsgi

# uwsgi3 --http :8000 --file app/wsgi.py --static-map=/static=static //启动web服务,app为应用目录

输入ip:port即可访问,127.0.0.1:8000。访问成功代表uwsgi正常工作

四、nginx安装

下载nginx( /opt/nginx-1.17.7.tar.gz )

# 解压:tar -zxvf nginx-1.17.7.tar.gz

改名:mv nginx-1.17.7 nginx

进入nginx执行:./configure,完成后会生成makefile文件

编译:make && make install

软链:ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

# 操作nginx #

nginx启动:nginx # 默认端口80

nginx停止:nginx -s stop

nginx重启: nginx -s reload

测试ngnix

#启动ngnix:ngnix

浏览器输入:127.0.0.1 / 192.168.xx.xx (浏览器默认80端口)

五、项目部署

拷贝项目并安装依赖包

# 项目文件夹copy到centos中( /opt/project/ProName )

安装相关依赖包:pip3 install -r requirement.txt

配置uwsgi.ini

# 配置uwsgi.ini(/etc/uwsgi.ini)

[相关参数配置说明]

master = true

#启动主进程,来管理其他进程,其它的uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程

chdir = /web/www/mysite

#在app加载前切换到当前目录, 指定运行目录(项目路径)

wsgi-file = mysite.wsgi

# 加载一个WSGI模块,这里加载mysite/wsgi.py这个模块

py-autoreload=1

#监控python模块mtime来触发重载 (只在开发时使用)

lazy-apps=true

#在每个worker而不是master中加载应用

socket = /test/myapp.sock

#指定socket文件,也可以指定为127.0.0.1:9000,这样就会监听到网络套接字(用于和nginx连接)

processes = 2 #启动2个工作进程,生成指定数目的worker/进程

buffer-size = 32768

#设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k。

daemonize = /var/log/myapp_uwsgi.log

# 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器

log-maxsize = 5000000 #设置最大日志文件大小

disable-logging = true #禁用请求日志记录

vacuum = true #当服务器退出的时候自动删除unix socket文件和pid文件。

listen = 120 #设置socket的监听队列大小(默认:100)

pidfile = /var/run/uwsgi.pid #指定pid文件

enable-threads = true

#允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程

reload-mercy = 8

#设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,等待这个工作结束的最长秒数。这个配置会使在平滑地重启工作子进程中,如果工作进程结束时间超过了8秒就会被强行结束(忽略之前已经接收到的请求而直接结束)

max-requests = 5000

#为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)。你可以使用这个选项来默默地对抗内存泄漏

limit-as = 256

#通过使用POSIX/UNIX的setrlimit()函数来限制每个uWSGI进程的虚拟内存使用数。这个配置会限制uWSGI的进程占用虚拟内存不超过256M。如果虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。

harakiri = 60

#一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)

uwsgi常用配置举例( /etc/uwsgi.ini )

# [uwsgi]

socket = 127.0.0.1:9000

chdir = /opt/project/AutoThunder/

wsgi-file = AutoThunder/wsgi.py

processes = 10

daemonize = /opt/project/AutoThunder/server.log # 项目运行日志

pidfile = /tmp/uwsgi.pid

vacuum = true

log-maxsize = 50000000

disable-logging = true

master=true

listen=120

max-requests=5000

# uwsgi操作 #

启动:uwsgi3 --ini /etc/uwsgi.ini

停止:uwsgi3 --stop /tmp/uwsgi.pid

重启:uwsgi3 --reload /tmp/uwsgi.pid

报错处理:

ps -ef | grep uwsgi 查看端口,修改uwsgi.pid中端口为当前端口,再进行操作

配置nginx.conf( /usr/local/nginx/conf/nginx.conf )

#

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80; #nginx监听端口,用户浏览器访问此端口

server_name 192.168.48.128; #服务器域名,也可设置端口,多个域名用逗号隔开

charset utf-8;

client_max_body_size 5M; 文件上传最大限制

location /media {

alias /opt/project/AutoThunder/media; 文件保存地址

}

location /static {

alias /opt/project/AutoThunder/static; 静态文件保存地址

}

location / {

proxy_read_timeout 150; 重点:文件上传功能必须设置此超时,不然会报502

uwsgi_pass 127.0.0.1:9000; 和uwsgi通信的地址

# uwsgi_pass unix:///var/www/MyWeb/MyWeb.sock; 也可用sock

include /opt/project/AutoThunder/uwsgi_params; uwsgi参数地址

}

}

}

uwsgi参数文件( /opt/project/AutoThunder/uwsgi_params )

#

uwsgi_param QUERY_STRING $query_string;

uwsgi_param REQUEST_METHOD $request_method;

uwsgi_param CONTENT_TYPE $content_type;

uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;

uwsgi_param PATH_INFO $document_uri;

uwsgi_param DOCUMENT_ROOT $document_root;

uwsgi_param SERVER_PROTOCOL $server_protocol;

uwsgi_param REQUEST_SCHEME $scheme;

uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;

uwsgi_param REMOTE_PORT $remote_port;

uwsgi_param SERVER_PORT $server_port;

uwsgi_param SERVER_NAME $server_name;

五、项目启动

项目启动注意点

# 静态文件配置(setting.py)

STATIC_URL = '/static/'

# 开发环境(DEBUG=True)

# 公用样式静态文件存放目录

STATICFILES_DIRS = [

os.path.join(BASE_DIR,'static')

]

# 生产环境(DEBUG=False)

# STATIC_ROOT = os.path.join(BASE_DIR,'static')

# 文件保存

# MEDIA_ROOT = os.path.join(BASE_DIR,"media")

步骤

############

# 收集静态文件:python manager.py collectstatic

# mysql中创建项目数据库:create database databasename;

# 迁移表:python manager.py migrate #正式环境不用makemigrations,提前在开发环境弄好

# 启动uwsgi:uwsgi3 --ini /etc/uwsgi.ini

# 启动nginx:nginx

# 浏览器直接访问:ip+port即可

学习交流qq: 1009682660

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值