DigitalOcean sanal sunucu kurulumu ilk işlemler

Sık sık DigitalOcean’da yeni makinalar kuruyorum ve/ya siliyorum.

Her kurulumdan sonra ilk olarak yaptığım belirli işlemler var. Burada onları listelemek istiyorum.

  1. /etc/ssh/sshd_config dosyasındaki AcceptEnv LANG LC_* satırının başına # koy. Özellikle Mac bilgisayardan bağlanıyorsanız, terminalde sürekli karakter kodlaması hatası alırsınız. Bu işlem onu engelliyor.
  2. /etc/ssh/sshd_config dosyasının sonuna ClientAliveInterval 60 ve ClientAliveCountMax 10 ekleyin. SSH ile bağlandığınız makinalarda terminal pencerelerinde bir süre işlem yapmazsanız bağlantı kapanır. Bu satırlar bağlantının kapanmasını engeller. Bir nevi PING işlemi gibi düşünebilirsiniz. ClientAliveInterval saniye cinsinden ne sıklıkla bağlantının canlandırılacağını, ClientAliveCountMax de bu işlem kaç kez tekrarlanacağını belirtir. Terminal penceresinde SSH içinde herhangi bir işlem yaptığınızda bu sayaçlar sıfırlanır.
  3. Bu iki satırı girdikten sonra makineyi yeniden başlatarak bu yapılandırmanın devreye girmesini sağlayın.
  4. Yeniden bağlandıktan sonra, işlemlere root olarak devam etmemek için, sudo yetkisi olmayan bir kullanıcı oluşturmanızı öneririm. Neden sudo yetkisi olmayan? Olur da bir şekilde web sunucunuza sızarlarsa yetki yükseltmesi dahil sudo yetkisi olan bir kullanıcıyla fazla birşey yapamazlar. Ubuntu kullanıyorsanız komut şu: adduser kuladı. Eğer daha sonra şifreyi kaldırmayacaksanız buraya girdiğiniz şifreyi unutmayın 🙂
  5. Oluşturduğunuz kullanıcının şifresini silip sadece SSH anahtarıyla erişilebilir kılmanızı öneririm. Böylece kabakuvvet saldırılarını anlamsız kılmış olursunuz. Bunun için, o kullanıcıya geçin: su kuladı. Sonra .ssh dizinini oluşturun: mkdir ~/.ssh. Ardından da kendi anahtarınızı id_rsa.pub dosyasının içine yerleştirin: nano ~/.ssh/authorized_keys. Yalnız bu işlemden sonra bu .ssh dizininin ve bu dosyanın izinlerini 0600 olarak değiştirmeyi unutmayın: chmod 0700 ~/.ssh ve chmod 0600 ~/.ssh/authorized_keys.
  6. Bundan sonra o makinaya root olarak değil, oluşturduğunuz yeni kullanıcıyla bağlanabilirsiniz.

Yeni sanal sunucunuz hayırlı olsun 😉

Bu makinayı örütbağ sunucu olarak kullanacaksanız Apache, PHP ve MySQL kurulumu da burada.

DigitalOcean Ubuntu Server sanal sunucu üzerine Apache, PHP ve MySQL kurulumu

Sık sık DigitalOcean’da Ubuntu sanal makinalar kuruyorum. Bu sanal makinaları da çoğu zaman PHP siteleri yayınlamakta kullanıyorum. Dolayısıyla sık sık Apache-PHP-Mysql üçlüsünü (LAMP diyorlar) kurup yapılandırıyorum. Bu yazıda bu üçlünün kurulumundan bahsedeceğim.

  1. Apache kurmak için apt-get install apache2 yeterli, ama PHP kuracaksanız buna ihtiyacınız da kalmıyor, apt-get install libapache2-mod-php komutu Apache’ye otomatik olarak kuruyor.
  2. İkinci olarak PHP’nin neredeyse her durumda ihtiyaç duyduğu paketleri kuruyoruz: apt-get install php-xml php-zip php-mysql php-mbstring php-json php-imap php-intl php-gettext php-gd php-cli. Bu paketleri Ubuntu zaten kuruyor olsa bile bu komutla garantilemenizi öneririm.
  3. Bu noktada bir WordPress kurulumunun ihtiyaç duyabileceği bütün PHP paketlerini kurmuş olduk, ama projenize göre şu paketlere de ihtiyacınız olabilir: apt-get install php-soap php-redis php-mongodb php-membcache php-geoip
  4. Sıra geldi MySQL kurulumuna. MySQL iki parçadan oluşuyor. Sunucu için yeterli olan mysql-server ve sunucunuza SSH ile bağlandığınızda MySQL işlemleri yapmaya yarayan mysql-client. apt-get install mysql-server mysql-client ile ikisini de kuruyoruz. Bu kurulum sırasında MySQL size kendi root kullanıcısının şifresini iki kez soracak. Karmaşık birşey yapmayı ve güvenli bir şekilde saklamayı unutmayın.

