Apache + PHP 7.4 + MySQL 8 + phpMyAdmin + php-SSH2

17 saat önce MrStipFan tarafından WEB: Komut Dosyaları, PHP Komut Dosyaları, PHP - Diğer kategorisinde yayınlandı.

VDS + VPS Sunucularınızda nasıl "Apache ile Web Server + MySQL + phpMyAdmin + SSH2" Kurulumu

İçerik

Ubuntu 22.04 LAMP (Apache + PHP 7.4 + MySQL 8) + phpMyAdmin + php-ssh2 Kurulum Scripti

Konu Tanımı: 
VDS + VPS Sunucularınızda nasıl "Apache + PHP 7.4 + MySQL 8 + phpMyAdmin + php-ssh2" Kurulumu yapılacağını anlatıyorum.

Paket Oluşturucusu:

Dosya Boyutu: 7,80KB
Dosya Derleyicisi: CSArea.org
Dosya Güncelleme: Admin
Dosya Sahibi: Admin
 

🌐Dosya Bağlantısı:

Demo Testini ve Dosya Bağlantısına ulaşmak için üye girişi yapmış olmanız gerekmektedir.

🌐Gereksinimler:

VDS + VPS Sunucu uBuntu 22.04 ve SSH Erişimi olması yeterlidir.

EK ÖZELLİK: (HDD: 30gb - RAM: 2gb - CPU: 2cpu) Apache için iş Görür "Eğer Büyük Projelerde KULLANILMAYACAK İSE"

❤️Paket İçeriği:

WebKur.SH > Scripts Dosyası

🧸Kurulum ve Ayarlar:

Scripts Çalıştırma Yetki Kodu:
chmod -X webkur.sh
veya
chmod 777 webkur.sh

