python3.6+django+uwsgi+nginx+wata

參考一些前輩文章,不一一列舉,在此感謝!

1單獨安裝python3.6,不要動系統中原來的python 使用make altinstall

2安裝Django

cd /user/local/python/bin

./pip3.6 install django

3創建Django項目

mkdir /data

進入/data文件夾,創建名爲“helloworld”的項目

cd /data

/usr/local/python/bin/django-admin startproject helloworld

------helloword/根目錄只是項目的容器,它的名字與Django無關,可以將它重命名爲任何任何名字

helloworld一級子目錄:項目名稱,是項目的實際python包,它的名字是你需要用來導入任何內容的python包名

manage.py:一個命令行實用程序,可讓你以各種方式與Django項目進行交互

__init__.py:一個空文件,告訴python這個目錄應該被視爲一個python包

settings.py:這是Django項目的設置與配置,Django設置會告訴你有關設置如何工作的所有信息

urls.py:這是Django項目的URL聲明,路由表。

wsqi.py:WSGI兼容的Web服務器爲你的項目提供服務的入口點。

 

3創建應用到項目根目錄下

cd helloworld/

/usr/local/python/bin/python3.6 manage.py startapp app_name

 

4添加應用到項目配置,把我們新定義的app加到settings.py中的INSTALL_APPS中, 新建的 app 如果不加到 INSTALL_APPS 中的話, django 就不能自動找到app中的模板文件(app-name/templates/下的文件)和靜態文件(app-name/static/中的文件)

修改 /data/helloworld/helloworld/settings.py 文件權限爲其它人可寫

sudo chmod 666 /data/helloworld/helloworld/settings.py

修改 settings.py

#允許訪問的ip

ALLOWED_HOSTS = ['192.168.128.128','127.0.0.1','localhost']

# Application definition

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'app_name',

]

 

5在應用中創建一個控制視圖,將/data/helloworld/app_name/views.py修改權限爲其它人可寫

sudo chmod 666 /data/helloworld/app_name/views.py

編輯內容

from django.http.response import HttpResponse

def hello(request):

    user = request.GET.get('user')

    if not user: user = 'world'

return HttpResponse('hello %s' % user)

 

6添加應用路由項目路由表,修改 urls.py 文件權限

修改 /data/helloworld/helloworld/urls.py 文件權限爲其它人可寫,並且修改爲

sudo chmod 666 /data/helloworld/helloworld/urls.py

#修改內容

from django.contrib import admin
from django.urls import path

from app_name import views as app_views

urlpatterns = [
path('admin/', admin.site.urls),

#第一個參數爲url訪問路徑,模塊別名.方法名
path('hello',app_views.hello),
]

 

7啓動web服務器,瀏覽器輸入網址

cd /data/helloworld

/usr/local/python/bin/python3.6 manage.py runserver 0.0.0.0:8081

http://192.168.128.128:8081/hello

http://192.168.128.128:8081/hello?user=test

 

如果訪問失敗檢查防火牆服務設置,

systemctl status firewalld.service

systemctl start firewalld.service

systemctl stop firewalld.service

 

8ctrl+c關閉web服務器

 

9部署 uwsgi 和 nginx

10使用 pip 安裝 uwsgi

/usr/local/python/bin/pip3.6 install uwsgi

 

將django的應用程序託管給uwsgi服務

/usr/local/python/bin/uwsgi --http :8081 --module helloworld.wsgi

使用http://192.168.128.128:8081/hello?user=test 測試http是否可以訪問

 

2使用配置文件啓動 uwsgi服務

創建文件 /data/helloworld/uwsgi.ini ,並修改權限爲其它人可寫

touch /data/helloworld/uwsgi.ini

chmod 666 /data/helloworld/uwsgi.ini

編輯輸入以下內容

[uwsgi]

#項目絕對路徑

chdir = /data/helloworld

#http供瀏覽器直接訪問使用

http=:8081

#socket供通過nginx使用

socket = :8080

#指定訪問項目名稱

module=helloworld.wsgi:application

#當前使用版本的python庫絕對路徑

pythonpath=/usr/local/python/lib/python3.6/site-packages

master = true

vhost = true

no-site = true

workers = 2

reload-mercy = 10     

vacuum = true

max-requests = 1000   

limit-as = 512

buffer-size = 30000

pidfile = /tmp/uwsgi.pid

daemonize = /tmp/uwsgi.log

 

3啓動uwsgi

啓動uwsgi

./../uwsgi --ini uwsgi.ini

使用http://192.168.128.128:8081/hello?user=test 測試http是否可以訪問

 

4安裝nginx,參見《centos7安裝nginx.docx》

 

5添加 nginx 配置文件

/etc/nginx/conf.d/default.conf

server {

    listen       80;

    server_name  192.168.128.128;

 

    charset utf-8;

 

    location / {

        uwsgi_pass 127.0.0.1:8080;

        include /etc/nginx/uwsgi_params;

        client_max_body_size      10m;

    }

 

    client_body_timeout  3m;

    send_timeout   3m;

    proxy_send_timeout 3m;

    proxy_read_timeout 3m;

}

 

6重啓nginx服務

systemctl restart nginx

 

7測試 nginx + uwsgi + django 是否工作正常

http://192.168.128.128/hello

 

如果訪問失敗,檢查SELinux(安全模塊)配置

getenforce

Permissive  #寬容模式

Enforcing   #強制模式

 

setenforce 0    #臨時設置爲寬容模式,當前用戶有效,重啓失效

setenforce 1    #臨時設置爲強制模式,當前用戶有效,重啓失效

 

永久生效:

修改/etc/selinux/config文件

#SELINUX=enforcing

SELINUX=disabled

重啓機器即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章