1
2
3
4
|
Usage: manage.py runserver [options] [optional port number,
or
ipaddr:port]
# python manager.py runserver # default port is 8000
# python manager.py runserver 8080
# python manager.py runserver 127.0.0.1:9090
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def
get_internal_wsgi_application():
"""
Loads and returns the WSGI application as configured by the user in
``settings.WSGI_APPLICATION``. With the default ``startproject`` layout,
this will be the ``application`` object in ``projectname/wsgi.py``.
This function, and the ``WSGI_APPLICATION`` setting itself, are only useful
for Django's internal servers (runserver, runfcgi); external WSGI servers
should just be configured to point to the correct application object
directly.
If settings.WSGI_APPLICATION is not set (is ``None``), we just return
whatever ``django.core.wsgi.get_wsgi_application`` returns.
"""
from
django.conf
import
settings
app_path
=
getattr
(settings,
'WSGI_APPLICATION'
)
if
app_path
is
None
:
return
get_wsgi_application()
return
import_by_path(
app_path,
error_prefix
=
"WSGI application '%s' could not be loaded; "
%
app_path
)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<
uwsgi
>
<!-- 端口 -->
<
socket
>:7600</
socket
>
<
stats
>:40000</
stats
>
<!-- 系统环境变量 -->
<
env
>DJANGO_SETTINGS_MODULE=geek_blog.settings</
env
>
<!-- 指定的python WSGI模块 -->
<
module
>django.core.handlers.wsgi:WSGIHandler()</
module
>
<
processes
>6</
processes
>
<
master
/>
<
master-as-root
/>
<!-- 超时设置 -->
<
harakiri
>60</
harakiri
>
<
harakiri-verbose
/>
<
daemonize
>/var/app/log/blog/uwsgi.log</
daemonize
>
<!-- socket的监听队列大小 -->
<
listen
>32768</
listen
>
<!-- 内部超时时间 -->
<
socket-timeout
>60</
socket-timeout
>
</
uwsgi
>
|
1
2
|
sudo
pip
install
uwsgi
uwsgi --pidfile=
/var/run/geek-blog
.pid -x uwsgi.xml --uid blog --gid nogroup
|
1
|
from
django.conf
import
settings
|
1
2
3
4
5
6
7
8
9
10
|
def
run(addr, port, wsgi_handler, ipv6
=
False
, threading
=
False
):
server_address
=
(addr, port)
if
threading:
httpd_cls
=
type
(
str
(
'WSGIServer'
), (socketserver.ThreadingMixIn, WSGIServer), {})
else
:
httpd_cls
=
WSGIServer
httpd
=
httpd_cls(server_address, WSGIRequestHandler, ipv6
=
ipv6)
# Sets the callable application as the WSGI application that will receive requests
httpd.set_app(wsgi_handler)
httpd.serve_forever()
|
1
2
3
4
5
6
7
8
9
10
11
|
MIDDLEWARE_CLASSES
=
(
'django.middleware.cache.UpdateCacheMiddleware'
,
'django.middleware.common.CommonMiddleware'
,
'django.middleware.cache.FetchFromCacheMiddleware'
,
'django.contrib.sessions.middleware.SessionMiddleware'
,
'django.middleware.csrf.CsrfViewMiddleware'
,
'django.contrib.auth.middleware.AuthenticationMiddleware'
,
'django.contrib.messages.middleware.MessageMiddleware'
,
'django.middleware.locale.LocaleMiddleware'
,
'geek_blog.middlewares.MobileDetectionMiddleware'
,
# 自定义的Middleware
)
|