Konsolda çok satırlı dosyayı tek satıra dönüştürmek.
Aşağıdaki komutla birden fazla satır veri olan dosyanızı tek satır haline çevirebilirsiniz.
tr -d ‘\n’ < dosyaniz.txt
Aşağıdaki komutla birden fazla satır veri olan dosyanızı tek satır haline çevirebilirsiniz.
tr -d ‘\n’ < dosyaniz.txt
Maxmind geoip servisinin Apache eklentisinin Centos/Cloudlinux 7.2 ve Ubuntu 14.x LTS üzerine kurulumunu anlatıyoruz.
İlk kurulumumuz Centos/Cloudlinux için.Öncelikle yapmanız gereken maxmind kütüphanesini kurup ardından Apache extension tool (apxs) kurulumunun ardından maxmind apache modülünü sistemimize eklemek olacak.Bunun ardından örnek bir apache/maxmind konfigurasyon dosyası ile wordpress kurulu websitelerin wp-login.php dosyasına Türkiye dışından erişimi engelleyeceğiz.
Centos kurulum derleme aşamalarını biraz sadeleştirmek amacıyla önceden bir Cloudlinuxta derlemiş olduğum MaxMind Apache modülünü (.so dosyasını) kullanacağız.
Centos / Cloudlinux Kullananlar İçin hazır batch dosyayı sistemimize indirip çalıştırıyoruz.
wget https://www.linux-destek.com/maxmind/maxmind.sh
Sunucunuza indirdiğiniz maxmind.sh dosyasını çalıştırıyorsunuz.
/bin/bash maxmind.sh
Kurulum işte bu kadar.Sunucunuzda host ettiğiniz bir wordpress siteyi, örneğin www.abc.com/wp-login.php vey xmlrcp.php dosyasının yurt dışından erişilemediğini test etmek size kalıyor.
Debian/Ubuntu Kullanalar için ise kurulum aşamalarımız şöyle;
İlk olarak maxmind kütüphanesini (sistem için gerekli olan) bir apt deposunu ekleyerek kuruyoruz;
sudo add-apt-repository ppa:maxmind/ppa
apt deposunu ekledikten sonra
apt-get update komutunu çalıştırın ve aşağıdaki gerekli paketleri sisteminize kurun
sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin apache2-devel automake autoconf libtool git
Paketler sisteminize kurulduktan sonra git client ile sisteminize indirip kurmak için aşağıdaki komutları sırasıyla uygulayın;
git clone –recursive https://github.com/maxmind/mod_maxminddb.git
cd mod_maxminddb/
./bootstrap
./configure –with-apxs=/usr/bin/apxs
make install
Bu aşamadan sonra önceden maxmind ücretsiz servisinden indirmiş olduğumuz dosyayı sunucuda bir klasöre yerleştiriyoruz.
mkdir /usr/local/share/GeoIP/ && cd /usr/local/share/GeoIP/
wget https://www.linux-destek.com/maxmind/modmaxmind/GeoLite2-Country.mmdb
Herşey yolunda giderse artık sistemimizde maxmind kütüphanesi ve apache modülü kurulmuş olacak.Sıra apache için örnek bir konfigurasyon oluşturmakta.Bu örnekte belirttiğimiz gibi wordpress wp-login.php ve xmlrpc.php dosyalarına erişimi geoip tabanlı engelliyoruz.Erişim sadece Türkiye Ip adreslerinden olacak.
Örnek Apache Konfigurasyonu;
#<IfModule mod_maxminddb.c>
LoadModule maxminddb_module modules/mod_maxminddb.so
MaxMindDBEnable On
MaxMindDBFile DB /usr/local/share/GeoIP/GeoLite2-Country.mmdb
MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code
<FilesMatch “wp-login.php|xmlrpc.php”>
SetEnvIf MM_COUNTRY_CODE ^(TR) AllowCountry
#Deny from env=BlockCountry
Allow from env=AllowCountry
Deny from All
#RewriteEngine on
#RewriteCond %{ENV:MM_COUNTRY_CODE} !^(RU|DE|FR)$
#RewriteRule ^(.*)$ – [F,L]
</FilesMatch>
#</IfModule>
Üzerinde bazı değişlikler ve iptal edilen satırlar var.Sadece size farklı bir fikir verebilir.Bu şekilde kullanabilirsiniz de.Dosya içeriği bu şekilde.Apache Web sunucusunun dosyayı /etc/apache2/conf-enabled/maxmind.conf ismiyle oluşturmanız ve bu içeriği yapıştırmanız gerekecek.
Dosyanızı kaydettikten sonra service apache2 restart komutu ile webservisini yeniden başlatın.Herhangi bir error seviyesinde hata almaz iseniz kurulum tamam demektir.
Aynı şekilde bir wordpress sitenizdeki wp-login.php dosyanıza yurt dışından erişimi deneyerek testinizi yapınız.Eğer herşey çalışıyorsa Forbidden mesajı ile karşılacaksınız.
Son Söz;
Elbette wordpress veya başka bir website kodunu bu şekilde korumak en iyi yol değildir.Güvenlik kodda başlar.Sistem de güncel kaldığı sürece her bakımdan güvendesiniz demektir.
Burada yapılan çalışma,internet dünyasında bir gerçekten yola çıkılarak düşünülmelidir.O gerçek ise, günümüze wordpress gibi kodlara yapılan bruteforce gibi atakların tamamına yakını Rusya,Çin,Amerika vs gibi ülkelerden gelmekte olduğudur.Şifreniz kırılamasa dahi bu yapılan bot,bruteforce saldırıları sunucuları yormaktadır.
İkinci gerçek ise webmasterları ve sunucu yöneticilerini ilgilendirmekte.Düşünün ki 500 websitesi host ediyorsunuz ve bunun tamamına yakını wordpress.Her gün yüzbinlerce şifre kırma saldırısı host ettiğiniz websitelerinize yapılıyor.Bundan korunmanın en iyi yolu nedir?
Bir vatandaş ücret karşılığı bir websitesi yaptırmış.Webmaster parayı almış,iş bitmiş.Kime neyi anlatacaksınız?Müşterinize nispeten eski kalan wordpressin güvenlik açıklarından bahsetseniz sizi muhtemelen roket bilimi ile uğraşıyorsunuz filan sanır.Ona webmasterin nerde olduğunu sorsanız,adını bile hatırlamayacaktır.
Ancak kötü şeyler herşeyi sorgusuz sualsiz değiştirir.Müşterinizin sitesi gerçekten hackenirse bu sefer sizden bir açıklama bekleyecek,sizi suçlayacak hatta güvenlik açıklarınızın olduğunu söyleyip belki kötü reklamınızı yapacaktır.
Ne yazıkki Internet Sektörü son derece zır cahil seviyesinde yürümekte.O yüzden sunduğumuz çözüm de biraz Türk İşi oldu.Söz de uzadı.Kalın sağlıcakla.
Redhat/Centos/Fedora:
sudo yum clean all
sudo yum -y install tzdata*2016g*
sudo zdump -c 2016,2017 -v “Europe/Istanbul”
sudo date
Debian ve türevleri:
sudo apt-get update
sudo apt-get install tzdata tzdata-java
sudo zdump -c 2016,2017 -v “Europe/Istanbul”
sudo date
Kaynak: http://www.musabyardim.com/linux-timezone-degisikligi/
Size çok tuhaf gelebilecek, pek yaygın olmayan, aslında bizim gibi farklı dil ve bölgesel ayarları kullanan ülkelerde çıkma olasılığı yüksek problemlerden biridir.
Bir linux hosting sunucunuza ftp bağlantısı yapılabilmesi için haliyle bir ftp sunucu kurarsınız ki bu genelde proftp veya pureftp olur.
Ftp servisi çalışmadığında yapacağınız ilk şey proftp hata loguna bakmak olur.Proftp paketiyle beraberinde gelen proftpd.conf dosyasının hemen hemen her satırı hata vermektedir.Satırları kapatıp başınızdan atabilirsiniz veya okumaya devam edip soruna kökten bir çözüm bulabilirsiniz.
Diğer yandan sunucunuzda her paket kurduğunuzda veya bir binary veya perl scripti çalıştırdığınızda ekran şuna benzer hatalar çıkmakta.Son zamanlarda peydahlanan bu hatayı görmezden gelmektesiniz.
perl: warning: Falling back to the standard locale (“C”).
locale: Cannot set LC_CTYPE to default locale: No such file or directory
perl: warning: Setting locale failed.
Locale sözünü gördüğünüzde sizi duyar gibiyim.Evet o problem.Yılların eskitemediği,bitti sandığınız ama asla bitmeyecek olan dil probleminin ta kendisi.Bitmedi.sanırım bitmeyecekte.
Bütün konu,bilgisayarın ilk zamanlarında oluşturulan standartlar,GNU C,POSIX ASCII ve utf8 karakter seti ,farklı diller,yerelleştirme ve hız ile ilgili.Merak eden nette okur araştırır.
Siz bunları merak etmiyorsanız kısaca çözüme geçin
/etc/xinetd.d/ftp_psa dosyasını açın.
ftp{} bölümünde şu satırları ekleyin.
“env = LC_ALL=C LANG=C”
Ardından xinetd servisini yeniden başlatın.Artık proftp ve tüm modülleriyle mutlu mesut yaşayabilirsiniz.
Apache web servisini resetlerken “unable to open logs” hatası alıyorsanız bu apache sistem kullanıcısının en fazla açabileceği dosya sayısını aşmışsınız manasına gelir ki sizi tebrik ederiz.Hosting işini büyütmüşsünüz.Artık öntanımlı değerlerler size yetmiyor.
Debian/Ubuntu türevi bir hosting sunucunuz varsa;
/etc/apache2/envvars dosyanızda aşağıdaki parametreyi değiştiriniz.
APACHE_ULIMIT_MAX_FILES=’ulimit -n 131072′
Centos/Redhat tabanlı bir sistem kullanıyorsanız
/usr/sbin/apachectl dosyanızı en sevdiğiniz editorle açınız.
ULIMIT_MAX_FILES= satırını # ile kapatın ve alttaki satır ile yeni tanımlamayı yapın.
ulimit -n 131072
Değerleri deneysel olarak değiştirebilirsiniz.131072 kesmedi 1,5 katına çıkarın mesela.
Benzeri olarak alternatif çözüm nispeten eski sistemlerde init.d altındaki startup scriptleri de olabilir.Örneğin /etc/init.d/http dosyasında ulimit satırını başlangıçta olacak şekilde yerleştirebilirsiniz.
Önceki şu yazımda Ubuntu Linux’ta 3 monitoru 2 ekran kartı ile nasıl kullanılabileceğinizi anlatmıştım.O yazıyı yazabilmek için birkaç (sanırım 5) gün uğraşmıştım.
Yazıdan bir iki gün sonra performans problemlerinden dolayı bundan vazgeçmiştim.
Dün ikinci el bir Saphhire Ati Radeon 5770 marka bir ekran kartı aldım.Neden bu kart diyeceksiniz? Çünkü Ubuntu’nun Ati uyumluluk listesinde tam uyumlu olduğu yazıyor.Çünkü DVI-I monitorleri destekliyor ve 3 (2 dvi + 1 hdmi) portu da aynı anda çalıştırabileceğimiz belirtiliyor.
Neticede iş tam bir plug and play işi oldu.Bill Amcanın kulakları çınlasın.Kartı anakarta taktım.Pc’yi açtım ve hiçbirşey yapmadan sonuç bu;
Not: Ahanda 5280px masaüstü.Valla zerre uğraşmadım ya.Paranın gözü kör olsun:)
Ben muradıma erdim.Bu konuyla ilgili tek bir soru işareti kaldı o da 16x bir pci-e ekran kartının slotunu kırıp x1 yuvasına taksak çalışır mı.Onu da şu makaleden okudum.Onu da bir ara test ediğ yazacağımdır.
Pcnizde kullanmak istediğiniz 3 monitor var ve bunu ekran kartınıza bağlayıp kullanmak istiyorsunuz.O iş kadar kolay değil.Neden mi?Açıklayalım.
Piyasada satılan ucuz veya orta karar ekran kartları en fazla 2 monitor destekler.Nvidia veya Amd Ati olması önemli değil.Örneğin Ekran kartınızda 1 tane vga 1 tane hdmi ve 1 tane de dvi bağlantısı var.Bunların ikisi aktiftir.Üçüncüsünde güç bulunmaz,monitor taksanız da görüntü alamazsınız.Neticede 3 ekran girişinin olması çeşitlilik yaratmak için. (BKZ Active Power)
Elbette 3 monitor bağlayabileceğiniz ekran kartları da var.Bunlar iki grup.Genelde daha üst seviye,daha yeni veya özellikle bu iş için yapılmış bazı serilen var.Mesela Amd Ati’nin 5770 – 5780 serisi.Bu kartlarda özellikle DP (Display Port) bağlantısı dikkat çekiyor.Sizin anlayacağınız eğer bir ekran kartında DP varsa ikiden fazla monitor desteklemesi büyük olasılıkla mümkün.
Diğer grup ise profesyonel kartlar.CAD uygulamalarıi,mimari,3D işleriyle uğraşanların bir pc parası kadar para saydıkları ekran kartlarından bahsediyorum.Gpro,Firepro,Quadro bunlara örnek.Bunlar 500,600 dolardan 3000-4000 dolara kadar değişen fiyatlarda bulunabiliyor.
Bizim senaryomuzda ise o kadar bütçe yok.Hatta yakınından bile geçmez.Konfigurasyon aşağıda;
1 Viewsonic 2349 23″ monitor.1920x1080px,Viewsonic 2245 22″ 1680×1050,Viewsonic 2035 20″ 1680×1050
2 Zotac 8400GS 512M Pci-E 16x Ekran Kartı,Zotac 7200GS 256M Pci-E 16x Ekran Kartı ve şu bitcoin minerların kullandığı pci-e x16 -x1 pc dönüştürücü.Başta bu dönüştürüc cihaz ile ilgili kuşkularım vardı ama aldıktan sonra bunların yersiz olduğunu anladım.Göreceğiniz gibi kullanılan malzemenin normal anakart-ekran kartı parçalarından pek bir farkı yok.Türkiyedeki alışveriş sitelerinde 80-90 TL civarında.Çinde çok daha ucuz tabi.Aşağıda fotoğrafta görebilirsiniz.
Yaklaşık beş gün cebelleştikten sonra sonunda bir X configurasyonu çıkardım.Bu kadar uzun sürmesinin sebebi elbette konu hakkında pek bir fikrimin olmayışı (oyun fian hiç ilgim yoktur ekran kartlarına) ve Nvidia konfigurasyon aracının salaklıklarını geç farketmiş olmam.Üçüncü sebep de bu X (Xorg) ile uğraşmayı sevmiyor(dum)um.Eski günlerden (Mandrake,Redhat 9 vs zamanları ) kalma bir antipatim var.
Benim amacım 3 monitorü 3 ayrı alan olarak tanımlayıp,hepsini tek bir masaüstünde birleştirmekti.İşte bu da final conf dosyası içeriği.Mantık olarak 3 monitoru de 3 ayrı Xscreen’e tanımladım ve Xineramayı aktif ettim.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 361.42 (buildd@lgw01-18) Tue Apr 5 14:33:28 UTC 2016
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 304.131 (buildmeister@swio-display-x64-rhel04-16) Sun Nov 8 22:48:17 PST 2015
Section “ServerLayout”
# Removed Option “Xinerama” “0”
# Removed Option “Xinerama” “0”
Identifier “Layout0”
Screen 0 “Screen0” 0 0
Screen 1 “Screen1” RightOf “Screen0”
Screen 2 “Screen2” LeftOf “Screen0”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “Mouse0” “CorePointer”
Option “Xinerama” “1”
EndSection
Section “Files”
EndSection
Section “InputDevice”
# generated from default
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5”
EndSection
Section “InputDevice”
# generated from default
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Unknown”
ModelName “ViewSonic VA2349 Series”
HorizSync 24.0 – 82.0
VertRefresh 50.0 – 75.0
Option “DPMS”
EndSection
Section “Monitor”
Identifier “Monitor1”
VendorName “Unknown”
ModelName “ViewSonic VX2035wm”
HorizSync 30.0 – 82.0
VertRefresh 50.0 – 75.0
EndSection
Section “Monitor”
Identifier “Monitor2”
VendorName “Unknown”
ModelName “ViewSonic VX2245wm”
HorizSync 30.0 – 82.0
VertRefresh 50.0 – 75.0
EndSection
Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 8400 GS”
BusID “PCI:1:0:0”
Screen 0
EndSection
Section “Device”
Identifier “Device1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7300 SE/7200 GS”
BusID “PCI:2:0:0”
EndSection
Section “Device”
Identifier “Device2”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 8400 GS”
BusID “PCI:1:0:0”
Screen 1
EndSection
Section “Screen”
# Removed Option “MetaModes” “GPU-0.DFP-1: 1680×1050+0+0, GPU-0.DFP-0: 1920×1080+1680+0, GPU-1.DFP-0: 1680×1050+3600+0”
# Removed Option “MultiGPU” “On”
# Removed Option “BaseMosaic” “On”
# Removed Option “nvidiaXineramaInfoOrder” “DFP-1”
# Removed Option “metamodes” “DVI-I-0: nvidia-auto-select +3600+0, DVI-I-1: nvidia-auto-select +1680+0, HDMI-0: nvidia-auto-select +0+0”
# Removed Option “MultiGPU” “On”
# Removed Option “metamodes” “nvidia-auto-select +0+0”
# Removed Option “metamodes” “DVI-I-1: nvidia-auto-select +1680+0, HDMI-0: nvidia-auto-select +0+0”
Identifier “Screen0”
Device “Device0”
Monitor “Monitor0”
DefaultDepth 24
Option “Stereo” “0”
# Option “nvidiaXineramaInfoOrder” “DFP-0”
Option “metamodes” “DVI-I-1: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Screen”
# Removed Option “metamodes” “1680×1050 +0+0”
Identifier “Screen1”
Device “Device1”
Monitor “Monitor1”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Screen”
# Removed Option “metamodes” “1680×1050 +0+0”
# Removed Option “metamodes” “nvidia-auto-select +0+0”
Identifier “Screen2”
Device “Device2”
Monitor “Monitor2”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “HDMI-0: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Extensions”
Option “Composite” “Disable”
EndSection
Eğer işi nvidia aracına bırakırsanız twinview + Xinerema gibi bir konfigurasyon yaparak çileden çıkartıyor.Twinview Nvidia’nın geliştirdiği bir çoklu monitor destekleyen bir özellik.Tek bir cümleyle özetleyeyim.İlk iki monitorunuzu tek masaüstü (tek x screen) yaparak 3.monitorunuze yeni bir x screen’e atıyor.Bu durumda iki monitorunuz de tastamam çalışıp tek masaüstü görüntüsü verirken,3.monitor üvey evlat muamelesi görerek kapkara bir şekilde öylecene duruyor.yor.Aslında bu şekilde de bir şekilde 3 aktif monitorunuz var.Ancak programları çalıştırırken Screen 1 yani 0.1 de çalışmasının gerektiğini belirtmelisiniz vs vs.Pek kullanışlı sayılmaz.
Önemli Notlar;
Bu işi sadece bir tek nvidia driver versiyonunda (nvidia-304) yapabildim.Diğerlerinde ya işlere ters gitti ya da doğru driver değildi.Aşağıdaki ekran görüntüsünde detaylarını görebilirsiniz.
Son not; Bu çalışmayı Ubuntu 16.04 de yaptım ama sonuç olarak bu X (Xorg) ve nvidia driver meselesi.O yüzden diğer centos,fedora,debian gibi dağıtımlarda bunun çalışacağını düşünüyorum.
Yukarıdaki konfigurasyonda malesef compizi çalıştıramadım.Nette okuduğum onlarca makalede benzer şeyler yazıyor.gnome-flashback paketini kurup eski metacity-gnome-masaüstünü kullanabiliyorsunuz.Çok keyifsiz bir durum.Unitye alıştıktan sonra eskiye dönmek hayli sıkıcı.En azından durum şimdilik böyle.
Xinerama nispeten eski ve performans kayıplarına sebep oluyor.Donanımların getirdiği twinview gibi çözümler performansta fark yaratıyor.