LEMP Stack Nedir ?
LEMP açılımı çalışması için kullanılan servislerin baş harflerinden almaktadır. Linux + Nginx + MySQL/MariaDB + PHP şeklinde açılımı bulunan LEMP basit web server kurmamıza yardımcı olmaktadır.
Günümüzde bir çok web sitesinin arkasında hosting kontrol panelleri olmanda kullanılmaktadır. Hosting kontrol panelleri bireysel kullanımda daha fazla tercih edilsede, profesyonel kullanımlarda hosting kontrol panellerine ait zaafiyetlere yakalanmamak için saf bir şekilde LEMP Stack kurmayı tercih ederler.
Adım 1: CentOS 7 üzerine Nginx Web Sunucusunu kurun
Nginx, Apache’ye kıyasla hızlı bir web sunucusudur ve bu günlerde daha popüler hale gelmektedir. Nginx’i CentOS 7 üzerine kurmak için aşağıdaki komutu kullanarak EPEL deposunu eklememiz gerekiyor. EPEL, Enterprise Linux için Ekstra Paketler anlamına gelir.
sudo yum install epel-release -y
Depo eklendiğine göre, Nginx’i artık kurabiliriz.
sudo yum install nginx -y
Nginx kurulduktan sonra onu başlatmamız gerekiyor.
sudo systemctl start nginx
Sistem önyükleme sırasında başlamak için Nginx’i etkinleştirin.
sudo systemctl nginx enable
Çalışıp çalışmadığını kontrol edin:
service nginx status
Servisin herkese açık bir şekilde çalışıp çalışmadığını kontrol etmek için sunucunuzun dış ipsini tarayıcınıza http://SUNUCUIP şeklinde yazabilirsiniz.
NOT: Eğer tarayıcınıza ip adresinizi yazdıktan sonra ulaşamazsanız, bunun nedeni firewall sisteminizde ilgili servisin kullandığı portların güvenlik nedeniyle açık olmamasından kaynaklı olacaktır.
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo service iptables save
Yukarıdaki işlem ile sunucunuzdan dışarı çıkan port kısıtlamasını kaldırabilirsiniz.
Adım 2: MariaDB Veritabanı Sunucusunu CentOS 7’ye yükleyin
MariaDB, MySQL için açılan bir alternatiftir. Bazı versiyonlara göre MariaDB’nin MySQL’e göre daha hızlı olduğu global web analistleri tarafından belirlenmiştir. Aşağıdaki komutu kullanarak kurun:
sudo yum install mariadb-server mariadb -y
Kurulduktan sonra başlatmamız gerekiyor.
sudo systemctl start mariadb
Sistem önyükleme sırasında başlamak için MariaDB’yi etkinleştirin.
sudo systemctl enable mariadb
Servisin durumunu kontrol edin.
systemctl status mariadb
mysql_secure_installation
Yukarıdaki komutu çalıştırarak MariaDB’nin güvenlik ayarlarını gerçekleştireceğiz.
Change the password for root ? : y
New password: (yeni root şifreniz)
Re-enter new password: (yeni root şifrenizi tekrar yazınız)
Remove anonymous users?: y
Disallow root login remotely?: y
Remove test database and access to it?: y
Reload privilege tables now?: y
Bu işlemler MariaDB‘nin güvenlik ayarlarını göstermektedir burada tüm seçeneklere y (yes) şeklinde yanıt vererek tamamlayınız.
SQL servisini doğru bir şekilde yapılandırdığımızdan emin olmak için aşağıdaki gibi komutları uygulayarak test edebilirsiniz.
mysql -u root -p
SHOW DATABASES;
exit
Yukarıdaki görüntüde mevcut sistem için gerekli databases gözükmektedir. Bu ekranı görüntülediğimizde sorunsuz bir şekilde kurulduğunu görebilmekteyiz.
Adım 3: CentOS 7’ye PHP-FPM’yi kurun
PHP kurulumu için 7.4 versiyon sürümünü kullanacağımız için epel ve remi depolarını kurmamız gerekmektedir.
yum -y install epel-release yum-utils
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
İlgili repoyu sistemimize tanımladığımız için artık versiyon paketini tanımlayıp kuruluma geçeceğiz. Bu işlem için yukarıda belirttiğimiz gibi PHP 7.4 versiyonunu kullanacağız.
yum-config-manager --enable remi-php74
Yukarıdaki işlemle php repomuzdan ilgili versiyonumuzu seçtik eğer farklı bir versiyon seçmek istersek aşağıdaki gibi seçebiliriz.
yum-config-manager --enable remi-php56
yum-config-manager --enable remi-php70
yum-config-manager --enable remi-php71
yum-config-manager --enable remi-php72
yum-config-manager --enable remi-php73
NOT: Yukarıdaki komutlar php sürümlerini ayırmak amacıyla örnek olarak gösterilmiştir, tavsiye edilen php sürümü 7.4 en son sürümdür.
Sıra geldi php ve eklentilerini yüklemeye, bu aşamada en sık kullanılan php uzantılarını(eklentilerini) kurulumu gerçekleştireceğiz.
yum -y install php php-cli php-common php-devel php-enchant php-gd php-imap php-intl php-json php-mbstring php-odbc php-pdo php-pgsql php-soap php-ldap php-tidy php-xml php-xmlrpc php-opcache php-pecl-mcrypt
PHP eklentilerinin yüklenmesi tamamlandıktan sonra Apache ile entegre bir şekilde çalışabilmesi amacıyla Apache servisini yeniden başlatacağız.
sudo systemctl restart nginx
Şimdi php-fpm yapılandırma dosyasını düzenleyin:
sudo nano /etc/php-fpm.d/www.conf
Aşağıdaki satırı bulun:
listen = 127.0.0.1:9000
şuna değiştirin:
listen = /var/run/php-fpm/php-fpm.sock
sonra aşağıdaki iki satırı bulun:
;listen.owner = nobody
;listen.group = nobody
önceki noktalı virgülleri kaldırın. Son olarak, kullanıcı ve grup değerini “apache” den “nginx” e değiştirin:
user = nginx
group = nginx
Dosyayı kaydedip kapattıktan sonra, PHP İşlemcisini başlatın:
sudo systemctl restart php-fpm
Ardından, php-fpm’yi sistem önyüklemesinde başlatmak için etkinleştirin.
sudo systemctl enable php-fpm
PHP-FPM taraflı ayarlamalar yapıldıktan sonra bu işlemi Nginx web server’a php uzantılı dosyaları nasıl yorumlaması gerektiğinin ayarlamasını yapacağız.
nano /etc/nginx/nginx.conf
server {
# ... burada bir takım ayarlar mevcut
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
sudo systemctl restart nginx
sudo systemctl restart php-fpm
Şeklinde düzenleme sağladığınızda artık sorunsuz olarak php uzantılı dosyaların yorumlamasını PHP-FPM’e paslıyor oluyorsunuz.
Adım 4: PHP’yi test edin
Web kök dizininde bir phpinfo dosyası oluşturun.
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
Yeni oluşturduğunuz dosyayı kontrol etmek için sunucunuzun dış ipsini tarayıcınıza http://SUNUCUIP/info.php şeklinde yazabilirsiniz.
Yukarıdaki ekranı gördüğünüz zaman artık sorunsuz bir şekilde web sunucunuzu ve php servisini kurduğunuzu görebilirsiniz.
Bu işlemler dünya çapında en çok kullanılan konfigürasyon lardan yararlanarak hazırlanmıştır. Makalemizde buraya kadar sorunsuz bir şekilde LEMP kurulumunu tamamlanmış bulunmaktasınız.