Z całą pewnością apache próbuje dostać się do miejsca w którym nie ma praw do zapisu i odczytu. Bez zerkania przez ramię - bardzo trudno wskazać co jest nie tak zamiast tego podrzucę bardzo podstawową instrukcję konfiguracji serwera wraz z instalacją flarum:
Przykładowa instalacja miała miejsce na DigitalOcean droplet, ale powinna zadziałać na każdym innym serwerze.
Bardzo podstawowa instrukcja
Cloudflare / DNS
Zacznijmy od ustawienia DNS tak by kierowały na IP naszego serwera. Można użyć do tego dowolnego dostawcy tej usługi (włącznie z często dostarczaną usługą bezpośrednio u rejestratora domen), choć ja polecę Cloudflare. Przykładowe ustawienia (gdzie 192.168.1.1
to IP Twojego serwera, a przyklad.tdl
to Twoja domena):
Type: Name: Content: TTL: Proxy status:
A przyklad.tdl 192.168.1.1 Auto Proxied
A forum.przyklad.tdl 192.168.1.1 Auto Proxied
MX przyklad.tdl przyklad.tdl 10 Auto DNS only
TXT przyklad.tdl v=spf1 a mx ip4:192.168.1.1 ~all Auto DNS only
TXT x._domainkey v=DKIM1; k=rsa; p=MIIBIj(...)AQAB Auto DNS only
To powinno dodać podstawową ochronę przed atakami DDOS, wyciąć choć część botów SPAMujących internet, wyciąć część dobrze znanych ataków oraz automatycznie wygenerować dla nas certyfikaty SSL.
LAMP stack
Linux, Apache MariaDB, PHP
Najpierw zainstalujmy wszystkie potrzebne pakiety na naszym Ubuntu / Debian:
# apt-get update
# apt-get dist-upgrade
# apt-get install apache2 mariadb-server php7.4 libapache2-mod-php7.4 php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-mysql php7.4-gd php7.4-xml php7.4-curl php7.4-cli php7.4-zip php7.4-tokenizer wget unzip curl git -y
# curl -s https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
Następnie możemy zwiększyć część domyślnych limitów czasu wykonania skryptów lub użycia pamięci dla apache i php w tych plikach:
# vim /etc/php/7.4/apache2/php.ini
Apache vhost
Pora na stworzenie virtualhosta (czyli pliku konfiguracyjnego apache dla danej domeny):
# cd /etc/apache2/sites-available/
# cp -p default-ssl.conf forum.conf
# vim forum.conf
Przykładowa zawartość forum.conf
:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName forum.przyklad.tdl
DocumentRoot /var/www/forum.przyklad.tdl/public_html
ServerAlias www.forum.przyklad.tdl
ErrorLog /var/logs/apache/forum.przyklad.tdl/error.log
CustomLog /var/logs/apache/forum.przyklad.tdl/requests.log combined
SSLEngine on
SSLCertificateFile /var/ssl/forum.przyklad.tdl/cloudflare.cer
SSLCertificateKeyFile /var/ssl/forum.przyklad.tdl/cloudflare.key
<Directory />
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
</IfModule>
Certyfikat dla swojego serwera i domeny wygenerujesz w Cloudflare:
SSL/TLS -> Origin Server -> Create Certificate
Następnie skopiuj je na serwer do wspomnianego poprzednio katalogu /var/ssl/forum.przyklad.tdl/
Zróbmy kilka dziur w firewallu
Otwieramy port 443:
# ufw allow 443
Baza danych
Stwórzmy pustą bazę danych oraz użytkownika:
Zamień mojuzytkownik
na własną nazwę.
Zamień haslo
na własne, super tajne hasło
Zamień flarum_database
na jakąś wybraną przez siebie nazwę bazy danych
# mysql
mysql> CREATE USER 'mojuzytkownik'@'localhost' IDENTIFIED BY 'haslo';
mysql> CREATE DATABASE flarum_database;
mysql> GRANT ALL ON flarum_database TO 'mojuzytkownik'@'localhost';
Instalacja flarum
Krok po kroku instalujemy flarum na serwerze:
# mkdir -p /var/www/forum.przyklad.tdl/flarum
# mkdir /var/www/forum.przyklad.tdl/logs
# mkdir /var/www/forum.przyklad.tdl/certificates
# cd /var/www/forum.przyklad.tdl/flarum
# composer create-project flarum/flarum .
# ln -s /var/www/forum.przyklad.tdl/flarum/public /var/www/forum.przyklad.tdl/public_html
# chown -R www-data:www-data /var/www/forum.przyklad.tdl
I na końcu włączamy naszego vhosta i restartujemy apache:
# cd /etc/apache2/sites-available/
# a2ensite forum.conf
# service apache2 restart
Jeśli wszystko poszło gładko, to po odwiedzeniu naszego adresu - powinien nas przywitać konfigurator flarum:
https://forum.przyklad.tdl
Podajemy wcześniej ustawione dane do naszej bazy danych (mojuzytkownik
, haslo
i flarum_database
),
A następnie wybieramy nazwę naszego forum, login, email oraz hasło administratora forum itd.
Królicza nora potrafi być bardzo głęboka...
To wszystko to tylko podstawowe kroki - sporo dodatkowych kroków można podjąć gdy Twoje forum zacznie się rozrastać, np:
- wyłączenie dostępu do konta root na serwerze za pomocą hasła, dodanie dodatkowego użytkownika wraz z odpowiednimi ustawieniami sudo
- skonfigurowanie narzędzi analizujących logi i pomagających walczyć z nadużyciami (np: fal2ban etc)
- wymiana prostej biblioteki mail od php na prawdziwy serwer SMTP raz z poprawnymi ustawieniami DKIM, DMARC, SPF itd by poprawić dostarczalność wiadomości e-mail
- dodanie cache
- dodanie kolejkowania zadań
- ustawienie monitoringu i automatycznych aktualizacji
- zainstalowanie kilku pluginów flarum, skonfigurowanie serwera websocket
- itd...