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

Witam. 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.

Mam maszynę wirtualną postawioną na Ubuntu 22.04 LTS. Mam pewien rozkład folderów, przy którym flarum mi nie działa, bo ja nie umiem tego skonfigurować. Nie jestem mistrzem linuksa, a hostingu nie chcę 🙂

W /var/www/html/ - Tu się uczę, tworzę sobie jakieś skrypty.
W /var/www/flarum/ - Mam forum flarum.

Konfiguracja 000-default.conf:

<VirtualHost *:80>
    ServerName 192.168.1.23
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/

    <Directory /var/www/html/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nauka_error.log
    CustomLog ${APACHE_LOG_DIR}/nauka_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>

A jak wrzucę do folderu html i usunę wpis z 000-default.conf i dam restart usługi apache2 to mi działa. Ja nie wiem co ja tu mam zrobić, by działało. Chcę to w osobnych folderach, bo nie chcę i nie lubię bałaganu.

Jeśli chodzi o wersję oprogramowania to:

  • Apache: 2.4.56
  • PHP: 8.2.4
  • MariaDB: 10.11.2

Mam jeszcze phpmyadmin w wersji 5.2.1 ale to nie ważne raczej. 🙂 Pozdrawiam wszystkich 🙂

    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 😉