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