我是靠谱客的博主 羞涩黑米,最近开发中收集的这篇文章主要介绍python nginx部署_Python3+django+nginx+uwsgi使用场景部署,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 环境介绍和准备

Python3+django+nginx+uwsgi使用场景部署

当我们写完一套完整的网站功能,我们需要实时在生产环境上线,并需要容纳高并发的访问请求。所以我们需要部署以上来保证网站的服务质量。

1.1基本环境准备:

echo 'LANG="en_GB.utf8"' > /etc/sysconfig/i18n

LANG="en_GB.utf8"

1.2依赖环境:

(env) [root@reboot5 nginx]# python -V

Python 3.6.2

(env) [root@reboot5 nginx]# cat /etc/redhat-release

CentOS release 6.8 (Final)

(env) [root@reboot5 nginx]# pip list|grep Django

Django 1.11.4

(env) [root@reboot5 opsweb]# mysql -V

mysql Ver 14.14 Distrib 5.6.37

1.3修改yum源地址:

yum install wget

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

1.4 环境安装:

yum install wget openssl-devel -y # gcc编译要用

yum install gcc zlib-devel openssl-devel -y

2 安装python

yum -y install openssl-devel readline-devel unzip

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

tar -xzf Python-3.6.2.tgz

cd Python-3.6.2

sudo ./configure --prefix=/usr/local/python36

sudo make

sudo make install

2.1配置pip源

sudo tee /etc/pip.conf <

[global]

index-url = http://pypi.douban.com/simple

trusted-host = pypi.douban.com

[list]

format=columns

EOF

2.2安装virtualenv虚拟环境

sudo /usr/local/python36/bin/pip3 install virtualenv

安装django

3.1 初始化环境

mkdir ~/reboot

/usr/local/python36/bin/virtualenv ~/reboot/env

3.2 安装django 1.11

source /root/reboot/env/bin/activate

pip install "django>=1.11"

pip install ipython

4 mysql环境准备:

sudo rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

sudo yum install -y mysql mysql-server mysql-devel zlib-devel

source /home/djangoenv/pythonenv/bin/activate

#python依赖:

pip install pymysql

修改配置/etc/my.cnf:

[mysqld]

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

启动:

sudo service mysqld start

4.1 安全设置:

mysql_upgrade -uroot # 如果是升级需要执行(卸载原有mysql低版本也需要)

mysql_secure_installation # 命令行执行设置账号密码、限制远程连接等

4.2 创建基础数据库:

create database cmdb CHARACTER SET utf8; # 创建一个cmdb库

CREATE USER 'cmdb'@'%' IDENTIFIED BY 'nice'; # 创建一个cmdb用户,密码cmdb

GRANT ALL ON cmdb.* TO 'cmdb'@'%'; # 给cmdb用户所有cmdb库权限

4.3 mysql基本备份还原

导出:mysqldump -h127.0.0.1 -uroot -p123456 django > /backupfile.sql

还原:mysql -h127.0.0.1 -uroot -pruanchunxia2324 django < backupfile.sql

-----------------------------------uwsgi------------------------------------------------------

5 安装:uwsgi

source /root/reboot/env/bin/activate

pip install uwsgi --no-cache-dir

5.1 uwsgi安装完毕查询版本

(env) [root@reboot5 /]# pip list|grep uWSGI

uWSGI 2.0.15

5.2 将配置文件写到项目目录下

(env) [root@reboot5 nginx]# cd /root/reboot/opsweb

(env) [root@reboot5 opsweb]# vim uwsgi.ini

设置启动配置uwsgi.ini:

[uwsgi]

项目目录

chdir = /root/reboot/opsweb

指定项目的application

module=opsweb.wsgi

进程个数

workers=2

pidfile=/var/log/uwsgi/uwsgi.pid

指定IP端口

http=10.10.40.112:8001

指定静态文件

static=/root/reboot/opsweb/static

启动uwsgi的用户名和用户组

uid=root

gid=root

启用主进程

master=true

自动移除unix Socket和pid文件当服务停止的时候

vacuum=true

序列化接受的内容,如果可能的话

thunder-lock=true

启用线程

enable-threads=true

设置自中断时间

harakiri=30

设置缓冲

post-buffering=4096

设置日志目录

daemonize=/var/log/uwsgi/opsweb.log

指定sock的文件路径

socket=/var/log/uwsgi/uwsgi.sock

5.3 uwsgi启动命令:

sudo uwsgi --ini uwsgi.ini

uwsgi --reload /var/log/uwsgi/uwsgi.pid

uwsgi --start /var/log/uwsgi/uwsgi.pid

uwsgi --stop /var/log/uwsgi/uwsgi.pid

-----------------------------------nginx------------------------------------------------------

6 安装nginx:

yum install nginx -y

配置文件修改:

server {

listen 80;

server_name 10.10.40.112;

location /static {

alias /root/reboot/opsweb/static;

}

location / {

include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed

uwsgi_pass 10.10.40.112:8001;

uwsgi_pass unix:/var/log/uwsgi/uwsgi.sock;

}

}

7 django配置

7.1 django配置修改:

setting.py中添加设置静态资源路径,给nginx调用

django可以在自己的templates下面放静态资源 那个命令可以吧所有静态资源收集起来

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

#然后到项目目录下执行:

python manage.py collectstatic

修改配置文件

DEBUG = False ALLOWED_HOSTS = ['*']

故障排错

8.1 故障发现

0f6d11859b4ffdd1c3bf82ada7de544d.png

发现无法找到静态文件

8.2 通过查看nginx错误日志,定位错误

定位问题为无法访问/static目录下文件

3879b40e07c249430a181cd7b922eea1.png

8.3尝试将配置目录授予权限

a8f3f9cf5d02f31f12b73683770f319b.png

发现目录权限都已生效

81a66f0886d0a3b505c7523d4b005767.png

并且重启nginx服务,发现问题依然存在。

9f14a92b6c27b20edfad4715877f5153.png

通过检查nginx服务发现,nginx线程为nginx用户启动

2bd0bebe007d5dc44429a91a9acb9b8e.png

所以

此处需要对nginx配置文件重新加载

/etc/init.d/nginx reload

8.4 最终代理效果

注:没做代理前如访问时,IP后面需要跟端口,代理成功后只需输入代理的ip即可访问后端网站,从而提高安全性和并发访问量。

最后

以上就是羞涩黑米为你收集整理的python nginx部署_Python3+django+nginx+uwsgi使用场景部署的全部内容,希望文章能够帮你解决python nginx部署_Python3+django+nginx+uwsgi使用场景部署所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部