• Pts. Ağu 10th, 2026

Fatih ŞAHİN

Not defterim.

Epey uzun bir başlık oldu. Konu aslında buralara nasıl gedi bende bilmiyorum. Kısıtlı bilgi ile uzak bir sql serverdan bilgiler çekip işlemem gerekiyordu. Local bilgisayarda sorun yok.

Ama bunu web ortamında yapmaya geldi mi iş cloud bir sunucu vps yada vds gibi sistemler zorunlu oluyor. Şayet reseller hosting kullanıyorum çokta memnunum ama uzak sql e bağlanmak için bazı driverlar kurulmalı ve php.ini dosyasına erişim şart. böylede olunca hosting firması ile bu işi çözemedim. Baktım olacak gibi değil neden ben yapmayım derken olanlar oldu. Hadi sırasıyla başlayalım.

Daha önceden sunucu tarafı ile ilgili kısıtlı bilgim vardı biraz araştırma yaptım ve Amazon Aws, digitalocean mu derken yerli malı yurdum malı herkes onu kullanmalı diyerek ilkbyte üzerinden bu işlemi yapmaya karar verdim. ta 5-6 yıl öncesine dayanan ilk çıktığında üye olduğum bir platform ama aktif olarak kullanmamıştım. Oraya girerek

  • 2 Core CPU, 2 GB Bellek, 20 GB SSD Disk ,1000 GB Aylık Trafik

minumum özelliklerde sunucu seçtim. İşletim sistemi olarak Ubuntu 20.04 seçtim. çok fark ediyor mu bilmem ama benim için bir şey fark etmiyor. 

Evet artık bir sunucumuz var kurulum işlemleri bitti ve sunucuya ip ve root bilgileri ile bağlandık.

1. Sunucuyu Güncelleme

sudo apt update && sudo apt upgrade -y

2. Apache Kurulumu ve Ayarlamaları

apache kurulumunu gerçekleştirelim.

 sudo apt install apache2 -y 

apachenin çalışup çalışmadığını öğrenme

sudo systemctl status apache2

apacheyi yeniden başlatmak

sudo systemctl restart apache2 

Not: eğer

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

bu tarz bir hata alırsanız.

sudo nano /etc/apache2/apache2.conf
ServerName localhost
sudo systemctl restart apache2

bu komutlar ile ServerName ayarlaması yapabilirsiniz.

3. PHP 8.1 Kurulumu

PHP 8.1 ve gerekli modülleri kuralım. Burada önce PHP 8.1 PPA deposunu ekleyelim

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

Daha sonra, PHP 8.1 ve gerekli uzantıları kurun:

sudo apt install php8.1 php8.1-cli php8.1-common php8.1-dev php8.1-xml php8.1-zip php8.1-mbstring libapache2-mod-php8.1 -y

php-v komutu ile kurulumu ve versiyonu kontrol edelim. Tamam artık ip ile de girdiğimizde apache sayfası ile karşılaşacağız. şimdi domainimizi yönlendirmek için dns kayıtlarını ip mize yönlendirelim. daha sonra

4. Domain Yönlendirme İçin dizin Oluşturma

domainimizi ip adresimize yönlendirdikten sonra sunucumuzda

sudo mkdir -p /var/www/sahin.tc
sudo chown -R $USER:$USER /var/www/sahin.tc
sudo chmod -R 755 /var/www/sahin.tc

evet klasörümüzü oluşturduk ve gerekli izinlerini ayarladık. artık bizim yönlendirme yaptığımız sahin.tc domainimiz için /var/www/sahin.tc klasörü geçerli olacak bunun için sanal host dosyası oluşturmamız gerekiyor.

sudo nano /etc/apache2/sites-available/sahin.tc.conf

içeriğinide aşağıdaki gibi düzenleyelim.

<VirtualHost *:80>
    ServerAdmin webmaster@sahin.tc
    ServerName sahin.tc
    ServerAlias www.sahin.tc
    DocumentRoot /var/www/sahin.tc

    <Directory /var/www/sahin.tc>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/sahin.tc_error.log
    CustomLog ${APACHE_LOG_DIR}/sahin.tc_access.log combined
</VirtualHost>

host dosyasını etkinleştirelim ve apache yi yeniden başlatalım.

sudo a2ensite sahin.tc.conf
sudo systemctl restart apache2

eğer domain üzerinden sunucuya erişim sorunu yaşarsanız HTTP ve HTTPS trafiğine gerekli izinlerin verildiğinden emin olmak için aşağıdaki komutu uygulayalım. 80 ve 443 portları içinde güvenlik duvarı ayarlamalarını yapalım.

 sudo ufw allow 'Apache Full'

diğer güvenlik duvarı ayarları da aşağıda

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

yine sorun yaşarsanı hosts dosyasına sunucu ip adresi ile beraber domainimiz ekleyelim.

 
sudo nano /etc/hosts

aşağıdaki örnek şekildeki gibi kodları düzenleyin.

127.0.0.1 localhost
127.0.1.1 ubuntu20
111.111.111.111 sahin.tc www.sahin.tc // ip adresi sizin sunucu ip adresiniz olacak.

