Ubuntu 16.04'e Linux, Apache, MySQL, PHP (LAMP) nasıl kurulur?

0 Hisse senetleri
0
0
0
0

Ubuntu 16.04'e Linux, Apache, MySQL, PHP (LAMP) nasıl kurulur?

giriiş

LAMP, genellikle bir sunucunun dinamik web sitelerini ve web uygulamalarını barındırmasını sağlamak için birlikte kurulan bir açık kaynaklı yazılım koleksiyonudur. Terim, Lamp İşletim Sistemi'nin kısaltmasıdır. Linux Apache web sunucusu tarafından desteklenmektedir. Site verileri MySQL veritabanında saklanır ve dinamik içerik PHP tarafından işlenir.

Bu rehberde Ubuntu 16.04 sunucusuna LAMP yığınını kuracağız. Ubuntu ilk ihtiyacımızı karşılayacak: bir Linux işletim sistemi.

Ön koşullar

Bu kılavuza başlamadan önce, sunucunuzda sudo ayrıcalıklarına sahip, kök olmayan ayrı bir kullanıcı hesabı oluşturmanız gerekir. Bunu, Ubuntu 16.04 için ilk sunucu kurulumu eğitimimizin 1'den 4'e kadar olan adımlarını tamamlayarak öğrenebilirsiniz.

Adım 1 – Apache'yi Kurun ve Güvenlik Duvarını Yapılandırın

Apache web sunucusu, dünyanın en popüler web sunucularından biridir. İyi belgelendirilmiştir ve web tarihinin büyük bir bölümünde yaygın olarak kullanılmıştır, bu da onu web sitesi barındırma için mükemmel bir varsayılan seçenek haline getirir.

Apache'yi Ubuntu paket yöneticisini kullanarak kolayca kurabiliriz. Paket yöneticisi, Ubuntu tarafından yönetilen depodan çoğu yazılımı sorunsuz bir şekilde kurmamızı sağlar. apt'ın nasıl kullanılacağı hakkında daha fazla bilgiyi burada bulabilirsiniz.

Sonuç için şu komutları yazarak başlayabiliriz:

sudo apt-get update  $
sudo apt-get install apache2  $

Sudo komutunu kullandığımız için bu işlem root yetkileriyle gerçekleştirilecektir. Niyetinizi doğrulamak için normal kullanıcı şifrenizi girmeniz istenecektir.

Şifrenizi girdikten sonra, apt hangi paketleri kurmayı planladığını ve ne kadar ek disk alanı kaplayacağını size söyleyecektir. Devam etmek için y yazıp ENTER tuşuna basın, kurulum devam edecektir.

Sözdizimi uyarılarını bastırmak için Global ServerName'i ayarlama

Ardından, /etc/apache2/apache2.conf dosyasına bir uyarı mesajını engellemek için bir satır ekleyeceğiz. Zararsız olsa da, ServerName'i genel olarak ayarlamazsanız, Apache yapılandırmanızı sözdizimi hataları açısından kontrol ederken aşağıdaki uyarıyı alırsınız:

sudo apache2ctl configtest   $
Output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OK

Ana yapılandırma dosyasını metin düzenleyicisiyle açın:

sudo nano /etc/apache2/apache2.conf  $

Dosyanın en altına, ana alan adınızı gösteren ServerName yönergesini ekleyin. Sunucunuzla ilişkili bir alan adınız yoksa, sunucunuzun genel IP adresini kullanabilirsiniz:

Not: Sunucunuzun IP adresini bilmiyorsanız, bulmak için Sunucunuzun Genel IP Adresini Bulma bölümüne gidin.



/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

İşiniz bittiğinde dosyayı kaydedip kapatın.

Daha sonra şunu yazarak sözdizimi hatalarını kontrol edin:

sudo nano apache2ctl configtest  $

Global ServerName yönergesini eklediğimizden beri, görmeniz gereken tek şey şudur:

Output
Syntax OK

Değişikliklerinizi uygulamak için Apache'yi yeniden başlatın:

sudo nano systemctl restart apache2  $

Artık güvenlik duvarını yapılandırmaya başlayabilirsiniz.

Web trafiğine izin vermek için güvenlik duvarını yapılandırın

Ardından, UFW güvenlik duvarını etkinleştirmek için ilk sunucu kurulum talimatlarını uyguladığınızı varsayarak, güvenlik duvarınızın HTTP ve HTTPS trafiğine izin verdiğinden emin olun. UFW'nin Apache için aşağıdaki gibi bir uygulama profiline sahip olduğundan emin olabilirsiniz:

sudo nano ufw app list  $
Output

Available applications:

Apache

Apache Full

Apache Secure

