|
1 | 1 | #!/bin/bash |
2 | 2 | # LAMP = Linux + Apache + MySQL (MariaDB) + PHP |
3 | 3 | # Autor: Jakub 'unknow' Mrugalski |
| 4 | +# Edited and modified by: Andrzej 'Ferex' Szczepaniak, Jarosław 'Evilus' Rauza, Artur 'stefopl' Stefański |
| 5 | + |
| 6 | +function show_help() { |
| 7 | + echo "Użycie: $0 [--php-fpm | --php-mod]" |
| 8 | + echo "Opcje:" |
| 9 | + echo " --php-fpm Zainstaluj Apache z FPM/FastCGI" |
| 10 | + echo " --php-mod Zainstaluj Apache z mod_php" |
| 11 | + echo " -h, --help Wyświetl pomoc" |
| 12 | + echo "" |
| 13 | +} |
| 14 | + |
| 15 | +[[ $EUID != 0 ]] && { echo "Uruchom jako root" ; exit; } |
| 16 | + |
| 17 | +USE_PHP_FPM=false |
| 18 | + |
| 19 | +if [[ $# -eq 0 ]]; then |
| 20 | + show_help |
| 21 | +fi |
| 22 | + |
| 23 | +for arg in "$@"; do |
| 24 | + case $arg in |
| 25 | + --php-fpm) |
| 26 | + USE_PHP_FPM=true |
| 27 | + ;; |
| 28 | + --php-mod) |
| 29 | + USE_PHP_FPM=false |
| 30 | + ;; |
| 31 | + -h|--help) |
| 32 | + show_help |
| 33 | + exit 0 |
| 34 | + ;; |
| 35 | + *) |
| 36 | + echo "Błąd: Nieprawidłowa opcja '$arg'." |
| 37 | + show_help |
| 38 | + exit 1 |
| 39 | + ;; |
| 40 | + esac |
| 41 | +done |
4 | 42 |
|
5 | 43 | apt update |
6 | | -apt install -y software-properties-common |
| 44 | +apt install -y software-properties-common |
7 | 45 |
|
8 | | -# Repozytoria zewnętrzne z najnowszym Apachem i PHP (nie ma ich w standardowym Ubuntu) |
| 46 | +# Repozytoria zewnętrzne z najnowszymi PHP i Apache2 (nie ma ich w standardowym Ubuntu) |
9 | 47 | add-apt-repository -y ppa:ondrej/apache2 |
10 | 48 | add-apt-repository -y ppa:ondrej/php |
11 | 49 |
|
12 | | -# apache + najpopularniejsze moduły do PHP |
13 | | -apt install -y apache2 php libapache2-mod-php php-zip php-xml php-sqlite3 php-pgsql php-mysql php-mcrypt php-mbstring php-intl php-gd php-curl php-cli php-bcmath |
14 | | - |
15 | | -# dodanie MariaDB (klient i serwer) |
16 | | -apt install -y mariadb-server mariadb-client |
17 | | - |
18 | | -# uruchomienie serwera mariadb |
19 | | -systemctl start mariadb |
| 50 | +# Instalacja Apache2 oraz popularnych modułów PHP |
| 51 | +if [ "$USE_PHP_FPM" = true ]; then |
| 52 | + apt install -y apache2 libapache2-mod-fcgid php php-fpm php-curl php-common php-igbinary php-imagick php-intl php-mbstring php-xml php-zip php-bcmath php-gd php-cli php-memcached php-memcache php-sqlite3 php-pgsql php-mysql php-mcrypt |
| 53 | + # Zmiana mpm_prefork na mpm_event mpm-prefork działa kiedy instalujemy libapache2-mod-php a mpm_event dla php-fpm |
| 54 | + a2dismod mpm_prefork |
| 55 | + if ! apache2ctl -M | grep -q 'mpm_event'; then |
| 56 | + a2enmod mpm_event |
| 57 | + fi |
| 58 | + # Aktywacja konfiguracji modułu php-fpm dla apache2 |
| 59 | + PHP_VERSION="$(/usr/bin/php.default -v | head -1 | cut -c5-7)" |
| 60 | + a2enconf php"$PHP_VERSION"-fpm |
| 61 | + a2enmod rewrite setenvif proxy proxy_fcgi |
| 62 | +else |
| 63 | + apt install -y apache2 libapache2-mod-php php php-curl php-common php-igbinary php-imagick php-intl php-mbstring php-xml php-zip php-bcmath php-gd php-cli php-sqlite3 php-pgsql php-mysql php-mcrypt |
20 | 64 |
|
21 | | -# aktywacja mod_rewrite dla wspierania krótkich linków - np. w Wordpress |
22 | | -a2enmod rewrite |
| 65 | + PHP_VERSION="$(/usr/bin/php.default -v | head -1 | cut -c5-7)" |
| 66 | + a2disconf php"$PHP_VERSION"-fpm |
| 67 | + a2dismod mpm_event |
| 68 | + if ! apache2ctl -M | grep -q 'mpm_prefork'; then |
| 69 | + a2enmod php"$PHP_VERSION" |
| 70 | + a2enmod mpm_prefork |
| 71 | + fi |
| 72 | + a2enmod rewrite |
| 73 | +fi |
23 | 74 |
|
24 | | -# restart usługi po dodaniu nowego modułu |
| 75 | +# Restart Apache |
25 | 76 | systemctl restart apache2 |
26 | 77 |
|
27 | | -# dodanie autostartu do mariadb i apache |
| 78 | +# Instalacja MariaDB (klient i serwer) |
| 79 | +apt install -y mariadb-server mariadb-client |
| 80 | +# Uruchomienie serwera mariadb |
| 81 | +systemctl start mariadb |
| 82 | +# Dodanie MariaDB i Apache2 do autostartu |
28 | 83 | systemctl enable apache2 |
29 | 84 | systemctl enable mariadb |
30 | 85 |
|
31 | | -# Usuwamy domyślną |
32 | | -rm /var/www/html/index.html |
33 | 86 |
|
34 | | -# Dowód na działanie PHP |
35 | | -echo '<?php echo "2 + 2 = ".(2+2); ' >/var/www/html/index.php |
| 87 | +if [ -f /var/www/html/index.html ]; then |
| 88 | + echo "Plik /var/www/html/index.html istnieje. Usuwanie..." |
| 89 | + rm /var/www/html/index.html |
| 90 | +fi |
36 | 91 |
|
37 | | -# == Lekki hardening ustawień == |
| 92 | +if [ -f /var/www/html/index.php ]; then |
| 93 | + read -p "Plik /var/www/html/index.php już istnieje. Czy chcesz go nadpisać? (t/n): " choice |
| 94 | + if [[ "$choice" != "t" ]]; then |
| 95 | + echo "Plik nie został nadpisany." |
| 96 | + exit 0 |
| 97 | + fi |
| 98 | +fi |
38 | 99 |
|
| 100 | +echo '<?php |
| 101 | +echo "<h1>Test PHP</h1>"; |
| 102 | +echo "<p>Wynik dodawania 2 + 2 = " . (2 + 2) . "</p>"; |
| 103 | +echo "<p>Aktualny czas: " . date("d.m.Y H:i:s") . "</p>"; |
| 104 | +echo "<p>Wersja PHP: " . phpversion() . "</p>"; |
| 105 | +echo "<p>Server API: " . php_sapi_name() . "</p>"; |
| 106 | +echo "<p>Domyślna strona utworzona za pomocą skryptu <a href=\"https://github.com/unkn0w/noobs/\">NOOBS</a> <a href=\"https://github.com/unkn0w/noobs/blob/main/scripts/chce_LAMP.sh\">chce_LAMP.sh</a></p>"; |
| 107 | +?>' >/var/www/html/index.php |
| 108 | + |
| 109 | +# == Lekki hardening ustawień == |
39 | 110 | # Serwer ma się nie doklejać swojej stopki nigdzie |
40 | 111 | sed -i -e "s/^ServerSignature OS*.*\$/ServerSignature Off/" '/etc/apache2/conf-available/security.conf' |
41 | | - |
42 | | -# Serwer będzie się przedstawiał jako "Apache" - bez wersji softu i OS |
| 112 | +# Serwer będzie się przedstawiał jako "Apache" - bez wersji softu i OS |
43 | 113 | sed -i -e "s/^ServerTokens OS*.*\$/ServerTokens Prod/" '/etc/apache2/conf-available/security.conf' |
44 | 114 |
|
| 115 | +# Restart Apache |
| 116 | +systemctl restart apache2 |
0 commit comments