avatar
Untitled

Guest 8 9th Jan, 2025

MARKUP 4.89 KB
                                           
                         #!/bin/bash

install_php() {
    sudo apt install -y php
}

# Sprawdzenie czy jest dostępne php, jeżeli nie ma to instalujemy, brak php wyszedł po postawieniu czystej testowej vmki, uznałem, że fajnie będzie to zautomatyzować
if ! command -v php > /dev/null 2>&1; then
    install_php
fi

echo "Aktualna wersja php"

# Polecenie do pokazania zainstalowanej wersji php
php -v

# Doinstalowanie pakietów które są potrzebne do postawienia środowiska pod wordpress paczki php, apache, mysql
sudo apt update
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql php-cli php-zip php-gd php-xml php-mbstring

echo "Edycja pliku php.ini"

# Przypisujemy do zmiennej ścieżke do pliki ini
PHP_INI_PATH=$(php -r "echo php_ini_loaded_file();")


# Ustawienie typowej konfiguracji serwera pod wordpressa
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 64M/' $PHP_INI_PATH
sudo sed -i 's/post_max_size = 8M/post_max_size = 64M/' $PHP_INI_PATH
sudo sed -i 's/max_execution_time = 30/max_execution_time = 300/' $PHP_INI_PATH
sudo sed -i 's/max_input_time = 60/max_input_time = 300/' $PHP_INI_PATH
# W przypadku gołej instalacji wp 128Mb powinno wystarczyć ale zawsze lepiej dać trochę więcej jakby kiedyś byłaby potrzeba 
# doinstalowania większej ilości wtyczek.
sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' $PHP_INI_PATH


echo "Tworzenie bazy danych MySQL dla WordPressa"

# Przygotowanie zmiennych środowiskowych
# wartości konfiguracyjne jak np nazwa użytkownika najlepiej trzymać w zmiennej, kiedyś może byłaby potrzeba aby pobierać te wartości np z Ansible
MYSQL_ROOT_PASSWORD="23025" 
DB_NAME="wordpress"
DB_USER="pawel_slota"
DB_PASSWORD="234025"

# za pomocą użytkownika root w mysql po kolei robimy:

# Stworzenie pustej bazy danych
sudo mysql -u root -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE $DB_NAME;"

# Stworzenie podstawowego użytkownika bazy
sudo mysql -u root -p$MYSQL_ROOT_PASSWORD -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';"

# Nadanie uprawienie dla tego użytkownika
sudo mysql -u root -p$MYSQL_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';"

# Wypchnięcie ich
sudo mysql -u root -p$MYSQL_ROOT_PASSWORD -e "FLUSH PRIVILEGES;"



echo "Pobieranie WordPressa"

# Wejście do folderu temporary aby do niego pobrać archiwum wp
cd /tmp

# Pobranie archiwum wp do folderu tmp
wget https://wordpress.org/latest.tar.gz

# Rozpakowanie archiwum tar.gz
tar -xzvf latest.tar.gz


# Skopiowanie plików wp do folderu var/www/html/
sudo cp -r wordpress/* /var/www/html/

# Zmiana właściciela katalogu na grupę www-data(domyślna konfiguracja Apache)

sudo chown -R www-data:www-data /var/www/html/

# Odpowiednie uprawnienia do plików
sudo chmod -R 755 /var/www/html/


# Dodanie serwerName localhost do konfiguracji apache
echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf

# Plik konfiguracyjny dla hosta apache na domyślnym porcie 80
VHOST_CONF="/etc/apache2/sites-available/wordpress.conf"
echo "<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ServerName localhost
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html/>
        AllowOverride All
    </Directory>
</VirtualHost>" | sudo tee $VHOST_CONF



# Włącza wirtualny host o nazwie wordpress.conf
sudo a2ensite wordpress.conf

# moduł rewrite aby móc używać linków które wordpress nazywa jako przyjazne
sudo a2enmod rewrite

# Restart usługi apache aby zastosować wszystkie zmiany
sudo systemctl restart apache2

# Dodanie ip 10.0.2.15 do localhost
echo "10.0.2.15    localhost" | sudo tee -a /etc/hosts


# Przypisanie zmiennych do określenia czy wszystko działa poprawnie
APACHE_STATUS=$(sudo systemctl is-active apache2)
MYSQL_STATUS=$(sudo systemctl is-active mysql)

# Warunek, który sprawdza, czy obie usługi są aktywne
if [ "$APACHE_STATUS" == "active" ] && [ "$MYSQL_STATUS" == "active" ]; then
    # Jeżeli obie usługi są aktywne to komunikat o poprawności instalacji
    echo "Instalacja i konfiguracja zakończona pomyślnie!"
else
    #Pokazanie która usługa nie uruchomiła się poprawnie
    echo "Błąd: Jedna lub więcej usług (Apache2, MySQL) nie jest aktywna."
    echo "Status Apache2: $APACHE_STATUS"
    echo "Status MySQL: $MYSQL_STATUS"
fi
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM