Member 13953085 Ответов: 1

Запуск веб-сайта nodejs на cpanel


Привет,

Я установил NodeJS на свою учетную запись cPanel, затем загрузил свой веб-сайт/приложение NodeJS на свой public_html/веб-сайт, а затем добавил следующий код в свой htaccess:

RewriteEngine On
    RewriteRule ^$ http://localhost:51521/ [P,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^$ http://localhost:51521/$1 [P,L]


После добавления этого кода в файл .htaccess я запустил приложение NodeJS, и сайт запустился, и домашняя страница выглядела нормально и все там, но когда я перехожу на любые другие страницы, например, на страницу About me, она показывает, что не найден запрошенный URL /about не был найден на этом сервере.
[404 не найдено фото][1]

Затем я продолжил вносить небольшие изменения в файл .htaccess:"**^$**", чтобы "**^(.*)$**" в последней строке

RewriteEngine On
    RewriteRule ^$ http://localhost:51521/ [P,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ http://localhost:51521/$1 [P,L]


Это привело к тому, что на веб-сайте появилась ошибка, показывающая: "404: index.php-и домашняя страница загрузилась, но там много чего не хватало, но! другие страницы показывались, но не полностью там.. вот изображение главной страницы: [Домашняя страница после настройки][2] и вот изображение второй страницы, которая показывала 404 до настройки: [вторая страница][3]

Я исследовал нон-стоп и до сих пор не могу найти решение, но вот мой код выполнения nodejs:

var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var mongoose =require('mongoose');
    var methodOverride = require('method-override');
    var nodemailer = require('nodemailer');
    
    // mongoose.connect('mongodb://jehad:jhadayman1@ds121268.mlab.com:21268/hoca');
    mongoose.connect('mongodb://jhad96:jhad96@ds121268.mlab.com:21268/hoca');
    mongoose.Promise = global.Promise;
    
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    
    var app = express();
    
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');
    
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(methodOverride("_method"));
    app.use(express.static(path.join(__dirname, 'public')));
    app.use('/uploads',express.static(path.join(__dirname, 'uploads')));
    
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });
    
    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
    app.listen(process.env.PORT || 51521, ()=>{
      console.log('server is on ');
    });

Вот изображение файлов веб-сайта nodejs: [files][4]


[1]: https://i.stack.imgur.com/hwsyS.png
[2]: https://i.stack.imgur.com/sqds1.png
[3]: https://i.stack.imgur.com/dsZOi.png
[4]: https://i.stack.imgur.com/gjOAr.png

Я очень ценю вашу помощь ребята :)
большая любовь

Что я уже пробовал:

кажется, я перепробовал все.. :/

1 Ответов

Рейтинг:
0

gruvin

Решение - это незавершенная работа.

Я работал, чтобы попытаться решить эту же проблему в течение многих часов.

То, что я узнал до сих пор ...

1. Проблема заключается в том, что express.static не работает так, как должен. Похоже, что он не может найти файл в общедоступном каталоге

2. Проблема существует только под управлением cPanel. Если я запускаю узел вручную и подключаюсь непосредственно к нему (порт 3000 в моем случае), то все работает так, как должно.

3. Моя cPanel (более поздняя версия, чем OPs?) поддерживает nodejs через пассажира, "изначально". Однако это не имеет никакого значения, если я использую встроенный метод cPanel или тот же стиль, что и OP.

4. Все это не имеет никакого смысла ... особенно № 3.

5. Кажется, почти никто никуда с этой проблемой. Даже самые простые, урезанные примеры и инструкции, которые, очевидно, прекрасно работают для всех остальных, не работают для ОП и меня. ВТФ? :-/