Nginx+uwsgi+django
01 Python36 install python36
ex:
2. Nginx安装
- 安装key文件,sudo rpm –import nginx_signing.key
- 安装Nginx,sudo yum install nginx
- 测试Nginx,sudo nginx
方法一:臨時關閉 setenforce 0
方法二:用戶關閉
修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled
重啟機器即可
3. uWSGI安装
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
开启uWSGI服务,uwsgi --http :8000 -wsgi-file test.py,打开浏览器,输入(你的IP):8000看到Hello World代表web client到uWSGI到Python的连接正常。
可以測試uwsgi是否運行成功
4. Django配置
先执行pip install -r requirements.txt安装好Python包,正式部署前要配置好Django项目的配置(settings.py),修改一下项目:
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1','localhost','(你的域名)']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
然后记得执行一下语句:
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser # 创建超级用户
python manage.py collectstatic
然后执行python manage.py runserver测试Django项目运行是否正常。
5. uWSGI到Django配置
uwsgi --http :8000 --module (你的Djnago项目名).wsgi
打开浏览器测试(8000端口),如果Django项目运行正常,表示Web Client到uWSGI到Django运行正常。
vi uwsgi.ini添加以下内容并保存
[uwsgi]
socket = :8001
chdir= (你的Django项目地址)
wsgi-file = (你的Django项目地址下wsgi.py所在位置)
touch-reload = ~/reload # 如果reload文件有更改,重启uWSGI
module=(你的Django项目名称).wsgi
master=true
processes = 2 # 进程数
threads = 4 # 线程数
chmod-socket = 664
chown-socket = (centos用户名):(centos组)
vacuum=true
pidfile = ~/tmp/uwsgi.pid #pid 文件位置 |
执行uWSGI –ini uwsgi.ini &运行uWSGI,如果Django项目有更改的话可以执行touch ~/reload重启uWSGI。
6. 配置Nginx
执行 sudo vi /etc/nginx/nginx.conf修改添加一下内容
# 注意,这只是nginx.conf中的一部分,其他内容不熟悉的话不要修改。
http {
upstream django {
server 127.0.0.1:8001;
}
server {
listen 80;
server_name (你的域名地址);
charset utf-8;
access_log logs/host.access.log main;
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
location /static/ {
alias (你的Django项目static地址);
}
location /media/ {
alias (你的Django项目media地址);
}
location ~ .*.txt$ {
root (robots.txt所在地址);
}
}
} |
改好了之后执行sudo nginx -s stop和sudo nginx重新加载Nginx的配置。
(sudo nginx -s reload)ps.1
ps.
1.Nginx 重啓是報錯
未找到nginx.pid文件
$sudo nginx (执行该命令之后,nginx 会在 /usr/local/var/run/(安裝路徑) 路径下创建一个名为nginx.pid 的文件 )
$sudo nginx -s stop (删除pid文件)
所以在stop后,使用reload启动nginx便会报错,此时使用nginx直接启动便可。
2.Nginx html path