Własny Serwer

Własny Serwer – cz.9: Serwer lustrzany

Ostatnia aktualizacja: 16 września 2023, 12:55



 
W dziewiątej części cyklu Własny Serwer zajmiemy się konfiguracją serwera lustrzanego pakietów debianowych.

Co to jest serwer lustrzany?
Serwer lustrzany (ang: mirror server) dostarcza dodatkowy serwer dla serwera głównego, w celu jego odciążenia oraz zaoferowania użytkownikom innego serwera znajdującego się w ich lokalizacji.

Reasumując, serwer lustrzany jest kopią serwera głównego i oferuje te same pakiety, co serwer główny.

Komu jest to potrzebne?
Serwer lustrzany jest pomocy w projektach, których serwer jest przeciążony. Pomoże on przekierować część użytkowników z serwera głównego na lustrzany, co może pomóc w poprawie wydajności i przepustowości serwera głównego.

Często projekty konfigurują własne serwery lustrzane, lecz możliwe jest stworzenie (i opłacanie) serwerów lustrzanych również przez członków społeczności zgromadzonej wokół projektu.

Jeśli prześledziłeś wszystkie poprzednie części serii Własny Serwer, to znasz zasady konfiguracji domeny, serwera www i szyfrowania TSL/SSL.

Domena
Możesz postawić serwer lustrzany repozytoriów na własnej, unikalnej domenie/subdomenie lub poprosić o utworzenie specjalnej subdomeny projektu, którego pakiety chcesz hostować, np.: de1.repo.sparkylinux.org

Serwer www
Minimum koniecznym do udostępniania plików jest serwer www, bazujący na Apache2 lub Nginx, lub innym.

Utwórz katalog, w którym będziesz udostępniał zasoby:
mkdir -p /var/www/de1.repo.sparkylinux.org/public_html

Dodaj konfigurację dla Apache:
nano /etc/apache2/sites-available/000-default.conf
wpisując:
##### de1.repo.sparkylinux.org #####
<VirtualHost *:80>
        ServerAdmin admin@de1.repo.sparkylinux.org
        ServerName de1.repo.sparkylinux.org
        ServerAlias www.de1.repo.sparkylinux.org  de1.repo.sparkylinux.org
        DocumentRoot/var/www/de1.repo.sparkylinux.org/public_html
        DirectoryIndex index.html index.php index.htm
        <Directory /var/www/de1.repo.sparkylinux.org/public_html/>
               Options All Indexes FollowSymLinks
               AllowOverride All
               Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error- pl-repo-sparkylinux-org.log
        CustomLog ${APACHE_LOG_DIR}/access- pl-repo-sparkylinux-org.log combined
</VirtualHost>

Jeśli posiadasz Nginx zamiast Apache, to dodaj konfigurację do:
nano /etc/nginx/sites-available/default
wpisując:
##### de1.repo.sparkylinux.org #####
server {
        listen 80;
        server_name de1.repo.sparkylinux.org www.de1.repo.sparkylinux.org;
        root /var/www/de1.repo.sparkylinux.org/public_html;
        index index.php index.html index.htm;
        location /
        {
               try_files $uri $uri/ =404;
        }
}

Zmiana praw do zawartości udostępnionego katalogu i plików:
chown -R www-data:www-data /var/www/de1.repo.sparkylinux.org/public_html/

Szyfrowanie TSL/SSL
Jeśli chcesz udostępniać swoje repozytoria przez szyfrowany protokół https, to dodaj link symboliczny:
ln -s /var/www/de1.repo.sparkylinux.org/public_html /var/www/de1.repo.sparkylinux.org/private_html

Oraz wpis do konfiguracji Apache:
nano /etc/apache2/sites-available/default-ssl.conf

dodając do powyższego pliku zawartość:
##### de1.repo.sparkylinux.org #####
<IfModule mod_ssl.c>
        <VirtualHost *:443>
               ServerAdmin admin@de1.repo.sparkylinux.org
               ServerName de1.repo.sparkylinux.org
               ServerAlias www.de1.repo.sparkylinux.org de1.repo.sparkylinux.org
               DocumentRoot /var/www/de1.repo.sparkylinux.org/private_html
               <Directory /var/www/de1.repo.sparkylinux.org/private_html/>
                       Options All Indexes FollowSymLinks
                       AllowOverride All
                       Require all granted
               </Directory>
               ErrorLog ${APACHE_LOG_DIR}/error-pl-repo-sparkylinux-org.log
               CustomLog ${APACHE_LOG_DIR}/access-pl-repo-sparkylinux-org.log combined
               SSLEngine on
               <FilesMatch "\.(cgi|shtml|phtml|php)$">
                               SSLOptions +StdEnvVars
               </FilesMatch>
               <Directory /usr/lib/cgi-bin>
                               SSLOptions +StdEnvVars
               </Directory>
        </VirtualHost>
</IfModule>

