Ошибка 404 при развертывании приложения Python на CPanel
Python==3.11.11 (серверная версия) Django==5.1.1
Здравствуйте, сегодня я должен был развернуть свое приложение на CPanel, и все шло хорошо до самого конца, потому что когда все конфигурации были сделаны, на странице появилась 404 ошибка:
Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to
handle the request.
Я создаю приложение. Создаю базу данных MySQL, делаю миграции просто отлично. Также изменяю некоторые конфигурации базы данных, allow_hosts и static root в setting.py
:
Это djangocrud.urls
:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('__reload__/', include('django_browser_reload.urls')),
path('admin/', admin.site.urls),
path('', include('main.urls')),
path('auth/', include('dashboard.urls')),
path('auth/', include('billing.urls')),
path('auth/', include('teaching.urls')),
А это dashboard.urls
:
from django.urls import path
from .views import dashboard_admins, dashboard_teachers, dashboard_students, teachers, students, subjects, schedules, edit
urlpatterns = [
path('dashboard-admins', dashboard_admins, name='dashboard-admins'),
path('dashboard-teachers', dashboard_teachers, name='dashboard-teachers'),
path('dashboard-students', dashboard_students, name='dashboard-students'),
path('teachers', teachers, name='teachers'),
path('students', students, name='students'),
path('subjects', subjects, name='subjects'),
path('schedules', schedules, name='schedules'),
path('edit', edit, name='edit'),
]
По умолчанию сервер направляет пользователя по адресу .../auth/dashboard-admins, если пользователь не залогинен, то перенаправляет на страницу входа. Но страница входа тоже не работает. Я пытаюсь изменить путь, поместить его в djangocrud.urls
файл, но ничего не меняется.
Мой views.py
:
from django.shortcuts import redirect, render
from .models import CustomUser, Teachers, Students, Guardians, Subjects, Courses, Sections, Schedules, Tuition, SchoolPeriod
# Create your views here.
# Some variables here...
def auth_user(request) -> bool:
if request.user.is_authenticated:
# Do something for authenticated users.
return True
else:
return False
def dashboard_admins(request):
if auth_user(request) == True:
# Here are data to save on db
# ...
if request.method == 'GET':
s_count = s_user.count()
return render(request, 'dashboard_admins.html',{
'scounts': s_count,
'tuser': t_user,
'suser': s_user,
})
else:
try:
Subjects.objects.bulk_create(subj_list)
Sections.objects.bulk_create(sect_list)
Courses.objects.bulk_create(cour_list)
SchoolPeriod.objects.create(period='2024-2025').save()
print('Datos creados')
return redirect('/auth/dashboard-admins')
except:
print('Fallo en la creacion de datos')
return redirect('/auth/dashboard-admins')
else:
return redirect('../login')
from dashboard.views import dashboard_admins
просмотр входа:
# Create your views here.
def home(request):
# return render(request, 'pages/login.html')
return redirect(dashboard_admins)
def log_in(request):
if request.method == 'GET':
return render(request, 'pages/login.html')
else:
user = emailBackend.authenticate(request, username=request.POST.get('email'), password=request.POST.get('password'))
if user != None:
login(request, user)
return redirect(dashboard_admins)
else:
return HttpResponse('Login invalido')
def log_out(request):
logout(request)
return redirect(home)
Если кто-то может помочь мне, я буду благодарен.
Вот мои папки:
И я обращаюсь к файлу wsgi.py на passenger_wsgi.py
файле:
from djangocrud.wsgi import application
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Приложение работало на localhost до сегодняшнего дня, когда я попытался поставить его на сервер.
Этот путь указывает на местоположение, специфичное для Windows (C:/Program Files/nodejs/npm.cmd
), которое, скорее всего, является вашей локальной средой разработки.
На рабочем сервере (особенно на сервере на базе Linux, таком как те, которые используются в cPanel hosting) путь к npm
будет другим. Как правило, это было бы что-то вроде /usr/bin/npm
или /usr/local/bin/npm
.
Если вы используете в своем проекте на Django такие инструменты, как TailwindCSS или другие инструменты на основе Node.js, вам необходимо убедиться, что для серверной среды задано правильное значение NPM_BIN_PATH
.
По-видимому, некоторые из моих файлов повреждены, поэтому они устанавливаются неправильно. Я протестировал установку своих приложений и маршрутов Django с нуля, и теперь все работает корректно.
Я не знаю, были ли повреждены данные перед загрузкой файлов или в процессе установки, но в последнее время во время локальной работы у меня наблюдались внезапные перебои с питанием, так что я подозреваю, что причина в этом.