CentOS 7 LAMP, WordPress ve PHP APC Kurulumu [1]

Yazar: | 26 Aralık 2017

WordPress performans sunucusu kurulum rehberinin ikinci bölümünde, CentOS 7 sunucumuza LAMP, WordPress ve bir PHP hızlandırıcı olan APC’nin kurulumu gerçekleştireceğiz.

Bölümler

Bunun için öncelikle daha önce oluşturduğumuz VPS’ye PuTTy gibi bir SSH terminal istemcisi kullanarak bağlanıyoruz. Ücretsiz VPS ile deneme yapmak isteyenler ve henüz bir sunucu edinmemiş olanlar ilgili makaleyi inceleyebilirler.

CentOS 7 sunucu kurulumu nasıl yapılır?

CentOS 7 Sunucu Kurulumu

Sunucuya bağlandıktan sonra işletim sistemini güncelleyin.

sudo su -
yum update -y

CentOS 7 LAMP Stack Kurulum

Sonra, WordPress’i başlatmak için gereken minimum paketleri kuracağız. Bu modüller ve programlar:

  • Apache 2.4
  • MariaDB 5.5
  • PHP 5.4
  • php-mbstring
  • wget
  • unzip
yum install httpd php php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt mariadb-server wget unzip nano -y

Geçici olarak selinux’u devre dışı bırakıyoruz.

setenforce 0

SSH bağlantısını yeniden başlatsanız bile selinux’u devre dışı bırakmak için nano’yu kullanarak “/etc/selinux/config” dosyasını düzenleyin, “SELINUX = enforcing” satırını “SELINUX = disabled” olarak değiştirin ve değişikliklerinizi kaydedin.

nano /etc/selinux/config

Centos 7 disable selinux

Gerekli değişiklikler yapıldıktan sonra önce CTRL+X, sonra Y tuşuna basarak kaydediyoruz.

AWS kullanmıyorsanız, Firewalld yüklenmiş olabilir. Lütfen firewalld’ı da devre dışı bırakın. Eğer selinux ve firewalld’i devre dışı bırakılmazsa, port 80 HTTP erişimi ve sunucu dosya sistemi yazımı reddedilebilir.


Apache Ayarları

Apache’yi başlatmadan önce, WordPress’in kalıcı bağlantı işlevinin çalışmasına izin vermek için httpd.conf dosyasını düzenlemeliyiz. “/var/www/html” dizini için “/etc/httpd/conf/httpd.conf” dosyasını açın ve “AllowOverride None” satırını “AllowOverride All” olarak (satır 151’de olmalı) değiştirin. Değişikliklerinizi kaydedin. Bu ayarla, WordPress yüklendiğinde .htaccess dosyası oluşturabilecektir.

nano /etc/httpd/conf/httpd.conf

AllowOverride None bölümünü kopyalayıp, Apache konfigürasyon dosyası içinde CTRL + W tuş kombinasyonunu kullanarak arama yapabilirsiniz. Birkaç farklı satırda aynı metne rastlayabilirsiniz, değişiklik yapacağınız satır aşağıdaki gibi olmalı.

Centos 7 allow override

Hangi satırda değişiklik yaptığınızdan emin olmak istiyorsanız Notepad++ ve WinSCP programlarını yükleyerek işlemleri txt metin editörü ile yapabilirsiniz.

Notepad++ İndir

WinSCP İndir

Sonra, Apache 2.4 ve MariaDB 5.5’i başlatıyoruz.

systemctl enable httpd
systemctl enable mariadb
systemctl start httpd
systemctl start mariadb

Apache’ye hoş geldiniz ekranı ile karşılaşmak için IP adresinizi veya bir domain atadıysanız site adresinizi yazın. Ben bu kurulum için boşta olan herhangi.net domainimi kullanıyorum.

Apache testing 123


MariaDB ile Veritabanı ve Kullanıcı Oluşturma

Sonra, MariaDB’yi başlatıp bir veritabanı ve kullanıcı oluşturacağız. Bunun için aşağıdaki komutu girin.

mysql_secure_installation>

Root kullanıcı için bir şifre ayarladıysanız bu şifre sorulur. Şifre belirlemediyseniz yeni bir şifre belirlemeniz istenecektir.

Tüm işlemleri birlikte yaptığımızı varsayarak aşağıdaki adımları izleyebilirsiniz:

Enter current password for root (enter for none): Enter

