Nginx+uwsgi+django

01 Python36 install python36
ex:




2. Nginx安装

  • 首先要安装Nginx仓库,sudo vi /etc/yum.repos.d/nginx.repo添加以下内容:
[nginx]
name=nginx repo
gpgcheck=1
enabled=1
  • 下载Nginx的key文件,wget https://nginx.org/keys/nginx_signing.key
  • 安装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安装

检查自己是否在虚拟环境下,进入虚拟环境,执行pip install uwsgi安装uWSGI,测试uWSGI是否安装好。执行vi test.py输入一下内容保存:
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
/usr/share/nginx/www.
or
/usr/share/nginx/html

3.onlycongofig