centos nginx重启_Django + Uwsgi + Nginx 的生产环境部署

Nginx WSGI uwsgi uWSGI

772bec5e085593e8259da79d09cf2e5b.png

Nginx


是一个高性能的Web服务器,其中的HTTP服务器功能和uWSGI功能很类似。

WSGI


是一种描述web服务器(Nginx,uWSGI)如何与web应用程序(Django,Flask)通信的规范。

uWSGI


是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议,比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

uwsgi


是一种线路协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

nginx和uWSGI服务器之间是如何配合工作的?


实际上,uWSGI服务器 + Django框架,就可以实现网站的功能了,但一旦客户端访问量过大,客户端请求连接就需要长时间的等待,这种模式就无法满足需求了,分布式服务器此时应运而生,而nginx就是分布式服务器的一大利器,我们可以多用几台服务器来分别处理请求,nginx就相当于管家一样分配客户端请求连接和web服务器,这就是用nginx来实现反向代理,及代理服务器。
首先浏览器发起http请求到nginx服务器,nginx根据接收的请求包,进行url分析,判断访问的资源类型,如果是静态资源,直接读取静态资源返回给浏览器,如果请求的是动态资源就转交给uWSGI服务器,uWSGI服务器根据自身的WSGI协议,找到对应的Django框架,Django框架下的应用进行逻辑处理,将返回值发送到uWSGI服务器,uWSGI服务器再返回给nginx,最后nginx将返回值返回给浏览器进行渲染显示给用户。

安装python3环境

1.安装相应的编译工具

在root用户下(不要用普通用户,麻烦),全部复制粘贴过去,一次性安装即可。

yum -y groupinstall "Development tools"yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-develyum install -y libffi-devel zlib1g-devyum install zlib* -y

2.下载安装包

wget wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz或者到我的蓝奏网盘去下载https://lihouqi.lanzous.com/id4ep8j

3.解压

tar -xvf Python-3.7.7.tgz或者下载我的python3.7.7包,在本地解压,通过ftp上传到服务器中

4.创建编译安装目录

mkdir /usr/local/python3

5.安装

cd Python-3.7.7执行以下命令:./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl#第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.#第二个可以提高python10%-20%代码运行速度.#第三个是为了安装pip需要用到ssl,后面报错会有提到.

6.安装pip3

make && make install

7.创建软链接

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

8.安装pip依赖包

本地生成requirements.txt 并上传服务器pip freeze > requirements.txt下载模块pip3 install -r requirements.txt

安装mysql

wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'rpm -Uvh mysql57-community-release-el7-11.noarch.rpmyum install -y mysql-community-server#启动服务systemctl start mysqld#查看服务状态systemctl status mysqld
查看数据库密码grep 'temporary password' /var/log/mysqld.log
然后利用这个密码进入mysql命令行 mysql -uroot -p查到的密码SET PASSWORD = PASSWORD('Admin123!');设置远程登录GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;flush privileges;vim /etc/my.cnf在[mysqld]下面添加,不需要分号字符集:注意是utf8而不是utf-8!character-set-server=utf8这时候使用show variables like 'char%';就可以查看到字符集都是utf8了sql支持group by语句sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION设置时区为东八区default-time_zone = '+8:00'重启服务systemctl restart mysqld设置开机启动systemctl enable mysqldsystemctl daemon-reload

拓展:

如果需要更改为简单的密码1.停止mysql服务systemctl stop mysqld.service2.修改配置文件无密码登录vim  /etc/my.cnf在最后加上skip-grant-tables保存3.启动mysqlsystemctl  start  mysqld.service4.登录mysqlmysql -u root注意这里不要加-p5.修改密码,mysql5.7用此语法use mysql;update mysql.user set authentication_string=password('123456') where user='root' ;  6.回到第二部把刚加的那句删掉保存,重启mysql就可以了

测试mysql服务

5b8bc12fa6eda88a403cd2db64e0dd88.png

安装redis

yum install redis启动服务systemctl start redis查看版本号redis-cli --version设置开机启动systemctl enable redis.service

测试redis服务

eff097cf94972459480771597148a240.png

安装mongodb

vim /etc/yum.repos.d/mongodb-org-3.4.repo#添加以下内容:[mongodb-org-3.4]  name=MongoDB Repository  baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  gpgcheck=0enabled=1  gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc清空缓存yum makecache安装yum -y install mongodb-org启动服务systemctl start mongod.service停止服务systemctl stop mongod.service查看服务状态systemctl status mongod.service重启服务systemctl restart mongod.service

测试mongo

e895d3322a25bfebdcfe6c5d7ea78cab.png

安装nginx

#设置源sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm#安装yum install -y nginx
#启动服务systemctl start nginx.service#关闭服务systemctl stop nginx.service#开机自启systemctl enable nginx.service
#修改配置文件vim /etc/nginx/nginx.conf#改成下面的配置   server {    listen       你定义的端口;    server_name  你的ip;    client_max_body_size 5M;    gzip on;    gzip_buffers 32 4K;#压缩在内存中缓冲32块 每块4K    gzip_comp_level 6 ;#压缩级别 推荐6    gzip_min_length 4000;#开始压缩的最小长度4bit        gzip_types text/plain application/json application/javascript application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;        location / {              include uwsgi_params;              uwsgi_pass 127.0.0.1:9090; #必须和uwsgi中socket中ip,port一样              uwsgi_ignore_client_abort on;        }        error_page 404 /404.html;            location = /40x.html {        }        error_page 500 502 503 504 /50x.html;            location = /50x.html {        }        location /static {        alias /usr/local/webapp/mydjango/static; #项目中静态资源static中的路径        }}
设置项目权限chmod -R 755 /usr/local/webapp/mydjango   #你项目的路径,比如我的项目mydjango在/usr/local/webapp/目录下
#然后重启nginxnginx -s reload 

测试nginx服务,这里注意下,在不修改nginx配置文件的时候才会出现下面的欢迎页面,如果修改了以后是不能访问默认欢迎页面的

fea47d09a2309127c6eade958d7dd0f2.png

安装uwsgi

1.安装uwsgi

pip3 install uwsgi

2.建立软连接

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

3.通过配置文件启动

#进入到django项目目录#编写uwsgi.ini配置文件vim uwsgi.ini[uwsgi]socket = 0.0.0.0:9090chdir = /usr/local/webapp/mydjangowsgi-file = /usr/local/webapp/mydjango/mydjango/wsgi.pyprocesses = 5threads = 30master = truedaemonize = /usr/local/webapp/mydjango/uwsgi.logmodule=mydjango.wsgipidfile = /usr/local/webapp/mydjango/uwsgi.pidchmod-socket=666enable-threads = true

4.启动

uwsgi --ini uwsgi.ini

最后,nginx通过监听你定义的端口反向代理uwsgi启动的django服务,访问网站进行测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值