Untitled
Guest 8 9th Jan, 2025
#!/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