1. Ortam Hazırlığı
2. Veritabanı Oluşturma
3. Panel Yapılandırması
4. Dosya İzinleri
5. Web Sunucusunu Ayarlama
6. Güvenlik
7. Entegrasyon
- PHP 7.4+, MySQL 5.7+ ve Apache/Nginx kurulu.
sudo apt update && sudo apt install php php-mysql/var/www/htmldizinine admin paneli koyun:wget https://example.com/adminpanel.zip && unzip adminpanel.zip -d /var/www/html/adminpanel
2. Veritabanı Oluşturma
SQL:
CREATE DATABASE metin2_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON metin2_admin.* TO 'admin_user'@'localhost' IDENTIFIED BY 'secure_pass';
FLUSH PRIVILEGES;
3. Panel Yapılandırması
/var/www/html/adminpanel/config.phpdosyasına veritabanı bilgilerini yazın.require_once 'config.php';ile bağlantıyı test edin:php -r "require 'config.php'; echo 'ok';"
4. Dosya İzinleri
Bash:
sudo chown -R www-data:www-data /var/www/html/adminpanel
sudo find /var/www/html/adminpanel -type d -exec chmod 750 {} \;
sudo find /var/www/html/adminpanel -type f -exec chmod 640 {} \;
5. Web Sunucusunu Ayarlama
- Apache için:
Kod:
<VirtualHost *:80>
ServerName admin.metin2.game
DocumentRoot /var/www/html/adminpanel
<Directory /var/www/html/adminpanel>
AllowOverride All
</Directory>
</VirtualHost>
- Nginx için:
NGINX:
server {
listen 80;
server_name admin.metin2.game;
root /var/www/html/adminpanel;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
6. Güvenlik
.htaccessile temel parola koruması ekleyin (Apache).- FTP’e erişimi kısıtlayın.
- HTTPS’yi otomatik olarak sağlayan Let's Encrypt ile sertifika kurun (
certbot --apacheveyacertbot --nginx).
7. Entegrasyon
- Admin paneli içinde “Metin2 Sunucu” sekmesi açarak, sunucu dosyalarının (log, oyuncu listesi) okunması için gerekli API’leri yazın.
query_server.phpdosyasında socket üzerindeninfokomutunu gönderip alın.
Soru: Bu adımları uygularken, veritabanı bağlantısı sırasındaSQLSTATE[HY000]hatasıyla karşılaşırsanız, sunucu ne zaman yeniden başlatıldığını veya MySQL servisinin çalışmadığını kontrol etmelisiniz. Siz bu durumda hangi adımı tercih edersiniz?