python3 supervisor_Linux+python3+uwsgi+supervisor+nginx部署Django发布环境

一、python3源码包安装首先安装一些编译源码需要的依赖文件

yum -y install gcc make cmake zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

2. 安装python3

cd /usr/local/

tar -zxvf Python-3.6.5.tgz # 注意版本

mkdir python3

cd Python-3.6.5

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

make && make install

yum install -y vim # 安装个vim先,vi强化版

vim /etc/profile # 编辑环境变量文件,添加python3的环境变量

PATH=$PATH:/usr/local/python3/bin/

export PATH

source /etc/profile

python3

二、virtualenv创建虚拟环境并安装Django安装基础环境配置

yum groupinstall "Development tools"

2. 安装virtualenv

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

3. 创建虚拟环境

cd /home/

virtualenv --python=python3 django_env

4. 进入虚拟环境

. /home/django_env/bin/activate

5. 虚拟环境中安装django

pip install django==2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

6. 创建Django项目

django-admin startproject mywebsite

7. 修改配置文件,允许任意主机访问

vim mywebsite/mywebsite/settings.py

8. 可以测试一下

python3 mywebsite/manage.py runserver 0.0.0.0:8000

看到报错

# 不要慌,这是SQLite版本问题,关闭版本检测即可

vim /home/django_env/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py

再次运行

python3 mywebsite/manage.py runserver 0.0.0.0:8000

在本机输入ip:8000,发现仍无法访问,是因为防火墙的原因,这里先关闭防火墙

systemctl stop firewalld.service # 关闭防火墙

systemctl disable firewalld.service # 设置开机默认关闭

python3 mywebsite/manage.py runserver 0.0.0.0:8000 # 运行django项目

恭喜你,项目运行了

三、uwsgi安装以上的运行方式,实际上调用了py内置的socket模块,单进程单线程,效率比较低

使用uwsgi启动django项目,可以支持多线程,且稳定效率高

pip3 install uwsgi

创建uwsgi配置文件uwsgi.ini

vim /home/django_env/bin/uwsgi.ini

写入如下内容

[uwsgi]

# Django-related settings

# the base directory (full path)

# 项目第一层绝对路径

chdir = /home/mywebsite

# Django's wsgi file

# 项目第二层相对路径

module = mywebsite.wsgi

# the virtualenv (full path)

# 指定虚拟环境位置,写虚拟环境第一层绝对路径

home = /home/django_env/

# process-related settings

# 主进程

master = true

# maximum number of worker processes

# 代表uwsgi运行的多进程数量,官方建议 2*CPU核数+1

processes = 3

# the socket (use the full path to be safe

# 通过什么访问,后边用nginx,打开socket注释

# socket = 0.0.0.0:8000

http = 0.0.0.0:8000

# ... with appropriate permissions - may be needed

# chmod-socket = 664

# clear environment on exit

# 服务停止时,自动清除pid之类的

vacuum = true

通过uwsgi启动项目

uwsgi --ini /home/django_env/bin/uwsgi.ini

浏览器能够正常访问

四、supervisor安装是一个py开发进程管理工具

作用:可以用它去启动uwsgi,当uwsgi挂掉了,supervisor帮助自动重启,还可以很方便地管理uwsgi进程安装

yum -y install python-setuptools

pip3 install supervisor

2. 生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

3. 修改生成的配置文件

vim /etc/supervisord.conf

文件最后追加如下内容

[program:mywebsite]

command= /home/django_env/bin/uwsgi --ini /home/django_env/bin/uwsgi.ini;

autostart=true ;

startsecs=10 ;

autorestart=true ;

stopasgroup=true ;

killasgroup=true ;

4. 启动supervisor,同时它会自动把uwsgi启动

supervisord -c /etc/supervisord.conf

5. 可以进入supervisor的终端控制台,进行管理来启动或停止你的项目

supervisorctl -c /etc/supervisord.conf

五、nginx整合nginx是什么是一个使用c语言开发的高性能的http服务器和反向代理服务器。

2. nginx的优点- 轻量级

- 在应对高并发情况时,能保持低资源低消耗高性能

- 高度模块化的设计,配置简洁

- 官方测试nginx能够支撑5万并发量,并且cpu、内存等资源消耗却非常低,运行非常稳定

3. nginx的应用场景- http服务器:Nginx可以独立提供http服务,可以做网页静态服务器

- 虚拟主机:可以实现在一台服务器虚拟出多个网站

- 反向代理,负载均衡

4. 下载安装

下载之前为保证不报错,做一些准备

yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel wget

使用wegt下载,版本自己定

wget http://nginx.org/download/nginx-1.18.0.tar.gz

解压nginx

tar -zxvf nginx-1.18.0.tar.gz

切换到nginx-1.18.0目录

cd nginx-1.18.0

执行configure,生成Makefile

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi

编译安装

make && make install

创建软链接,并启动nginx

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

mkdir -p /var/temp/nginx/

nginx

ps aux | grep nginx

验证是否成功,nginx默认80端口

5. 修改nginx配置

vim /usr/local/nginx/conf/nginx.conf

修改以下内容

location / {

# root html;

# index index.html index.htm;

uwsgi_pass 0.0.0.0:8000;

include uwsgi_params;

}

启动后,若修改配置,需要刷新,不需要重启nginx

nginx -s reload

此时nginx报error

6. 修改uwsgi配置

不能让用户直接访问项目,要通过nginx跳转过去,利用nginx做反向代理

vim /home/django_env/bin/uwsgi.ini

# 通过什么访问,用nginx访问时,打开socket注释

socket = 0.0.0.0:8000

# http = 0.0.0.0:8000

进入supervisor控制台,重新启动项目

supervisorctl -c /etc/supervisord.conf

restart mywebsite

查看项目运行状态,可以看出使用80端口访问到了项目,说明nginx做了反向代理

补充:关机下次启动是可能会报

nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

mkdir -p /var/run/nginx/

touch /var/run/nginx/nginx.pid

# 启动nginx

nginx

# 在虚拟环境里启动项目

. /home/django_env/bin/activate

supervisord -c /etc/supervisord.conf

至此centos+python3+virtualenv+uwsgi+supervisor+nginx部署Django发布环境完成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值