/home/username/virtualenv/appname/3.11/
然后,CPANEL显示代码以选择和激活此VENV,以用于CPANEL的终端部分。 我切换到终端,激活了VENV,PIP安装了Django,并使用了Django-Admin Startproject…创建站点(“ mysite”)。 然后,我在项目中找到了wsgi.py文件,并将该位置保存在CPANEL设置PythonApp
中(/mysite/site/wsgi.py)
STDERR.LOG错误日志显示服务器经过同一周期两次,其中之一是在下面进行设置。在大多数周期中,它使用正确的VENV中的代码,但有几个例外。一旦尝试使用imp.py加载pastenger_wsgi.py(这不应该是因为我告诉过它wsgi.py文件在哪里),并且一次使用EmpertLib.py在未能找到设置文件的地方。两次都使用
/opt/alt/python311/lib64/python3.11
当我提出一张支持票时,建议我咨询我的开发人员(er,就是我)。 我的问题是提前感谢您的任何帮助。
stderr.log的内容如下:
stderr.log (ASCII text)
Traceback (most recent call last):
File "/home/username/appname/passenger_wsgi.py", line 8, in <module>
wsgi = imp.load_source('wsgi', 'mysite/mysite/wsgi.py')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/alt/python311/lib64/python3.11/imp.py", line 172, in load_source
module = _load(spec)
^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 721, in _load
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "mysite/mysite/wsgi.py", line 16, in <module>
application = get_wsgi_application()
^^^^^^^^^^^^^^^^^^^^^^
File "/home/username/virtualenv/appname/3.11/lib/python3.11/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/home/username/virtualenv/appname/3.11/lib/python3.11/site-packages/django/__init__.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/username/virtualenv/appname/3.11/lib/python3.11/site-packages/django/conf/__init__.py", line 89, in __getattr__
self._setup(name)
File "/home/username/virtualenv/appname/3.11/lib/python3.11/site-packages/django/conf/__init__.py", line 76, in _setup
self._wrapped = Settings(settings_module)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/username/virtualenv/appname/3.11/lib/python3.11/site-packages/django/conf/__init__.py", line 190, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/alt/python311/lib64/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mysite.settings'
[UID:1295][2353167] Child process with pid: 2353179 was killed by signal: 15, core dumped: no
Q1问题似乎来自服务器的乘客和Django文件系统之间的接口
Q2是。我更改了他们的乘客。文件,我的网站现在正在工作。大多数步骤都在下面列出。Q3我确实回去支持,但没有收到任何有用的答案。注册CPANEL,域,域对话中的域。 CPANEL的域添加了域对话
to to Cpanel,软件,设置Python应用程序,然后单击创建应用程序
CPANEL的设置Python应用程序对话
在Python版本,应用程序名称和域中输入到设置PythonApp
该服务器将使用乘客。Py文件为您的应用程序('myapp')创建一个文件夹,并在其Virtualenv文件夹中启动您的应用程序和相同名称的虚拟环境。 它提供了激活VENV的代码,并在创建应用程序后生成的对话中移动到应用程序文件夹。可以简单地单击它来复制。 Pypython应用程序创建对话
在此示例中,代码将为
source /home/username/virtualenv/myapp/3.10/bin/activate && cd /home/username/myapp
在CPANEL,高级,终端此代码将激活VENV,并将您带到应用程序的顶部。 注意:在基于Web的终端上使用Ctrl + Shift + V到粘贴
(您可以将文件上传到应用程序)完成后将显示Django版本简化的文件结构看起来像这样:
passenger.py
manage.py
myproject/
settings.py
urls.py
wsgi.py
修改urls.py以使该站点有所显示
# myproject/urls.py
from django.contrib import admin
from django.urls import path
from django.views import debug
urlpatterns = [
path('', debug.default_urlconf),
path('admin/', admin.site.urls),
]
在设置文件中,将域名添加到允许的主机列表中。
ALLOWED_HOSTS = ['mysite.com']
# passenger.py
import os
import sys
from django.core.wsgi import get_wsgi_application
# Change myproject to the name of your project
# sys.path holds a list of directories that the python interpreter
# will search for a required module
# The following works out the directories to search
# in your python app and Django project
# Get the directory path of this passenger file - myapp
this_path = os.path.dirname(os.path.abspath(__file__))
# Only add this if it's not in the list
if this_path not in sys.path:
sys.path.insert(0, this_path)
# Work out the directory of the Settings file
settings_path = os.path.join(this_path, 'myproject', 'myproject')
if settings_path not in sys.path: # Only add this if ...
sys.path.insert(1, settings_path)
# Work out the directory path of the top of the project
project_path = os.path.join(this_path, 'myproject')
if project_path not in sys.path: # Only add this if ...
sys.path.insert(2, project_path)
# The last lines are taken from the wsgi.py file created by Django
# Set the settings module environment variable
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_project.settings')
# Passenger looks for a function called application
application = get_wsgi_application()