Kurulum VDS Ubuntu 22.04 TLS üzeri Yapılacaktır!
  1. Aşağıdaki bağlantıdan WebKur.sh Scripts dosyalarını indirin veya 2.Seçenekte verilen kodu webkur.sh olarak kendiniz kayıt edebilirsiniz!
  2. #!/usr/bin/env bash
    # Ubuntu 22.04 LAMP (Apache + PHP 7.4 + MySQL 8) + phpMyAdmin + php-ssh2 Kurulum Scripti
    # CSArea.org - Onur MASALCI (MrStipFan)
    # Test edilen: Ubuntu 22.04 Jammy (amd64)
    # Tekrar çalıştırılabilir, güvenli varsayılanlar içerir.
    
    set -euo pipefail
    
    ### ====== Kullanıcıya özel AYARLAR (ENV ile override edilebilir) ======
    SERVER_NAME="${SERVER_NAME:-localhost}"
    TIMEZONE="${TIMEZONE:-Europe/Istanbul}"
    WEB_ROOT="${WEB_ROOT:-/var/www/html}"
    PHPMYADMIN_DIR="${PHPMYADMIN_DIR:-$WEB_ROOT/phpmyadmin}"
    
    # Parolaları otomatik üret (ENV ile verilen varsa onları kullan)
    MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$(openssl rand -base64 18 | tr -d '=+/.' | cut -c1-20)}"
    PHPMYADMIN_BLOWFISH_SECRET="${PHPMYADMIN_BLOWFISH_SECRET:-$(openssl rand -base64 32 | tr -d '=+/' | cut -c1-32)}"
    
    ### ====== Ön kontroller ======
    if [[ $EUID -ne 0 ]]; then
      echo "CSArea.org - Bu script root olarak çalıştırılmalıdır. (sudo bash ...)" >&2
      exit 1
    fi
    
    if ! grep -qi "22.04" /etc/os-release; then
      echo "CSArea.org Uyarı: Bu script Ubuntu 22.04 için hazırlandı. Devam ediliyor..." >&2
    fi
    
    export DEBIAN_FRONTEND=noninteractive
    
    ### ====== Paket listesi güncelle ======
    apt-get update -y
    apt-get install -y software-properties-common curl ca-certificates lsb-release apt-transport-https gnupg
    
    ### ====== Apache kurulum ======
    apt-get install -y apache2
    a2enmod rewrite headers ssl
    # ServerName uyarısını sustur
    echo "ServerName ${SERVER_NAME}" >/etc/apache2/conf-available/servername.conf || true
    a2enconf servername
    
    ### ====== PHP 7.4 (Ondrej PPA) ======
    # PPA yoksa ekle
    if ! apt-cache policy | grep -q "ppa.launchpadcontent.net/ondrej/php"; then
      add-apt-repository -y ppa:ondrej/php
      apt-get update -y
    fi
    
    # PHP 7.4 ve yaygın eklentiler
    apt-get install -y \
      libapache2-mod-php7.4 php7.4 php7.4-cli php7.4-common \
      php7.4-mysql php7.4-xml php7.4-curl php7.4-zip php7.4-gd php7.4-mbstring \
      php7.4-bcmath php7.4-intl php7.4-readline
    
    # SSH2 eklentisi (önce paket)
    apt-get install -y php-ssh2 || true
    
    # Paket bulunmazsa PECL fallback
    if ! php -m | grep -qi '^ssh2$'; then
      echo "php-ssh2 paketi bulunamadı, PECL ile kuruluyor..."
      apt-get install -y php7.4-dev php-pear libssh2-1-dev build-essential
      yes '' | pecl install ssh2-1.4.1
      echo "extension=ssh2.so" > /etc/php/7.4/mods-available/ssh2.ini
      phpenmod -v 7.4 ssh2
    fi
    
    # PHP ini ayarları (CLI ve Apache SAPI)
    for ini in /etc/php/7.4/apache2/php.ini /etc/php/7.4/cli/php.ini; do
      [[ -f "$ini" ]] || continue
      sed -i "s@^;*date.timezone =.*@date.timezone = ${TIMEZONE}@g" "$ini"
      sed -i "s@^;*memory_limit =.*@memory_limit = 512M@g" "$ini"
      sed -i "s@^;*upload_max_filesize =.*@upload_max_filesize = 128M@g" "$ini"
      sed -i "s@^;*post_max_size =.*@post_max_size = 128M@g" "$ini"
      sed -i "s@^;*max_execution_time =.*@max_execution_time = 120@g" "$ini"
    done
    
    ### ====== MySQL Server (8.x) ======
    if ! dpkg -s mysql-server >/dev/null 2>&1; then
      apt-get install -y mysql-server
    fi
    systemctl enable --now mysql
    
    # Root erişimini parola ile ayarla (idempotent)
    # Ubuntu varsayılanı 'auth_socket' olabilir, aşağıdaki komutlar bunu düzeltiyor.
    MYSQL_TMP_SQL=$(mktemp)
    cat >"$MYSQL_TMP_SQL" <<SQL
    -- Root kullanıcıyı parola ile erişecek şekilde ayarla
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}';
    FLUSH PRIVILEGES;
    SQL
    # Root soket ile giriş çoğunlukla parola istemez; hata alırsa yoksay.
    mysql --protocol=socket -u root < "$MYSQL_TMP_SQL" || true
    rm -f "$MYSQL_TMP_SQL"
    
    ### ====== phpMyAdmin (latest tarball) ======
    # Paket sürümleri sık sık dependency problemi çıkardığı için resmi tarball kullanıyoruz.
    if [[ ! -d "$PHPMYADMIN_DIR" ]]; then
      TMPDIR=$(mktemp -d)
      cd "$TMPDIR"
      # Resmi "latest" arşiv (all-languages)
      curl -fsSL -o pma.tar.gz https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
      tar -xzf pma.tar.gz
      PMA_SRC_DIR=$(find . -maxdepth 1 -type d -name "phpMyAdmin-*" | head -n1)
      mkdir -p "$(dirname "$PHPMYADMIN_DIR")"
      mv "$PMA_SRC_DIR" "$PHPMYADMIN_DIR"
      cd "$PHPMYADMIN_DIR"
    
      # config.inc.php oluştur
      cat > "$PHPMYADMIN_DIR/config.inc.php" <<'CFG'
    <?php
    /* phpMyAdmin basic config (auto-generated by CSArea.org installer script) */
    declare(strict_types=1);
    $cfg = [];
    $cfg['blowfish_secret'] = '__BLOWFISH_SECRET__';
    $cfg['TempDir'] = __DIR__ . '/tmp';
    $cfg['UploadDir'] = __DIR__ . '/upload';
    $cfg['SaveDir']   = __DIR__ . '/save';
    $cfg['Servers'] = [
      1 => [
        'auth_type' => 'cookie',
        'host' => 'localhost',
        'compress' => false,
        'AllowNoPassword' => false,
        'port' => 3306,
        'ssl' => false,
      ],
    ];
    CFG
    
      mkdir -p "$PHPMYADMIN_DIR/tmp" "$PHPMYADMIN_DIR/upload" "$PHPMYADMIN_DIR/save"
      chown -R www-data:www-data "$PHPMYADMIN_DIR"
      find "$PHPMYADMIN_DIR" -type d -exec chmod 755 {} \;
      find "$PHPMYADMIN_DIR" -type f -exec chmod 644 {} \;
    
      # Blowfish secret yerleştir
      sed -i "s@__BLOWFISH_SECRET__@${PHPMYADMIN_BLOWFISH_SECRET}@g" "$PHPMYADMIN_DIR/config.inc.php"
    fi
    
    ### ====== Apache vhost ve izinler ======
    # Varsayılan site klasörü hazırlanır
    mkdir -p "$WEB_ROOT"
    cat > "$WEB_ROOT/index.php" <<'PHP'
    <?php
    echo "<h2>CSArea.org - Apache + PHP 7.4</h2>";
    echo "<p>PHP Version: " . phpversion() . "</p>";
    echo "<p>Server: " . htmlspecialchars($_SERVER['SERVER_SOFTWARE'] ?? '') . "</p>";
    echo "<p><a href='phpinfo.php'>phpinfo()</a></p>";
    PHP
    
    cat > "$WEB_ROOT/phpinfo.php" <<'PHP'
    <?php phpinfo();
    PHP
    
    # Apache DocumentRoot zaten /var/www/html ise vhost'u küçük dokunuşlarla güncelle
    VHOST="/etc/apache2/sites-available/000-default.conf"
    if ! grep -q "ServerName ${SERVER_NAME}" "$VHOST"; then
      sed -i "1i ServerName ${SERVER_NAME}" "$VHOST"
    fi
    
    # .htaccess için AllowOverride ayarı
    APACHE_DIRCONF="/etc/apache2/apache2.conf"
    if ! grep -q "^<Directory ${WEB_ROOT}>" "$APACHE_DIRCONF"; then
      cat >> "$APACHE_DIRCONF" <<DIR
    
    <Directory ${WEB_ROOT}>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    DIR
    fi
    
    # phpMyAdmin'e kolay erişim linki
    if [[ -d "$PHPMYADMIN_DIR" && ! -e "$WEB_ROOT/phpmyadmin" ]]; then
      ln -s "$PHPMYADMIN_DIR" "$WEB_ROOT/phpmyadmin"
    fi
    
    ### ====== UFW (isteğe bağlı güvenlik duvarı) ======
    if command -v ufw >/dev/null 2>&1; then
      ufw allow OpenSSH || true
      ufw allow 'Apache Full' || true
    else
      apt-get install -y ufw
      ufw allow OpenSSH || true
      ufw allow 'Apache Full' || true
      # Otomatik enable etmek istemezsen yoruma al
      echo "y" | ufw enable || true
    fi
    
    ### ====== Servisleri yeniden başlat ======
    systemctl reload apache2 || systemctl restart apache2
    systemctl restart mysql
    php -v
    apache2 -v || true
    mysql --version || true
    
    ### ====== Özet ======
    cat <<INFO
    
    ==========================================================
      KURULUM TAMAMLANDI
    ==========================================================
    Sunucu Adı (ServerName):  ${SERVER_NAME}
    Web Kök Dizini (WEB_ROOT): ${WEB_ROOT}
    phpMyAdmin Dizini:        ${PHPMYADMIN_DIR}  (Ayrıca: ${WEB_ROOT}/phpmyadmin)
    PHP Sürümü:               $(php -r 'echo PHP_VERSION;')
    MySQL Sürümü:             $(mysql --version 2>/dev/null | awk '{print $5}' | tr -d ',')
    Saat Dilimi:              ${TIMEZONE}
    
    Coder by:	CSArea.org - Onur MASALCI (MrStipFan)
    www.CSArea.org - info@csarea.org
    
    MySQL root parolası:      ${MYSQL_ROOT_PASSWORD}
    
    Önemli dosyalar:
      - ${WEB_ROOT}/index.php
      - ${WEB_ROOT}/phpinfo.php
      - ${PHPMYADMIN_DIR}/config.inc.php
    
    Notlar:
      • phpMyAdmin -> ${WEB_ROOT}/phpmyadmin (symlink)
      • PHP-SSH2 eklentisi yüklendi: $(php -m | grep -qi '^ssh2$' && echo "EVET" || echo "HAYIR")
      • .htaccess için AllowOverride aktif.
      • UFW: OpenSSH ve Apache Full açık.
    
    Güvenlik İpuçları:
      • phpMyAdmin yolunu gizlemek için ${WEB_ROOT}/phpmyadmin symlink'ini farklı bir adda oluşturabilirsiniz.
      • MySQL'de ilave kullanıcılar oluşturun ve root ile uygulama bağlatmayın.
    ==========================================================
    INFO
    
  3. Eğer PHP Sürüm Güncellemesi Yapmak isterseniz Script içindeki bu alanları değiştirmeniz gerekiyor:
    ### ====== PHP 7.4 (Ondrej PPA) ======
    # PPA yoksa ekle
    if ! apt-cache policy | grep -q "ppa.launchpadcontent.net/ondrej/php"; then
      add-apt-repository -y ppa:ondrej/php
      apt-get update -y
    fi
    
    # PHP 7.4 ve yaygın eklentiler
    apt-get install -y \
      libapache2-mod-php7.4 php7.4 php7.4-cli php7.4-common \
      php7.4-mysql php7.4-xml php7.4-curl php7.4-zip php7.4-gd php7.4-mbstring \
      php7.4-bcmath php7.4-intl php7.4-readline
    
    # SSH2 eklentisi (önce paket)
    apt-get install -y php-ssh2 || true
    
    # Paket bulunmazsa PECL fallback
    if ! php -m | grep -qi '^ssh2$'; then
      echo "php-ssh2 paketi bulunamadı, PECL ile kuruluyor..."
      apt-get install -y php7.4-dev php-pear libssh2-1-dev build-essential
      yes '' | pecl install ssh2-1.4.1
      echo "extension=ssh2.so" > /etc/php/7.4/mods-available/ssh2.ini
      phpenmod -v 7.4 ssh2
    fi

    bu alanları bu örnekteki gibi değiştirmeniz gerek!

    ### ====== PHP 8.4 (Ondrej PPA) ======
    # PPA yoksa ekle
    if ! apt-cache policy | grep -q "ppa.launchpadcontent.net/ondrej/php"; then
      add-apt-repository -y ppa:ondrej/php
      apt-get update -y
    fi
    
    # PHP 8.4 ve yaygın eklentiler
    apt-get install -y \
      libapache2-mod-php8.4 php8.4 php8.4-cli php8.4-common \
      php8.4-mysql php8.4-xml php8.4-curl php8.4-zip php8.4-gd php8.4-mbstring \
      php8.4-bcmath php8.4-intl php8.4-readline
    
    # SSH2 eklentisi (önce paket)
    apt-get install -y php-ssh2 || true
    
    # Paket bulunmazsa PECL fallback
    if ! php -m | grep -qi '^ssh2$'; then
      echo "php-ssh2 paketi bulunamadı, PECL ile kuruluyor..."
      apt-get install -y php8.4-dev php-pear libssh2-1-dev build-essential
      yes '' | pecl install ssh2-1.4.1
      echo "extension=ssh2.so" > /etc/php/8.4/mods-available/ssh2.ini
      phpenmod -v 8.4 ssh2
    fi

📸 Scripts Görselleri:

  • Bu konuya henüz kimse cevap vermedi. İlk cevaplayan siz olun!
GU