OpenSSH

Apache profilinin tamamına bakarsanız, 80 ve 443 portlarında trafiğin etkinleştirildiğini görmelisiniz:

$  sudo ufw app info “Apache Full”








Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
۸۰,۴۴۳/tcp

Bu profil için gelen trafiğe izin ver:

$  sudo ufw allow in “Apache Full”

Her şeyin plana göre gittiğinden emin olmak için web tarayıcınızda sunucunuzun genel IP adresini ziyaret ederek hızlı bir kontrol yapabilirsiniz (bu bilgiye sahip değilseniz, genel IP adresinizin daha önce ne olduğunu öğrenmek için bir sonraki başlık altındaki nota bakın):

http://your_server_IP_address

Bilgi ve test amaçlı varsayılan Ubuntu 16.04 Apache web sayfasını göreceksiniz. Aşağıdaki gibi görünmelidir:

Bu sayfayı görüyorsanız, web sunucunuz artık düzgün bir şekilde kurulmuş ve güvenlik duvarınız üzerinden erişilebilir durumdadır.

Sunucunuzun genel IP adresini bulma

Sunucunuzun genel IP adresini bilmiyorsanız, bunu bulmanın birkaç yolu vardır. Genellikle bu, sunucunuza SSH üzerinden bağlanmak için kullandığınız adrestir.

Komut satırından bunu birkaç şekilde bulabilirsiniz. İlk olarak, iproute2 aracını kullanarak adresinizi alabilirsiniz:

$ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’

Bu size iki veya üç satır verecektir. Bunların hepsi geçerli adreslerdir, ancak bilgisayarınız bunlardan yalnızca birini kullanabilir, bu yüzden her birini deneyin.

Alternatif bir yöntem ise, curl aracını kullanarak harici bir tarafla iletişime geçip sunucunuzu nasıl gördüklerini söylemektir. Bunu, belirli bir sunucudan IP adresinizi isteyerek yapabilirsiniz:




$  sudo apt-get install curl
$  curl http://icanhazip.com

IP adresinizi almak için hangi yöntemi kullanırsanız kullanın, sunucunuza erişmek için IP adresinizi web tarayıcınızın adres çubuğuna yazabilirsiniz.

Adım 2 – MySQL'i yükleyin

Artık web sunucumuzu kurduğumuza göre, MySQL'i kurmanın zamanı geldi. MySQL bir veritabanı yönetim sistemidir. Temel olarak, veritabanlarının bilgileri depolamasına, düzenlemesine ve erişmesine olanak tanır.

Yazılımımızı alıp yüklemek için yine apt kullanabiliriz. Bu sefer, bileşenlerimizi birbirimizle iletişim kurmamıza yardımcı olacak başka yardımcı paketler de yükleyeceğiz:

$ sudo apt-get install mysql-server

Not: Bu durumda, komuttan önce sudo apt-get update komutunu çalıştırmanıza gerek yok. Çünkü yukarıdaki komutlarda Apache'yi kurmak için bu komutu çalıştırdık. Bilgisayarımızdaki paket listesi zaten güncel olmalı.

Tekrar, kurulacak paketlerin listesi ve kaplayacakları disk alanı miktarı gösterilecektir. Devam etmek için Y tuşuna basın.

Kurulum sırasında sunucunuz, MySQL "root" kullanıcısı için bir parola seçmenizi ve onaylamanızı isteyecektir. Bu, MySQL'de yükseltilmiş ayrıcalıklara sahip bir yönetim hesabıdır. Bunu, sunucunun kök hesabına benzer şekilde düşünün (ancak şu anda yapılandırdığınız hesap özel bir MySQL hesabıdır). Bunun güçlü ve benzersiz bir parola olduğundan emin olun ve boş bırakmayın.

Kurulum tamamlandıktan sonra, bazı tehlikeli varsayılan ayarları kaldıran ve veritabanı sistemimize erişimi kısmen engelleyen basit bir güvenlik betiği çalıştırmak istiyoruz. Etkileşimli betiği başlatmak için aşağıdakileri çalıştırın:

$ mysql_secure_installation

MySQL kök hesabınız için belirlediğiniz parolayı girmeniz istenecektir. Ardından, VALIDATE PASSWORD PLUGIN'i yapılandırmak isteyip istemediğiniz sorulacaktır.

Uyarı: Bu özelliği etkinleştirmek biraz kararsız bir karardır. Etkinleştirildiğinde, belirtilen ölçütleri karşılamayan parolalar MySQL tarafından bir hatayla reddedilir. Bu durum, phpMyAdmin için Ubuntu paketleri gibi MySQL kimlik bilgilerini otomatik olarak yapılandıran bir yazılımla birlikte zayıf bir parola kullanırsanız sorunlara yol açabilir. Doğrulamayı devre dışı bırakmak güvenlidir, ancak veritabanı kimlik doğrulaması için her zaman güçlü ve benzersiz parolalar kullanmalısınız.

