参考一些前辈文章,不一一列举,在此感谢!
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
重启机器即可