Set root password? [Y/n]: Enter

New password: Belirleyeceğiniz şifre

Re-enter new password: Şifre tekrarı

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

MySQL kurulum

Belirlediğimiz şifre ile MariaDB’ye giriş yapıyoruz.

mysql -uroot -p

Veritabanınızı oluşturmak için aşağıdaki komutları girin. Veritabanı adı için “dbisim”, ana makine adı için “localhost”, veritabanı kullanıcısı için “dbkullanici” ve veritabanı şifresi için “dbsifresi” kullanıyoruz. Bu bilgileri kendinize göre değiştirin lütfen.

create database dbisim;
grant all privileges on dbisim.* to dbkullanici@localhost identified by 'dbsifresi';
flush privileges;
exit;

MariaDB kullanıcı ve database oluştur

Sonra, WordPress’i indireceğiz ve “/var/www/html” klasörü içine ayıklayıp “/var/ html” ve “/var /html/wp-content” izinlerini geçici olarak değiştireceğiz. Bu yazıda belge kökü olarak “/var/www/html” dizinini ve kullanıcı olarak Root kullanıyoruz, dilerseniz dizini ve kullanıcıyı değiştirebilirsiniz.


SSH ile WordPress Kurulumu

Anlatımda kullandığımız WordPress sürümü 26 Aralık 2017 tarihinde en güncel sürüm olan WordPress 4.9.1, daha yeni versiyonlar için https://tr.wordpress.org/txt-download/ adresini ziyaret ediniz.