Etkinleştirmeden evet veya başka bir şey için y'yi cevaplayın.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Bir parola doğrulama seviyesi seçmeniz istenecektir. En güçlü seviye için 2 girerseniz, sayı, büyük ve küçük harf, özel karakter içermeyen veya yaygın sözlük kelimelerini temel almayan bir parola belirlemeye çalıştığınızda hata alacağınızı unutmayın.

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary               file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Parola doğrulamayı etkinleştirdiyseniz, mevcut kök parolanız için güçlü bir parola görüntülenecek ve değiştirmek isteyip istemediğiniz sorulacaktır. Mevcut parolanızdan memnunsanız, komut isteminde "hayır" yerine "n" girin:




Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Diğer sorular için her komut isteminde Y tuşuna ve ardından Enter tuşuna basmanız gerekir. Bu, bazı anonim kullanıcıları ve test veritabanını kaldıracak, uzaktan root erişimini devre dışı bırakacak ve MySQL'in yaptığımız değişiklikleri hemen uygulayabilmesi için bu yeni kuralları yükleyecektir.

Bu noktada veritabanı sisteminiz artık çalışır durumda ve devam edebiliriz.

Adım 3 – PHP Kurulumu

PHP, dinamik içerikleri görüntülemek için kodu işleyen kurulumumuzun bir parçasıdır. Komut dosyalarını çalıştırabilir, bilgi almak için MySQL veritabanlarına bağlanabilir ve işlenmiş içeriği görüntülenmek üzere web sunucumuza iletebilir.

Bileşenlerimizi yüklemek için apt sistemini tekrar kullanabiliriz. Ayrıca, PHP kodunun Apache sunucusunda çalışıp MySQL veritabanımızla iletişim kurabilmesi için bazı yardımcı paketler ekleyeceğiz:

$  sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Bu, PHP'yi sorunsuz bir şekilde kuracaktır. Bunu birazdan test edeceğiz.

Çoğu durumda, bir dizin istendiğinde Apache'nin dosyaları sunma şeklini değiştirmek isteriz. Şu anda, bir kullanıcı sunucudan bir dizin istediğinde, Apache önce index.html adlı bir dosyayı arar. Web sunucumuza PHP dosyalarını tercih etmesini söylemek istiyoruz, bu yüzden önce Apache'nin index.php dosyasını aramasını sağlıyoruz.

Bunu yapmak için, dir.conf dosyasını bir metin düzenleyicide kök ayrıcalıklarıyla açmak üzere şu komutu yazın:

$   sudo nano /etc/apache2/mods-enabled/dir.conf

Şöyle görünecek:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Yukarıda vurgulanan PHP dizin dosyasını DirectoryIndex spesifikasyonundan sonraki ilk sıraya şu şekilde taşımak istiyoruz:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

İşiniz bittiğinde dosyayı kaydedin ve Ctrl-X tuşlarına basarak kapatın. Dosyayı kaydetmek için Y tuşuna basıp ardından Enter tuşuna basarak nereye kaydedileceğini onaylamanız gerekecek.

Bundan sonra, değişikliklerimizin tanınması için Apache web sunucusunu yeniden başlatmamız gerekiyor. Bunu şu komutu yazarak yapabilirsiniz:

$  sudo systemctl restart apache2

Apache2 servisinin durumunu systemctl kullanarak da kontrol edebiliriz:

$ sudo systemctl status apache2
Sample Output

● apache2.service – LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─۱۳۶۲۳ /usr/sbin/apache2 -k start
├─۱۳۶۲۶ /usr/sbin/apache2 -k start
├─۱۳۶۲۷ /usr/sbin/apache2 -k start
├─۱۳۶۲۸ /usr/sbin/apache2 -k start
├─۱۳۶۲۹ /usr/sbin/apache2 -k start
└─۱۳۶۳۰ /usr/sbin/apache2 -k start

Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server…
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

PHP modüllerini yükleyin

PHP performansını arttırmak için isteğe bağlı olarak ek modüller kurabiliriz.

PHP modülleri ve kütüphaneleri için kullanılabilir seçenekleri görmek için, apt-cache arama sonuçlarını less'e girebilirsiniz. less, diğer komutların çıktılarını kaydırmanıza olanak sağlayan bir sayfalayıcıdır:

$  apt-cache search php- | less

Yukarı ve aşağı hareket etmek için ok tuşlarını, çıkmak için ise q tuşunu kullanın.

