- Mesaj
- 246
- Çözümler
- 4
- Beğeni
- 228
- Puan
- 765
- Ticaret Puanı
- 1
Bu script, FreeBSD üzerinde Metin2 sunucusu kurulumunu kolaylaştırmak ve gerekli tüm bileşenleri otomatik şekilde hazırlamak için geliştirilmiştir. FreeBSD’ye yeni başlayanlar veya hızlı bir kurulum isteyenler için pratik ve sorunsuz bir çözümdür.
Freebsd 13 ve sürümleri için uygundur.
İndirme linki ;
Freebsd 13 ve sürümleri için uygundur.
İndirme linki ;
Linkleri görebilmek için
giriş yap veya kayıt ol.
Bash:
#!/bin/sh
ok() { echo "OK: $1"; }
err() { echo "HATA: $1"; }
warn() { echo "UYARI: $1"; }
info() { echo "BILGI: $1"; }
MYSQL_CLIENT_URL="http://45.155.159.254/FreeBSD:12:amd64/quarterly/All/mysql56-client-5.6.51.pkg"
MYSQL_SERVER_URL="http://45.155.159.254/FreeBSD:12:amd64/quarterly/All/mysql56-server-5.6.51.pkg"
GCC9_URL="http://45.155.159.254/FreeBSD:12:amd64/quarterly/All/gcc9-9.4.0_1.pkg"
MYSQL_CLIENT_PKG="mysql56-client-5.6.51.pkg"
MYSQL_SERVER_PKG="mysql56-server-5.6.51.pkg"
GCC9_PKG="gcc9-9.4.0_1.pkg"
MYSQL_BIN="/usr/local/bin/mysql"
MYSQLADMIN_BIN="/usr/local/bin/mysqladmin"
MYSQL_INSTALL_DB="/usr/local/bin/mysql_install_db"
pause() {
echo -n "Devam etmek icin ENTER tusuna bas..."
read _
}
mysql_installed() {
pkg info | grep -q '^mysql56-server-' && return 0
return 1
}
gcc_installed() {
pkg info | grep -q '^gcc9-' && return 0
return 1
}
download_pkg() {
URL="$1"
OUT="$2"
if [ -f "$OUT" ]; then
ok "$OUT zaten mevcut."
return 0
fi
info "$OUT indiriliyor..."
fetch -o "$OUT" "$URL"
if [ $? -ne 0 ]; then
err "$OUT indirilemedi."
return 1
fi
ok "$OUT indirildi."
return 0
}
ensure_mycnf() {
mkdir -p /usr/local/etc/mysql
if [ ! -f /usr/local/etc/mysql/my.cnf ]; then
info "my.cnf dosyasi olusturuluyor..."
cat > /usr/local/etc/mysql/my.cnf <<EOF
[mysqld]
datadir=/var/db/mysql
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
EOF
ok "my.cnf hazir."
fi
}
init_mysql_datadir() {
if [ -d /var/db/mysql/mysql ]; then
ok "MySQL veri klasoru zaten hazir."
return 0
fi
rm -rf /var/db/mysql
mkdir -p /var/db/mysql
chown -R mysql:mysql /var/db/mysql
info "mysql_install_db calistiriliyor..."
"$MYSQL_INSTALL_DB" --basedir=/usr/local --datadir=/var/db/mysql --user=mysql
if [ $? -ne 0 ]; then
err "mysql_install_db hatasi!"
return 1
fi
ok "MySQL veri klasoru olusturuldu."
}
start_mysql_service() {
info "MySQL servisi baslatiliyor..."
service mysql-server start
if [ $? -ne 0 ]; then
err "MySQL servisi baslatilamadi!"
return 1
fi
ok "MySQL servisi baslatildi."
}
set_mysql_root_auto123() {
PASS="123"
info "MySQL root sifresi 123 olarak ayarlaniyor..."
if [ -x "$MYSQLADMIN_BIN" ]; then
"$MYSQLADMIN_BIN" -u root password "$PASS" >/dev/null 2>&1
fi
if [ -x "$MYSQL_BIN" ]; then
"$MYSQL_BIN" -u root -p"$PASS" <<EOF
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$PASS' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOF
fi
ok "Root sifresi 123 olarak ayarlandi."
}
install_mysql() {
if mysql_installed; then
warn "MySQL zaten kurulu."
return
fi
info "MySQL 5.6 kurulumu basliyor..."
download_pkg "$MYSQL_CLIENT_URL" "$MYSQL_CLIENT_PKG" || return
download_pkg "$MYSQL_SERVER_URL" "$MYSQL_SERVER_PKG" || return
pkg install -y "./$MYSQL_CLIENT_PKG"
pkg install -y "./$MYSQL_SERVER_PKG"
grep -q 'mysql_enable="YES"' /etc/rc.conf || echo 'mysql_enable="YES"' >> /etc/rc.conf
ensure_mycnf
init_mysql_datadir || return
start_mysql_service || return
set_mysql_root_auto123
}
install_gcc_libraries() {
LIBD="/usr/local/lib/gcc9"
mkdir -p "$LIBD"
info "GCC9 kutuphaneleri indiriliyor..."
fetch -o "$LIBD/libstdc++.so.6" "https://razuning.com/yuklemeler/libstdc++.so.6"
fetch -o "$LIBD/libgcc_s.so.1" "https://razuning.com/yuklemeler/libgcc_s.so.1"
chmod 755 "$LIBD/libstdc++.so.6" "$LIBD/libgcc_s.so.1"
ldconfig
ok "GCC9 kutuphaneleri yuklendi."
}
install_gcc() {
if gcc_installed; then
warn "GCC9 zaten kurulu."
return
fi
info "GCC9 kuruluyor..."
download_pkg "$GCC9_URL" "$GCC9_PKG" || return
pkg install -y "./$GCC9_PKG"
install_gcc_libraries
}
remove_mysql() {
warn "MySQL tamamen kaldirilacak."
service mysql-server stop 2>/dev/null
pkg delete -y mysql56-client mysql56-server >/dev/null 2>&1
rm -rf /var/db/mysql
rm -rf /usr/local/etc/mysql
sed -i '' '/mysql_enable/d' /etc/rc.conf
ok "MySQL tamamen kaldirildi."
}
install_compat_libs() {
echo "1) 32 Bit uyumlu kutuphaneler"
echo "2) 64 Bit uyumlu kutuphaneler"
echo -n "Secim yap: "
read arch
pkg install -y gdb gcc gmake cmake openssl python subversion unzip devil unrar 7-zip
if [ "$arch" = "1" ]; then
pkg install -y compat4x-i386 compat5x-i386 compat6x-i386 compat7x-i386 compat8x-i386 compat9x-i386 compat10x-i386 compat11x-i386 compat12x-i386
ok "32 Bit uyumlu kutuphaneler kuruldu."
elif [ "$arch" = "2" ]; then
pkg install -y compat4x-i386 compat5x-amd64 compat6x-amd64 compat7x-amd64 compat8x-amd64 compat9x-amd64 compat10x-amd64 compat11x-amd64 compat12x-amd64
ok "64 Bit uyumlu kutuphaneler kuruldu."
else
err "Gecersiz secim."
fi
}
copy_compat_libs() {
info "Uyumlu lib dosyalari kopyalaniyor..."
[ -f /usr/lib32/libssl.so.111 ] && cp /usr/lib32/libssl.so.111 /usr/lib32/libssl.so.11
[ -f /usr/lib/libssl.so.111 ] && cp /usr/lib/libssl.so.111 /usr/lib/libssl.so.11
[ -f /usr/lib32/libcrypto.so.111 ] && cp /usr/lib32/libcrypto.so.111 /usr/lib32/libcrypto.so.11
ok "Uyumlu lib dosyalari hazirlandi."
}
set_turkey_time() {
info "Turkiye saat dilimi ayarlaniyor..."
cp /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
sed -i '' '/timezone=/d' /etc/rc.conf
echo 'timezone="Europe/Istanbul"' >> /etc/rc.conf
ntpdate -u pool.ntp.org 2>/dev/null || ntpd -q -g
ok "Saat dilimi Istanbul olarak ayarlandi."
}
show_server_time() {
info "Sunucu zamani:"
date
}
donanim_bilgisi() {
echo "Hostname: $(hostname)"
echo "IP adresi: $(ifconfig | grep inet | awk 'NR==2{print $2}')"
echo "FreeBSD surumu: $(freebsd-version)"
echo "CPU: $(sysctl -n hw.model)"
echo "Cekirdek sayisi: $(sysctl -n hw.ncpu)"
echo "RAM (MB): $(expr $(sysctl -n hw.physmem) / 1024 / 1024)"
echo "Disk durumu:"
df -h /
echo "Calisma suresi:"
uptime
}
full_reset() {
echo "============================================"
echo " TAM SISTEM SIFIRLAMA"
echo "============================================"
warn "Bu islem bu script ile yuklenen tum bilesenleri silecek."
echo -n "Devam etmek istiyor musun? (y/n): "
read r
case "$r" in y|Y) ;; *) info "Islem iptal edildi."; return ;; esac
info "MySQL kaldiriliyor..."
service mysql-server stop 2>/dev/null
pkg delete -y mysql56-client mysql56-server >/dev/null 2>&1
rm -rf /var/db/mysql /usr/local/etc/mysql
sed -i '' '/mysql_enable/d' /etc/rc.conf
info "GCC9 kaldiriliyor..."
pkg delete -y gcc9 >/dev/null 2>&1
rm -rf /usr/local/lib/gcc9
info "Uyumlu kutuphaneler kaldiriliyor..."
pkg delete -y compat* >/dev/null 2>&1
info "Temel paketler kaldiriliyor..."
pkg delete -y gdb gcc gmake cmake openssl python subversion unzip devil unrar 7-zip >/dev/null 2>&1
info "Saat dilimi ayarlari kaldiriliyor..."
rm -f /etc/localtime
sed -i '' '/timezone=/d' /etc/rc.conf
ok "Tam sistem sifirlama tamamlandi."
echo "--------------------------------------------"
echo "Sistemin yeniden baslatilmasi tavsiye edilir."
echo "--------------------------------------------"
echo -n "Simdi yeniden baslatmak ister misin? (y/n): "
read reboot_choice
case "$reboot_choice" in
y|Y) reboot ;;
n|N) info "Yeniden baslatma iptal edildi." ;;
*) info "Gecersiz secim, yeniden baslatilmadi." ;;
esac
}
###############################################
# HEPSINI YUKLE REBOOT EKLENMIS FINAL HALI #
###############################################
hepsini_yukle() {
info "Tum bilesenler yukleniyor..."
install_mysql
install_gcc
install_compat_libs
copy_compat_libs
set_turkey_time
ok "Tum bilesenler basariyla yuklendi."
ok "MySQL root sifresi 123 olarak ayarlandi."
echo "--------------------------------------------"
echo "Kurulum tamamlandi. Sistem yeniden baslatilmasi tavsiye edilir."
echo "--------------------------------------------"
echo -n "Simdi yeniden baslatmak ister misin? (y/n): "
read reboot_choice
case "$reboot_choice" in
y|Y) reboot ;;
n|N) info "Yeniden baslatma iptal edildi." ;;
*) info "Gecersiz secim, yeniden baslatilmadi." ;;
esac
}
while true; do
echo "============================================"
echo " FreeBSD Kurulum Scripti"
echo "============================================"
echo "1) MySQL 5.6 Kur"
echo "2) MySQL Sil"
echo "3) GCC9 Kur"
echo "4) 32/64 Bit Uyumlu Lib Kur"
echo "5) Turkiye Saatini Ayarla"
echo "6) Sunucu Saatini Goster"
echo "7) Donanim Bilgileri"
echo "8) Hepsini Yukle (MySQL sifre: 123)"
echo "9) Tam Sistem Sifirlama"
echo "0) Cikis"
echo "============================================"
echo -n "Secim yap: "
read sec
case "$sec" in
1) install_mysql; pause ;;
2) remove_mysql; pause ;;
3) install_gcc; pause ;;
4) install_compat_libs; copy_compat_libs; pause ;;
5) set_turkey_time; pause ;;
6) show_server_time; pause ;;
7) donanim_bilgisi; pause ;;
8) hepsini_yukle; pause ;;
9) full_reset; pause ;;
0) exit 0 ;;
*) err "Gecersiz secim."; pause ;;
esac
done
Scriptin sağladıkları:
- MySQL 5.6 otomatik kurulum
- Veri klasörünün oluşturulması
- Servisin başlatılması
- Root şifresinin otomatik olarak "123" yapılması
- Uzaktan bağlantı yetkilerinin verilmesi
- libstdc++.so.6
- libgcc_s.so.1
- 32/64 bit uyumlu kütüphanelerin kurulumu
- libssl ve libcrypto uyumluluk düzeltmeleri (111 → 11)
- Türkiye saat dilimi ayarı ve NTP senkronizasyonu
- Sunucu saatini ve donanım bilgisini görüntüleme
- Hepsini yükle modu (tüm kurulumu tek seferde tamamlar)
- Tam sistem sıfırlama seçeneği (scriptin kurduğu tüm paketleri kaldırır)
Script, Metin2 sunucusu kurarken ortaya çıkan MySQL, uyumsuz lib dosyaları, eksik paketler ve saat sorunları gibi sık karşılaşılan hataları tamamen ortadan kaldırmayı amaçlar. Kurulum sürecini hızlandırır, standart hale getirir ve tek komutla çalışan bir yapı sunar.
En son bir moderatör tarafından düzenlenmiş: