WordPress.org.tc Sunucu Konfigürasyonu

 WordPress.org.tc Sunucu Konfigürasyonu
Okunuyor WordPress.org.tc Sunucu Konfigürasyonu

WordPress hakkında her konuda bilginin yer alacağı yeni adresimiz wordpress.org.tc’yi, bir blog gibi, ilk anından itibaren sizlerle paylaşıyoruz.

Baştan sona izlediğimiz her adım aşağıdaki gibidir.


1) .TC Domain Kaydı

İlk olarak domain kaydımızı yapıyoruz. WordPress kelimesinin geçtiği jenerik bir domain bulmak neredeyse imkansız. Şu an, WordPress ismimin geçtiği, bilinen 400 uzantıdan neredeyse tamamı kaydedilmiş durumda. Son ihtimal olarak .TC uzantısını denedik ve bingo! org.tc uzantısı boştaydı. Rakibimiz olmak veya yatırım yapmak istiyorsanız wordpress.pro.tc domaini de boşta, yıllık 25 TL karşılığında kaydedebilirsiniz.

2) Sunucu Kurulumu

Domaini satın aldık ve sunucu kurulumuna başlıyoruz.

Domaini satın alırken hosting olarak Digital Ocean VPS kullanacağımızı biliyorduk, bu yüzden ilk iş olarak NS kayıtlarımızı aşağıdaki gibi değiştirdik.

  • ns1.digitalocean.com
  • ns2.digitalocean.com
  • ns3.digitalocean.com

Siz de bu rehberi adım adım uygulayarak hiçbir bilginiz olmasa dahi kendi sunucunuzda kendi WordPress sitelerinizi barındırabilirsiniz.

A) Digital Ocean Hesap Açma

Henüz üyeliğiniz yoksa Digital Ocean’a üye olun.

Bu bağlantıyı kullanarak üye olduğunuz ilk 2 ay boyunca kullanabileceğiniz 100$ bakiye hesabınıza tanımlanmış olacak. Biz burada aylık 5$ ödemeli sunucu kullanacağız ancan her halükarda 2 ay ücretsiz sunucu edinmiş olacaksınız.

Ayrıca buraya da bir paraf atmakta fayda var. İlerleyen zamanlarda tam burada, 1 yıl ücretsiz VPS veren firmaları paylaşacağız.

B) Sunucu Kurulumu Öncesi Ayarlar

Hesabımızı açtıysak, mecburen ilk olarak New Project butonuna basarak proje oluşturuyoruz.

C) SSH Key Oluşturma

Projemiz cepte. Sıra geldi SSH Key oluşturmaya. Dilerseniz oluşturmayabilirsiniz. Hatta giriş seviyede bir kullanıcı için böylesi daha kolay.

SSH Key oluşturmadan sunucu kurulumuna geçmek istiyorsanız düşük güvenlikli kurulum bölümüne atlayabilirsiniz.

SSH Key nedir?

SSH Key temel olarak bir erişim kimlik bilgisidir. İşlevi, kullanıcı adları ve parolalara benzer, ancak anahtarlar sistem yöneticileri ve ileri düzey kullanıcılar tarafından tek oturum açma uygulamak için kullanılır. Sunucuna bağlanırken parola girmek yerine, sunucuya ve SSH istemcinize eklediğiniz bir anahtar çiftini kullanabilirsiniz.

SSH Key kullanmanın avantajı nedir?

SSH Key kullanmanın amacı, parolalardaki gibi deneme-yanıma yoluyla aşılamayacak kadar güçlü bir anahtar çifti oluşturabilmektir. Bu sayede sunucunuza en yüksek yetkili, yani root olarak bağlanırken şifre girmeniz gerekmez. Sunucu ve SSH istemciniz bir defa ayarlandıktan sonra otomatik olarak bağlanabilirsiniz.

SSH Key kullanmanın dezavantajı var mı?

Aslında yok. Yalnızca giriş seviyesindeki kullanıcıların bunu oluşturmak için bilgisayarına PuTTygen kurması gerekir. Yalnızca 5 dakika kadar işinizin uzayacaktır. Daha sonraki girişlerinizde şifre girmeniz gerekmeyeceği için aslında zamandan tasarruf bile sağlayabilirsiniz.

