{"id":9619,"date":"2024-12-06T00:30:44","date_gmt":"2024-12-06T08:30:44","guid":{"rendered":"https:\/\/www.shop2world.com\/blog\/?p=9619"},"modified":"2024-12-06T19:11:47","modified_gmt":"2024-12-07T03:11:47","slug":"%f0%9f%9a%80-sws-django-%ed%94%84%eb%a1%9c%eb%8d%95%ec%85%98-%ec%84%9c%eb%b2%84-%ec%84%a4%ec%b9%98-%ea%b0%80%ec%9d%b4%eb%93%9c-%f0%9f%8c%9f","status":"publish","type":"post","link":"https:\/\/www.shop2world.com\/blog\/archives\/9619","title":{"rendered":"\ud83d\ude80 [SWS] Django \ud504\ub85c\ub355\uc158 \uc11c\ubc84 \uc124\uce58 \uac00\uc774\ub4dc \ud83c\udf1f"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>\ud83d\ude80 <strong>[SWS] Django \ud504\ub85c\ub355\uc158 \uc11c\ubc84 \uc124\uce58 \uac00\uc774\ub4dc<\/strong> \ud83c\udf1f<\/h3>\n\n\n\n<p><strong>\uc774 \uac00\uc774\ub4dc\ub294 \uac1c\ubc1c \uc11c\ubc84\ub97c \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc73c\ub85c \uc804\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc548\ub0b4\ud569\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\ud83d\udd52 <strong>\uc18c\uc694 \uc2dc\uac04<\/strong>: \uc57d 10\ubd84<br>\ud83d\udd11 <strong>\ud544\uc218 \uc870\uac74<\/strong>: Django \uac1c\ubc1c \uc11c\ubc84 \uc124\uce58 \uc644\ub8cc \u2705<br>\ud83d\udc65 <strong>\ub300\uc0c1<\/strong>: Shop2World \uc6f9\uc11c\ube44\uc2a4 \uc0ac\uc6a9\uc790<br>*chroot \ud658\uacbd\uc758 \uc0f5\ud22c\uc6d4\ub4dc \uc6f9\uc11c\ube44\uc2a4 \uc774\uc6a9 \uace0\uac1d\uc740 \uc544\ub798\uc758 \ud130\ubbf8\ub0a0 \uae30\ubc18 \uc791\uc5c5\uc740 \ubcc4\ub3c4 \uad00\ub9ac\uc790 \uc694\uccad \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>1\ufe0f\u20e3 <strong><code>passenger_wsgi.py<\/code> \ud30c\uc77c \uc0dd\uc131 \ubc0f \uc124\uc815<\/strong> \ud83d\udcc2<\/h3>\n\n\n\n<p>\ud83d\udccc <strong>\ud30c\uc77c \uc704\uce58<\/strong>: Django \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8 \ub514\ub809\ud1a0\ub9ac (\uc608: <code>manage.py<\/code>\uac00 \uc788\ub294 \uc704\uce58)<\/p>\n\n\n\n<p>\uc544\ub798 \ub0b4\uc6a9\uc744 \uc0c8 \ud30c\uc77c <code>passenger_wsgi.py<\/code>\uc5d0 \uc791\uc131\ud558\uc138\uc694:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># -*- coding: utf-8 -*-\nimport os\nimport sys\n\n# \uac00\uc0c1\ud658\uacbd Python \uacbd\ub85c\n# \uc608: INTERP = \"\/var\/www\/vhosts\/mysite.com\/django.mysite.com\/venv\/bin\/python\"\nINTERP = \"\/var\/www\/vhosts\/&#91;\ub3c4\uba54\uc778]\/&#91;\uc11c\ube0c\ub3c4\uba54\uc778]\/venv\/bin\/python\"\nif sys.executable != INTERP:\n    os.execl(INTERP, INTERP, *sys.argv)\n\n# Django \uc124\uc815\nos.environ&#91;'DJANGO_SETTINGS_MODULE'] = 'config.settings'\n\nfrom django.core.wsgi import get_wsgi_application\napplication = get_wsgi_application()\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udccc <strong>\ucc38\uace0<\/strong>:<\/p>\n\n\n\n<ul><li>\uac00\uc0c1\ud658\uacbd\uc758 Python \uc808\ub300 \uacbd\ub85c\ub97c <code>INTERP<\/code>\uc5d0 \uc815\ud655\ud788 \uc785\ub825\ud558\uc138\uc694.<ul><li>\uacbd\ub85c\ub97c \ucc3e\uc73c\ub824\uba74 \uc544\ub798 \uba85\ub839\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc138\uc694: <code>which python<\/code><\/li><\/ul><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>2\ufe0f\u20e3 <strong><code>settings.py<\/code> \ud504\ub85c\ub355\uc158 \uc124\uc815<\/strong> \ud83d\udd12<\/h3>\n\n\n\n<p>\ud83d\udcc2 <strong>\ud30c\uc77c \uc704\uce58<\/strong>: <code>config\/settings.py<\/code><\/p>\n\n\n\n<p>\uc544\ub798\uc640 \uac19\uc774 \ud504\ub85c\ub355\uc158\uc6a9 \uc124\uc815\uc744 \ucd94\uac00 \ub610\ub294 \uc218\uc815\ud558\uc138\uc694:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># DEBUG \ubaa8\ub4dc \ube44\ud65c\uc131\ud654\nDEBUG = False\n\n# \ud5c8\uc6a9\ub41c \ud638\uc2a4\ud2b8 \uc124\uc815\nALLOWED_HOSTS = &#91;'\uc11c\ube0c\ub3c4\uba54\uc778', 'www.\uc11c\ube0c\ub3c4\uba54\uc778']\n\n# \ubcf4\uc548 \uc124\uc815 \ud65c\uc131\ud654\nSECURE_SSL_REDIRECT = True\nSESSION_COOKIE_SECURE = True\nCSRF_COOKIE_SECURE = True\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>3\ufe0f\u20e3 <strong>URL \uc124\uc815: \uad00\ub9ac\uc790 \ud398\uc774\uc9c0\ub85c \ub9ac\ub2e4\uc774\ub809\ud2b8<\/strong> \ud83c\udf10<\/h3>\n\n\n\n<p>\ud83d\udcc2 <strong>\ud30c\uc77c \uc704\uce58<\/strong>: <code>config\/urls.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from django.contrib import admin\nfrom django.urls import path\nfrom django.views.generic import RedirectView\n\nurlpatterns = &#91;\n    path('admin\/', admin.site.urls),\n    path('', RedirectView.as_view(url='\/admin\/', permanent=True)),\n]\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>4\ufe0f\u20e3 <strong>\uc815\uc801 \ud30c\uc77c \uc124\uc815<\/strong> \ud83d\udcc1<\/h3>\n\n\n\n<ol><li><strong>\uc815\uc801 \ud30c\uc77c \uc218\uc9d1<\/strong> <code>python manage.py collectstatic<\/code><\/li><li><strong>\ub514\ub809\ud1a0\ub9ac \uad8c\ud55c \uc124\uc815<\/strong> <code>chmod 755 static media staticfiles chmod 755 passenger_wsgi.py<\/code><\/li><\/ol>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>5\ufe0f\u20e3 <strong><code>tmp<\/code> \ub514\ub809\ud1a0\ub9ac \uc0dd\uc131<\/strong> \ud83d\udee0\ufe0f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p tmp\nchmod 755 tmp\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>6\ufe0f\u20e3 <strong>\ud638\uc2a4\ud305 \uad00\ub9ac\uc790\uc5d0\uac8c \uc694\uccad<\/strong> \ud83d\ude4b<\/h3>\n\n\n\n<p>\uc544\ub798 \ub0b4\uc6a9\uc744 \ud638\uc2a4\ud305 \uad00\ub9ac\uc790\uc5d0\uac8c \uc804\ub2ec\ud558\uc138\uc694:<\/p>\n\n\n\n<ol><li><strong>\uc11c\ube0c\ub3c4\uba54\uc778 \uc0dd\uc131 \ud655\uc778<\/strong><ul><li>\uc11c\ube0c\ub3c4\uba54\uc778\uc774 \uc81c\ub300\ub85c \ud65c\uc131\ud654\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li><\/ul><\/li><li><strong>Passenger App Root \uc124\uc815<\/strong><ul><li>\uacbd\ub85c: <code>\/var\/www\/vhosts\/[\ub3c4\uba54\uc778]\/[\uc11c\ube0c\ub3c4\uba54\uc778]<\/code><\/li><\/ul><\/li><li><strong>\uc790\ub3d9 \uc0dd\uc131\ub41c <code>index.html<\/code> \uc0ad\uc81c<\/strong><ul><li>Passenger \ub3d9\uc791\uc744 \ubc29\ud574\ud558\ub294 \uae30\ubcf8 \ud15c\ud50c\ub9bf \ud30c\uc77c\uc774 \uc0ad\uc81c\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. <code>cd \/var\/www\/vhosts\/[\ub3c4\uba54\uc778]\/[\uc11c\ube0c\ub3c4\uba54\uc778] rm -f index.html<\/code><\/li><\/ul><\/li><li><strong>SSL \uc778\uc99d\uc11c \uc124\uc815 \ud655\uc778<\/strong><ul><li>HTTPS\uac00 \uc815\uc0c1 \uc791\ub3d9\ud558\ub3c4\ub85d SSL \uc778\uc99d\uc11c\uac00 \uc801\uc6a9\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li><\/ul><\/li><\/ol>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>7\ufe0f\u20e3 <strong>\uc11c\ubc84 \uc7ac\uc2dc\uc791<\/strong> \ud83d\udd04<\/h3>\n\n\n\n<p>\ud638\uc2a4\ud305 \uad00\ub9ac\uc790\uac00 \uc124\uc815\uc744 \uc644\ub8cc\ud55c \ud6c4 Passenger\ub97c \uc7ac\uc2dc\uc791\ud558\uc138\uc694:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>touch tmp\/restart.txt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>8\ufe0f\u20e3 <strong>\ud655\uc778 \ubc0f \ub514\ubc84\uae45<\/strong> \ud83d\udd0d<\/h3>\n\n\n\n<ol><li><strong>\ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc811\uc18d<\/strong><ul><li>URL: <code>https:\/\/[\uc11c\ube0c\ub3c4\uba54\uc778]<\/code><\/li><\/ul><\/li><li><strong>\ud55c\uae00 \uc778\ucf54\ub529 \uc624\ub958 \ud574\uacb0<\/strong><ul><li><code>passenger_wsgi.py<\/code> \ud30c\uc77c \uc0c1\ub2e8\uc5d0 \ub2e4\uc74c \uc778\ucf54\ub529 \uc120\uc5b8\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694: <code># -*- coding: utf-8 -*-<\/code><\/li><\/ul><\/li><\/ol>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3>\ucd94\uac00 \uc81c\uc548<\/h3>\n\n\n\n<ol><li><strong>\uac00\uc0c1\ud658\uacbd \uacbd\ub85c \ud655\uc778<\/strong>:<br>\uac00\uc0c1\ud658\uacbd\uc774 \uc62c\ubc14\ub974\uac8c \uc124\uc815\ub418\uc9c0 \uc54a\uc73c\uba74 \uc11c\ubc84\uac00 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>which python<\/code> \uba85\ub839\uc5b4\ub85c \ud655\uc778\ud558\uc138\uc694.<\/li><li><strong>\ub85c\uadf8 \ub514\ubc84\uae45 \ud65c\uc131\ud654<\/strong>:<br>\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0 \ub85c\uadf8\ub97c \ud655\uc778\ud558\uc138\uc694: <code>tail -f \/var\/www\/vhosts\/[\ub3c4\uba54\uc778]\/logs\/error_log<\/code><\/li><li><strong>\uc815\uc801 \ud30c\uc77c \uce90\uc2f1<\/strong>:<br>\uc815\uc801 \ud30c\uc77c \uc694\uccad \uc131\ub2a5\uc744 \uac1c\uc120\ud558\ub824\uba74 Nginx \uac19\uc740 \ud504\ub85d\uc2dc \uc11c\ubc84\ub97c \uc124\uc815\ud558\uc138\uc694.<\/li><\/ol>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\ude80 [SWS] Django \ud504\ub85c\ub355\uc158 \uc11c\ubc84 \uc124\uce58 \uac00\uc774\ub4dc \ud83c\udf1f \uc774 \uac00\uc774\ub4dc\ub294 \uac1c\ubc1c \uc11c\ubc84\ub97c \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc73c\ub85c \uc804\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc548\ub0b4\ud569\ub2c8\ub2e4. \ud83d\udd52 \uc18c\uc694 \uc2dc\uac04: \uc57d 10\ubd84\ud83d\udd11 \ud544\uc218 \uc870\uac74: Django \uac1c\ubc1c \uc11c\ubc84 \uc124\uce58 \uc644\ub8cc \u2705\ud83d\udc65 \ub300\uc0c1: Shop2World \uc6f9\uc11c\ube44\uc2a4 \uc0ac\uc6a9\uc790*chroot \ud658\uacbd\uc758 \uc0f5\ud22c\uc6d4\ub4dc \uc6f9\uc11c\ube44\uc2a4 \uc774\uc6a9 \uace0\uac1d\uc740 \uc544\ub798\uc758 \ud130\ubbf8\ub0a0 \uae30\ubc18 \uc791\uc5c5\uc740 \ubcc4\ub3c4 \uad00\ub9ac\uc790 \uc694\uccad \ud544\uc694\ud569\ub2c8\ub2e4. 1\ufe0f\u20e3 passenger_wsgi.py \ud30c\uc77c \uc0dd\uc131 \ubc0f \uc124\uc815 \ud83d\udcc2 \ud83d\udccc \ud30c\uc77c \uc704\uce58: Django \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8 \ub514\ub809\ud1a0\ub9ac (\uc608: manage.py\uac00 \uc788\ub294 \uc704\uce58) \uc544\ub798 \ub0b4\uc6a9\uc744 \uc0c8 \ud30c\uc77c passenger_wsgi.py\uc5d0 \uc791\uc131\ud558\uc138\uc694: \ud83d\udccc \ucc38\uace0: \uac00\uc0c1\ud658\uacbd\uc758 Python &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[731],"tags":[733],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/posts\/9619"}],"collection":[{"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/comments?post=9619"}],"version-history":[{"count":3,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/posts\/9619\/revisions"}],"predecessor-version":[{"id":9633,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/posts\/9619\/revisions\/9633"}],"wp:attachment":[{"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/media?parent=9619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/categories?post=9619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shop2world.com\/blog\/wp-json\/wp\/v2\/tags?post=9619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}