Nginx + uWSGI + Django, рд▓реЙрдиреНрдЪ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ

рд▓реЗрдЦ рдореЗрдВ рдпреВрдиреЗрдХреНрд╕ рдХреА рддрд░рд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирдЧрдиреЗрдХреНрд╕ + uWSGI рдмрдВрдбрд▓ рдореЗрдВ Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг, рд╕рд╛рде рд╣реА рдЖрдЧреЗ рд╕рдВрдЪрд╛рд▓рди рд╢реЛрд╖рдг FreeBSD рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рд┐рдирдХреНрд╕ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдорд╛рдореВрд▓реА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╣реЛрдЧреАред

рдкрд░рд┐рдЪрдп


рдПрдХ рджрд┐рди, рдХрд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░, Django (рдкрд╛рдпрдерди) рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЛ рдирдВрдЧреНрдХреНрд╕ + uWSGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓реЙрдиреНрдЪ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Django рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ uWSGI рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдУрдВ) рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдереА, рд╕рд╛рде рд╣реА рд╕рд╛рде Nginx рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реЙрдХреЗрдЯ / рдкреЛрд░реНрдЯ рднреА рдерд╛ред рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдирдпрд╛ Django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uWSGI рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдУрдВ) рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рднрд▓реЗ рд╣реА рдпрд╣ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╣реЛ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рдПрдХрд▓ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдлреНрд░реАрдмреАрдПрд╕рдбреА рдХреЗ рдЕрдиреНрдирд┐рдХреНрдХреБ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдорди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рднреА рдмрд┐рдВрджреБ рд╣реИред рдирддреАрдЬрддрди, рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдпреВрдбрдмреНрд▓реНрдпреВрдПрд╕рдЬреАрдЖрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХреА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд▓реЙрдиреНрдЪ рд╡рд┐рдзрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ (рдореМрд▓рд┐рдХ рдЕрдВрддрд░:
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛

рдпрд╣ рдПрдХ рдПрдХрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ / usr / рд╕реНрдерд╛рдиреАрдп / www рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:
# ls -la /usr/local/www/
...
drwxr-xr-x ... app1
drwxr-xr-x ... app2
drwxr-xr-x ... appN
-rw-r--r-- ... webapp.xml


Nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рд╕реНрдерд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рдПрдХ Django рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рд╕реНрдерд╛рди рд╣реИред

nginx.conf:
         рд╕реНрдерд╛рди / {
                 uwsgi_pass unix: ///tmp/uwsgi.sock;
                 uwsgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;

                 uwsgi_param UWSGI_SCRIPT рд╡реЗрдмрдк;
                 uwsgi_param UWSGI_CHDIR / usr / рд╕реНрдерд╛рдиреАрдп / www / app1;
         }

         рд╕реНрдерд╛рди / app2 {
                 uwsgi_pass unix: ///tmp/uwsgi.sock;
                 uwsgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;

                 uwsgi_param SCRIPT_NAME / app2;
                 uwsgi_param UWSGI_SCRIPT рд╡реЗрдмрдк;
                 uwsgi_param UWSGI_CHDIR / usr / рд╕реНрдерд╛рдиреАрдп / www / app2;

         }

         рд╕реНрдерд╛рди / appN {
                 uwsgi_pass unix: ///tmp/uwsgi.sock;
                 uwsgi_params рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ;

                 uwsgi_param SCRIPT_NAME / appN;
                 uwsgi_param UWSGI_SCRIPT рд╡реЗрдмрдк;
                 uwsgi_param UWSGI_CHDIR / usr / рд╕реНрдерд╛рдиреАрдп / www / appN;

         }

рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ:
Webapp.xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓

UWSGI рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (s) webapp.xml рдХреЗ рд▓рд┐рдП xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ / usr / рд╕реНрдерд╛рдиреАрдп / www рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред

webapp.xml:
  <Uwsgi>
         <рд╕реЙрдХреЗрдЯ> /tmp/uwsgi.sock </ рд╕реЙрдХреЗрдЯ>
         <рдкреНрд░рдХреНрд░рд┐рдпрд╛> 1 </ рдкреНрд░рдХреНрд░рд┐рдпрд╛>

         <рдЧреБрд░реБ />
         <рд╕рдХреНрд╖рдо-рдереНрд░реЗрдб />

         <uid> 80 </ uid>
         <gid> 80 </ gid>

         <pidfile> /var/run/uwsgi.pid </ pidfile>
 </ Uwsgi> 

Django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдРрдкреНрдк 1, рдРрдк 2, рдРрдкрдПрди рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╡реЗрдмрдПрдк рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬреЛ рдХрд┐ Django рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИред UWSGI рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЗ webapp рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ webapp, рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ, WSGI рд╣реИрдВрдбрд▓рд░ рдХреЛ DjNO рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдРрдкреНрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдЕрдк рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
 # - * - рдХреЛрдбрд┐рдВрдЧ: iso-8859-1 - * -

 рдЖрдпрд╛рдд sys, рдУрдПрд╕
 рдЖрдпрд╛рдд django.core.handlers.wsgi

 sys.path.insert (0, '/ usr / рд╕реНрдерд╛рдиреАрдп / www / app1')
 os.environ ['DJANGO_SETTINGS_MODULE'] = 'рд╕реЗрдЯрд┐рдВрдЧ'

 рдЖрд╡реЗрджрди = django.core.handlers.wsgi.WSGIHandler ()

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдпрд╣ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдм, рд╕рднреА Django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП uWSGI рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдБ:
# uwsgi -s /tmp/uwsgi.sock -x /usr/local/www/webgi.sml

рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░, рд▓реЙрдиреНрдЪ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
/etc/rc.conf:
uwsgi_enable = "рд╣рд╛рдБ"
uwsgi_flags = "- x /usr/local/www/webapp.xml"

# usr / рд╕реНрдерд╛рдиреАрдп / рдЖрджрд┐ / uwsgi рдкреНрд░рд╛рд░рдВрдн

рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдпрд╣ Django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, Nginx рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЛрдХреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ Nginx рдФрд░ uWSGI рдбреЗрдореЙрди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рд╕рд╛рд╣рд┐рддреНрдп рдмреНрд▓реЙрдЧреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛

projects.unbit.it/uwsgi/wiki/RunOnNginx
projects.unbit.it/uwsgi/wiki/Example
projects.unbit.it/uwsgi/wiki/Emperor

http://wiki.diphost.ru/Category:WSGI
blog.zacharyvoase.com/2010/03/05/django-uwsgi-nginx
www.westphahl.net/blog/2010/4/8/running-django-nginx-and-uwsgi
posterous.adambard.com/start-to-finish-serving-mysql-backed-django-w
brandonkonkle.com/blog/2010/sep/14/django-uwsgi-and-nginx
www.jeremybowers.com/blog/post/5/django-nginx-and-uwsgi-production-serving-millions-page-views
www.cherokee-project.com/doc/cookbook_uwsgi.html

Source: https://habr.com/ru/post/In116894/


All Articles