1.Nginx+Uwsgi+Django 项目整体架构图
2.Uwsgi代理配置场景
步骤一、安装python3的环境
步骤二、安装Django框架、Uwsgi
步骤三、单独测试Django与Uwsgi是否正常
步骤四、配置项目,使用项目以Uwsgi方式启动
步骤五、配置Nginx反向代理Uwsgi
1.环境准备
0.安装依赖软件包
yum install libffi-devel openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel zlib zlib-devel -y
1.安装python3环境
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
tar xf Python-3.7.2.tgz
cd Python-3.7.2/
./configure && make && make install
2.安装Django框架与Uwsgi
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install --upgrade pip
pip3 install uwsgi
pip3 install django
3.测试Uwsgi是否正常,新建test.py文件
cat test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello Django"]
# 使用uwsgi 启动
uwsgi --http :8001 --wsgi-file test.py
#使用curl访问
curl 127.0.0.1:8001
4.测试完成后,接着使用Django配置个demo测试
django-admin.py startproject demosite
5.修改为所有人可访问
vim demosite/settings.py
28:ALLOWED_HOSTS = [*]
6.升级sqlite
tar xf sqlite-autoconf-3300100.tar.gz
cd sqlite-autoconf-330010
#centos7默认有python2.7版本
ln -sf /usr/local/bin/sqlite3 /usr/bin/sqlite3
echo 'export LD_LIBRARY_PATH="/usr/local/lib" ' >>/etc/profile
. /etc/profile
7.启动进行测试
python3 manage.py runserver 0.0.0.0:8002
ss -lntup |grep 8002
2.通过Uwsgi启动Django
cat /html/django/oldboyedu/uwsgi.ini
[uwsgi]
socket = 127.0.0.1:9999
workers = 2
max-requests = 1000
buffer-size = 30000
pidfile = /run/uwsgi.pid
daemonize = /var/log/uwsgi.log
**3.配置nginx访问django**
cat /etc/nginx/conf.d/py.conf
server {
listen 80;
server_name bbs.oldboy.com;
client_max_body_size 100M;
location / {
index index.html;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9999;
uwsgi_param UWSGI_SCRIPT oldboyedu.wsgi;
uwsgi_param UWSGI_CHDIR /html/django/oldboyedu;
}
}
3.nginx Uwsgi部署Django项目
mkdir /html/bbs-django
tar xf BBS.zip
cd /html/bbs-django/BBS
#安装依赖关系
pip install -r re.txt
#准备数据库,并导入数据
create database bbs;
use bbs;
source /html/bbs-django/BBS/bbs.sql
grant all on bbs.* to 'bbs'@localhost identified by 'bbs';
#修改程序代码使用数据库
vim /html/bbs-django/BBS/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bbs',
'HOST': "127.0.0.1",
'USER': 'bbs',
'PASSWORD': 'bbs',
'PORT': 3306,
}
}
#配置Uwsgi
cat /html/bbs-django/BBS/uwsgi.ini
[uwsgi]
socket = 127.0.0.1:9999
workers = 4
max-requests = 1000
buffer-size = 30000
pidfile = /run/uwsgi.pid
daemonize = /var/log/uwsgi.log
#配置nginx Uwsgi反向代理
cat /etc/nginx/conf.d/py.conf
server {
listen 80;
server_name bbs.oldboy.com;
client_max_body_size 100M;
location /static {
alias /html/bbs-django/BBS/static/;
}
location /media {
alias /html/bbs-django/BBS/media;
}
location / {
index index.html;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9999;
uwsgi_param UWSGI_SCRIPT BBS.wsgi;
uwsgi_param UWSGI_CHDIR /html/bbs-django/BBS;
}
}
#启动nginx
#浏览器访问
http://10.0.0.51/index
#排错
安装redis——sessions
pip install django-redis_sessions
去掉py代码中最后逗号
sed -n 151p /usr/local/lib/python3.7/site-packages/django/contrib/admin/widgets.py
'%s=%s' % (k, v) for k, v inparams.items()
修改准许所有人访问
grep -i Allow BBS/settings.py
ALLOWED_HOSTS = ['*']
#重启Uwsgi,再进行测试
pkill uwsgi
uwsgi --ini /html/bbs-django/BBS/uwsgi.ini
排错看日志最后就行