Apache Sanal Host Ayarları

Apache 2.4 kurulumu bittikten ve ayarlarını yaptıktan sonra sanal hostları tanımlamak kalıyor. Bu bize birden çok alan adını sunucu üzerinde kullanmamızı sağlıyor.

Örneğin;
linuxuzmani.net ve turkwm.com sitelerini aynı web sunucuda host edebiliriz.

Web sunucu kurulumunda anlatırken kullanıcılar için /home/ klasörünü kullandık. Linuxuzmani.net salih kullanıcısında, turkwm.com ridvan kullanıcısında hizmet vereceğini düşünelim.

Apache 2.4 dizinleri apache2.conf içerisinde tanımlıyorlar. Ben /home/ dizini altındaki klasörleri tek tek tanımlamak yerine üst dizin olarak /home/ tanımlayıp ilk ayarı tamamlıyorum.

mcedit /etc/apache2/apache2.conf

En alta aşağıdaki ayarı ekliyorum.

<Directory /home/>
        Options FollowSymLinks
#Linklenmiş dosyaları izlemedir. En yüksek performans içindir. Güvenlik için detaylandırılabilir.
        AllowOverride All
#.htaccess çalışması için gereklidir. Güvenlik isteyenler daha detaylı işlemler için farklı kullanabilir.
        Require all granted
#Dizine dış dünyadan erişim vermek içindir. Altında oluşacak sanal hostlara erişimi tanımlar. İsterseniz sadece belli ip adresleri içinde oluşturabilirsiniz.
</Directory>

Bundan sonraki adımda Sanal Host ayar dosyasını oluşturabileceğiz. Aşağıdaki ayarlar olması gereken temel ayarlardır. İhtiyacınız olan bir çok ayarı Apache Manuel sitesinden bulabilirsiniz.
mcedit /etc/apache2/sites-available/linuxuzmani.net
<VirtualHost *:80>
    ServerAdmin destek@linuxuzmani.net
    ServerName linuxuzmani.net
    ServerAlias linuxuzmani.net,www.linuxuzmani.net
    DocumentRoot /home/salih/linuxuzmani.net
    ErrorLog ${APACHE_LOG_DIR}/linuxuzmani.net.error.log
    CustomLog ${APACHE_LOG_DIR}/linuxuzmani.net.access.log combined
</VirtualHost>
Kaydedip çıktıktan sonra apache’yi yeniden başlatıyoruz ve ayarlarımız aktif oluyor.
service apache2 restart

Vsftpd Ftp Sunucu Kurulumu

Vsftpd hızlı ve güvenli bir ftp sunucudur. Kullanırken SSL destekli kullanmanızı tavsiye ederim. Aksi halde şifreleriniz görüntülenebilir formatta karşıya gitmektedir.
Sunucuyu Kurulumu ve Ayarları
apt-get install vsftpd mc

Kurulum kısa sürmektedir. Akabinde ayar dosyasını düzenleyelim.
nano  /etc/vsftpd.conf
Ayar dosyasını açtığımızda aşağıdaki parametreleri düzenliyoruz.
#Kullanıcısı olmayan yani anonim kullanımı engelliyoruz.
anonymous_enable=NO  
Lokal kullanıcı hesaplarını kullanmasını söylüyoruz.
local_enable=YES
Dosya yükleme, silme ve isim değiştirme ilemleri için yazmayı aktif ediyoruz.
write_enable=YES
Kullanıcıların kendi klasörleri dışına çıkmasını engelliyoruz.
chroot_local_user=YES
Bu işlemlerden sonra bağlanmak istediğinizde 500 OOPS: Vsftpd: Refusing To Run With Writable Root Inside Chroot() hatasını engellemek için aşağıdaki değerleri eklememiz gerekiyor.

echo allow_writeable_chroot=YES >> /etc/vsftpd.conf
echo seccomp_sandbox=NO >> /etc/vsftpd.conf

