• Dev
  • Pytanie odnośnie budowy motywów, wtyczek i konfiguracji apache.

szczypiorek239 W czym są napisane motywy dla flarum? Sam html, css, js czy coś więcej? W czym są napisane wtyczki? Bardzo lubię flarum, zaczynam uczyć się bycia front-end developerem, ale zamierzam też tworzyć skórki i wtyczki do flarum. Zarówno te płatne jak i darmowe.

Zasadniczo CSS/LESS + JS/JSX. Flarum nie ma żadnego systemu szablonów, jeśli potrzebujesz zmienić strukturę HTML, musisz to robić modyfikując komponenty z poziomu JS. IMO to jest dużo bardziej skomplikowane niż np w WorPressie, więc nie wiem czy to jest dobry temat na naukę frontendu. Chyba że ograniczysz się do samych zmian za pomocą CSS.

szczypiorek239 Mam pewien rozkład folderów, przy którym flarum mi nie działa, bo ja nie umiem tego skonfigurować.

A "nie działa" to co konkretnie znaczy? Jakiś błąd dostajesz? Sprawdzałeś co jest w logach apache?

    rob006
    Apache wypluwa:

    Not Found
    The requested URL was not found on this server.
    Apache/2.4.56 (Ubuntu) Server at 192.168.1.23 Port 80

    Co dziwne, prawa są dobrze nadane, lokalizacja jest dobra, mod rewrite itd działa. Apache i php też działa. Stronka zwykła i phpmyadmin działa normalnie.

    Na ich angielskim forum pisali mi o HTML, CSS, JS + TypeScript lub/i Mithriljs + Podstawy PHP. Zamierzam do tego jeszcze SQL + GIT.

    Trochę poprawiłem:

    <VirtualHost *:80>
        ServerName 192.168.1.23
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/web/
    
        <Directory /var/www/web/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/web_error.log
        CustomLog ${APACHE_LOG_DIR}/web_access.log combined
    
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://192.168.1.23/"
        </FilesMatch>
    
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName 192.168.1.23
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/flarum/public/
    
        <Directory /var/www/flarum/public/>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/flarum_error.log
        CustomLog ${APACHE_LOG_DIR}/flarum_access.log combined
    
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://192.168.1.23/"
        </FilesMatch>
    
        Alias /flarum /var/www/flarum/public/
    
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName 192.168.1.23
        ServerAdmin webmaster@localhost
        DocumentRoot /usr/share/phpmyadmin/
        
        <Directory /usr/share/phpmyadmin/>
            Options FollowSymLinks
            DirectoryIndex index.php
            AllowOverride All
        </Directory>
    
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://192.168.1.23/"
        </FilesMatch>
    
        ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log
        CustomLog ${APACHE_LOG_DIR}/phpmyadmin_access.log combined
    
        Alias /phpmyadmin /usr/share/phpmyadmin
    
    </VirtualHost>

      szczypiorek239 Ja bym zaczął od sprawdzenia czy po usunięciu pozostałych konfiguracji (sekcja VirtualHost dla /var/www/html i phpmyadmin) Flarum działa. Obecnie masz 3 konfiguracje, które wykorzystują to samo ServerName - podejrzewam że w takiej sytuacji działa tylko pierwsza konfiguracja. Jeśli to zadziała, to spróbuj je ponazywać - ustaw unikalne ServerName dla każdej konfiguracji (np flarum.local albo phpmyadmin.local), ustaw w pliku hosts aby te domeny kierowały na IP 192.168.1.23 i korzystaj z nich aby odwołać się do konkretnego katalogu.

        rob006
        Jak usunę resztę i zostawię sam folder html i do niego wrzucę flarum to działa.

        O takie wpisy chodzi w /etc/hosts?

        192.168.1.23 web.local
        192.168.1.23 flarum.local
        192.168.1.23 phpmyadmin.local

        I zmienić to tak?

        <VirtualHost *:80>
            ServerName web.local
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/web/
        
            <Directory /var/www/web/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
            </Directory>
        
            ErrorLog ${APACHE_LOG_DIR}/web_error.log
            CustomLog ${APACHE_LOG_DIR}/web_access.log combined
        
            <FilesMatch \.php$>
                SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://web.local/"
            </FilesMatch>
        
        </VirtualHost>
        
        <VirtualHost *:80>
            ServerName flarum.local
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/flarum/public/
        
            <Directory /var/www/flarum/public/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
            </Directory>
        
            ErrorLog ${APACHE_LOG_DIR}/flarum_error.log
            CustomLog ${APACHE_LOG_DIR}/flarum_access.log combined
        
            <FilesMatch \.php$>
                SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://flarum.local/"
            </FilesMatch>
        
            Alias /flarum /var/www/flarum/public/
        
        </VirtualHost>
        
        <VirtualHost *:80>
            ServerName phpmyadmin.local
            ServerAdmin webmaster@localhost
            DocumentRoot /usr/share/phpmyadmin/
            
            <Directory /usr/share/phpmyadmin/>
                Options FollowSymLinks
                DirectoryIndex index.php
                AllowOverride All
            </Directory>
        
            <FilesMatch \.php$>
                SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://phpmyadmin.local/"
            </FilesMatch>
        
            ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log
            CustomLog ${APACHE_LOG_DIR}/phpmyadmin_access.log combined
        
            Alias /phpmyadmin /usr/share/phpmyadmin
        
        </VirtualHost>

        Jeśli tak to tak teraz ustawiłem, zrobiłem nawet reboot i flarum się nie odpala. To samo miałem na innym silniku forum. Po prostu według mnie nie czyta tej lokalizacji, gdzieś trzeba ją w plikach chyba ustawić. Tak na logike.

          szczypiorek239 Jak usunę resztę i zostawię sam folder html i do niego wrzucę flarum to działa.

          A jak usuniesz wszystko poza konfiguracją dla Flarum?

          szczypiorek239 O takie wpisy chodzi w /etc/hosts?

          Tak. Ale to konfiguracja to musi być nie na serwerze, tylko na komputerze, który łączy się z serwerem (czyli tam gdzie uruchamiasz przeglądarkę).

          szczypiorek239 Jeśli tak to tak teraz ustawiłem, zrobiłem nawet reboot i flarum się nie odpala.

          Co to znaczy "nie odpala"? Masz jakiś błąd apache? Czy w ogóle nie łączy z serwerem?

            rob006
            Jak usunę wszystko poza konfiguracją flarum, to one działa. Znaczy, jak wpiszę 192.168.1.23 to zamiast strony do nauki, takiej startowej to włącza mi się flarum, na linku do forum też flarum i phpmyadmin (Strona główna, podstawowa z apache2) tak jakby się zgasiła.

            Apache błędami nie pluje. Tylko ten błąd w przeglądarce. Ale po tym kombinowaniu widać że problem jest w tym pliku 000-default.conf

              szczypiorek239 Tak jak mówiłem, problem polega na tym, że masz 3 konfiguracje dla ServerName 192.168.1.23 - apache nie zgadnie magicznie co chcesz zobaczyć gdy odpytujesz "domenę" 192.168.1.23, więc wykorzystuje pierwszą konfigurację, a resztę ignoruje. Konfiguracja z szczypiorek239 powinna działać. Nie wiem co rozumiesz przez "ten błąd w przeglądarce", ale jesli chodzi o to:

              to znaczy że źle skonfigurowałeś ustawienia hosts (prawdopodobnie nie tam gdzie trzeba - jeśli korzystasz z Windowsa, to te ustawienia powinny być w Windowsie).

                rob006
                A gdzie to dokładnie jest w Windowsie? Znalazłem dwa pliki hosts i nie wiem który to który. Trzeba po tym reset? Mógłbyś mi podać lokalizację tego pliku?

                Edit. Dodałem do hosts i nadal nie działa.

                  Sugeruję stworzenie osobnego pliku vhost dla flarum. W katalogu /etc/apache2/sites-enabled stwórz sobie nowy plik używając vim lub nano o dowolnej nazwie, np: flarum.conf

                  Przykładowa zawartość (oczywiście zastąp forum.twojadomena.tdl swoją domeną. W przykładzie używam też certyfikatu i klucza prywatnego od Cloudflare. Musisz je sobie wygenerować w serwisie cloudflare i dodać na serwer w katalogu /etc/ssl/ lub użyć Let's encrypt:

                  <IfModule mod_ssl.c>
                  
                  <VirtualHost *:80>
                      ServerName forum.twojadomena.tdl
                      ServerAlias www.forum.twojadomena.tdl
                      RewriteEngine On
                      RewriteCond %{HTTPS} off
                      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
                  </VirtualHost>
                  
                  <VirtualHost *:443>
                      ServerName forum.twojadomena.tdl
                      DocumentRoot /var/www/flarum/public/
                      ServerAlias www.forum.twojadomena.tdl
                      ErrorLog /var/www/apache2/forum/error.log
                      CustomLog /var/www/apache2/forum/requests.log combined
                      SSLEngine on
                      SSLCertificateFile /etc/ssl/cloudflare.cer
                      SSLCertificateKeyFile /etc/ssl/cloudflare.key
                  
                      <Directory />
                          Options FollowSymLinks
                          AllowOverride All
                          Require all granted
                      </Directory>
                  
                  </VirtualHost>
                  </IfModule>

                  Następnie wciąż w katalogu /etc/apache2/site-available aktywuj nowy vhost oraz niezbędne moduły:

                  sudo a2enmod ssl
                  sudo a2enmod rewrite
                  sudo a2ensite flarum.conf
                  sudo systemctl restart apache2

                  Będziesz potrzebował również certyfikatu ssl.
                  Możesz go wygenerować używając projektu let's encrypt lub np: cloudflare

                  Przykładowe kroki do instalacji i aktywacji ssl z użyciem let's encrypt:

                  sudo apt update
                  sudo apt install certbot python3-certbot-apache
                  sudo certbot --apache -d forum.twojadomena.tdl -d www.forum.twojadomena.tdl

                  Aby certyfikat sam się odnawiał warto dodać wpis do crontab za pomocą komendy sudo crontab -e o zawartości:

                  0 3 * * * /usr/bin/certbot renew --quiet && /usr/bin/systemctl reload apache2

                  PS. Tanio domeny kupisz na https://www.ovhcloud.com/pl/domains/
                  PPS. Darmowe domeny (dobre do nauki) dostaniesz na https://www.freenom.com/en/index.html

                  szczypiorek239 Nie korzystam z Windowsa, ale pierwszy lepszy wynik z google powinien rozwiać wątpliwości: https://wojciechpietrzak.com.pl/plik-hosts-w-systemie-windows-informacje-edycja-i-zastosowanie/

                  @Wadera Zabawa w certyfikaty od LE na lokalnej developerskiej maszynie to trochę sztuka dla sztuki. Jeśli już naprawdę jest do czegoś potrzebny SSL, to prościej wygenerować sobie samopodpisany certyfikat i dodać dla niego wyjątek w przeglądarce.

                    @Wadera @rob006
                    Dziękuję wam wszystkim za pomoc. Problem już jest naprawiony. Problem polegał na tym, że nie wiem czemu to zrobiłem, ale zrobiłem. Zamiast wpisać w przeglądarce np. "flarum.local" wpisałem adres ip i /flarum i nie działało a wpisuję flarum.local i nagle magicznie działa ! 🙂

                      rob006 Zabawa w certyfikaty od LE na lokalnej developerskiej maszynie to trochę sztuka dla sztuki.

                      Zgadzam się. Po prostu po przeczytaniu tego:

                      szczypiorek239 Mam maszynę wirtualną postawioną na Ubuntu 22.04

                      Mój umysł o później porze automatycznie zaczął myśleć o VPS...

                      szczypiorek239 Dziękuję wam wszystkim za pomoc. Problem już jest naprawiony.

                      Cieszę się! W razie potrzeby pisz ponownie, a będziemy stać się pomóc 😉