Kullanmak istiyorsanız aşağıdaki bağlantıyı takip ediniz.

PuTTygen ile SSH Key Oluşturma ve PuTTy’de Kullanımı

ssh-keygen dokümanını uygulayıp Public ve Private Key çiftini oluşturduysanız Digital Ocean’da Settings > Security yolunu izleyerek SSH keys sekmesinden Add SSH Key butonuna basalım ve PuTTy Key Generator’den aldığımız Private Key çıktısını buraya yapıştıralım.

Artık hazırız.

Düşük Güvenlikli Kurulum

ssh-keygen kullanmadan kurulum yapmak istiyorsanız bu adımda hiçbir şey yapmanıza gerek yok. Sunucuya giriş yapmak için ihtiyacınız olan kullanıcı, IP ve şifre e-posta adresinize gönderilecek.

Droplet Oluşturma

Ön ayarlarımız tamam ise sağ üstteki Create butonuna basarak sunucumuzu VPS sunucumuzu oluşturalım. Sırasıyla aşağıdaki seçenekleri uyguluyoruz.

  • Choose an image: CentOS 7.6 x64
  • Choose a plan: STARTER/Standard
  • $5 /mo: 1 GB Ram / 1 CPU – 25 GB SSD disk – 1000 GB transfer
  • Choose a datacenter region: Amsterdam
  • Select additional options: IPv6
  • Authentication: SSH Key bölümünde anlattığımız keyi seçin. Yoksa boş bırakınız.
  • Finalize and create: Burada Choose a hostname bölümüne FQDN belirliyoruz. Alan adınızın başına server ekleyerek yazabilirsiniz. Bizimki server.wordpress.org.tc

Her şey tamam sayılır. Create droplet butonuna basarak sunucu oluşturuyoruz.

D) Digital Ocean VPS Sunucuya Domain Bağlama

Sol menüden Networking sekmesine tıklıyoruz. Add domain butonuna bastıktan sonra yalnızca Digital Ocean Nameserver kayıtlarının olduğu bir ekran bizi karşılıyor.

Buraya A, AAA, CNAME ve MX kayıtlarımızı giriyoruz.

A Kaydı Ekleme

  • Hostname: @
  • WILL DIRECT TO satırına tıkladığımızda biraz önce kurduğumuz sunucu açılacak. Tıklayalım, seçelim TTL (SECONDS) alanına dokunmadan Create Record butonuna basalım.

Domaini www olarak kullanmak için CNAME Kaydı Ekleme

Artık tarayıcılar bile www ön ekini adres satırından siliyor ancak www.domain.tld yazıldığında sitemize ulaşılabilmesi için CNAME kaydı eklememiz gerek. Bunun için CNAME sekmesine geliyoruz ve;

  • Hostname: www
  • IS AN ALIAS OF: domain.tld / Yani alan adınızı olduğu gibi yazın.

AAAA / IPv6 Kaydı Ekleme

Digital Ocean sunucumuz IPv6 desteklediği için bu kaydı eklememizde fayda var. IPv6 bir SEO kriterleridendir ve olumlu etki sağlar.

  • HOSTNAME: @
  • WILL DIRECT TO: Sunucumuz

MX Kaydı Ekleme

WordPress için kuracağımız VPS sunucuya mail server kurmayacağımız için biz Yandex Kurumsal Mail çözümünü kullanacağız. Bu yüzden elimiz değmişken Yandex Mail’in MX kayıtlarını şimdiden ekliyoruz.

  • Hostname: @
  • MAIL PROVIDERS MAIL SERVER: mx.yandex.net
  • PRIORITY: 10

İsminiz, admin veya info mail almak için rehberimizi takip edebilirsiniz.

Info Mail Alma | Yandex ile Kişisel / Şirket Maili Açma

E) Sunucuya Bağlanma

Her şey neredeyse tamam. Şimdi sunucumuza bağlanıyoruz.

Bağlanmak için PuTTy ile SSH Key Kullanımı bölümünü inceleyebilirsiniz.