Przeładuj Apache:
systemctl restart apache2

Teraz zainstaluj certyfikat TSL:
certbot --apache -d de1.repo.sparkylinux.org -d www.de1.repo.sparkylinux.org

Ponownie przeładuj Apache:
systemctl restart apache2

Lub do konfiguracji Nginx:
/etc/nginx/sites-available/default

server {
        listen 443 ssl http2;
        server_name de1.repo.sparkylinux.org www.de1.repo.sparkylinux.org;
        root /var/www/de1.repo.sparkylinux.org/private_html;
        index index.php index.html index.htm;
        ssl_certificate /etc/ssl/certs/apache-selfsigned.crt;
        ssl_certificate_key /etc/ssl/private/apache-selfsigned.key;
        location /
        {
              try_files $uri $uri/ =404;
        }
}

Przeładuj Nginx:
systemctl restart nginx

Teraz zainstaluj certyfikat TSL:
certbot --nginx -d de1.repo.sparkylinux.org -d www.de1.repo.sparkylinux.org

Ponownie przeładuj Nginx:
systemctl restart nginx

apt-mirror
Zainstaluj aplikację do zarządzania pakietami na serwerze lustrzanym:
apt install gnupg apt-mirror

Zrób kopię pliku konfiguracyjnego:
mv /etc/apt/mirror.list /etc/apt/mirror.list.bak

Wyedytuj plik konfiguracyjny:
nano /etc/apt/mirror.list

Dodając do powyższego pliku konfigurację katalog udostępniania oraz repo (tutaj: sparkylinux core & stable):
#=====================================start
set base_path /home/repotmp
set nthreads 20
set _tilde 0
### sparky core repos i386 amd64 armhf source
deb-amd64 https://repo.sparkylinux.org/ core main
deb-i386 https://repo.sparkylinux.org/ core main
deb-armhf https://repo.sparkylinux.org/ core main
deb-src https://repo.sparkylinux.org/ core main
### sparky 6 potolo repos i386 amd64 armhf source
deb-amd64 https://repo.sparkylinux.org/ potolo main
deb-i386 https://repo.sparkylinux.org/ potolo main
deb-armhf https://repo.sparkylinux.org/ potolo main
deb-src https://repo.sparkylinux.org/ potolo main
clean https://repo.sparkylinux.org
#====================================koniec

Utwórz katalog dla pakietów:
mkdir -p /home/repotmp

Ręcznie uruchom pierwszą synchronizację:
apt-mirror
W zależności od ilości i wielkości pakietów oraz szybkości łącza, synchronizacja może potrwać od kilku do kilkudziesięciu minut.

Utwórz dowiązania symboliczne katalogu z pakietami do katalogu udostępniania zasobów:
ln -s /home/repotmp/mirror/repo.sparkylinux.org/dists/ /var/www/de1.repo.sparkylinux.org/public_html/dists/
ln -s /home/repotmp/mirror/repo.sparkylinux.org/pool/ /var/www/de1.repo.sparkylinux.org/public_html/pool/

W przypadku udostępniania zasobów przez połączenie szyfrowanie, utwórz dowiązanie symboliczne do katalogu private_html zamiast public_html:
ln -s /home/repotmp/mirror/repo.sparkylinux.org/dists/ /var/www/de1.repo.sparkylinux.org/private_html/dists/
ln -s /home/repotmp/mirror/repo.sparkylinux.org/pool/ /var/www/de1.repo.sparkylinux.org/private_html/pool/

Możesz również (opcjonalnie) zainstalować klucz publiczny udostępniany przez serwer główny (tutaj: klucz sparkyinux):
wget https://repo.sparkylinux.org/sparky.gpg.key
gpg --allow-secret-key-import --import sparky.gpg.key

Cron
Serwer lustrzany jest już zsynchronizowany i gotowy do działania.

Aby zautomatyzować proces kolejnych synchronizacji, należy użyć cron-a.
Cron będzie używał własnego skryptu 'apt-mirror-sparky’, który należy umieścić w katalogu /usr/bin/
nano /usr/bin/apt-mirror-sparky

wklejając:
#!/bin/bash
apt-mirror
sleep 1
/bin/bash /home/repotmp/var/clean.sh
exit 0

Oraz nadaj prawa wykonalności
chmod +x /usr/bin/apt-mirror-sparky

Skonfiguruj zadanie cron-a, który, np. będzie synchronizował pakiety co 6 godzin:
crontab -e

wklejając na dole pliku:
0 */6 * * * /usr/bin/apt-mirror-sparky

Restart cron-a:
systemctl restart cron

Na tym skończyliśmy konfigurację serwera lustrzanego z pakietami debianowymi, który w tym przypadku konfiguruje mirror sparkylinux.

W kolejnej, dziesiątej części cyklu Własny Serwer skonfigurujemy narzędzie do tworzenia statystyk serwera.

Click to rate this post!
[Total: 0 Average: 0]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.