參考一些前輩文章,不一一列舉,在此感謝!
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
重啓機器即可