F) Güncelleme ve Gerekli Araç/Eklenti Kurulumu

Öncelikle aşağıdaki komutla kullanacağımız metin editörü ve sıkıştırma uygulamalarını kuruyoruz.

yum install wget zip unzip nano -y

Şimdi güncelleme yapmadan önce küçük bir FQDN (Fully Qualified Domain Name) düzenlemesi yapacağız.

nano /etc/hosts

Burada IPv4 adreslerinin altına sunucu IP adresimizi yazıyor, bir boşluk bırakıyoruz aşağıdaki kısmı kendimize göre düzenleyerek ekliyoruz.

<IP Adresi> server.domain.tld server

Son hali aşağıdaki gibi olmalı.

Ctrl X tuşlarına basarak, Y ve Enter’a basıyor, kaydediyor ve çıkıyoruz.

Güncellemeye hazırız.

yum update -y

Bizim güncellememiz yaklaşık 4 dakika sürdü. Complete! yazısını gördüyseniz tamamlanmıştır.

Kurulumun ileri aşamalarında işimize yarayacak geliştirici eklentileri ve güvenlik ayarını yapıyoruz.

yum group install "Development Tools" -y
setenforce 0

Güncelleme tamam.

G) Nginx Kurulumu

Nginx reposunda küçük bir değişiklik yapıyoruz. Bunun sebebi güncel ve derli-toplu bir kurulum elde etmek.

nano /etc/yum.repos.d/nginx.repo

Aşağıdaki kodları içine yapıştırıyoruz.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

Yüklemeye geçebiliriz.

yum install nginx -y

Nginx’i etkinleştirelim ve başlatalım.

systemctl enable nginx
systemctl start nginx

Her şey yolundaysa sunucu IP adresinizi girdiğinizde bu ekranı görmemiz gerekiyor.

Nginx Konfigürasyonu

Şimdi Nginx konfigürasyonumuzu düzenleyeceğiz.

nano /etc/nginx/nginx.conf