Ftp Kullanıcısı Oluşturma
Ftp kullanıcılarını oluşturalım. Komut sonrası parola belirlemenizi isteyecek. Kendim kullandığımda yapmıyorum ancak başlangıç seviyesindeki arkadaşlara kullanıcı açarken www-data grubuna eklemesini tavsiye ederim. Upload sonrası yetki karmaşası olmasın diye. -d ilede istediğim dizini ev dizini olarak atıyorum.
adduser –gid=33 –home=/var/www/salih  salih
SSL Ayarları (İsteğe Bağlıdır)

SSL bileşenlerini oluşturuyoruz. 
openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout /etc/ssl/private/ftpserver.pem -out /etc/ssl/private/ftpserver.pem
Oluşturduğumuz bu bileşenleri kullanmak için sunucu ayar dosyasında değişiklik yapmamız lazım. 
mcedit /etc/vsftpd.conf
Aşağıdaki parametreleri ekliyoruz.
rsa_cert_file=/etc/ssl/private/ftpserver.pem
rsa_private_key_file=/etc/ssl/private/ftpserver.pem


SSL aktif hale getirip bağlantıda mecburi kılmak içinde aşağıdaki parametreleri giriyoruz.
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
SSL/TLS destekli FTP sunucumuzun ayarları tamamlandı. Servisi yeniden başlattıktan sonra Ftp istemciniz ile bağlanabilirsiniz.
/etc/init.d/vsftpd restart

























NDR – Exchange Sunucu Bilgilerinin Saklanması

Exchange kullanan sistemlerin önünde mail gateway olarak linux kullanılıyor genelde. Yada bir üreticinin donanımı kullanılır. İçerideki sunucu isimleri, ip yapısı ve mailin izlediği yolları Exchange yanlış bir mail kutusuna mail gönderdiğinizde size geri bildirimde hepsini verir. Mailer-Daemon dönüşlerinin iptali sizin güvenliğiniz için çok önemlidir. Aşağıdaki komutu Exchange Power Shell üzerinde çalıştırdığınızda geri bildirimler kapanacaktır.  NDR = Non Delivery reports
Set-RemoteDomain * -NDREnabled $False.

Centos Ip Ayarları

Centos 6’da ip verme işlemi için aşağıdaki adımlar yapılır.
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:12:34:56:78:90
BOOTPROTO=static
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=172.16.0.2
NETMASK=255.255.255.0
Ağ geçidi, bilgisayar adını girmek için aşağıdaki adım,
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=test.linuxuzmani.com
GATEWAY=172.16.0.1
Dns sunucu yapılandırması aşağıdaki adım,
/etc/resolv.conf
nameserver 172.16.0.1
nameserver 172.16.0.10
Yapılan değişiklerin uygulanması için servis yeniden başlatılır.
/etc/init.d/network restart
ifconfig eth0 ile görebiliriz.

Ankara Sabah Kahvaltısı – Hamamönü

Hafta sonları Ankara’da kahvaltı yapmak için güzel alternatifler bulmaya devam ediyorum. Buldukça bu yazıyı güncelleyeceğim. İş yerindeki arkadaşlarımın tavsiyesi ile tarihi bir mekanda güzel bir kahvaltı ve muhabbet etme şansı yakaladım. Kendimi Eskişehir’in Odunpazarı semtinde olduğunuzu gibi hissettiren yer Altındağ Hamamönü oldu. Restore edilmiş evleri ve mistik havası ile ruhunuza ve gözünüze hitap eden bir yer. Kahvaltı sonrasında gezecebileceğiniz müze ve el işleri sergileri mevcut. Ayrıca burada Mehmet Akif Ersoy Müzesi, Taceddin Sultan Camii ,Hacı Musa Camii ve Karacabey Tarihi Hamamı bulunmaktadır.  Sanat Sokağındaki ev ve konaklarda gümüş takı, ebru, cam vitray sanatçılarının eserlerini görebilirsiniz.
Kahvaltı için gittiğinizde mevsimsel olarak yer bulamayabilirsiniz. Sokaklar kahvaltı sunan mekanla rla dolu ancak bir çoğu vasat. meydandan aşağı indiğiniz gibi sizi davet eden mekanlara pek aldanmayın. Menüleri dikkatlice inceleyin ve fiyatları öğrenin. Benim size iki mekan tavsiyem var. Serpme Kahvaltı, Kahvaltı tabağı ve bunun haricinde diğer yemek çeşitlerini de bulabilirsiniz.
Hipokrat Cafe – > İletişim
Lezzet-i Tarih – > İletişim
Oraya gitmişken birde hamam sefası yapmak isterseniz Tarihi Karacabey Hamamını değerlendirebilirsiniz.  Tarihçesini aşağıdaki gibi yazmışlar.

