Strony wwwSklepy on‐linePozycjonowanie stron

Konfiguracja Apache VirtualHost w Ubuntu

Konfiguracja Apache do obsługi wielu stron na jednym serwerze.

Tworzenie struktury katalogów

Wewnątrz document root serwera Apache tworzymy katalogi w których znajdą się pliki planowanych VirtualHost.

Wewnątrz każdego z tych katalogów należy utworzyć katalog public_html, w którym znajdą się katalogi i pliki.

cd ~/www
mkdir ‑p example.com/public_html

Gdzie: ‑p, –parents, nie zwraca błędu jeżeli katalog istnieje; tworzy brakujące katalogi nadrzędne

Udzielanie uprawnień do katalogów

W celu uzyskania możliwości tworzenie, usuwania i modyfikowania plików należy pamiętać o odpowiednim właścicielu, grupie oraz prawach do plików i katalogów. Wszystkie te informacje możemy wyświetlić pleceniem:

ls ‑la

Gdzie: -l, długi format wyjściowy, -a, –all bez ukrywania plików rozpoczynających się znakiem “.”

Właściciel, grupa, prawa dostępu

Wyświetlenie informacji o właścicielu i grupie do której należą katalogi i pliki.

ls ‑al

gdzie: a – wszystkie pliki, l – długi format wyjściowy.

Zmiana właściciela i grupy

W zależności od konfiguracji systemu zmieniamy właściciela i grupę.

sudo chown $USER:$USER ‑R sciezka/do/katalogu

gdzie: -R, zmiana rekursywna dla wszystkich plików i podkatalogów $USER, zmienna systemowa

Sprawdzamy i ewentualnie modyfikujemy uprawnienia do plików

sudo chmod 755 ‑R example.com/public_html

-R, zmiana rekursywna 755 – oznacza udzielenie pełnych uprawnień dla właściciela (7), odczyt i wykonanie (5) dla grupy oraz pozostałych użytkowników.

Konfiguracja VirtualHost

W ramach konfiguracji należy w katalogu /etc/apache2/sites‐available utworzyć plik konfiguracyjny. Najwygodniej jest przekopiować któryś z istniejących plików zmieniając jego nazwę, a następnie zedytować plik. W systemie operacyjnym Ubuntu domyślnym rozszerzeniem pliku wirtualnego hosta jest .conf.

cd /etc/apache2/sites‐available
sudo cp istniejacy-plik.conf nowy-plik.conf
sudo gedit nowy-plik.conf

Przykładowa zawartość pliku konfiguracyjnego dla domeny example.com

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot home/norbert/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>

ServerName – domena bazowa ServerAlias – dodatkowa domena wskazująca na to samo co domena bazowa ServerAdmin – adres email administratora DocumentRoot – katalog główny domeny ErrorLog – plik z logami błędów CustomeLog – plik z logami

Uruchomienia VirtualHost

Skrypt a2ensite dodaje konfigurację do serwera apache2. Dodatkowo przed restartem możemy sprawdzić poprawność konfiguracji.

sudo a2ensite nowy‐plik
apachectl configtest
sudo apachectl graceful

Konfoguracja pliku hosts

Plik hosts znajduje się w lokalizacji /etc/hosts. Edytując go możemy przypisać daną domenę do adresu IP.

sudo gedit /etc/hosts

Przykładowe wpis dla domeny example.com

127.0.0.1 example.com

127.0.0.1 – adres IP (w tym przypadku adres localhost) example.com – domena

Powyższy zapis oznacza, że wprowadzenie nazwy domenowej example.com będzie zawsze przekierowane na adres IP 127.0.0.1. Możemy to sprawdzić poleceniem ping.

ping example.com

Skrypt bash

Powyższe czynności konfiguracyjne można zautomatyzować np. przy pomocy skryptu bash‑a.

Poniższy skrypt tworzy katalog dla dodawanego virtual hosta. Nadaje katalogowi odpowiednie uprawnienia, tworzy plik konfiguracyjny w katalogu /etc/apache2/sites‐available, a następnie dodaje plik konfiguracyjny oraz opcjonalnie restartuje serwer apache. Skrypt służy jedynie do tworzenia virtual hostów w środowisku developerskim i dodaje do adresu końcówkę .local (np. example.local, www.example.local).

#!/bin/bash
# This script is used for create virtual hosts on Ubuntu 18.04.
# Created by nmorajda from https://abmstudio.pl

# PARAMETERS
# $usr – User
# $dir – directory of web files
# $servn – webserver address without www.

usr=‘norbert’
dir=’/home/norbert/www’
sitesAvailable=’/etc/apache2/sites-available’

if [ “$(whoami)” != ‘root’ ]; then
echo “You have to execute this script as root/sudo user”
exit 1;
fi
read ‑p “Enter the domain name your want (without www): ” servn

# Create web directory 
if ! mkdir ‑p $dir/$servn; then
echo “Web directory already Exist!”
else
echo “Web directory created with success!”
fi

# Create domain index.php file
echo “<?php echo ‘<h1>Hello from $servn</h1>’; ?>” > $dir/$servn/index.php
chown ‑R $usr:$usr $dir/$servn
chmod ‑R ‘755’ $dir/$servn

# Create in /etc/apache2/sites‐available vhost config file
echo ”
<VirtualHost *:80>
    ServerName $servn.local
    ServerAlias www.$servn.local
    ServerAdmin biuro@abmstudio.pl
    DocumentRoot /home/norbert/www/$servn
        <Directory />
                Options FollowSymLinks
                AllowOverride All
       </Directory>
       <Directory /home/norbert/www/$servn/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>

    ErrorLog /var/log/apache2/$servn.local.error.log
    CustomLog /var/log/apache2/$servn.access.log combined
</VirtualHost>”> $sitesAvailable/$servn.local.conf

if ! echo ‑e $sitesAvailable/$servn.local.conf; then
echo “Virtual host wasn’t created!”
else
# Add to /etc/hosts file
echo “127.0.0.1 $servn.local” » /etc/hosts
echo “127.0.0.1 www.$servn.local” » /etc/hosts

# Create virtual host
a2ensite $servn.local
echo “Virtual host created!”
fi

# Restart server apache2
echo “Would you like me to restart the server [y/n]? ”
read q if [[ “${q}” == “yes” ]] || [[ “${q}” == “y” ]]; then
systemctl restart apache2
fi

# Happy end
echo “======================================”
echo “All works done! You should be able to see your website at http://$servn.local”
echo “======================================”

Skrypt o nazwie, np: create-virtual-host.sh można umieścić w katalogu /usr/local/bin i wywołać w terminalu poleceniem:

sudo create-virtual-host.sh

Można również utworzyć alias np.:

alias cvh=“create-virtual-host.sh”

i wywoływać skrypt poleceniem:

sudo cvh

Kontakt

Napisz do nas

Biuro czynne jest od poniedziałku do soboty w godzinach od 9.00 do 18.00.

Wygląda ok!
Proszę wprowadzić poprawny adres e-mail.
Wygląda ok!
Proszę wprowadzić poprawny numer telefonu.
Wygląda ok!
Proszę wprowadzić treść wiadomości.

* te pola są wymagane.

Adres

  • ABM STUDIO Norbert Morajda
  • ul. Kopernika 22,
  • 33-170 Tuchów

Dane do przelewów

  • ABM STUDIO Norbert Morajda
  • PL 8732577306
  • Santander Bank Polska
  • 10 1910 1048 2125 0787 8127 0001