Apache, PHP ve MySQL kurulumları bitti. Artık örütbağ tarayıcınıza sunucunuzun IPsini girerek bağlanabilirsiniz. Bundan sonrası proje dosyalarının aktarılması, MySQL veritabanlarının oluşturulup yapılandırılması ve SSL sertifikalarının yüklenmesi işlemlerinden oluşuyor. Onlar da bir sonraki yazıya kalsın.

Programcıyla iletişim

Bir programcı olarak milyon kere yaşadığım bir durumdan bahsedeceğim bugün. Programcıyla iletişim adabı.

Biriyle iletişim kuracağınızda, ona karşı saygılı olmanın (tüm iletişim saygı çerçevesinde yürümelidir) iki çeşidi vardır.

Bunlardan biri konuşurken, biri de konuşmanın dışında olur. İletişim sadece yüzyüze, telefonda, sosyal mecralarda ya da anlık mesajlaşma ortamlarında, iletişim anında olmaz. Konuşurken, iş ilişkisi içinde olduğunuz insana karşı, elbette ki saygılı olmalısınız. Bu, topluluk olmanın doğal bir kuralıdır. Ama bir de konuşmaya başlamadan önce ve konuşma bittikten sonra da saygılı olmak gerekir ki, (en azından programcılara karşı) çoğu kişi bunu pas geçiyor.

İster müdür ister herhangi bir personel olsun, çoğu insanın yaptığı iş bölünmeyi kaldırabilir. Çok fazla zihinsel faaliyet gerektirmez veya görüşme bittikten sonra o insan çalışmasına kolayca dönebilir.

Fakat programcılık böyle değildir. Programcıyı böldüğünüz mü kendini tekrar işine vermesi çok uzun sürebilir.

Çünkü programcılık, çoğu zaman yoğun zihinsel çaba gerektiren ve bloklar halinde yapılan bir iştir. Programcı bir işi yaparken araya girilirse kendini tekrar işine vermesi saatler bile sürebilir.

Programcılık kişinin kendini dış dünyadan soyutlamasını gerektirir. Kodla uğraşan programcının konuşma şekli bile değişir, daha ciddi, daha katı ve daha kopuk hale gelir.

O nedenle, programcıyla, zorunlu olmadıkça anlık mesajlaşılmaz. Çalışırken bölünmez, bölünmemelidir. Programcıyla muhatap olan kişinin aklına bir konu ya da espri geldiğinde ya da birşey konuşmak istediğinde, programcıyı bölmesi, programcının veriminin düşmesi anlamına gelir.

Bu argümanın karşı tarafında “o zaman o da anlık mesajlaşma programını kapatsın” düşüncesi yer alır. Fakat bu argümanın atladığı bir detay var, ki o da şu: Telefonunuzu kapatmak veya anlık mesajlaşma programınızı kapatmak, hem dış dünyayla iletişim kurmanızı sağlayan organları kapatmak, hem de kendinizi acil durumlara da kapatmak anlamına gelir. Telefonunuzu kapattığınızı düşünün. Acil bir durum olduğunda eşiniz, anne veya babanız size ulaşamaz. Yani bu argüman aslında pek de geçerli değil.

Uzun lafın kısası, bilgisayar başında olan programcıları bölmeyin. Ona saatler kaybettirebilirsiniz.