Sonuçlar, kurabileceğiniz tüm isteğe bağlı bileşenleri gösterir. Her biri için kısa bir açıklama sunar:

libnet-libidn-perl – Perl bindings for GNU Libidn
php-all-dev – package depending on all supported PHP development packages
php-cgi – server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli – command-line interpreter for the PHP scripting language (default)
php-common – Common files for PHP packages
php-curl – CURL module for PHP [default]
php-dev – Files for PHP module development (default)
php-gd – GD module for PHP [default]
php-gmp – GMP module for PHP [default]
…
:

Her modülün ne işe yaradığı hakkında daha fazla bilgi edinmek için internette arama yapabilir veya şu komutu yazarak uzun paket açıklamasına bakabilirsiniz:

$   apt-cache show package_name

Modülün işlevselliğinin daha uzun bir açıklamasını sağlayan Description-en adlı bir alanla birlikte çok sayıda çıktı olacaktır.

Örneğin php-cli modülünün ne işe yaradığını öğrenmek için şunu yazabiliriz:

$  apt-cache show php-cli

Diğer pek çok bilginin yanı sıra, aşağıdaki gibi bir şey de bulacaksınız:

Output
…
Description-en: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian’s default
PHP version (currently 7.0).
…

Eğer araştırmanız sonucunda bir paketi kurmaya karar verirseniz, tıpkı diğer yazılımlarımızda yaptığımız gibi apt-get install komutunu kullanarak bunu yapabilirsiniz.

Eğer ihtiyacımız olanın php-cli olduğuna karar verirsek şunu yazabiliriz:

$  sudo apt-get install php-cli

Birden fazla modül yüklemek istiyorsanız, her birini aralarında boşluk bırakarak listeleyip ardından apt-get install komutunu şu şekilde kullanabilirsiniz:

$   sudo apt-get install package1 package2 …

Bu noktada, LAMP çerçeveniz kurulmuş ve yapılandırılmış durumda. PHP'mizi test etmemiz gerekiyor.

Adım 4 – Web sunucunuzda PHP işlemlerini test edin

Sistemimizin PHP için düzgün bir şekilde yapılandırıldığını test etmek için çok basit bir PHP betiği oluşturabiliriz.

Bu betiğe info.php adını vereceğiz. Apache'nin dosyayı bulup doğru bir şekilde sunabilmesi için, web kökü adı verilen çok özel bir klasörde saklanması gerekiyor.

Ubuntu 16.04'te bu dizin /var/www/html/ konumunda bulunur. Dosyayı bu konumda şu komutu yazarak oluşturabiliriz:

$  sudo nano /var/www/html/info.php

Bu, boş bir dosya açacaktır. Dosyanın içine geçerli bir PHP kodu olan aşağıdaki metni koymak istiyoruz:

info.php

<?php
phpinfo();
?>

İşiniz bittiğinde dosyayı kaydedip kapatın.

Artık web sunucumuzun PHP betiği tarafından oluşturulan içeriği düzgün bir şekilde görüntüleyip görüntüleyemediğini test edebiliriz. Bunu test etmek için web tarayıcımızda bu sayfayı ziyaret etmemiz yeterli. Sunucunuzun genel IP adresine de ihtiyacınız olacak.

Ziyaret etmek istediğiniz adres şu şekilde olacaktır:

http://your_server_IP_address/info.php

Karşınıza çıkacak sayfa aşağıdaki gibi olmalı:

Karşınıza çıkacak sayfa aşağıdaki gibi olmalı:

Bu sayfa, sunucunuz hakkında temel olarak PHP perspektifinden bilgi verir. Hata ayıklama ve ayarlarınızın doğru şekilde uygulandığından emin olmak için faydalıdır.

Eğer bu başarılı olursa PHP'niz beklendiği gibi çalışacaktır.

Bu deneyden sonra muhtemelen bu dosyayı silmek isteyeceksiniz çünkü yetkisiz kullanıcılara sunucunuz hakkında bilgi verebilir. Bunu yapmak için şunu yazabilirsiniz:

$  sudo rm /var/www/html/info.php

Bilgilere tekrar erişmeniz gerektiğinde bu sayfayı her zaman yeniden oluşturabilirsiniz.

2 yorumları
  1. Birinin blog yönetimi konusunda uzman görüşüne ihtiyacı varsa, ona şunu tavsiye ederim:
    Bu web sayfasına kısa bir ziyaret için teşekkürler, güzel çalışmalarınıza devam edin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz

Sunucu nasıl kurulur?

Giriş Hazır sunucu kiralamak veya satın almak, özellikle küçük şirketler için güvenli bir tercihtir. Ancak,…