Hostowanie aplikacji .net przez apache2 mi nie działa

1

Nauka samemu programowania jest trudna. Zwłaszcza w takich momentach. Przejrzałem z 40 różnych stron jak poprawnie wrzucić na serwer swoją aplikacje .net, a potem ją hostować przez apache2, ale mi to po prostu nie działa. W każdym z tych kursów czegoś brakowało, przez co mi nie chciało działać. Ale tutaj nie wiem. Zamiast siedzieć nad tym 20h (mój pierwszy hosting) i szukać błędu na nieznane mi tematy, wolę poprosić o pomoc. Problem jest następujący:

Widzę To:
screenshot-20220201221504.png

Zamiast tego:
screenshot-20220201221730.png

*Blog.conf (conf strony hostowanej przez apache)
screenshot-20220201222417.png

Jak jeszcze coś trzeba to podeślę.
Ps: Jak dałem apachectl configtest to dało: OK!
.net też zainstalowany wraz z runtime.

2

No źle to wygląda, to nawet security issue jest :D pewnie już cię jakieś boty przeskanowały i jeżeli miałeś jakieś hasła w appsettingsach, to lepiej pozmieniać :P

edit.

A nie chodzi o tę sekcje DocumentRoot?

DocumentRoot
In deciding what file to serve for a given request, httpd's default behavior is to take the URL-Path for the request (the part of the URL following the hostname and port) and add it to the end of the DocumentRoot specified in your configuration files. Therefore, the files and directories underneath the DocumentRoot make up the basic document tree which will be visible from the web.


A patrzyłeś to? Host ASP.NET Core on Linux with Apache

Oni tu mają taki cfg:

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName www.example.com
    ServerAlias *.example.com
    ErrorLog ${APACHE_LOG_DIR}helloapp-error.log
    CustomLog ${APACHE_LOG_DIR}helloapp-access.log common
</VirtualHost>

Generalnie nie używałem nigdy apacha, ale jakbyś chciał to z nginxiem jest to banalne

sudo apt-get install nginx

i w /etc/nginx/sites-available edytujesz default

wrzucasz

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

i restartujesz

0

@1a2b3c4d5e:
To tak...
Strona jest defaultowa ze zmienioną jedynie nazwą domyślą aplikacji. Dlatego tam jest *Blog, dałem taką by zobaczyć, czy działa. Nie ma tam żadnych haseł, więc nie muszę się o to martwić.
Nginx już próbowałem, ale ja jestem początkującym i po prostu wyglądało to tak, że najpierw próbowałem apache, coś się popsuło to zmieniłem na nginx, ale wtedy też mi się popsuło, miałem taką sytuacje, że działało już mi. Ale jeszcze nie miałem zarejestrowanej aplikacji jako service. I była odpalona manualnie. Przy tym wysiadł mi Internet, a jak go naprawiłem i zalogowałem się ponownie, to nie dało się uruchomić innej aplikacji, bo ta co ją uruchomiłem wciąż działała w tle. I nie mogłem jej wyłączyć. (Nie znam się tak na linuxie). Tak więc zobaczyłem wtedy stronkę, co miała wypisane co zrobić by hostować stronę krok po kroku, wszystkie etapy. I tam używali apache. To przeinstalowałem linuxa i konfigurowałem dalej z apache.
A documentRoot sprawdzę, nawet to samo mi przyszło do głowy. Ale nwm, bo tam w kursie mieli to jako ścieżkę do katalogu, a nie pliku. Tak więc sprawdzę. Rozumiem, że mam to dać jako ścieżkę do plik.dll

0

OK. Działa. Dodałem wpisy z od @1a2b3c4d5e i zadziałało.
DocumentRoot był prawidłowy.
Ale poprawiłem wpisy:
serverAlias na *.mojadomena.pl

<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

oraz

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
</VirtualHost>

Dzięki za odpowiedź. Działa Elegancko.
Myślę, że kluczowe były wpisy Proxy.

0

@Bartek57810

No bo generalnie te apacze i nginxy mają działać w uproszczeniu tak, że mapują request z zewnątrz np.

strona.pl:80/test na jakiś wewnętrzny localhost:5001
+
strona.pl:80/test123 na jakiś wewnętrzny localhost:1234

i nazywa się to reverse proxy.

0

Się dopytam. Czy ktoś z was uruchamiał app .net 6 na Apache nie jako proxy tylko na jakimś module apachowym dla .net?

1
po co się użerać z apache i psuć sobie humor?

Ja póki co zachwycam się Caddy https://caddyserver.com/ i polecam spróbować.

Konfiguracja reverse proxy (cały plik konfiguracyjny, wystarczy teraz zrobić caddy reload i działa):

https://example.pl {
        reverse_proxy 127.0.0.1:5000
}

Automatyczny HTTPS (Let's Encrypt), prosta konfiguracja, działa - czego chcieć więcej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1