Örütbağ sitelerimde kullandığım servisler

Örütbağ (web) siteleri geliştirirken, eğer herşeyi kendiniz yapmaya çalışırsanız, hem iş çok uzar, hem de geliştirdiğiniz ürünlerde hatalar çıkma ihtimali artar (nihayetinde ne kadar çok kod o kadar çok olası hata). Bu nedenle çok sayıda dış servise ihtiyaç oluyor. Mesela epostaları harici bir servis kullanarak gönderebilirsiniz. Veya para birimleri arası çevrimleri dış bir servise yaptırabilirsiniz.

Benim kullandığım ya da gerektiğinde kullanmayı düşündüğüm dış hizmetler şunlar (diğerlerini aklıma geldikçe yazacağım):

numverify.com

Telefon numaralarını doğrulama ve numaralar hakkında daha detaylı bilgi edinme amaçlı kullanılıyor. Gönderdiğiniz numaranın ülke, eyalet, şehir bilgilerini ve geçerli bir numara olup olmadığını dönüyor.

crisp.chat

Sitenizi ziyaret edenlerle canlı olarak konuşmak için. Mobil uygulaması da var. Ücretsiz versiyonu iki personele izin veriyor. Ücretleri de gayet makul.

WordPress medya kütüphanesini temizleme

WordPress’te yeni bir site başlattıysanız, ilk işlerden biri tema seçmek, ikincisi de temanın demolarından istediğinizi sitenize kurmaktır.

Diyelim üç demo kurdunuz, sonunda kendi sayfalarınızı oluşturma noktasına geldiniz. Kendi sayfalarınızı oluşturmak için varolan sayfaları silmeye bile gerek yok, ama üç demonun sonunda medya kütüphanenizde bir sürü resim var ve bu resimleri silmek yararınıza olacaktır.

Neden? Çünkü bir WordPress sitesinde en çok yer kaplayan ve yönetimi en zor olan öğeler medya dosyalarıdır. Çok fazla resim olduğunda aradığınızı bulmakta çok zorlanırsınız.

Çözüm, medya kütüphanesini boşaltmak. Ama WordPress bu için kolay bir yöntem sunmuyor. Ve bu çözümü uygulayabilmek için de biz çözüme ihtiyacımız var.

Şu yolu izleyerek medya kütüphanenizi boşaltabilirsiniz (uyarı, bu işlem bütün resimleri siler, geri dönüşü yoktur):

  1. Medya kütüphanenizi açın.
  2. Kütüphanedeki bütün resimler yüklenene kadar sürekli sayfa altına inin.
  3. Bütün resimlerin yüklendiğinden emin olduktan sonra, sayfanın en üstüne gelin ve Bulk Edit / Toplu Düzenle butonuna tıklayın.
  4. Geliştirici konsolunu açın.
  5. Şu komutu verin:
jQuery("ul.attachments li.attachment").prop("aria-checked", "true").addClass("selected")

Geçmiş olsun.

Her WordPress kurulumunda olması gereken eklentiler

Activity Log
Change Author
Comet Cache
Contact Form 7
Enhanced Media Library
Flamingo
Google Analytics for WordPress by MonsterInsights
Loco Translate
OneSignal Push Notifications
Page Break
Phoenix Media Rename
PolyLang
Scheduled Post Trigger
Slider Revolution
TinyMCE Advanced
Wordfence Security
WPBakery Visual Composer (cogu temayla gelir)
WP Extended Search
WP Facebook Pixel
WP-Mail-SMTP / Easy WP SMTP
Yoast SEO

MacOS High Sierra’ya yükseltmeli miyim?

Zorunlu değilsiniz. Yükseltince de çok büyük farklar beklemeyin. Ana işlevi bilgisayarınızın dosya sistemini değiştirmekten başka birşey değil. Fotoğraf editlemeyle ilgili birkaç yenilik de geliyor am a benim hiç kullandığım özellikler değil.

