{"title":"Πως να χρησιμοποιήσετε το Django με το uWSGI","version":"1.11","locale":"el","docname":"howto/deployment/wsgi/uwsgi","url":"/el/1.11/howto/deployment/wsgi/uwsgi/","canonical":"https://djangodocs.dev/el/1.11/howto/deployment/wsgi/uwsgi/","summary":"Το uWSGI είναι ένας γρήγορος, αυτό-θεραπευόμενος και φιλικός προς τον developer και τον διαχειριστή application container server ο οποίος είναι γραμμένος αμιγώς σε…","html":"<h1>Πως να χρησιμοποιήσετε το Django με το uWSGI<a class=\"heading-anchor\" href=\"#how-to-use-django-with-uwsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Το <a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/\">uWSGI</a> είναι ένας γρήγορος, αυτό-θεραπευόμενος και φιλικός προς τον developer και τον διαχειριστή application container server ο οποίος είναι γραμμένος αμιγώς σε C.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Δείτε επίσης</p>\n<p>Τα εγχειρίδια του uWSGI παρέχουν ένα <a class=\"reference external\" href=\"https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html\">tutorial</a> που καλύπτουν το Django, τον nginx και το uWSGI (ένας από τους πολλούς συνδυασμούς για να κάνετε deployment). Τα άρθρα, παρακάτω, εστιάζουν στο πως να ενσωματώσετε το Django με το uWSGI.</p>\n</aside>\n<section id=\"prerequisite-uwsgi\">\n<h2>Προαπαιτούμενο: uWSGI<a class=\"heading-anchor\" href=\"#prerequisite-uwsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Το uWSGI wiki περιγράφει πολλά <a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/en/latest/Install.html\">installation procedures</a>. Μπορείτε να εγκαταστήσετε οποιαδήποτε uWSGI έκδοση επιθυμείτε χρησιμοποιώντας τον διαχειριστή πακέτων της Python, pip. Για παράδειγμα:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\"># </span>Install<span class=\"w\"> </span>current<span class=\"w\"> </span>stable<span class=\"w\"> </span>version.\n<span class=\"gp\">$ </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>uwsgi\n\n<span class=\"gp\"># </span>Or<span class=\"w\"> </span>install<span class=\"w\"> </span>LTS<span class=\"w\"> </span><span class=\"o\">(</span>long<span class=\"w\"> </span>term<span class=\"w\"> </span>support<span class=\"o\">)</span>.\n<span class=\"gp\">$ </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>https://projects.unbit.it/downloads/uwsgi-lts.tar.gz\n</code></pre></div>\n<section id=\"uwsgi-model\">\n<h3>Το μοντέλο του uWSGI<a class=\"heading-anchor\" href=\"#uwsgi-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>uWSGI operates on a client-server model. Your Web server (e.g., nginx, Apache)\ncommunicates with a django-uwsgi «worker» process to serve dynamic content.</p>\n</section>\n<section id=\"configuring-and-starting-the-uwsgi-server-for-django\">\n<h3>Παραμετροποιώντας και ξεκινώντας τον uWSGI server για το Django<a class=\"heading-anchor\" href=\"#configuring-and-starting-the-uwsgi-server-for-django\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>uWSGI supports multiple ways to configure the process. See uWSGI’s\n<a class=\"reference external\" href=\"https://uwsgi.readthedocs.io/en/latest/Configuration.html\">configuration documentation</a>.</p>\n<p>Παρακάτω φαίνεται ένα παράδειγμα της εντολής <code class=\"docutils literal notranslate\"><span class=\"pre\">uwsgi</span></code> για να ξεκινήσετε έναν uWSGI server:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>uwsgi<span class=\"w\"> </span>--chdir<span class=\"o\">=</span>/path/to/your/project<span class=\"w\"> </span><span class=\"se\">\\</span>\n<span class=\"w\">    </span>--module<span class=\"o\">=</span>mysite.wsgi:application<span class=\"w\"> </span><span class=\"se\">\\</span>\n<span class=\"w\">    </span>--env<span class=\"w\"> </span><span class=\"nv\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span>mysite.settings<span class=\"w\"> </span><span class=\"se\">\\</span>\n<span class=\"w\">    </span>--master<span class=\"w\"> </span>--pidfile<span class=\"o\">=</span>/tmp/project-master.pid<span class=\"w\"> </span><span class=\"se\">\\</span>\n<span class=\"w\">    </span>--socket<span class=\"o\">=</span><span class=\"m\">127</span>.0.0.1:49152<span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">     </span><span class=\"c1\"># can also be a file</span>\n<span class=\"w\">    </span>--processes<span class=\"o\">=</span><span class=\"m\">5</span><span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">                </span><span class=\"c1\"># number of worker processes</span>\n<span class=\"w\">    </span>--uid<span class=\"o\">=</span><span class=\"m\">1000</span><span class=\"w\"> </span>--gid<span class=\"o\">=</span><span class=\"m\">2000</span><span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">        </span><span class=\"c1\"># if root, uwsgi can drop privileges</span>\n<span class=\"w\">    </span>--harakiri<span class=\"o\">=</span><span class=\"m\">20</span><span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">                </span><span class=\"c1\"># respawn processes taking more than 20 seconds</span>\n<span class=\"w\">    </span>--max-requests<span class=\"o\">=</span><span class=\"m\">5000</span><span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">          </span><span class=\"c1\"># respawn processes after serving 5000 requests</span>\n<span class=\"w\">    </span>--vacuum<span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">                     </span><span class=\"c1\"># clear environment on exit</span>\n<span class=\"w\">    </span>--home<span class=\"o\">=</span>/path/to/virtual/env<span class=\"w\"> </span><span class=\"se\">\\ </span><span class=\"w\">  </span><span class=\"c1\"># optional path to a virtualenv</span>\n<span class=\"w\">    </span>--daemonize<span class=\"o\">=</span>/var/log/uwsgi/yourproject.log<span class=\"w\">      </span><span class=\"c1\"># background the process</span>\n</code></pre></div>\n<p>Τα παραπανω προϋποθέτουν ότι έχετε ένα project με το όνομα <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> και μέσα σε αυτό ένα module <code class=\"file docutils literal notranslate\"><span class=\"pre\">mysite/wsgi.py</span></code> το οποίο περιέχει ένα WSGI <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> object. Αυτή θα είναι η διάταξη που θα έχετε αν τρέξετε την εντολή <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span> <span class=\"pre\">startproject</span> <span class=\"pre\">mysite</span></code> (χρησιμοποιώντας το δικό σας όνομα project στη θέση του <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code>, φυσικά) με μια νεώτερη έκδοση του Django. Αν το αρχείο <code class=\"file docutils literal notranslate\"><span class=\"pre\">mysite/wsgi.py</span></code> δεν υπάρχει, θα χρειαστεί να το δημιουργήσετε. Δείτε στο άρθρο <a class=\"reference internal\" href=\"/el/1.11/howto/deployment/wsgi/\"><span class=\"doc\">Πως να ανεβάσετε το site σας χρησιμοποιώντας το WSGI</span></a> για τα προεπιλεγμένα περιεχόμενα που θα πρέπει να βάλετε σε αυτό το αρχείο καθώς και άλλα που μπορείτε να προσθέσετε.</p>\n<p>Οι επιλογές που αφορούν το Django είναι:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">chdir</span></code>: Το path στο φάκελο που χρειάζεται να είναι στο import path της Python – πχ ο φάκελος που περιέχει το project <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code>.</p></li>\n<li><p>module`: Το module WSGI που θα χρησιμοποιηθεί – πιθανόν το αρχείο <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.wsgi</span></code> που δημιουργεί η εντολή <a class=\"reference internal\" href=\"/el/1.11/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">env</span></code>: Θα πρέπει να περιέχει τουλάχιστον τη μεταβλητή <code class=\"docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">home</span></code>: Προαιρετικό path για το to virtualenv του project σας.</p></li>\n</ul>\n<p>Παράδειγμα του configuration αρχείου ini:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"o\">[</span>uwsgi<span class=\"o\">]</span>\n<span class=\"nv\">chdir</span><span class=\"o\">=</span>/path/to/your/project\n<span class=\"nv\">module</span><span class=\"o\">=</span>mysite.wsgi:application\n<span class=\"nv\">master</span><span class=\"o\">=</span>True\n<span class=\"nv\">pidfile</span><span class=\"o\">=</span>/tmp/project-master.pid\n<span class=\"nv\">vacuum</span><span class=\"o\">=</span>True\nmax-requests<span class=\"o\">=</span><span class=\"m\">5000</span>\n<span class=\"nv\">daemonize</span><span class=\"o\">=</span>/var/log/uwsgi/yourproject.log\n</code></pre></div>\n<p>Παράδειγμα χρήσης του configuration αρχείου ini:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>uwsgi<span class=\"w\"> </span>--ini<span class=\"w\"> </span>uwsgi.ini\n</code></pre></div>\n<aside class=\"admonition-fixing-unicodeencodeerror-for-file-uploads admonition\">\n<p class=\"admonition-title\">Διορθώνοντας το σφάλμα <code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeEncodeError</span></code> για uploads αρχείων</p>\n<p>Αν λαμβάνετε το σφάλμα <code class=\"docutils literal notranslate\"><span class=\"pre\">UnicodeEncodeError</span></code> όταν ανεβάζετε αρχεία που τα ονόματα τους περιέχουν χαρακτήρες που δεν ανήκουν στον ASCII κώδικα (όπως είναι οι ελληνικοί χαρακτήρες), σιγουρευτείτε ότι ο uWSGI είναι ρυθμισμένος να δέχεται ονόματα αρχείων με χαρακτήρες που δεν είναι ASCII, προσθέτωντας το παρακάτω στο αρχείο <code class=\"docutils literal notranslate\"><span class=\"pre\">uwsgi.ini</span></code>:</p>\n<div class=\"code-block\" data-language=\"bash\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"nv\">env</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">LANG</span><span class=\"o\">=</span>en_US.UTF-8\n</code></pre></div>\n<p>Δείτε στην ενότητα <a class=\"reference internal\" href=\"/el/1.11/ref/unicode/#unicode-files\"><span class=\"std std-ref\">Αρχεία</span></a> του Unicode οδηγού για λεπτομέρειες.</p>\n</aside>\n<p>Ανατρέξτε στα εγχειρίδια του uWSGI σχετικά με <a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/en/latest/Management.html\">managing the uWSGI process</a> για πληροφορίες σχετικά με την εκκίνηση, παύση και επαναφόρτωση των uWSGI workers.</p>\n</section>\n</section>","rootId":"how-to-use-django-with-uwsgi","toc":[{"title":"Προαπαιτούμενο: uWSGI","anchor":"prerequisite-uwsgi","children":[{"title":"Το μοντέλο του uWSGI","anchor":"uwsgi-model","children":[]},{"title":"Παραμετροποιώντας και ξεκινώντας τον uWSGI server για το Django","anchor":"configuring-and-starting-the-uwsgi-server-for-django","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Οδηγοί «Πως-να»","url":"/el/1.11/howto/"},{"docname":"howto/deployment/index","title":"Ανεβάζοντας το Django site σας για το ευρύ κοινό (deploying)","url":"/el/1.11/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"Πως να ανεβάσετε το site σας χρησιμοποιώντας το WSGI","url":"/el/1.11/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/gunicorn","title":"Πως να χρησιμοποιήσετε το Django με το Gunicorn","url":"/el/1.11/howto/deployment/wsgi/gunicorn/"},"next":{"docname":"howto/deployment/checklist","title":"Λίστα ελέγχου για το Deployment","url":"/el/1.11/howto/deployment/checklist/"},"formats":{"html":"/el/1.11/howto/deployment/wsgi/uwsgi/","markdown":"/el/1.11/howto/deployment/wsgi/uwsgi.md","json":"/el/1.11/howto/deployment/wsgi/uwsgi.json"},"source":"https://github.com/django/django/blob/stable/1.11.x/docs/howto/deployment/wsgi/uwsgi.txt","official":"https://docs.djangoproject.com/el/1.11/howto/deployment/wsgi/uwsgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10"],"inLocales":["en","fr","ja","id","pt-br","ko","es","el","pl"]}