Karacabey Külliyesi eski Ankara şehrinin kenarında, Hacettepe yakınında yer alır. İmaret cami, türbe ve hamamdan oluşan külliyenin vakfiyesinin 844 H./ 1440 M. yılında hazırlanması tesislerin bu tarihte tamamlandığını gösterir. Tarihi Karacabey Hamamı da bu külliyenin bir parçasıdır.  Tarihi Karacabey Hamamı Vakıf Külliyesi II. Murat’ın Kadı Askeri olan Celalettin Karacabey İbn-i Abdullah tarafından yaptırılmıştır. 1427 yılında inşaatına başlanan ve 13 sene süren inşaattan sonra 1440 yılında bitirilen Karacabey Hamamı Ankara’nın en eski tarihi eserlerinden birisi konumundadır. Hamamönü semti de adını Karacabey Hamamından almıştır.
Tarihi Karacabey Hamamı ile ilgili daha detaylı bilgiyi sitesinden elde edebilirsiniz. -> İletişim ve Site
Şahsen kahvaltı, gezi gibi her gittiğim seferde Rahmetli Muhsin Yazıcıoğlu ve Tacettin Degahındaki diğer mevtalarıda ziyaret ediyorum. Sizlerede maddi olarak yaşadığınız tatminin ardından manevi tatmin için tavsiye ederim.

Apache2 ile Mod_Proxy (Http Proxy)

Sorunsuz ve maliyetsiz bir şekilde ayrıca güvenli olarak çalışıyor. İçeride istediğiniz linke ve porta yönlendirebilirsiniz.
Ayrıca sunucunuz yurt dışında ise youtube vb gibi erişim yasağı olan siteleride burada tanımlayabilir ve zahmetsizce sörf yapabilirsiniz 🙂


Sunucum debian. Apache kurulu değilse kurulumunu yapalım.
apt-get install apache2

Kurulumun ardından http_proxy ve proxy modülünü aktif hale getiriyoruz.
a2enmod proxy
a2enmod proxy_http
Modüllerimizi aktif ettikten sonra proxy ayarını yapıyoruz.Kırmızı ile yaptığım yerler değiştirdiğim veya eklediğim yerler.
nano /etc/apache2/mods-available/proxy.conf
<IfModule mod_proxy.c>
#turning ProxyRequests on and allowing proxying from all may allow
#spammers to use your proxy to send email.
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
#Allow from .example.com
</Proxy>
# Enable/disable the handling of HTTP/1.1 “Via:” headers.
# (“Full” adds the server version; “Block” removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
ProxyVia On
ProxyPass /ws/prod    http://prod.linuxuzmani.com:9900/sap/rfc/spprod
ProxyPass /ws/test      http://test.linuxuzmani.com:9900/sap/rfc/sptest
ProxyPass /portal       http://172.16.1.10:40000
ProxyPass /yt               http://www.youtube.com

</IfModule>
Tanımlamalarımızın ardından sunucumuzu tamamlıyoruz. Artık http proxy servisimiz hizmete hazır.

/etc/init.d/apache2 restart