Yalnız şuna dikkat edin, kurulumdan sonra açılışta çalışan bazı programların kendiliğinden başlamadığına şahit olacaksınız. O yüzden MacOS High Sierra’yı kurmadan önce açılışta çalışan programları bir kenara not etmenizi öneririm, çünkü sonra o listeye ihtiyacınız olacak.

Yaklaşık yarım saat süren MacOS High Sierra kurulumunu tamamladıktan sonra bilgisayarı birkaç kez açıp kapatmam gerekti. İlk açılışta bazı programlarımın açılmadığını gördüm. Sonra listeye bir kısmını ekledim ve sistemi yeniden başlattığımda, eklediklerimin hiçbiri yoktu, önceden ekli olanların da hemen hepsi kaybolmuştu. Sonra tekrar başlattım, listeyi otomatik açılmasını istediğim servis ve programlarla doldurdum, ve son bir kez tekrar başlattım. Açılış programları ancak ondan sonra düzeldi.

Aslında hiç yükseltmeden de olur ama insan herşeyin en yeni, en janjanlı olanını istiyor 🙂

MacOs’ta nginx ve php-fpm boş sayfa problemi çözümü

Saatlerdir çözümünü aradığım bir sorun vardı, sonunda buldum. Buradan da paylaşayım.

Sorun şu: Mac kullanan bir örütbağ programcısı iseniz, MacOs ile birlikte gelen Apache ve PHP (sürümleri eski olduğu için) size yetmez. Çözüm nginx ve php-fpm kurmaktır. Homebrew ile bunları kolayca kurabilirsiniz:

brew install nginx homebrew/php/php72
brew services start nginx
brew services start php72

Buraya kadar sorun yok. Ardından site ayarlanızı falan yaparsınız, ama PHP’nin çıktı üretmesini bir türlü sağlayamazsınız. PHP sayfaları hep bomboş bir ekran döner. Tarayıcı dahil hiçbir yerde de bir hata kodu veya mesajı bulamazsınız. Aslında çözüm çok basittir. Nginx’teki

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

ayarını

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

yaparsınız, ve sorun çözülüverir. Geçmiş olsun.

Her durum için MacOS uygulamaları

Yıllardır Mac kullanıyorum, bu süre zarfında belirli uygulamalar fayda yönünden öne çıktı. Ben de kullandığım uygulamaları, başkaları için de faydalı olur umuduyla, buraya yazmaya karar verdim.

Studio 3T

Kendi sitesinden indirebileceğiniz uygulama bir MongoDB istemcisi

Airmail

App Store’dan indirebileceğiniz uygulama, çok pratik ve yetenekli bir eposta istemcisi. Gmail kısayolları bile var.

Android File Transfer

Android cihazlarla dosya alış-verişi yapmanız gerekiyorsa, en hızlı ve verimli yolu bu uygulama.

App for Trello

İşlerinizi Trello ile takip ediyorsanız, sistem tepsisinden (Apple’da menü çubuğu deniyor) Trello’ya kısayolla erişebiliyorsunuz. App Store’dan indirebilirsiniz.

AppCleaner

Benim gibi sık sık uygulama kurup kaldıranlardansanız, uygulamanın bıraktığı tüm izleri (ayarlar, önbellek, açılış servisleri vb) silmek gerekir. Normalde bir .app klasörünü çöpe attığınızda sadece dizin silinmiş oluyor, diğer izler silinmiyor. AppCleaner bu eksiği gidermek için yazılmış. Bir uygulamayı AppCleaner kullanarak sildiğinizde ilgili diğer dosyaları da siliyor.

Apptivate

Her gün en az bir kez başlattığım belki 10 tane uygulama var. Benzer şekilde, her gün en az bir kez açtığım belki 10 tane klâsör var. Cmd+Tab kullanmak, özellikle ardışık olarak çalışmanız gereken birkaç klâsör ya da uygulama varsa bir süre sonra gerçekten verimsiz hale geliyor. Apptivate, bu uygulamalara, klasörlere (ve dosyalara) klâvye kısayolu atamaya olanak veriyor. Mesela benim kullandığım birkaç kısayol: Alt+Z ile Chrome, Alt+S ile Safari, Alt+Y ile Sequel Pro, Alt+E ile Sublime Text. Bilgisayarınızı daha verimli kullanmak için harika bir uygulama.

