简介:许多朋友问有关Django如何直接运行的问题。本文的首席执行官注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!
我的是Centos系统
我们通过Tencent的控制台的登录按钮输入远程登录接口,如图1所示,如图1所示。图2是登录后的密码输入窗口,图2是密码输入窗口
输入登录接口后,它将在图3中。我们输入LS并发现没有文件。输入PIP列表将提示未安装PIP。进入Python时
1.首先,我们必须安装PIP并根据自己的系统进行选择
CentOS系统:Sudo Yum安装Python Python Pip
Ubuntu系统:sudo apt-get安装python python pip
安装后,PIP列表,查看可用的Python安装软件包
2.安装Django
我安装的Django版本是1.9.8。根据我自己的情况,随后的版本编号已更改
sudo pip安装django == 1.9.8
图4中可能存在此类问题,因为我们的PIP版本太低,请根据提示直接升级PIP
更新PIP后,安装可能如图5所示。我们不会将空气添加到==中,因为添加空间会导致无法识别Django的版本。
安装后,您将找到找不到Django的地方。实际上
/USR/lib/python2.7/site-packages/
我们想执行命令以在Django的bin目录中创建Django,如图6所示
/USR/lib/python2.7/site-packages/django/bin
输入此目录,运行django-admin.py startproject firstProject创建一个firstProject项目。第一个项目将在此目录中创建,输入项目,运行Python Manage.py Runserver.py Runserver.py Runserver.py
问题到了。运行后,不要单击。这不能输入。我们应该通过Tencent Cloud的公共网络IP访问网站,但是有些学生发现不可能通过公共网络的IP访问我们的网站。因为他的腾讯云没有打开相应的端口,因此无法访问他安全组选项中的开放端口,如图7所示
输入安全组,建立我们的开放端口,然后我打开端口80。如图8所示
开放端口后,我们重新python manage.py runserver 0.0.0.0:80,如图9所示
通过公共网络IP,您可以直接访问我们的网站。如图10所示
1.创建一个新项目。每个项目目录下都会有一个manage.py文件。
2.启动服务的命令必须适用于项目的根目录,d:django
eworldpythonmanage.pyrunserver直接打开django黑屏终端并选择要运行的服务。
只要您使用Django的ORM创建模型对象,如果未在数据中创建相应的表,则将在数据库中生成相应的表。
老实说,直到到目前为止,我都不欣赏django。这不是我的认知中的微妙设计。这只是功能所积累的“成熟解决方案”。但是,一切的兴起都是时代的选择。您不喜欢它,但需要它。希望有一天,Python可以拥有越来越丰富的成熟解决方案,并且不再因性能和维护而受到批评。(Fit End)
将其本质带到滴度上,Django的优势很方便。我们的源代码阅读的目的是探索其便利性的本质。阅读源代码的计划对每个地方都不好,而是解释功能的功能。
django-admin startproject helloworld可以生成django项目。命令行是EXE格式。
manage.py将参数交给了命令行。
execute_from_command_line()通过命令行参数创建管理类。然后运行他的execute()。
如果设置了重新加载,请在启动之前检查_errors。
check_errs()是一个关闭,因此在上一篇文章的末尾是(django.setup)()。
查看最后一个句子设置.installed_apps.grab从设置
请注意,此设置不是我们项目中的设置。
这是设置类的懒负载包装包装,直到__getAttr __。然后从设置类的实例中获取值,然后说将其分配给您自己的__ -dict__(我会直接找到它下次我自己,因为__getAttr __优先级)
为了促进调试,我们直接编写一个run.py。
在项目下创建一个run.py,以模拟运行服务器命令
调试抓取设置_MODULE
回到setup()中的最后一句话
开始观看apps.populate()
首先查看本段
这些应用最终被封装在appconfig中。
随后,调用了每个AppConfig的import_models()和ready()方法。
应用程序的加载部分通常是这样的
为了促进调试,我们重写了最后一句话
RES的类型是命令django.contrib.staticfiles.management.commands.runserver.com和object at 0x00000101ED5163A0
重点是第二个句子,让我们跳到run_from_argv()方法,这是几个处理参数。
用Pycharm指向手柄将进入基类,该基类无法获得正确的方向。实际上,子类已重写此方法。
这里有两种情况。如果加载重新加载,它将直接执行inner_run(),并且项目首先从其他逻辑开始。
当Django项目启动时,它实际上将启动两次。如果我们在项目入口(Manage.py)中设置一个贴心,您会发现它将打印两次。
在第一个启动开始时,django_autoreload_env却没有,无法输入启动逻辑。将输入crandt_with_reloader()。
在这里,您将将django_autoreload_env放置为true,然后重新启动。
第二次,您可以输入启动逻辑。
在此创建一个Django主线程以传递innit_run()。
随后,此线程创建了一个旋转式,通过reloader.run(django_main_thread)询问监护过程。
让我们看一下django innion_run()的主线程。
当我们看到WSGI时,Django的启动逻辑已经结束。下一个作业已移交给WSGI服务器
这相当于我们之前在Fastapi中所说的话,然后将Fastapi的应用程序交给ASGI服务器(ASGI也是Django提出的,这两个基本上是同源的)
那么WSGI来自哪里?让我们回头回去
此设置是一个对象,它已从以前的操作中从settings.py配置文件中获取了自己的属性。因此,我们只需要转到settings.py配置文件即可找到。
让我们找到此get_wsgi_application()。
它将再次调用setup(),返回WSGIHANDLER类的实例很重要。
这是WSGIAPP本身。
load_middleware()是WSGIAPP构建中间件堆栈的唯一方法。
如果您之前阅读了FastAPI源代码,则应该对中间件堆栈不陌生。
应用程序入口→中间件堆栈→路由→路由节点→端点
因此,WSGIAPP已完成此操作,并将服务器传递到应用程序入口的请求中,并且可以通过中间件与该路由分配。
首先,安装flup,
这是Python处理fastcgi的库。
FACTCGI使用C/S模型独立运行过程。当需要请求时,Web服务器(Apache,httpd,..)可以直接与FACTCGI进程进行通信。
Web服务器可以通过两种方法连接到FastCGI服务器:
1. UNIX域插座(或Win32的“命名管道”)
2. TCP插座
通常,TCP插座更简单,因为可以更好地配置权限问题。
如何启动FACTCGI服务器:
到项目目录,执行:
https://www.shouxicto.com/article/manage.py runfcgi [options]
如果您想提供帮助:
https://www.shouxicto.com/article/manage.py runfcgi帮助
在该选项中,您需要指定插座或主机和端口的组合。在这种情况下,当您启动Web服务器时,可以通过此信息连接到FACTCGI服务器。
例子
在TCP端口中运行线程服务器:
https://www.shouxicto.com/article/manage.py runfcgi方法=螺纹house = 127.0.0.1端口= 3033
在Unix域插座上运行预装服务器:
https://www.shouxicto.com/article/manage.py runfcgi方法= prefork socket =/home/home/user/mysite.sock pidfile = django.pid
不要充当背景过程(易于调试):
https://www.shouxicto.com/article/manage.py runfcgi daemonize = false socket =/tmp/mysite.sock
如何在后台停止FastCGI流程:
1.如果指定了pidfile属性,则可以是这样的:
杀死“猫$ pidfile”
其中,$ pidfile是您指定的pidfile选项。
要重新启动UNIX上的背景FACKCGI进程,可以执行以下Shell脚本:
#!/bin/bash
#替换三个设置。
projdir =“/home/user/myproject”
pidfile =“ $ projdir/mysite.pid”
插座=“ $ projdir/mysite.sock”
CD $ Projdir
如果[-f $ pidfile];然后
杀死'cat -$ pidfile`
RM -F- $ PIDFILE
fi
exec/usr/bin/env-
pythonpath =“ https://www.shouxicto.com/python:”:
https://www.shouxicto.com/article/manage.py runfcgi socket = $ socket pidfile = $ pidfile
Apache设置:
1.需要安装mod_fastcgi
2.编辑httpd.conf:
(1)使用fastcgiexternalver指向fastcgi服务器的位置
您可以使用套接字或主机+端口指定它:example:
#通过插座 /命名管连接到FastCGI。
fastcgiexternalserver/home/user/public_html/mysite.fcgi-socket/home/user/user/mysite.sock
#通过TCP主机/端口连接到FastCGI。
fastcgiexternalver/home/user/public_html/mysite.fcgi -host 127.0.0.1:3033
不管上述情况如何,/home/user/public_html/mysite.fcgi不需要存在。
(2)使用mod_rewrite分配需要处理为fastcgi的URL。
例子:
VirtualHost 12.34.56.78
Servername emample.com
document root/home/user/public_html
Alias/Media/Home/user/python/django/contry/admin/Media
重新启动
重写 ^ /( media.*)$ /$ 1 [QSA,L]
重新WriteCond%{request_filename}!-F
重写 ^/(。*)$/Mysite.fcgi/ $ 1 [QSA,L]
/VirtualHost
此处指示的重写是上面的FastCgiextrnalserver中的一个。
上面的配置不会在 /媒体 / /媒体的开头,或者对非存在文件的请求转移到fastcgi。
LightTPD配置
LightTPD自然支持FastCGI。
首先,请确认您的mod_fastcgi在模块列表中,以及在mod_ewrite和mod_access之后,在mod_accesslog之前。
要服务管理媒体,也许您仍然需要mod_alias。
将以下段落添加到LightTPD的配置文件:
server.document-root =“/home/user/user/public_html”
fastcgi.server =(
“/mysite.fcgi” =(
“ main” =(
#将主机 /端口代替套接字用于TCP FastCGI
#“主机” =“ 127.0.0.1”,
#“端口” = 3033,
“插座” =“ /home/user/mysite.sock”,
“ check-local” =“ disable”,
治愈
),,
治愈
alias.url =(
“/媒体/” =“/home/user/django/contry/admin/media/”,
治愈
url.rewrite-one =(
“^(/媒体。*)$” =“ $ 1”,
“^/favicon.ico $” =“ /media/favicon.ico”,
“^(/.*)$” =“ /mysite.fcgi1”
治愈
您还可以在一台LightTP服务器上运行多个Django。只要您为每个应用程序指定一个独立的FastCGI主机,就需要指定独立的FastCGI主机。
如何在共享网络托管上运行Django / apache:
编辑.htaccess:
Addhandler fastcgi-script .fcgi
重新启动
重新WriteCond%{request_filename}!-F
重写 ^(。*)$ mysite.fcgi/$ 1 [QSA,l]
编写另一个可执行脚本mysite.fcgi:
#!/usr/bin/python
导入系统,操作系统
#添加自定义Python路径。
sys.path.insrt(0,“/home/user/python”))
#切换到项目目录。(选修的。)
#os.chdir(“/home/home/user/myproject”)
#设置django_settings_module环境变量。
OS.Environ
来自django.core.servers.fastcgi import runfastcgi
runfastcgi(方法=“螺纹”,daemonize =“ false”)
更新代码后,您可以通过重新上传mysite.fcgi文件来指示Apache重新启动Django程序。
如果有外壳权限,您可以直接使用touch命令更改时间戳:
结论:以上是首席CTO指出的Django相关内容的相关内容。总结了Django的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?