Opentext Migrasyon – Webdav

OpenText sisteminde dataların topluca kopyalanıp yeni bir OpenText’e aktarılması işlemi genelde Webdav üzerinden dosyaların kopyalanması ile yapılır. Microsoft sistemlerin dosya isimlerinde hala 256 karakter problemi bulunmakta. Windows 7 ve 8′de klasör ve alt klasör isimleri 256 karakteri geçtiğinde dosyalar kopyalanamıyor. Bu migrasyonu yapmak için windows bilgisayarlar belirtilen hatadan dolayı işlem yapılamıyor.  Bende linux kullandım. Gayetde güzel oldu  🙂 Uzun uğraş vermeyin dosya transferi yapacağım diye. Linux ile kolaylıkla aktarımları yapabilirsiniz.
Yapmanız gereken webdav linkini almanız. Benim OpenText sunucumdan örnek bir webdav linki. http://opentext/contentserverdav/nodes/323
İlk olarak webdav dosya sistemi desteğini yükleyeceğim. Sonra bir klasör oluşturuyorum. Bu webdav linkini mount ediyorum ve kullanmaya başlıyoruz.
apt-get insall dav2fs
mkdir /media/opentext
mount -t davfs2 http://opentext/contentserverdav/nodes/323   /media/opentext
Bu kısımda kullanıcı adı ve şifre soruyor.
username: DOMAINkullaniciadi
password: kullanıcıadi_şifresi

Rsync ile Yedekleme

Yurt dışında bulunan bir sunucum var. Kullanılan alan hergün artmakta. Sunucu üzerinde yaşacak sorunda geriye dönüşte kayıbı en düşük seviyede tutmak için yedekleme ihtiyacı hasıl oldu. Türkiye’de bu sunucuya eş bir sunucu hazırladım. DNS kayıtlarınıda olabilecek felaket (disaster) durumunda buradan devam edilecek şekilde düzenledim. Yedekleme sistemin rsync ve ssh kullandım.
Buradaki yapımız yedek sistem için replikasyon yapması, bir anlamda sunucunun değişen dosyalarının yedeklenmesi işlemidir. Tam bir backup sistemi anlatılmamaktadır. İlk aktarımda bütün dosyalar ve klasörler aktarılacaktır. Daha sonraki aktarımlarda sadece (incremental) değişen dosya ve klasörler aktarılacak şekilde bir yapıdır.
İşlemi 3 aşamalı olarak yaptım.
1. Ssh ile Şifresiz Erişim
Sunucumuza zamanlanmış olarak görev atadığımızda bağlantımız ssh ile yapılacağı için parola sormaması gerekli.
Yurtdışındaki sunucuda yapılanlar, root olarak giriş yapıldıktan sonra;

ssh-keygen -b 1024 -t dsa
3 tane soru soracak enter ile geçebilirsiniz.
oluşan anahtarımızı Türkiye’deki sunucuya göndereceğiz.
scp /root/.ssh/id_dsa.pub root@sunucuiptr:/root/.ssh/authorized_keys
Bu işlemin ardından şifre sormadan yurtdışındaki sunucudan Türkiye’deki sunucuya bağlantı yapılacaktır.
2. Rsync yedekleme parametrelerinin ayarlanması ve ilk aktarımın yapılması.
İki sistemimde debian linux. rysnc paketini kurarak ikinci adıma başlıyoruz.
apt-get install rsync
Bu aşamadan sonra işlemler yurt dışındaki sunucuda yapılacaktır. Rsync komutu ile kullandığımız parametreleri açıklayalım.
  • -t Dosyaların tarihlerini değiştirmeden kopyalar
  • -l Var olan kısa yollarıda aynen aktarır.
  • -p Erişim izinlerinin değişmeden aktarılması sağlanır
  • -v Dosya aktarımını görmek için kullanılır.
  • -z Dosyaları sıkıştırarak gönderir.
  • -e Kullanılacak kabuğu belirlenir.
