mirror of
https://github.com/zexry619/auto-install-wp.git
synced 2025-10-03 18:31:16 +08:00
first commit
This commit is contained in:
commit
6f903ebbeb
3 changed files with 337 additions and 0 deletions
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# WordPress Auto Installer for cPanel
|
||||||
|
|
||||||
|
Repository ini berisi dua script Bash untuk mengotomatiskan instalasi WordPress di cPanel menggunakan **wp-cli** dan **uapi**.
|
||||||
|
|
||||||
|
## Daftar Isi
|
||||||
|
- [Deskripsi](#deskripsi)
|
||||||
|
- [Fitur](#fitur)
|
||||||
|
- [Persyaratan](#persyaratan)
|
||||||
|
- [Cara Penggunaan](#cara-penggunaan)
|
||||||
|
- [Catatan](#catatan)
|
||||||
|
|
||||||
|
## Deskripsi
|
||||||
|
Script ini dibuat untuk memudahkan proses instalasi WordPress melalui cPanel. Tersedia dua versi:
|
||||||
|
- **Single Domain**: [wordpress_auto.sh](./wordpress_auto.sh)
|
||||||
|
Menginstall WordPress pada satu domain.
|
||||||
|
- **Multiple Domain**: [wordpress_auto_multi.sh](./wordpress_auto_multi.sh)
|
||||||
|
Menginstall WordPress secara otomatis pada beberapa domain sekaligus.
|
||||||
|
|
||||||
|
## Fitur
|
||||||
|
- Mengambil **DocumentRoot** domain via uapi dan **jq**.
|
||||||
|
- Membuat database, user database, dan mengatur privileges melalui uapi.
|
||||||
|
- Mengunduh WordPress core dengan wp-cli dan membuat file konfigurasi secara otomatis.
|
||||||
|
- Instalasi WordPress lengkap dengan pembuatan admin user (dengan opsi menggunakan kredensial yang sama untuk multiple domain).
|
||||||
|
|
||||||
|
## Persyaratan
|
||||||
|
Pastikan server Anda sudah terinstall:
|
||||||
|
- **uapi** (cPanel API)
|
||||||
|
- **jq**
|
||||||
|
- **wp-cli**
|
||||||
|
- **openssl**
|
||||||
|
- **shuf**
|
||||||
|
|
||||||
|
Pastikan juga file script disimpan dengan format Unix (LF) untuk menghindari error "command not found" karena karakter CRLF.
|
||||||
|
|
||||||
|
## Cara Penggunaan
|
||||||
|
|
||||||
|
### Instalasi Single Domain
|
||||||
|
1. Ubah permission script agar dapat dieksekusi:
|
||||||
|
```bash
|
||||||
|
chmod +x wordpress_auto.sh
|
101
wordpress_auto.sh
Normal file
101
wordpress_auto.sh
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Script Auto Install WordPress dengan wp-cli dan uapi untuk cPanel
|
||||||
|
|
||||||
|
# Tampilkan header
|
||||||
|
echo "=== Auto Install WordPress ==="
|
||||||
|
|
||||||
|
# Input nama domain
|
||||||
|
read -p "Masukkan nama domain (misal: next.zekri.id): " DOMAIN
|
||||||
|
if [ -z "$DOMAIN" ]; then
|
||||||
|
echo "Domain tidak boleh kosong!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Input admin username, password, dan email (opsional)
|
||||||
|
read -p "Masukkan admin username (default: admin): " WP_ADMIN_USER
|
||||||
|
if [ -z "$WP_ADMIN_USER" ]; then
|
||||||
|
WP_ADMIN_USER="admin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin password (default: akan dibuat random): " WP_ADMIN_PASSWORD
|
||||||
|
if [ -z "$WP_ADMIN_PASSWORD" ]; then
|
||||||
|
WP_ADMIN_PASSWORD=$(openssl rand -base64 12)
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin email (default: admin@$DOMAIN): " WP_ADMIN_EMAIL
|
||||||
|
if [ -z "$WP_ADMIN_EMAIL" ]; then
|
||||||
|
WP_ADMIN_EMAIL="admin@$DOMAIN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Dapatkan username cPanel dari direktori home
|
||||||
|
CPANELUSER=$(basename "$HOME")
|
||||||
|
|
||||||
|
# Generate angka random 3/4 digit
|
||||||
|
RANDOM_NUM=$(shuf -i 1000-9999 -n 1)
|
||||||
|
|
||||||
|
# Buat nama database dan username database
|
||||||
|
DB_NAME="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
DB_USER="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
|
||||||
|
# Generate password random untuk database user
|
||||||
|
DB_PASS=$(openssl rand -base64 12)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengambil DocumentRoot untuk domain: $DOMAIN"
|
||||||
|
# Dapatkan DocumentRoot menggunakan uapi dan jq
|
||||||
|
DOCUMENTROOT=$(uapi --output=json DomainInfo domains_data | jq -r --arg domain "$DOMAIN" '
|
||||||
|
.result.data as $data |
|
||||||
|
($data.main_domain | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.addon_domains[] | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.sub_domains[] | select(.domain == $domain) | .documentroot)
|
||||||
|
')
|
||||||
|
|
||||||
|
if [ -z "$DOCUMENTROOT" ]; then
|
||||||
|
echo "DocumentRoot untuk domain $DOMAIN tidak ditemukan."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "DocumentRoot ditemukan: $DOCUMENTROOT"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Membuat database menggunakan uapi
|
||||||
|
echo "Membuat database: $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql create_database name="$DB_NAME"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Membuat user database: $DB_USER"
|
||||||
|
uapi --output=jsonpretty Mysql create_user name="$DB_USER" password="$DB_PASS"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengatur privileges untuk user $DB_USER pada database $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql set_privileges_on_database user="$DB_USER" database="$DB_NAME" privileges="ALL%20PRIVILEGES"
|
||||||
|
|
||||||
|
# Tambahkan jeda agar perubahan database terproses
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengunduh WordPress core..."
|
||||||
|
wp core download --path="$DOCUMENTROOT" --locale=id_ID
|
||||||
|
|
||||||
|
# Pindah ke directory DocumentRoot
|
||||||
|
cd "$DOCUMENTROOT" || { echo "Gagal masuk ke $DOCUMENTROOT"; exit 1; }
|
||||||
|
|
||||||
|
echo "Membuat file konfigurasi wp-config.php..."
|
||||||
|
wp config create --dbname="$DB_NAME" --dbuser="$DB_USER" --dbpass="$DB_PASS" --dbhost=localhost --dbprefix=wp_ --dbcharset=utf8
|
||||||
|
|
||||||
|
echo "Melakukan instalasi WordPress..."
|
||||||
|
wp core install --url="$DOMAIN" --title="WordPress $DOMAIN" --admin_user="$WP_ADMIN_USER" --admin_password="$WP_ADMIN_PASSWORD" --admin_email="$WP_ADMIN_EMAIL"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Instalasi WordPress selesai."
|
||||||
|
echo "---------------------------"
|
||||||
|
echo "Detail Database:"
|
||||||
|
echo " Nama Database : $DB_NAME"
|
||||||
|
echo " User Database : $DB_USER"
|
||||||
|
echo " Password : $DB_PASS"
|
||||||
|
echo ""
|
||||||
|
echo "Detail Admin WordPress:"
|
||||||
|
echo " Username : $WP_ADMIN_USER"
|
||||||
|
echo " Password : $WP_ADMIN_PASSWORD"
|
||||||
|
echo " Email : $WP_ADMIN_EMAIL"
|
||||||
|
echo "---------------------------"
|
196
wordpress_auto_multi.sh
Normal file
196
wordpress_auto_multi.sh
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Script Auto Install WordPress dengan wp-cli dan uapi untuk cPanel (Multiple Domain)
|
||||||
|
|
||||||
|
echo "=== Auto Install WordPress ==="
|
||||||
|
echo ""
|
||||||
|
read -p "Pilih mode instalasi (s: single, m: multiple) [s/m]: " MODE
|
||||||
|
MODE=${MODE:-s}
|
||||||
|
|
||||||
|
if [ "$MODE" == "s" ]; then
|
||||||
|
# --- Instalasi Single Domain ---
|
||||||
|
read -p "Masukkan nama domain (misal: next.zekri.id): " DOMAIN
|
||||||
|
if [ -z "$DOMAIN" ]; then
|
||||||
|
echo "Domain tidak boleh kosong!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin username (default: admin): " WP_ADMIN_USER
|
||||||
|
[ -z "$WP_ADMIN_USER" ] && WP_ADMIN_USER="admin"
|
||||||
|
|
||||||
|
read -p "Masukkan admin password (default: akan dibuat random): " WP_ADMIN_PASSWORD
|
||||||
|
if [ -z "$WP_ADMIN_PASSWORD" ]; then
|
||||||
|
WP_ADMIN_PASSWORD=$(openssl rand -base64 12)
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin email (default: admin@$DOMAIN): " WP_ADMIN_EMAIL
|
||||||
|
[ -z "$WP_ADMIN_EMAIL" ] && WP_ADMIN_EMAIL="admin@$DOMAIN"
|
||||||
|
|
||||||
|
CPANELUSER=$(basename "$HOME")
|
||||||
|
RANDOM_NUM=$(shuf -i 1000-9999 -n 1)
|
||||||
|
DB_NAME="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
DB_USER="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
DB_PASS=$(openssl rand -base64 12)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengambil DocumentRoot untuk domain: $DOMAIN"
|
||||||
|
DOCUMENTROOT=$(uapi --output=json DomainInfo domains_data | jq -r --arg domain "$DOMAIN" '
|
||||||
|
.result.data as $data |
|
||||||
|
($data.main_domain | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.addon_domains[] | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.sub_domains[] | select(.domain == $domain) | .documentroot)
|
||||||
|
')
|
||||||
|
if [ -z "$DOCUMENTROOT" ]; then
|
||||||
|
echo "DocumentRoot untuk domain $DOMAIN tidak ditemukan."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "DocumentRoot ditemukan: $DOCUMENTROOT"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Membuat database: $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql create_database name="$DB_NAME"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Membuat user database: $DB_USER"
|
||||||
|
uapi --output=jsonpretty Mysql create_user name="$DB_USER" password="$DB_PASS"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengatur privileges untuk user $DB_USER pada database $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql set_privileges_on_database user="$DB_USER" database="$DB_NAME" privileges="ALL%20PRIVILEGES"
|
||||||
|
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengunduh WordPress core..."
|
||||||
|
wp core download --path="$DOCUMENTROOT" --locale=id_ID
|
||||||
|
|
||||||
|
cd "$DOCUMENTROOT" || { echo "Gagal masuk ke $DOCUMENTROOT"; exit 1; }
|
||||||
|
|
||||||
|
echo "Membuat file konfigurasi wp-config.php..."
|
||||||
|
wp config create --dbname="$DB_NAME" --dbuser="$DB_USER" --dbpass="$DB_PASS" --dbhost=localhost --dbprefix=wp_ --dbcharset=utf8
|
||||||
|
|
||||||
|
echo "Melakukan instalasi WordPress..."
|
||||||
|
wp core install --url="$DOMAIN" --title="WordPress $DOMAIN" --admin_user="$WP_ADMIN_USER" --admin_password="$WP_ADMIN_PASSWORD" --admin_email="$WP_ADMIN_EMAIL"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Instalasi WordPress selesai."
|
||||||
|
echo "---------------------------"
|
||||||
|
echo "Detail Database:"
|
||||||
|
echo " Nama Database : $DB_NAME"
|
||||||
|
echo " User Database : $DB_USER"
|
||||||
|
echo " Password : $DB_PASS"
|
||||||
|
echo ""
|
||||||
|
echo "Detail Admin WordPress:"
|
||||||
|
echo " Username : $WP_ADMIN_USER"
|
||||||
|
echo " Password : $WP_ADMIN_PASSWORD"
|
||||||
|
echo " Email : $WP_ADMIN_EMAIL"
|
||||||
|
echo "---------------------------"
|
||||||
|
|
||||||
|
else
|
||||||
|
# --- Instalasi Multiple Domain ---
|
||||||
|
read -p "Masukkan daftar domain (pisahkan dengan spasi): " DOMAIN_LIST
|
||||||
|
if [ -z "$DOMAIN_LIST" ]; then
|
||||||
|
echo "Daftar domain tidak boleh kosong!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Gunakan admin credentials yang sama untuk semua domain? (y/n, default: y): " SAME_CREDS
|
||||||
|
SAME_CREDS=${SAME_CREDS:-y}
|
||||||
|
|
||||||
|
if [ "$SAME_CREDS" == "y" ]; then
|
||||||
|
read -p "Masukkan admin username (default: admin): " WP_ADMIN_USER
|
||||||
|
[ -z "$WP_ADMIN_USER" ] && WP_ADMIN_USER="admin"
|
||||||
|
|
||||||
|
read -p "Masukkan admin password (default: akan dibuat random): " WP_ADMIN_PASSWORD
|
||||||
|
if [ -z "$WP_ADMIN_PASSWORD" ]; then
|
||||||
|
WP_ADMIN_PASSWORD=$(openssl rand -base64 12)
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin email (default: akan disesuaikan per domain): " WP_ADMIN_EMAIL
|
||||||
|
# Jika kosong, nantinya akan diset default admin@<domain> tiap domain
|
||||||
|
fi
|
||||||
|
|
||||||
|
CPANELUSER=$(basename "$HOME")
|
||||||
|
|
||||||
|
for DOMAIN in $DOMAIN_LIST; do
|
||||||
|
echo "========================================"
|
||||||
|
echo "Memproses domain: $DOMAIN"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
if [ "$SAME_CREDS" != "y" ]; then
|
||||||
|
read -p "Masukkan admin username untuk $DOMAIN (default: admin): " WP_ADMIN_USER
|
||||||
|
[ -z "$WP_ADMIN_USER" ] && WP_ADMIN_USER="admin"
|
||||||
|
|
||||||
|
read -p "Masukkan admin password untuk $DOMAIN (default: akan dibuat random): " WP_ADMIN_PASSWORD
|
||||||
|
if [ -z "$WP_ADMIN_PASSWORD" ]; then
|
||||||
|
WP_ADMIN_PASSWORD=$(openssl rand -base64 12)
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "Masukkan admin email untuk $DOMAIN (default: admin@$DOMAIN): " WP_ADMIN_EMAIL
|
||||||
|
[ -z "$WP_ADMIN_EMAIL" ] && WP_ADMIN_EMAIL="admin@$DOMAIN"
|
||||||
|
else
|
||||||
|
[ -z "$WP_ADMIN_EMAIL" ] && WP_ADMIN_EMAIL="admin@$DOMAIN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengambil DocumentRoot untuk domain: $DOMAIN"
|
||||||
|
DOCUMENTROOT=$(uapi --output=json DomainInfo domains_data | jq -r --arg domain "$DOMAIN" '
|
||||||
|
.result.data as $data |
|
||||||
|
($data.main_domain | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.addon_domains[] | select(.domain == $domain) | .documentroot) //
|
||||||
|
($data.sub_domains[] | select(.domain == $domain) | .documentroot)
|
||||||
|
')
|
||||||
|
if [ -z "$DOCUMENTROOT" ]; then
|
||||||
|
echo "DocumentRoot untuk domain $DOMAIN tidak ditemukan, lanjut ke domain berikutnya."
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "DocumentRoot ditemukan: $DOCUMENTROOT"
|
||||||
|
|
||||||
|
RANDOM_NUM=$(shuf -i 1000-9999 -n 1)
|
||||||
|
DB_NAME="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
DB_USER="${CPANELUSER}_wp${RANDOM_NUM}"
|
||||||
|
DB_PASS=$(openssl rand -base64 12)
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Membuat database: $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql create_database name="$DB_NAME"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Membuat user database: $DB_USER"
|
||||||
|
uapi --output=jsonpretty Mysql create_user name="$DB_USER" password="$DB_PASS"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengatur privileges untuk user $DB_USER pada database $DB_NAME"
|
||||||
|
uapi --output=jsonpretty Mysql set_privileges_on_database user="$DB_USER" database="$DB_NAME" privileges="ALL%20PRIVILEGES"
|
||||||
|
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Mengunduh WordPress core..."
|
||||||
|
wp core download --path="$DOCUMENTROOT" --locale=id_ID
|
||||||
|
|
||||||
|
cd "$DOCUMENTROOT" || { echo "Gagal masuk ke $DOCUMENTROOT, lanjut ke domain berikutnya."; continue; }
|
||||||
|
|
||||||
|
echo "Membuat file konfigurasi wp-config.php..."
|
||||||
|
wp config create --dbname="$DB_NAME" --dbuser="$DB_USER" --dbpass="$DB_PASS" --dbhost=localhost --dbprefix=wp_ --dbcharset=utf8
|
||||||
|
|
||||||
|
echo "Melakukan instalasi WordPress..."
|
||||||
|
wp core install --url="$DOMAIN" --title="WordPress $DOMAIN" --admin_user="$WP_ADMIN_USER" --admin_password="$WP_ADMIN_PASSWORD" --admin_email="$WP_ADMIN_EMAIL"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "---------------------------"
|
||||||
|
echo "Instalasi untuk $DOMAIN selesai."
|
||||||
|
echo "Detail Database:"
|
||||||
|
echo " Nama Database : $DB_NAME"
|
||||||
|
echo " User Database : $DB_USER"
|
||||||
|
echo " Password : $DB_PASS"
|
||||||
|
echo "Detail Admin WordPress:"
|
||||||
|
echo " Username : $WP_ADMIN_USER"
|
||||||
|
echo " Password : $WP_ADMIN_PASSWORD"
|
||||||
|
echo " Email : $WP_ADMIN_EMAIL"
|
||||||
|
echo "---------------------------"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd "$HOME" || exit 1
|
||||||
|
done
|
||||||
|
echo "Semua domain telah diproses."
|
||||||
|
fi
|
Loading…
Add table
Add a link
Reference in a new issue