Archiver

Benim TwoDollarTuesday ile çok ucuza aldığım uygulamayla her türlü pakedi (.rar, .zip, .7z, .tgz) oluşturabiliyorsunuz ve açabiliyorsunuz. Çok pratik ve bir o kadar da yetenekli. Ama eğer .zip dışında bir paket oluşturmayacaksanız ve .rar, .7z vb dosyaları açabilmek sizin için yeterliyse, The Unarchiver’ı tavsiye ederim, çünkü Archiver oldukça pahalı.

Atom / Sublime Text / Visual Studio Code / Vim / Emacs

Eğer programcı değilseniz bu programlar size birşey ifade etmez, bu maddeyi atlayabilirsiniz. Eğer programcıysanız, bu beş programdan istediğinizi kullanarak kod yazabilirsiniz. Sektörün en popüler beş editörü: Atom, Visual Studio Code, Vim ve Emacs ücretsiz, Sublime Text ise ücretli (ve bence verdiğim paraya fazlasıyla değiyor). Ben Sublime Text (ücreli) kullanıyorum. (S)FTP(S) eklentisi (ücretli), SQLTools (ücretsiz) ve Git eklentisi (ücretli) sayesinde tarayıcı dışında başka bir uygulamaya ihtiyaç duymadan çalışabiliyorum. Kullandığım Sublime Text eklentileri ile ilgili ayrı bir yazı yazacağım.

Bartender 2

Menü çubuğumda belki 20 tane simge var. Ama bunların hepsini görmeye ihtiyacım yok. Bana üç tanesinin (mesela saat, klâvye düzeni ve Dropbox simgesi) görünür olması yeterli. Bartender bu işe yarıyor. İstediğiniz simgeyi gizleyebiliyorsunuz, bir tuş kısayoluyla görünür yapabiliyorsunuz. Vereceğiniz paraya değer.

Blogo (AppStore)
Brainwave Studio
Caffeine
CheatSheet
Chrono Plus
CleanMyMac 3 (TwoDollarTuesday)
ClipMenu (artik indirilemiyor)
CloudMounter
CocoaRestClient
CodeRunner
ColorSnapper 2 (AppStore)
Commander One Pro
CopyQ
CrossOver 15 (TwoDollarTuesday)
Dash 2 (sitesinden)
Day-O
default folder x
Desaturate-2.1
Docker (sitesinden)
Dropbox (sitesinden)
Dropzone 3
Endurance
FilePane
Finicky
Firefox
Flux
Fork (sitesinden)
ForkLift
FreeRuler
Gardenscapes
Google Chrome
Google Drive
iHosts
ImageOptim (ücretsiz, sitesinden)
iStat Menus
iTerm (ücretsiz, sitesinden)
iTimer
Keynote
LastPass (sitesinden)
Lightshot Screenshot
Loading
Mac Screen Recorder (TwoDollarTuesday)
MindNode Pro
Mousecape (ücretsiz, sitesinden)
MplayerX (ücretsiz, sitesinden)
Near Lock
Numbers (AppStore)
nvAlt
Opera
Optimal Layout (AppStore)
Pages
Pocket (ücretsiz, sitesinden)
PopClip
RDM (ücretsiz, internetten)
Robomongo
Sequel Pro (ücretsiz, sitesinden)
Shiori (ücretsiz, sitesinden)
Shortcat (ücretli, sitesinden)
Shuttle (ücretsiz, sitesinden, GitHubda)
Simplenote (AppStore)
Slack (AppStore)
Sublime Text (ücretli, sitesinden)
TextExpander
TinkerTool (ücretsiz, sitesinden)
TorchLight
Total Video Converter Pro
Tower
Transmission
Transmit
Twitter
Type2Phone
Ukelele (ücretsiz, sitesinden)
Unclutter (ücretli, sitesinden)
Up&Down
uTorrent (ücretsiz, sitesinden)
VirtualBox (ücretsiz, sitesinden)
WhatPulse (ücretsiz, sitesinden)
WhatsApp
Wunderlist
XCode
zoom.us