diğer paramterleri öğrenmek için aşağıdaki komutunu kullanarak görebilirsiniz.
rsync – -help
Burada dikkat edilecek husus eğer dizin olarak aktarılacaksa kaynak yoluna  /var/www şeklinde, yani Türkiye’deki sunucuda da www klasör şeklinde aktarmı yapar. Eğer biz kaynak yoluna / eklemezsek karşı tarafta www klasörü içindeki herşeyi  /var içine gönderilir. wwww dizini oluşturulmaz.
Komutun kullanımı,
rsync -parametreler kaynak hedef
Birden fazla klasor aktarmak için,
rsync -parametreler kaynak1 kaynak2 kaynak3 hedef
şeklinde kullanılır.
Ben web dizinini aktarıyorum.
rsync -avz -l -p -t -e “ssh -l root” /var/www  sunucuiptr:/var
3. Zamanlanmış görev olarak atama yapmak.
Bu komut dizilimini çalıştıracak bir script hazırlayalım.
nano /root/cron-rsync
#!/bin/sh

RSYNC=/usr/bin/rsync

SSH=/usr/bin/ssh
SSHKULLANICI=root
RKULLANICI=root
RUZAK=sunucutrip
RYOL=/var
LYOL=/var/www
$RSYNC -avz -l -p -t -e  “$SSH -l $SSHKULLANICI”  $LYOL $RKULLANICI@$RUZAK:$RYOL

dosyamızı kaydedip çıkıyoruz. Çalıştırılabilir dosya haline getiriyoruz.
chmod +x /root/cron-rsync
Yurt dışındaki sunucumun her saat  saatlerde replikasyon yapması için cron (zamanlanmış görev) ataması yapıyorum.
crontab -e
0 * * * * /root/cron-rsync
Kaydedip çıkıyoruz. Replikasyonumuz her saat başı çalışacak şekilde ayarlandı. Burada dikkat etmeniz gereken nokta bir saat biriken veri miktarını takip etmelisiniz. Çünkü ikinci saatte aktarabilecek kadar güçlü bir hattınız yoksa devam eden bir replikasyon üzerine ikinciside biner.  Uzaktaki sunucuya belirlediğiniz bir t süresi kadar ne kadar yedek atıldığını hesaplayın. Her saat değil belki 6 saatte bir yapabilirsiniz. Bu süreyi kendi alt yapınıza gore ayarlayabilirsiniz.

Boyuta ve Tarihe Göre Dosya Silme

Linux komut satırında bir komutu belli kriterler karşılaştığında çalıştırabilirsiniz. Örnek bir komut ile belli bir boyutun üzerindeki dosyaları sildirelim.
find /home/salih/Downloads/* -size +1024k -type f -exec rm -f '{}' ;
komut sırasıyla inceleyelim.
  1. argüman arama komutu.
  2. argüman dosyaların belirli kriterlere göre silineceği klasör
  3. aramanın hangi kritere göre yapılacağını belirtiriz.
  4. argüman hangi boyuta göre işlem yapacağımızı belirler. Artı (+) olursa sağındaki değerden yukarıdaki dosyaları bulur. Eksi (-) olursa sağındaki değerden aşağıdaki dosyaları bulur.
  5. argüman aramanın hangi dosya tipi ile yapılacağını belirler. (-f  normal dosya)
  6. argüman kabuk komutu çalıştırmak istediğimizi belirtiyoruz.
  7. argüman rm komutunun işletilmesi ve kriterlere uyan dosyaları siler
Bu kriterlere uyan dosyaları silmek değil bir dosya içerisinde yazmak istersek aşağıdaki komutu çalıştırmamız yeterli.
find /home/salih/Downloads/* -size +1024k -type f > birmbdenbuyuk.txt
İki günden daha eski dosyaları silmek içinde aşağıdaki komutu çalıştırırız.
find /var/spool/squid/* -mtime +2 -exec rm {} ;