Açılan ekrandaki her şeyi silerek bu aşağıdakileri yapıştırın.


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   3;
    types_hash_max_size 2048;

    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types text/plain text/css application/json application/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_vary on;
	gzip_comp_level    5;
	server_names_hash_bucket_size 128;
	fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=wpcache:30m max_size=512M inactive=600m;
    #The maximum size of an uploaded file.
    client_max_body_size 124M;
    include /etc/nginx/conf.d/*.conf;
}

Şimdi sanal hostumuzu düzenleyelim.

nano /etc/nginx/conf.d/default.conf

Burada site adınızı kendinize göre düzenleyin.

#Ornek Nginx Sanal host by https://genelsite.com/
server {
  listen 80;
  server_name wordpress.org.tc www.wordpress.org.tc; 
	  
        root  /var/www/html;
        index index.php index.html index.htm;            
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~* /\. {
                  deny all;
          }
		  #browser caching of static assets
    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff)$ {
        expires 7d;
		fastcgi_hide_header "Set-Cookie";

}  
          location ~ [^/]\.php(/|$) {
                  fastcgi_split_path_info ^(.+?\.php)(/.*)$;
                  if (!-f $document_root$fastcgi_script_name) {
                                  return 404;
                  }
                  fastcgi_pass 127.0.0.1:9000;
                  fastcgi_index index.php;
                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                  include fastcgi_params;
set $do_not_cache 0;
if ($request_method = POST) {
set $do_not_cache 1;
}
if ($query_string != "") {
set $do_not_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $do_not_cache 1;
}
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
set $do_not_cache 1;
}
fastcgi_cache        wpcache;
fastcgi_cache_key    "$request_method:$scheme://$host$request_uri";
fastcgi_cache_valid  200 60m;
fastcgi_no_cache     $do_not_cache;
fastcgi_cache_bypass $do_not_cache;
add_header X-F-Cache $upstream_cache_status;				  
          }
  }

Sırada PHP kurulumu.

H) Centos 7 PHP 7.4 Kurulumu

PHP son sürüm 7.4 sürümünü kullanıyoruz.

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php74
yum install php php-cli php-common php-pear php-bcmath php-gd php-zip php-dom php-imagick php-mysql php-mysqlnd php-gd php-fpm php-intl php-xml php-opcache php-apcu php-imagick php-mbstring php-soap -y

Etkinleştirelim, çalıştıralım ve kontrol edelim.

systemctl enable php-fpm
systemctl start php-fpm
php -v

Aşağıdaki çıktıyı aldıysak her şey yolundadır.

PHP 7.3.17 (cli) (built: Apr 14 2020 08:29:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.17, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.17, Copyright (c) 1999-2018, by Zend Technologies

MariaDB 10.1 Kurulumu

CentOS 7 MariaDB server 10.1 kurulumu için sırasıyla aşağıdaki komutları uygulayalım.

nano /etc/yum.repos.d/MariaDB10.repo

Açılan dosyaya aşağıdaki satırları ekliyoruz ve kaydediyoruz.

# MariaDB 10.1 CentOS repository list - created 2016-01-18 09:58 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Yüklemeye başlayalım.

yum -y install mariadb-server
systemctl start mariadb
systemctl enable mariadb

Yükleme ve etkinleştirme tamam. Şimdi kuralım.

mysql_secure_installation

Kurulumu aşağıdaki gibi tamamlayabilirsiniz. Her işlemden sonra enter tuşuna basınız.

  • Enter current password for root (enter for none): Enter
  • Set root password? [Y/n]: Enter
  • New password: Belirleyeceğiniz şifre
  • Re-enter new password: Belirleyeceğiniz şifre yeniden
  • Remove anonymous users? [Y/n]: Enter
  • Disallow root login remotely? [Y/n]: Enter
  • Remove test database and access to it? [Y/n]: Enter
  • Reload privilege tables now? [Y/n]: Enter

MariaDB kurulumu da tamamdır.

Şimdi WordPress için database ve kullanıcı oluşturalım.
mysql -u root -p

MariaDB root şifremizi giriyoruz ve aşağıdaki DB şifre ve kullanıcı adını kendinize göre düzenleyerek satır satır yazıyoruz.

  • dbismi: Vermek istediğiniz database adı
  • dbkullanicisi: Database kullanıcı adı
  • DBSifresi: Database’e vereceğiniz şifre
create database dbismi;
grant all privileges on dbismi.* to [email protected] identified by 'DBSifresi';
flush privileges;
exit;
J) SSH ile WordPress Yükleme

cd komutuyla www klasörüne gidiyoruz.

cd /var/www

Buradaki html klasörünü silelim çünkü WordPress’i indirip klasörü html olarak adlandıracağız.

rm -fr html

Son sürüm Türkçe WordPress indirelim.

wget https://tr.wordpress.org/latest-tr_TR.zip

Klasörden çıkaralım ve adını html olarak değiştirelim.

 unzip latest-tr_TR.zip
mv wordpress/ html
chown -R nginx:nginx html
service nginx restart
service php-fpm restart

Birkaç küçük ayar daha.

PHP.ini Timezone ayarlamak için;
nano /etc/php.ini

;date.timezone = alanını buluyoruz ve başındaki noktalı virgülü kaldırarak sonuna Europe/Istanbul ekliyoruz. Son hali:

date.timezone = Europe/Istanbul
Kullanıcı izinlerini ayarlamak için:
nano /etc/php-fpm.d/www.conf
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

apache yazan yerleri silerek nginx yazıyoruz sonra aşağıdaki satırlarda nobody yazan yerleri nginx ile değiştiriyoruz.

;listen.owner = nobody
;listen.group = nobody

CTRL + X ile kaydedip çıkalım.

service nginx restart && service php-fpm restart

3) WordPress Kurulumu

Artık her şey tamam sayılır. domain.tld (alan adınız) yazdıktan sonra karşınıza çıkan alanlara Database Oluşturma bölümünde oluşturduğumuz DB bilgilerini girerek WordPress’in ilk kurulumunu tamamlayabilirsiniz.

Hepsi bu kadar.

Yapılan Yorumlar
Bir Yorum Yapın