cd /var/www/
wget https://tr.wordpress.org/wordpress-4.9.1-tr_TR.zip
unzip wordpress-4.9.1-tr_TR.zip
cp -rp wordpress/* html/
chmod 777 html html/wp-content

WordPress dosyalar

Sitenize geri dönüp sayfayı yenilerseniz, WordPress kurulum sihirbazı başlayacaktır. Oluşturduğumuz veritabanı ve kullanıcı bilgilerini girerek kurulumu tamamlıyoruz.

WordPress kurulum sihirbazı


Sayfa yükleme süresi ölçümü [Benchmark]

Sırada sayfa yükleme süresini ölçeceğiz. Yükleme süresini görmek için Google Chrome Page Load Time veya diğer geliştirme araçlarını kullanabilirsiniz. Yenileyin ve yükleme süresini not edin. Benim testimde süre 471 ms.

CentOS 7 Apache benchmark testi

SSH terminaline dönün ve CentOS7 sunucunuzda bir benchmark testi yapmak için ab komutunu kullanın. Ön sayfanızı 100 istek ve 10 eşzamanlı istek kullanarak test etmek için aşağıdaki komutu girin.

ab -n 100 -c 10 http://herhangi.net/

Sonuçlar:

Server Software:        Apache/2.4.6
Server Hostname:        herhangi.net
Server Port:            80
Document Path:          /
Document Length:        53259 bytes
Concurrency Level:      10
Time taken for tests:   19.047 seconds
Complete requests:      100
Failed requests:        99

(Connect: 0, Receive: 0, Length: 99, Exceptions: 0)
Write errors:           0
Non-2xx responses:      99
Total transferred:      111025 bytes
HTML transferred:       79494 bytes
Requests per second:    5.25 [#/sec] (mean)
Time per request:       1904.684 [ms] (mean)
Time per request:       190.468 [ms] (mean, across all concurrent requests)
Transfer rate:          5.69 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:   464 1869 3576.7    709   12597
Waiting:      297 1865 3573.2    709   12597
Total:        464 1870 3576.8    710   12598

Percentage of the requests served within a certain time (ms)
50%    710
66%    720
75%    741
80%    768
90%  12343
95%  12562
98%  12569
99%  12598
100%  12598 (longest request)

CentOS 7 PHP APC Kurulumu

PHP hızlandırıcı APC’yi yükleyin ve çalıştırın.

Varsayılan ayarlarda benchmark sonuçlarına sahip olduğumuza göre, performans optimizasyon ayarlamamıza devam edelim. Önce PHP hızlandırıcısı APC’yi yükleyeceğiz.

Yüklemeden önce, PHP yürütmesinin temellerini açıklayayım. PHP yürütme iki aşamada gerçekleşir. İlk aşamada PHP kaynak kodu, sözdizimi analizi ile ara koda (bayt kodu) dönüştürülür. İkinci aşamada, ara kod Zend Engine tarafından oluşturulur.

PHP Zend Engine çalışma prensibi

Bir PHP hızlandırıcısı, ilk aşamada üretilen ara kodu alır ve daha sonra kullanmak üzere önbelleğe alır. Orijinal PHP kaynak kodunda herhangi bir değişiklik olmazsa, PHP hızlandırıcısı ilk aşamayı atlayarak PHP’nin yürütme süresini hızlandırabilir. PHP kaynak kodu düzenlenirse önbellekte saklanan ara kod atılır, böylece bir PHP hızlandırıcısı olsa bile hız değişmez.

Birçok PHP hızlandırıcısı var, ancak kurulumu kolay APC’yi kullanacağız.

Önce, yum komutunu kullanarak APC’yi çalıştırmak için gerekli modülleri kurun.

yum install php-devel php-pear gcc -y

Sonra, APC’yi kurmak için pecl komutunu kullanın. Bir kurulum sihirbazı başlayacak, devam etmek için Enter tuşuna basmaya devam edin.

>pecl install apc

Derleme bittiğinde apc.so dosyası oluşturulur. Bu APC’nin çalışma mekanizmasıdır.

Centos 7 PHP APC kurulum

Aşağıdaki komutu kullanarak dosyayı açın

nano /etc/php.d/apc.ini

Aşağıdaki kodu kopyalayın ve bu dosyaya yapıştırarak, CTRL + X ile kayıt edin.

extension = apc.so
apc.shm_size = 128M
apc.enable_cli = 1;
apc.filters = filename

“apc.shm_size” paylaşılan bellek boyutudur ve “apc.enble_cli” APC’yi PHP Komut Satırı Arayüzü ile kullanmanıza izin verir. “apc.filters” ise önbelleklemede istisnalar yapmak için kullanılır. Önbellekle ilgili sorunlarınız varsa, bu dosya adında değişiklik yapabilirsiniz. Genellikle, buna gerek yoktur.

Değişiklikleri kaydedildikten sonra Apache’yi yeniden başlatın.

systemctl restart httpd

Siteye dönün ve sayfayı yenileyin. İlk yükleme her zamankinden daha uzun sürer, bu yüzden lütfen ikinci kez yenileyin. Sayfa yükleme süresinin azalmış olması gerekir. Benim testimde süre 299 ms. Varsayılan ayarlarda süre 471 ms idi.

PHP APC sayfa yükleme süresi

Ab komutunu tekrar kullanın ve bir kıyaslama testi yapın.

ab -n 100 -c 10 http://herhangi.net/

Sonuçlar:

Server Software:        Apache/2.4.6
Server Hostname:        herhangi.net
Server Port:            80
Document Path:          /
Document Length:        53259 bytes
Concurrency Level:      10
Time taken for tests:   12.620 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      5350600 bytes
HTML transferred:       5325900 bytes
Requests per second:    7.92 [#/sec] (mean)
Time per request:       1262.015 [ms] (mean)
Time per request:       126.201 [ms] (mean, across all concurrent requests)
Transfer rate:          414.04 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:   176 1224 275.1   1194    2003
Waiting:      129 1176 266.4   1144    1962
Total:        176 1225 275.0   1194    2003

Percentage of the requests served within a certain time (ms)
50%   1194
66%   1283
75%   1320
80%   1337
90%   1640
95%   1852
98%   1998
99%   2003
100%   2003 (longest request)

Benim testimde, saniye başına istek 7.92 idi. Sonuçlarımın özeti şu şekilde:

Optimize Konusu Sayfa yükleme süresi
(varsayılanla karşılaştırıldığında)
Saniye başı istek
(Requests per second)
Varsayılan kurulum 471 ms 5.25
APC 299 ms (%36.51) 7.92

Gördüğünüz gibi, APC kurulumu ile performans %36.51 arttı.

Bir sonraki yazıda, yalnızca CentOS 7 temel ayarlarını kullanarak optimizasyona devam edeceğiz.

Serinin tüm bölümleri:

Paylaş:

CentOS 7 LAMP, WordPress ve PHP APC Kurulumu [1]” için bir yorum

  1. Turgay Koloğlu

    Aslında bunların hiçbirinin ne işe yaradığını bilmiyorum ama adım adım uyguladığımda efsane oldu sitelerim. Bu sayede terminal kullanmayı da öğrenmeye başlıyorum 🙂 Teşekkürler

    Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir