Ayrı cPanel hesabı
Müşteriler, bağımsız kaynak limitleri ve ayrı FTP/e-posta yönetimi için uygundur. Lisans hesap sayısını etkileyebilir.
Bu rehber; her domain için ayrı cPanel hesabı açma ile tek hesap altında ayrı document root kullanan addon domain modelini karşılaştırır. Hazır Bash betiği domain doğrulama, benzersiz kullanıcı üretme, CSV sonuç kaydı ve tekrar çalıştırılabilir hata günlüğü içerir.
whmapi1 createacct domain=ornek.com username=d123456789ab plan=domainpaket
/usr/local/cpanel/bin/cpapi2 --user=sitehesabi AddonDomain addaddondomain newdomain=ornek.com
/scripts/rebuildhttpdconf && /scripts/restartsrv_httpd
Toplu otomasyon yanlış mimariyi hızlandırmamalıdır. Müşteri izolasyonu, kaynak limiti, uygulama kökü, mail ve DNS sahipliği kararlarını önce verin.
Müşteriler, bağımsız kaynak limitleri ve ayrı FTP/e-posta yönetimi için uygundur. Lisans hesap sayısını etkileyebilir.
Tüm domainler size aitse ve ayrı klasör yeterliyse daha az yönetim yükü oluşturur.
Tüm domainlerin aynı içeriği açması gerekiyorsa kopya site üretmek yerine yönlendirme veya alias tercih edilir.
Nameserver değiştirme, A kaydı yönlendirme ve Cloudflare toplu işlemleri domain ekleme sürecinden ayrı planlanmalıdır.
https://, www, yol, boş satır ve tekrarları kaldırın. IDN domainleri Punycode biçimine dönüştürün.
sort -u domainler.txt | sed '/^[[:space:]]*$/d' > domainler-temiz.txt MOD=hesap her domain için yeni cPanel hesabı, MOD=addon ise hedef kullanıcı altında ayrı klasör oluşturur.
MOD="addon" Paket, kullanıcı limiti, DNS rolü ve API çıktısını küçük örnekle doğrulayın.
head -n 2 /root/domainler.txt > /root/domainler-test.txt Dosya izinlerini 700 yapın ve sonuç dosyalarını yalnız root tarafından okunabilir bırakın.
chmod 700 /root/cpanel-toplu-domain.sh
/root/cpanel-toplu-domain.sh Başarısız domainleri ayrı listeye çıkarıp yalnız onları yeniden çalıştırın.
column -s, -t < /root/cpanel-domain-sonuclari.csv
cat /root/cpanel-domain-hatalari.log Önce DNS çözümlemesini doğrulayın, ardından AutoSSL kuyruğunu küçük gruplar halinde çalıştırın.
dig +short ornek.com A
/usr/local/cpanel/bin/autossl_check --user=sitehesabi Hesap veya addon modunda çalışır; sonucu CSV'ye, hatayı ayrı loga yazar.
#!/usr/bin/env bash
set -Eeuo pipefail
MOD="addon"
DOMAIN_DOSYASI="/root/domainler.txt"
CPANEL_KULLANICI="sitehesabi"
PLAN="domainpaket"
ILETISIM="[email protected]"
SONUC="/root/cpanel-domain-sonuclari.csv"
HATA="/root/cpanel-domain-hatalari.log"
[[ "$EUID" -eq 0 ]] || { echo "root gerekli"; exit 1; }
[[ -f "$DOMAIN_DOSYASI" ]] || { echo "domain listesi bulunamadi"; exit 1; }
printf '"domain","mod","durum","kullanici","sifre"\n' > "$SONUC"
: > "$HATA"
chmod 600 "$SONUC" "$HATA"
while IFS= read -r SATIR || [[ -n "$SATIR" ]]; do
DOMAIN="$(printf '%s' "$SATIR" | tr -d '\r' | tr '[:upper:]' '[:lower:]' | sed -E 's#^[[:space:]]+##;s#[[:space:]]+$##;s#^https?://##;s#^www\.##;s#/.*$##')"
[[ -z "$DOMAIN" ]] && continue
[[ "$DOMAIN" == \#* ]] && continue
if [[ ! "$DOMAIN" =~ ^[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$ ]]; then
printf '"%s","%s","gecersiz","",""\n' "$DOMAIN" "$MOD" >> "$SONUC"
continue
fi
HASH="$(printf '%s' "$DOMAIN" | sha256sum | cut -c1-12)"
KULLANICI="d${HASH}"
ALTALAN="eka${HASH}"
SIFRE="Eka!$(openssl rand -hex 12)A9"
if [[ "$MOD" == "hesap" ]]; then
CIKTI="$(whmapi1 --output=json createacct domain="$DOMAIN" username="$KULLANICI" password="$SIFRE" plan="$PLAN" contactemail="$ILETISIM" 2>&1 || true)"
if grep -Eq '"result"[[:space:]]*:[[:space:]]*1' <<< "$CIKTI"; then
printf '"%s","hesap","basarili","%s","%s"\n' "$DOMAIN" "$KULLANICI" "$SIFRE" >> "$SONUC"
else
printf '%s | %s\n' "$DOMAIN" "$CIKTI" >> "$HATA"
printf '"%s","hesap","hatali","%s",""\n' "$DOMAIN" "$KULLANICI" >> "$SONUC"
fi
else
KLASOR="domains/${DOMAIN}/public_html"
CIKTI="$(/usr/local/cpanel/bin/cpapi2 --user="$CPANEL_KULLANICI" --output=jsonpretty AddonDomain addaddondomain dir="$KLASOR" newdomain="$DOMAIN" subdomain="$ALTALAN" 2>&1 || true)"
if grep -Eq '"result"[[:space:]]*:[[:space:]]*1' <<< "$CIKTI"; then
printf '"%s","addon","basarili","%s",""\n' "$DOMAIN" "$CPANEL_KULLANICI" >> "$SONUC"
else
printf '%s | %s\n' "$DOMAIN" "$CIKTI" >> "$HATA"
printf '"%s","addon","hatali","%s",""\n' "$DOMAIN" "$CPANEL_KULLANICI" >> "$SONUC"
fi
fi
done < "$DOMAIN_DOSYASI"
echo "Tamamlandi: $SONUC"
echo "Hatalar: $HATA"
API araçları, sürüm ve hesap limitlerini kontrol edin.
whmapi1 version
/usr/local/cpanel/bin/cpapi2 --help | head
whmapi1 acctcounts
Hedef cPanel hesabındaki domain envanterini UAPI ile görüntüleyin.
uapi --user=sitehesabi DomainInfo list_domains
Gerekirse Apache yapılandırmasını yeniden üretip kontrollü yeniden başlatın.
/scripts/rebuildhttpdconf
/scripts/restartsrv_httpd
cPanel'in desteklediği temel üretim ailesidir. CloudLinux kullanılıyorsa cpapi2 için tam yolu kullanın ve LVE/domain limitlerini ayrıca kontrol edin.
cat /etc/os-releasecloudlinux-summary get-licenses 2>/dev/null || truelveinfo --period=1h 2>/dev/null | headKurulu cPanel sürümünüzün işletim sistemi desteğini doğrulayın; servis adları ve paket yönetimi dağıtım ailesine göre farklı olabilir.
cat /etc/os-releasewhmapi1 versionsystemctl status cpanel --no-pagerDNS kümesi varsa zone senkronizasyonunu ve cluster rolünü işlemden önce test edin.
whmapi1 listdnszones | head/scripts/dnscluster syncallwhmapi1 get_nameserver_configKullanıcı adı çakışması, paket adı, hesap limiti veya domainin sunucuda zaten bulunması nedeniyle oluşabilir.
Domain başka hesapta, DNS zone olarak veya eski userdata kaydında bulunabilir.
Komut root dışında çalıştırılmış, API özelliği kapalı veya hesap yetkisi yetersiz olabilir.
Remote domain kontrolü veya DNS çözümlemesi domainin başka IP'ye yöneldiğini gösterebilir.
A/AAAA kaydı, CAA, proxy veya HTTP doğrulama yolu yanlış olabilir.
Aramayla eşleşen hata bulunamadı.
Tüm domainler aynı sahipteyse ve uygulama izolasyonu gerekmiyorsa uygulanabilir. Farklı müşteriler, ayrı kaynak limitleri veya ayrı güvenlik sınırları varsa ayrı hesap daha doğrudur.
cPanel belgeleri API 2'nin deprecated olduğunu belirtse de AddonDomain::addaddondomain için eşdeğer UAPI fonksiyonu olmadığını açıkça bildirir. Bu nedenle sürümünüzde test edilerek kullanılmalıdır.
DNS kayıtları sunucuya ulaştığında AutoSSL kullanılabilir. Yüzlerce domain için DNS yayılımı kontrol edilmeden aynı anda doğrulama başlatmak önerilmez.
Panel ve API işlemlerinde alan adını Punycode biçiminde kullanın; kullanıcıya gösterilen Unicode biçimini ayrıca saklayabilirsiniz.
Evet. Sonuç CSV'sindeki başarılı kayıtları listeden çıkarıp yalnız başarısız domainlerle tekrar çalıştırın. Betiğe mevcut-domain kontrolü eklemek de idempotent kullanım sağlar.
Hayır. Teknik SEO, özgün içerik, doğru yapılandırılmış veri ve iyi iç bağlantı görünürlüğü destekler; fakat hiçbir sayfa için sıralama garantisi verilemez.
Panel seçimi, DNS, SSL, web sunucusu, güvenlik, yedekleme ve doğrulama adımlarını sunucunuzun gerçek yapısına göre uyguluyoruz.