{"id":5233,"date":"2025-12-20T10:01:00","date_gmt":"2025-12-20T01:01:00","guid":{"rendered":"https:\/\/secondlife.lol\/?p=5233"},"modified":"2025-12-20T13:30:34","modified_gmt":"2025-12-20T04:30:34","slug":"chemicloud-setup-python-app-django-deploy","status":"publish","type":"post","link":"https:\/\/secondlife.lol\/zh\/chemicloud-setup-python-app-django-deploy\/","title":{"rendered":"\ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc &#8216;Setup Python App&#8217; \uc7a5\uace0 \ubc30\ud3ec, 500 \uc5d0\ub7ec\uae4c\uc9c0 \ub6ab\uc740 \uc2e4\uc804 \uac00\uc774\ub4dc 4\ud3b8"},"content":{"rendered":"<style>.kb-image5233_4b3ba2-71 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5233_4b3ba2-71\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-600x400.jpg\" alt=\"Setup Python App \uc7a5\uace0 \ubc30\ud3ec\" class=\"kb-img wp-image-5277\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-600x400.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-300x200.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-768x512.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-18x12.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44.jpg 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u201cInternal Server Error 500\u201d\uacfc \ud568\uaed8 \uc2dc\uc791\ub41c &#8216;Setup Python App&#8217; \uc7a5\uace0 \ubc30\ud3ec<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3c4\uba54\uc778\ub3c4 \uc5f0\uacb0\ub410\uace0, <a href=\"https:\/\/www.python.org\/\" target=\"_blank\" rel=\"noopener\">Python<\/a> 3.12 \uac00\uc0c1\ud658\uacbd\ub3c4 \ub9cc\ub4e4\uc5c8\uace0, settings\ub3c4 dev\/prod\ub85c \ub098\ub234\uc5b4\uc694.<br>\uc774\uc81c \ub0a8\uc740 \uac74 \ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc <strong><a href=\"https:\/\/chemicloud.com\/kb\/article\/how-to-setup-python-application-in-cpanel\/\" target=\"_blank\" rel=\"noopener\">Setup Python App<\/a> \uc7a5\uace0 \ubc30\ud3ec<\/strong>\ub9cc \uc798 \ud558\uba74 \ub418\ub294 \uc0c1\ud669.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc758\uae30\uc591\uc591\ud558\uac8c \ube0c\ub77c\uc6b0\uc800\uc5d0 <code><a href=\"https:\/\/\/zh\/studymate.secondlife.lol\/\">https:\/studymate.secondlife.lol<\/a><\/code>\ub97c \uce58\uace0 \uc5d4\ud130\ub97c \ub20c\ub800\ub294\ub370\u2026<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">500<br>Internal Server Error<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\ubb34\uac83\ub3c4 \uc548 \uc54c\ub824\uc8fc\ub294 \uadf8 \uc2ec\ud50c\ud55c \ud398\uc774\uc9c0.<br>\uacb0\uad6d Setup Python App \uc7a5\uace0 \ubc30\ud3ec \uacfc\uc815\uc5d0\uc11c<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>passenger_wsgi.py<\/code>\uac00 \uc790\uae30 \uc790\uc2e0\uc744 \uc7ac\uadc0 \ub85c\ub529\ud558\uace0,<\/li>\n\n\n\n<li><code>.env<\/code>\uc5d0 \ud55c\uae00\uc774 \ub4e4\uc5b4\uac00\uc11c \uc778\ucf54\ub529 \uc5d0\ub7ec\uac00 \ud130\uc9c0\uace0,<\/li>\n\n\n\n<li>\ub85c\uadf8\ub97c \ub4a4\uc838\uac00\uba70 \ud558\ub098\uc529 \ubd84\ud574\ud558\ub294 \uc0bd\uc9c8\uc774 \uc2dc\uc791\ub410\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 4\ud3b8\uc5d0\uc11c\ub294 \uadf8 \uacfc\uc815\uc744 \uc815\ub9ac\ud574\uc11c,<br>\ub204\uac00 \ubd10\ub3c4 \ub2e4\uc2dc \uc4f8 \uc218 \uc788\ub294 Setup Python App \uc7a5\uace0 \ubc30\ud3ec \ub808\uc2dc\ud53c\ub97c \ub0a8\uaca8\ubcf4\ub824\uace0 \ud569\ub2c8\ub2e4.<\/p>\n\n\n<style>.kb-image5233_f178e8-74 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5233_f178e8-74\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47-600x400.jpg\" alt=\"\" class=\"kb-img wp-image-5283\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47-600x400.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47-300x200.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47-768x512.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47-18x12.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-47.jpg 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n<style>.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);border-top-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px;border-bottom-left-radius:5px;box-shadow:0px 0px 14px 0px rgba(0, 0, 0, 0.2);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title-wrap{color:var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{color:var(--global-palette2, #2B6CB0);font-size:28px;font-weight:regular;font-style:normal;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list{color:var(--global-palette1, #3182CE);line-height:2em;font-weight:regular;font-style:normal;margin-top:var(--global-kb-spacing-sm, 1.5rem);margin-right:0px;margin-bottom:0px;margin-left:0px;}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap .kb-table-of-content-list .kb-table-of-contents__entry:hover{color:var(--global-palette6, #718096);}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}}@media all and (max-width: 1024px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}@media all and (max-width: 767px){.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-content-wrap{border-top:3px solid var(--global-palette2, #2B6CB0);border-right:3px solid var(--global-palette2, #2B6CB0);border-bottom:3px solid var(--global-palette2, #2B6CB0);border-left:3px solid var(--global-palette2, #2B6CB0);}.kb-table-of-content-nav.kb-table-of-content-id83_5f28a6-34 .kb-table-of-contents-title{font-size:28px;}}<\/style>\n\n\n<h2 class=\"wp-block-heading\">\uc5b8\uc81c Setup Python App \uc7a5\uace0 \ubc30\ud3ec\uac00 \uc88b\uc740 \uc120\ud0dd\uc77c\uae4c?<\/h2>\n\n\n<style>.kb-image5233_8d628b-03 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5233_8d628b-03\"><figure class=\"aligncenter size-medium_large\"><img decoding=\"async\" width=\"768\" height=\"294\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7-768x294.jpg\" alt=\"Setup Python App image\" class=\"kb-img wp-image-5582\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7-768x294.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7-300x115.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7-600x230.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7-18x7.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-14-7.jpg 1200w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1. \uc11c\ubc84 \uc804\uccb4\ub97c \ub0b4\uac00 \uad00\ub9ac\ud558\uace0 \uc2f6\uc9c4 \uc54a\uc744 \ub54c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3c4\ucee4, Nginx, Gunicorn, systemd\u2026<br>\uc774\ub7f0 \uac78 \ub2e4 \ub9cc\uc9c0\uae30 \uc2eb\uace0, \uadf8\ub0e5 \uc7a5\uace0\ub9cc \uae54\ub054\ud558\uac8c \uc62c\ub9ac\uace0 \uc2f6\ub2e4\uba74<br>Setup Python App \uc7a5\uace0 \ubc30\ud3ec\ub294 \uaf64 \uad1c\ucc2e\uc740 \uc120\ud0dd\uc774\uc5d0\uc694.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cPanel\uc5d0\uc11c Python \ubc84\uc804 \uace0\ub974\uace0<\/li>\n\n\n\n<li>Application root\ub9cc \uc9c0\uc815\ud558\uba74<\/li>\n\n\n\n<li>\ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc\uac00 \uc54c\uc544\uc11c venv\uc640 Passenger\uae4c\uc9c0 \ubb36\uc5b4 \uc90d\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uc0ac\ub0b4\ubca4\ucc98\ucc98\ub7fc \u201c\ube68\ub9ac \ubcf4\uc5ec\uc918\uc57c \ud558\ub294\u201d \uc0c1\ud669\uc5d0\uc11c\ub294<br> \uc774 \uc7a5\uace0 \ubc30\ud3ec \ubc29\uc2dd\uc774 \uc18d\ub3c4 \uba74\uc5d0\uc11c \uaf64 \ud070 \uc7a5\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \uc5ec\ub7ec \uac1c\uc758 \uc7a5\uace0 \uc11c\ube44\uc2a4\u00b7AI \uc11c\ube44\uc2a4\uac00 \ud55c \uc11c\ubc84\uc5d0 \uacf5\uc874\ud560 \ub54c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 ChemiCloud \uacc4\uc815\uc5d0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uae30\uc874 \uc0ac\uc774\ud2b8<\/li>\n\n\n\n<li>\uc0c8\ub85c\uc6b4 \uc7a5\uace0 \uc11c\ube44\uc2a4<\/li>\n\n\n\n<li>\ub098\uc911\uc5d0 \ucd94\uac00\ub420 \ub610 \ub2e4\ub978 AI \uc11c\ube44\uc2a4<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00 \uac19\uc774 \uc788\uc744 \uc218 \uc788\uc8e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c \uac01 \uc11c\ube44\uc2a4\ub9c8\ub2e4 \ubcc4\ub3c4\uc758 Setup \ud30c\uc774\uc36c \uc571 \uc7a5\uace0 \ubc30\ud3ec\ub97c \ub9cc\ub4e4\uc5b4\ub450\uba74<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>venv\uac00 \ud504\ub85c\uc81d\ud2b8\ubcc4\ub85c \ubd84\ub9ac\ub418\uace0<\/li>\n\n\n\n<li>\uc7a5\uace0 \ubc84\uc804, \ud328\ud0a4\uc9c0 \ubc84\uc804\uc774 \ub2ec\ub77c\ub3c4 \ucda9\ub3cc\uc774 \uc801\uace0<\/li>\n\n\n\n<li>\ub3c4\uba54\uc778\/URL\ub3c4 \uac01\uac01 \uae54\ub054\ud558\uac8c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. AI + \uc7a5\uace0 \uc870\ud569\uc744 \ube60\ub974\uac8c \uc2e4\ud5d8\ud558\uace0 \uc2f6\uc744 \ub54c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI, Claude, Groq \uac19\uc740 LLM API\ub97c \uc7a5\uace0\uc5d0 \ubd99\uc5ec\uc11c<br>\ub0b4\ubd80\uc6a9 \ucc57\ubd07\uc774\ub098 \ubd84\uc11d \ub3c4\uad6c\ub97c \ub9cc\ub4e4 \ub54c\ub3c4,<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub85c\uceec: \ube60\ub978 \uac1c\ubc1c<\/li>\n\n\n\n<li>\uc11c\ubc84: Setup Python App \uc7a5\uace0 \ubc30\ud3ec\ub85c \ubc14\ub85c URL \uc81c\uacf5<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud328\ud134\uc774\uba74 \u201c\uc544\uc774\ub514\uc5b4 \u2192 \uc2e4\uc81c \uc6f9 \ub370\ubaa8\u201d \uc804\ud658 \uc18d\ub3c4\uac00 \uc9c4\uc9dc \ube68\ub77c\uc9d1\ub2c8\ub2e4.<br>\uc774\ub54c \uc911\uc694\ud55c \uac74, \ubc30\ud3ec \ub2e8\uacc4\uc5d0\uc11c \uc0bd\uc9c8 \uc2dc\uac04\uc744 \uc904\uc774\ub294 \uac70\uace0,<br>\uadf8\uac8c \ubc14\ub85c \uc774 \uae00\uc758 \ubaa9\ud45c\uc608\uc694.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setup Python App \uc7a5\uace0 \ubc30\ud3ec \uc804\uccb4 \ud750\ub984 \uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \uc2e4\uc81c\ub85c \ud588\ub358 Setup \ud30c\uc774\uc36c \uc571 \uc7a5\uace0 \ubc30\ud3ec \uacfc\uc815\uc744<br>\u201c\ub2e4\uc2dc \ud574\ub3c4 \uc774\ub300\ub85c\ub9cc \ub530\ub77c\uac00\uba74 \ub41c\ub2e4\u201d \uc218\uc900\uc73c\ub85c \uc815\ub9ac\ud574\ubcfc\uac8c\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1\ub2e8\uacc4. Setup Python App\uc5d0\uc11c \uc571 \uc815\ubcf4 \uc815\ud655\ud788 \uc785\ub825\ud558\uae30<\/h3>\n\n\n<style>.kb-image5233_7dcc97-70 .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5233_7dcc97-70\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-600x600.jpg\" alt=\"Setup Python App image\" class=\"kb-img wp-image-5282\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-600x600.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-300x300.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-150x150.jpg 150w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-768x768.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited-12x12.jpg 12w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-46-edited.jpg 1024w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">cPanel \u2192 Setup Python App \u2192 <code>Create Application<\/code> \uc5d0\uc11c \ub2e4\uc74c\ucc98\ub7fc \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Python version:<\/strong> 3.12.x<\/li>\n\n\n\n<li><strong>Application root:<\/strong> <code>studymate_project<\/code><\/li>\n\n\n\n<li><strong>Application URL:<\/strong> <code>secondlife.lol\/<\/code><\/li>\n\n\n\n<li><strong>Application startup file:<\/strong> <code>passenger_wsgi.py<\/code><\/li>\n\n\n\n<li><strong>Application entry point:<\/strong> <code>application<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0dd\uc131 \ud6c4 \uc0c1\ub2e8\uc5d0 \ub728\ub294 \uc548\ub0b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source \/home2\/secondlife\/virtualenv\/studymate_project\/3.12\/bin\/activate &amp;&amp; cd \/home2\/secondlife\/studymate_project<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud55c \uc904\uc774 \uace7 <strong>Setup Python App \uc7a5\uace0 \ubc30\ud3ec<\/strong>\uc5d0\uc11c \uc0ac\uc6a9\ud560<br>\uacf5\uc2dd \uc9c4\uc785 \uba85\ub839\uc5b4\ub77c\uace0 \ubcf4\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2\ub2e8\uacc4. SSH\uc5d0\uc11c venv \uc9c4\uc785 + \uc7a5\uace0 \uc900\ube44 \ud655\uc778<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SSH \uc811\uc18d \ud6c4(\ud639\uc740 \ud130\ubbf8\ub110 \uba54\ub274)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/home2\/secondlife\nsource virtualenv\/studymate_project\/3.12\/bin\/activate\ncd studymate_project\n\npython --version\n# Python 3.12.x \ud655\uc778<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc2e4\uc81c\ub85c \uc7a5\uace0\uac00 prod \uc124\uc815 \uae30\uc900\uc73c\ub85c \ubb38\uc81c \uc5c6\ub294\uc9c0 \uccb4\ud06c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DJANGO_SETTINGS_MODULE=config.settings.prod python manage.py check<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc5d0\ub7ec\uac00 \uc5c6\uc73c\uba74 Setup \ud30c\uc774\uc36c\uc571 \uc7a5\uace0 \ubc30\ud3ec \uc785\uc7a5\uc5d0\uc11c<br>\u201cDjango \uc124\uc815 \uc790\uccb4\ub294 \uc815\uc0c1\u201d\uc774\ub77c\ub294 \ub73b\uc785\ub2c8\ub2e4.<br>\uc774 \uc0c1\ud0dc\ub77c\uba74 500 \uc5d0\ub7ec\uac00 \ub5a0\ub3c4 \ub300\ubd80\ubd84\uc740 passenger \uc124\uc815\uc774\ub098 .env \ubb38\uc81c\uc77c \uac00\ub2a5\uc131\uc774 \ub192\uc544\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3\ub2e8\uacc4. passenger_wsgi.py\ub97c \ucd5c\uc18c\ud55c\uc73c\ub85c, \uadf8\ub9ac\uace0 \uc815\ud655\ud558\uac8c<\/h3>\n\n\n<style>.kb-image5233_c635ce-4b .kb-image-has-overlay:after{opacity:0.3;}<\/style>\n<div class=\"wp-block-kadence-image kb-image5233_c635ce-4b\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45-600x400.jpg\" alt=\"passenger_wsgi.py image\" class=\"kb-img wp-image-5279\" srcset=\"https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45-600x400.jpg 600w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45-300x200.jpg 300w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45-768x512.jpg 768w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45-18x12.jpg 18w, https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-45.jpg 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c\uc5d0\ub294 \ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc\uac00 \ub9cc\ub4e4\uc5b4\uc8fc\ub294 \uae30\ubcf8 \ud15c\ud50c\ub9bf \uadf8\ub300\ub85c \ub194\ub46c\uc11c<br><code>load_source('wsgi', 'passenger_wsgi.py')<\/code> <strong>\uc7ac\uadc0 \uc9c0\uc625<\/strong>\uc5d0 \ube60\uc84c\uc2b5\ub2c8\ub2e4 \ud83d\ude02<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \uc815\ub9ac\ub41c \ubc84\uc804\uc740 \uc544\uc8fc \ub2e8\uc21c\ud55c \ud615\ud0dc\uc758 Setup \ud30c\uc774\uc36c \uc7a5\uace0 \ubc30\ud3ec\uc6a9 <code>passenger_wsgi.py<\/code>\uc600\uc5b4\uc694:<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>import os\nimport sys\nfrom pathlib import Path\n\n# \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8 (manage.py\uac00 \uc788\ub294 \ud3f4\ub354)\nBASE_DIR = Path(__file__).resolve().parent\n\n# \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\ub97c PYTHONPATH\uc5d0 \ucd94\uac00\nif str(BASE_DIR) not in sys.path:\n    sys.path.insert(0, str(BASE_DIR))\n\n# \uc6b4\uc601\uc6a9 settings \ubaa8\ub4c8 \uc9c0\uc815\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"config.settings.prod\")\n\n# Django WSGI application \uc0dd\uc131\nfrom django.core.wsgi import get_wsgi_application\napplication = get_wsgi_application()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud3ec\uc778\ud2b8\ub294 \ub531 \uc138 \uac00\uc9c0\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>BASE_DIR<\/code>\u81f3 <code>passenger_wsgi.py<\/code> \uae30\uc900\uc73c\ub85c \uacc4\uc0b0<\/li>\n\n\n\n<li><code>sys.path<\/code>\u5728 <code>BASE_DIR<\/code> \ucd94\uac00<\/li>\n\n\n\n<li><code>DJANGO_SETTINGS_MODULE<\/code>\u81f3 <code>config.settings.prod<\/code>\ub85c \uace0\uc815<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc138 \uac00\uc9c0\ub9cc \ub9de\uc73c\uba74, Setup Python App \uc7a5\uace0 \ubc30\ud3ec\uc5d0\uc11c<br>WSGI \ub808\ubca8 \ubb38\uc81c\ub85c 500\uc774 \ub0a0 \ud655\ub960\uc740 \ud06c\uac8c \uc904\uc5b4\ub4ed\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4\ub2e8\uacc4. .env\uc640 base.py \u2013 \uc11c\ubc84\uc5d0\uc11c \uc9c4\uc9dc\ub85c \uc798 \uc77d\ud788\ub294\uc9c0 \ud655\uc778<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc804 3\ud3b8\uc5d0\uc11c \uc815\ub9ac\ud588\ub358 \uac83\ucc98\ub7fc,<br><code>config\/settings\/base.py<\/code>\uc5d0\uc11c\ub294 \ub2e4\uc74c\ucc98\ub7fc <code>.env<\/code>\ub97c \uc77d\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code language-python\"><code>from pathlib import Path\nfrom dotenv import load_dotenv\n\nBASE_DIR = Path(__file__).resolve().parent.parent.parent\nenv_path = BASE_DIR \/ \".env\"\nload_dotenv(env_path)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">CLI\uc5d0\uc11c\ub294 \uc798 \ub418\ub294\ub370, Setup \ud30c\uc774\uc36c \uc571 \uc7a5\uace0 \ubc30\ud3ec \ud658\uacbd\uc5d0\uc11c\ub9cc 500\uc774 \ub0a0 \ub54c,<br>\uc54c\uace0 \ubcf4\ub2c8 <code>.env<\/code> \uac12\uc5d0 \ud55c\uae00\uc774 \uc11e\uc5ec \uc788\uc5c8\uace0,<br>Passenger\uac00 \ub3cc\uc544\uac00\ub294 OS \uc778\ucf54\ub529\uc774 ASCII\ub77c\uc11c <code>UnicodeEncodeError<\/code>\uac00 \ud130\uc84c\ub358 \uac70\uc8e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\ub860\uc740<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>.env<\/code> \uac12\uc5d0\ub294 <strong>\ud55c\uae00 \ub123\uc9c0 \uc54a\uae30<\/strong><\/li>\n\n\n\n<li>\uc124\uba85\uc740 <code>#<\/code> \uc8fc\uc11d\uc73c\ub85c\ub9cc \uc791\uc131<\/li>\n\n\n\n<li>\uac12\uc740 \uc601\ubb38\/\uc22b\uc790\/\uae30\ud638\ub9cc \uc0ac\uc6a9<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uc815\ub9ac\ud558\uace0 \ub098\ub2c8,<br><code>DJANGO_SETTINGS_MODULE=config.settings.prod python manage.py check<\/code> \ub3c4 \uc798 \ud1b5\uacfc\ud558\uace0,<br>Setup Python App \uc7a5\uace0 \ubc30\ud3ec \ud658\uacbd\uc5d0\uc11c\ub3c4 \ub354 \uc774\uc0c1 \uc778\ucf54\ub529 \uc5d0\ub7ec\uac00 \uc548 \ub0ac\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5\ub2e8\uacc4. 500 \uc5d0\ub7ec\uc640 \uce5c\ud574\uc9c0\uae30 \u2013 stderr.log \uc77d\ub294 \uc2b5\uad00<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Setup Python App \uc7a5\uace0 \ubc30\ud3ec\uc5d0\uc11c 500 Internal Server Error\uac00 \ub728\uba74<br>\ud654\uba74\uc5d0\ub294 \uc815\ubcf4\uac00 \uac70\uc758 \uc548 \ub098\uc624\uae30 \ub54c\ubb38\uc5d0,<br>\uacb0\uad6d <strong>\ub85c\uadf8\ub97c \uc9c1\uc811 \ubcf4\ub294 \uc2b5\uad00<\/strong>\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8(<code>studymate_project<\/code>)\uc5d0 <code>stderr.log<\/code>\uac00 \uc788\uc5c8\ub2e4\uba74 Terminal\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/home2\/secondlife\/studymate_project\ntail -n 40 stderr.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud574\uc11c \ub9e8 \uc544\ub798 40\uc904 \uc815\ub3c4\ub97c \ubcf4\uba74,<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ModuleNotFoundError: No module named 'jazzmin'<\/code><\/li>\n\n\n\n<li><code>ModuleNotFoundError: No module named 'allauth'<\/code><\/li>\n\n\n\n<li><code>.env UnicodeEncodeError<\/code><\/li>\n\n\n\n<li>settings import \uc5d0\ub7ec<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uac83\ub4e4\uc774 \uc904\uc904\uc774 \ucc0d\ud600 \uc788\uc8e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac78 \uc544\ub798\uc640 \uac19\uc774 \ud558\ub098\uc529 \ud574\uacb0\ud558\uba74\uc11c<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>pip install django-jazzmin<\/code><\/li>\n\n\n\n<li><code>pip install django-allauth<\/code><\/li>\n\n\n\n<li><code>.env<\/code> \uac12 \uc815\ub9ac<\/li>\n\n\n\n<li>settings \uacbd\ub85c \uc218\uc815<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \ubc18\ubcf5\ud558\ub2c8\uae4c, \uc5b4\ub290 \uc21c\uac04 <code>tail -n 40 stderr.log<\/code> \uac00 \uc870\uc6a9\ud574\uc9c0\uace0,<br>\ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c <code>https:\/\/studymate.secondlife.lol<\/code>\uac00 \ub531 \uc5f4\ub9ac\ub354\ub77c\uad6c\uc694.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc804\uccb4 \uacfc\uc815\uc774 \uc0ac\uc2e4\uc0c1 Setup \ud30c\uc774\uc36c \uc571 \uc7a5\uace0 \ubc30\ud3ec \uc2e4\uc804 \ud29c\ud1a0\ub9ac\uc5bc\uc774\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6\ub2e8\uacc4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c Restart \uc78a\uc9c0 \uc54a\uae30<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>passenger_wsgi.py<\/code>, <code>.env<\/code>, settings\ub97c \uace0\uce5c \ub4a4\uc5d0\ub294<br>\ud56d\uc0c1 Setup Python App \uc7a5\uace0 \ubc30\ud3ec \ud654\uba74\uc5d0\uc11c Restart\ub97c \ub20c\ub7ec\uc918\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>cPanel \u2192 Setup Python App<\/li>\n\n\n\n<li>Studymate \uc571 \uc120\ud0dd<\/li>\n\n\n\n<li>\uc0c1\ub2e8\uc758 <strong>Restart<\/strong> \u70b9\u51fb<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac78 \uc548 \ub204\ub974\uba74 Passenger\uac00 \uc61b\ub0a0 \ucf54\ub4dc\ub97c \uacc4\uc18d \ubb3c\uace0 \uc788\uc5b4\uc11c,<br>\u201c\ubd84\uba85 \uace0\ucce4\ub294\ub370 \uc65c \uadf8\ub300\ub85c\uc9c0?\u201d\ub77c\ub294 \ucc29\uc2dc\uac00 \uc635\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac: Setup Python App \uc7a5\uace0 \ubc30\ud3ec, \uc774\ub807\uac8c\ub9cc \uae30\uc5b5\ud574\ub3c4 \ucda9\ubd84\ud558\ub2e4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9e7\uac8c \uc694\uc57d\ud558\uba74, \uc774\ubc88 \ud3ec\uc2a4\ud2b8\ub294 \uc774\ub807\uac8c \uc815\ub9ac\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Setup Python App\uc5d0\uc11c Python 3.12 + Application root \uc9c0\uc815<\/li>\n\n\n\n<li><a href=\"https:\/\/chemicloud.com\/kb\/article\/log-account-via-ssh\/\" target=\"_blank\" rel=\"noopener\">SSH<\/a> \u6216 <a href=\"https:\/\/chemicloud.com\/glossary\/term\/terminal\/\" target=\"_blank\" rel=\"noopener\">\u7ec8\u7aef<\/a> \uc5d0\uc11c venv \uc9c4\uc785 \u2192 <code>python manage.py check<\/code> \ub85c \uc0c1\ud0dc \ud655\uc778<\/li>\n\n\n\n<li><code>passenger_wsgi.py<\/code>\ub294 \ucd5c\uc18c\ud55c\uc758 \ucf54\ub4dc\ub9cc \uc720\uc9c0 (\uc7ac\uadc0 \ud15c\ud50c\ub9bf \uc81c\uac70)<\/li>\n\n\n\n<li><code>.env<\/code>\ub294 BASE_DIR\uc5d0\uc11c \ub85c\ub529, \uac12\uc5d0\ub294 \ud55c\uae00 X<\/li>\n\n\n\n<li>\uc5d0\ub7ec \ub098\uba74 <code>stderr.log<\/code>\u81f3 <code>tail -n 40<\/code>\uc73c\ub85c \ud655\uc778<\/li>\n\n\n\n<li>\uc218\uc815 \ud6c4\uc5d0\ub294 \uaf2d Restart<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac78 \ud55c \ubc88 \uc81c\ub300\ub85c \uacaa\uc5b4 \ubcf4\uba74,<br>\ub2e4\uc74c \uc7a5\uace0 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c Setup Python App \uc7a5\uace0 \ubc30\ud3ec\ub294<br>\uc815\ub9d0 \u201c\ub8e8\ud2f4 \uc791\uc5c5\u201d\ucc98\ub7fc \ub290\uaef4\uc9c8 \uac70\uc608\uc694.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>\u201cInternal Server Error 500\u201d\uacfc \ud568\uaed8 \uc2dc\uc791\ub41c &#8216;Setup Python App&#8217; \uc7a5\uace0&#8230;<\/p>","protected":false},"author":3,"featured_media":5277,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[15],"tags":[979,978,988,997,984,996,999,998,977,986],"class_list":["post-5233","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-jewel","tag-ai-","tag-django-hosting","tag-naxdax","tag-passenger_wsgi","tag-python-3-12","tag-setup-python-app--","tag-999","tag-998","tag-977","tag-986"],"taxonomy_info":{"category":[{"value":15,"label":"D \ubcf4\ubb3c\ucc3d\uace0(Jewel)"}],"post_tag":[{"value":979,"label":"AI \uc6f9\uc11c\ube44\uc2a4"},{"value":978,"label":"Django hosting"},{"value":988,"label":"Naxdax"},{"value":997,"label":"passenger_wsgi"},{"value":984,"label":"Python 3.12"},{"value":996,"label":"Setup Python App \uc7a5\uace0 \ubc30\ud3ec"},{"value":999,"label":"\uacf5\uc720\ud638\uc2a4\ud305"},{"value":998,"label":"\uc5d0\ub7ec \ud574\uacb0"},{"value":977,"label":"\uc7a5\uace0 \ubc30\ud3ec"},{"value":986,"label":"\ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc"}]},"featured_image_src_large":["https:\/\/secondlife.lol\/wp-content\/uploads\/2025\/12\/image-44-600x400.jpg",600,400,true],"author_info":{"display_name":"TERE","author_link":"https:\/\/secondlife.lol\/zh\/author\/tere\/"},"comment_info":0,"category_info":[{"term_id":15,"name":"D \ubcf4\ubb3c\ucc3d\uace0(Jewel)","slug":"it-jewel","term_group":0,"term_taxonomy_id":15,"taxonomy":"category","description":"","parent":0,"count":60,"filter":"raw","cat_ID":15,"category_count":60,"category_description":"","cat_name":"D \ubcf4\ubb3c\ucc3d\uace0(Jewel)","category_nicename":"it-jewel","category_parent":0}],"tag_info":[{"term_id":979,"name":"AI \uc6f9\uc11c\ube44\uc2a4","slug":"ai-%ec%9b%b9%ec%84%9c%eb%b9%84%ec%8a%a4","term_group":0,"term_taxonomy_id":979,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":978,"name":"Django hosting","slug":"django-hosting","term_group":0,"term_taxonomy_id":978,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":988,"name":"Naxdax","slug":"naxdax","term_group":0,"term_taxonomy_id":988,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":997,"name":"passenger_wsgi","slug":"passenger_wsgi","term_group":0,"term_taxonomy_id":997,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":984,"name":"Python 3.12","slug":"python-3-12","term_group":0,"term_taxonomy_id":984,"taxonomy":"post_tag","description":"","parent":0,"count":3,"filter":"raw"},{"term_id":996,"name":"Setup Python App \uc7a5\uace0 \ubc30\ud3ec","slug":"setup-python-app-%ec%9e%a5%ea%b3%a0-%eb%b0%b0%ed%8f%ac","term_group":0,"term_taxonomy_id":996,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":999,"name":"\uacf5\uc720\ud638\uc2a4\ud305","slug":"%ea%b3%b5%ec%9c%a0%ed%98%b8%ec%8a%a4%ed%8c%85","term_group":0,"term_taxonomy_id":999,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":998,"name":"\uc5d0\ub7ec \ud574\uacb0","slug":"%ec%97%90%eb%9f%ac-%ed%95%b4%ea%b2%b0","term_group":0,"term_taxonomy_id":998,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":977,"name":"\uc7a5\uace0 \ubc30\ud3ec","slug":"%ec%9e%a5%ea%b3%a0-%eb%b0%b0%ed%8f%ac","term_group":0,"term_taxonomy_id":977,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":986,"name":"\ucf00\ubbf8\ud074\ub77c\uc6b0\ub4dc","slug":"%ec%bc%80%eb%af%b8%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c","term_group":0,"term_taxonomy_id":986,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/comments?post=5233"}],"version-history":[{"count":7,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5233\/revisions"}],"predecessor-version":[{"id":5583,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/posts\/5233\/revisions\/5583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media\/5277"}],"wp:attachment":[{"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/media?parent=5233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/categories?post=5233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secondlife.lol\/zh\/wp-json\/wp\/v2\/tags?post=5233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}