5. SSL Sertifikası Kurulumu

SSL sertifikasını kurmak için Certbot ve Let’s Encrypt kullanıyoruz.
Certbot’u ve Apache modülünü kuralım.

sudo apt install certbot python3-certbot-apache -y

SSL sertifikasını oluşturun

sudo certbot --apache

Ssl ile ilgili

[Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]

bu hatayı almıştım. bunun içinde ayrıca openssl conf dosyasını açıp dosyanın başına ve sonuna aşağıdaki kodları ekledim ve sorun çözdüm teşekkürler github.

sudo nano /etc/ssl/openssl.cnf

dosyanın başına

openssl_conf = default_conf

dosyanın sonuna

[ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1

bu işlemden sonra apacheyi yeniden başlatın.

6. SFTP Kullanıcısı Oluşturma

sudo adduser sftpuser
sudo usermod -aG www-data sftpuser
sudo mkdir -p /home/sftpuser/.ssh
sudo chmod 700 /home/sftpuser/.ssh
sudo touch /home/sftpuser/.ssh/authorized_keys
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
sudo chown -R sftpuser:sftpuser /home/sftpuser/.ssh

ben sftpuser adında bir ftp kullanıcısı oluşturdum. bu kullanıyı ile /var/www altındaki tüm domainlerimde kullanacağım. ama bunun dışına çıkmasını da istemiyorum. o yüzden izinlerini buna göre ayarlayacağım. Bunun için SSH konfigürasyon dosyasını düzenliyorum.

sudo nano /etc/ssh/sshd_config

dosyanın sonuna aşağıdaki kodları ekliyorum.

Match User sftpuser
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

işlemlerin geçerli olması için shh hizmetini yeniden başlatıyorum.

sudo systemctl restart ssh

Evet artık ftp kullanıcı ile sunucuya local bilgisayarımdan dosyalarımı yükleyebilirim.
Şimdi bana mysql lazım. çünkü database ile çalışan küçük bir sistem çalıştıracağım. Bu kadar uğraşın amacı var.

7. MySQL Kurulumu

Mysql kurulunu gerçekleştiriyoruz.

sudo apt install mysql-server -y

EVet şimdide mysql güvenlik kurulumunu yapalım ve kurulum esnasında karşılaşılan alanlara verdiğim cevaplarıda yazacağım.

sudo mysql_secure_installation

Yukarıdaki komutu uyguladığınızda

Parola Doğrulama Eklentisi (Validate Password Plugin)

Bu eklenti, yeni oluşturulan parolaların güvenlik seviyesini kontrol eder. Yes diyoruz.

Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: y

Parola Güç Seviyesi Seçimi

Parola doğrulama eklentisini etkinleştirdiyseniz, aşağıdaki seçeneklerle karşılaşacaksınız. Ben 2 yi seçtim gayet yeterli diye düşündüm tercih sizin.

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

Root Kullanıcısı İçin Yeni Parola Ayarlama
burada oluşturduğunuz parolayı not etmeyi ve güçlü bir paralo oluşturmayı unutmayın.

New password: **********
Re-enter new password: **********

Anonim Kullanıcıları Kaldırma
ben yes diyerek kaldırdım.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Root Uzaktan Girişini Devre Dışı Bırakma
ben yes diyerek devre dışı bıraktım. ama bu biraz ihtiyaca göre ayarlanacak bir seçenek. sonradan da ayarlanır zaten.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Test Veritabanını Kaldırma
Yes diyerek kaldırdım.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Ayrıcalık Tablolarını Yeniden Yükleme
Yes diyerek devam ettim.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

8. Microsoft ODBC 17 Kurulumu ve PHP SQLSRV Sürücülerinin Kurulumu

En çok deneme yaptığımız yere geldim. Herhalde en az 10 defa sunucuyu sıfırlayıp farklı sürümlerde işletim sistemi ve farklı sürümlerde microsoft ODBC driver denediğim bölüm. Zaten ilk defa bir işe giriştim. Ama tabi bu sırada iyi kötü bir sunucu kurulumu tekrarlayarak pekiştirdim : )

en son başarılı kurulumu microsoft un dökümantasyonu ile yaptım.

Aşağıdaki komutları sırasıyla çalıştırın:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' &gt;&gt; ~/.bashrc
source ~/.bashrc
sudo apt-get install -y unixodbc-dev

PHP SQLSRV ve PDO_SQLSRV uzantılarını yükleyelim

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" &gt; /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" &gt; /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv

Apacheyi tekrar başlatarak değişiklikleri geçerli kılalım.

sudo systemctl restart apache2

Ve mutlu son. Bir çok deneme ve araştırma sonucunda sistem çalışıyor. Hiç bir sorun yok. Burada yazdığım kodları ve anlatımları bir çok internet sitesi, chatgpt ve monica gibi bir çok yapay zeka ile beraber haşır neşir olarak buldum. Yapay zeka bir çok konuda iyiydi ama bazen çok fazla saçma yönlendirmeler yapıp tekrara düşebiliyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir