Ubuntu 18.04 Üzerinde Linux, Apache, MySQL, PHP (LAMP) Kurulumu

LAMP, bir sunucunun dinamik web sitelerini ve web uygulamalarını barındırmasını sağlamak için genellikle birlikte yüklenen bir grup açık kaynaklı yazılımdır. Bu terim aslında Apache ön belleklemeli web sunucusu ile Linux işletim sistemini temsil eden bir kısaltmadır . Site verileri bir MySQL veritabanında saklanır ve dinamik içerik PHP tarafından işlenir.

Ön şartlar

  • root ya da sudo yetkilerine sahip bir kullanıcı hesabı
  • Temel güvenlik duvarı (ufw)
  • Ubuntu 18.04 sunucusu (DigitalOcean ve Vultr tavsiyemdir)

Adım 1 - Apache’yi Yükleme ve Güvenlik Duvarını Güncelleme

Apache web sunucusu dünyanın en popüler web sunucuları arasındadır. Web’in büyük bir kısmında yaygın olarak kullanılmaktadır, bu da bir web sitesi barındırmak için onu harika bir seçim haline getiriyor.

Ubuntu’nun paket yöneticisini apt kullanarak Apache ve ufw’yi kurun:

sudo apt update
sudo apt-get upgrade -y
sudo apt install apache2 -y
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw enable

sudo komutu kullandığımız için bu işlemler kök ayrıcalıklarıyla yürütülür. Siz olduğunuzu doğrulamak için kullanıcı şifrenizi istenecektir. Bu adımda kurulum onayları için isteklerde Y yanıtını vermelisiniz.

Güvenlik Duvarını Web Trafiğine İzin Verecek Şekilde Ayarlama

Ardından, UFW güvenlik duvarını etkinleştirdiğinizi varsayarsak, 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 olup olmadığını kontrol edebilirsiniz:

sudo ufw app list
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Apache Full profiline alttaki komut ile bakarsanız, 80 ve 443 bağlantı noktalarına ufw’nin trafik sağladığını görmelisiniz:

sudo ufw app info "Apache Full"
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
  80,443/tcp

Eğer profiller çıktısı bu şekilde değil ise alttaki komutla oluşturabilirsiniz;

sudo ufw allow in "Apache Full"

Web tarayıcınızda sunucunuzun genel IP adresini ziyaret ederek her şeyin planlandığı gibi gittiğini doğrulamak için hemen bir kontrol yapabilirsiniz (bu bilgilere sahip değilseniz genel IP adresinizin ne olduğunu öğrenmek için bir sonraki başlığın altındaki nota bakın.):

http://sunucuipadresiniz

Bilgilendirme ve test amacıyla orada bulunan varsayılan Ubuntu 18.04 Apache web sayfasını göreceksiniz. Şunun gibidir:

Bu sayfayı görüyorsanız, web sunucunuz doğru şekilde yüklenmiş ve güvenlik duvarı yetkilerinizde tanımlanmış demektir.

Sunucunuzun Genel IP Adresini Bulma

Sunucunuzun genel IP adresinin ne olduğunu bilmiyorsanız, bulabilmenizin birkaç yolu vardır. Genellikle, sunucunuza SSH üzerinden bağlanmak için kullandığınız adrestir.

Bunu komut satırından yapmanın birkaç farklı yolu vardır. İlk olarak, iproute2 yazarak IP adresinizi bulmak için araçları kullanabilirsiniz:

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

Bu komut size iki veya üç satır çıktı verecektir. Hepsi doğru adreslerdir, ancak bilgisayarınız bunlardan yalnızca birini kullanabilir, bu genelde birinci yani IPV4 adresidir.

Alternatif bir yönteme ise alttaki komut ile ulaşabilirsiniz, komut direkt IP adresinizi çıktı olarak verecektir;

curl http://icanhazip.com

Adım 2 - MySQL Kurulumu

Artık web sunucunuz çalışır durumda ve artık MySQL’i kurmanın zamanı geldi. MySQL bir veritabanı yönetim sistemidir. Temel olarak, sitenizin bilgi depolayabileceği veritabanlarını organize eder ve bunlara erişim sağlar.

Yine, bu yazılımı edinmek ve yüklemek için apt kullanın:

sudo apt install mysql-server -y

:information_source: Burada, sudo apt-get update komutu çalıştırmanız gerekmez. Bunun nedeni, Apache’yi yüklemek için yukarıdaki komutlarda zaten çalıştırmış olmanızdır. Yani bilgisayarınızdaki paket dizini zaten güncel :+1:

Yeni MySQL kurulumları için bir sonraki adım, içerilen güvenlik komut dosyasını çalıştırmaktır. Bu komut dosyası, daha az güvenli varsayılan seçeneklerden bazılarını değiştirir. Uzak kök girişlerini engellemek ve kullanılmayan veritabanı kullanıcılarını kaldırmak için kullanacağız.

Güvenlik komut dosyasını çalıştırın:

sudo mysql_secure_installation

Bu komut dosyası sizi MySQL kurulumunuzda bazı değişiklikler yapabileceğiniz bir dizi bilgi istemine götürür.

Şu ekran sizi karşılayacaktır;

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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:

Y ardından ENTER tuşuna basın .

Sonrasında şu ekranı göreceksiniz;

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:

2 ardından ENTER tuşuna basın .

Sizden bir şifre belirlemeniz istenecek. Bir büyük harf, bir rakam, bir küçük harf ve bir özel sembol içeren uzun şifre belirleyiniz ve aynısını tekrar giriniz.

Şöyle bir ekran görünecek;

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : 

Bu işlemi ve takip eden soruların varsayılanlarını kabul etmek için Y ve Enter tuşlarına basabilirsiniz. Bu takip eden istemler, anonim kullanıcıları ve test veritabanını kaldıracak, uzaktan kök oturum açmayı devre dışı bırakacak ve MySQL’in yaptığınız değişikliklere hemen uyması için bu yeni kuralları yazılıma yükleyecektir.

İşlem bittiğinde, alttaki komutu yazarak MySQL konsoluna giriş yapın:

sudo mysql

Şöyle bir ekran görmelisiniz;

kopyala

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.29-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Bu komut ile, MySQL sunucusuna yönetimsel veritabanı kullanıcı kökü olarak bağlanırsınız.

Kök kullanıcı olarak bağlanmak için bir parola girmeniz gerekmediğine dikkat edin . Bu unix_socket yerine, yönetimsel MySQL kullanıcısı için varsayılan kimlik doğrulama yöntemi olan şifreniz yerine kullanılır. Bu ilk başta bir güvenlik sorunu gibi görünse de, veritabanı sunucusunu aslında daha güvenli bir hale getirir, çünkü kök MySQL kullanıcısı olarak oturum açmasına izin verilen kullanıcılar zaten sudo ayrıcalıklarına sahip sistem kullanıcılarıdır. Kısacası aynı ayrıcalıklardır :slight_smile: Pratik olarak ise, PHP uygulamanızdan bağlanmak için yönetici veritabanı kök kullanıcısını kullanamayacağınız anlamına gelir.

:information_source: MySQL 5.7 (ve sonraki sürümleri) çalıştıran Ubuntu sistemlerinde, kök MySQL kullanıcısının parola yerine varsayılan olarak auth_socket eklentisini kullanarak kimlik doğrulaması yapacağı şekilde ayarlandığını unutmayın. Bu, birçok durumda daha fazla güvenlik ve kullanılabilirlik sağlar, ancak harici bir programın (Örn; PhpMyAdmin) veritabanı sistemine erişmesine izin vermeniz gerektiğinde işleri karmaşık hale getirebilir.

:information_source: MySQL’e root olarak bağlanırken bir şifre kullanmayı istiyorsanız, kimlik doğrulama yöntemini auth_socket > mysql_native_password değiştirmeniz gerekir. Bunu yapmak için terminalinizden öncelikle MySQL konsolunu açın:

sudo mysql

Ardından, MySQL kullanıcı hesaplarınızın her birinin aşağıdaki komutla hangi kimlik doğrulama yöntemini kullandığını kontrol edin:

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *70B3E55DA437B329F2F1A90C66719B666CBF4B9E | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Bu örnekte, kök kullanıcının aslında auth_socket eklentisini kullanarak kimlik doğrulaması yaptığını görebilirsiniz. Kök hesabını bir parolayla kimlik doğrulaması yapacak şekilde yapılandırmak için aşağıdaki ALTER USER komutu çalıştırın . Şifreniz2020*- kısmını kendi seçtiğiniz güçlü (Bir büyük harf, bir küçük harf, bir rakam ve özel simgeler) bir şifreyle değiştirdiğinizden emin olun:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Şifreniz2020*-';

Ardından, FLUSH PRIVILEGES ile sunucunuza veritabanı tablolarının yeniden yüklemesi gerektiğini ve yeni değişikliklerinizi yürürlüğe koymasını söyleyebilrisiniz:

FLUSH PRIVILEGES;

Kök kullanıcının artık auth_socket eklentisini kullanarak kimlik doğrulaması yapmadığını doğrulamak için her bir kullanıcı tarafından kullanılan kimlik doğrulama yöntemlerini yine kontrol edin:

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *91EA82EFAD0677E20FDAEC7F11E15244530996F6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *70B3E55DA437B329F2F1A90C66719B666CBF4B9E | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Bu örnek çıktıda kök MySQL kullanıcısının artık bir parola kullanarak kimliğini doğruladığını görebilirsiniz. Bunu kendi sunucunuzda da onayladıktan sonra, MySQL kabuğundan çıkabilirsiniz.

exit

Bu noktada, veritabanı sisteminiz kuruldu ve LAMP yığınının son bileşeni olan PHP’yi kurmaya devam edebilirsiniz.

Adım 3 - PHP Kurulumu

PHP, kurulumunuzun dinamik içeriği görüntülemek için kod işleyecek olan bileşenidir. Komut dosyaları çalıştırabilir, bilgileri çekmek için MySQL veritabanlarınıza bağlanabilir ve işlenen içerikler görüntülemek için web sunucunuza iletilebilir.

Bir kez daha PHP kurmak için apt sistemini kullanacağız. Ayrıca, PHP kodunun Apache sunucusu altında çalışabilmesi ve MySQL veritabanınızla iletişim kurabilmesi için bu sefer bazı yardımcı paketlerde kuracağız:

sudo apt install php libapache2-mod-php php-mysql -y

Bu komut, PHP’yi ve yardımcı paketleri sorunsuz yüklemelidir. Bunu birazdan test edeceğiz.

Şu anda, bir kullanıcı sunucumuzdan bir dizin istediğinde, Apache önce dizin için index.html adlı dosyayı arar. Ancak biz sunucumuzda ağırlıklı olarak PHP dosyaları kullanacağız. Yani web sunucumuza öncelikle PHP dosyalarını yok ise HTML dosyalarını tercih etmesini söylememiz gerekiyor.

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

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

Şu alanı görmelisiniz;

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

PHP dizin dosyasını (yukarıda vurgulanan) DirectoryIndex belirtiminden sonraki ilk konuma aşağıdaki gibi taşıyın:

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

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

İşiniz bittiğinde, kaydetmek ve çıkmak için CTRL + X ardından Y yani Evet ve son olarak ENTER yanıtını vermelisiniz.

Bundan sonra, değişikliklerinizin tanınması için Apache web sunucusunu yeniden başlatın. Bunu şu komutla yapabilirsiniz:

sudo systemctl restart apache2

apache2 hizmetinin durumunu ayrıca aşağıdaki komutla da kontrol edebilirsiniz:

sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enable
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sat 2020-04-11 21:12:22 CEST; 3s ago
  Process: 24281 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 24286 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 24290 (apache2)
    Tasks: 6 (limit: 2300)
   CGroup: /system.slice/apache2.service
           ├─24290 /usr/sbin/apache2 -k start
           ├─24291 /usr/sbin/apache2 -k start
           ├─24292 /usr/sbin/apache2 -k start
           ├─24293 /usr/sbin/apache2 -k start
           ├─24294 /usr/sbin/apache2 -k start
           └─24295 /usr/sbin/apache2 -k start

Apr 11 21:12:22 sizinalanadiniz systemd[1]: Starting The Apache HTTP Server...
Apr 11 21:12:22 sizinalanadiniz systemd[1]: Started The Apache HTTP Server.

Buradan çıkmak için Q düğmesine basın .

PHP’nin işlevselliğini artırmak için bazı ek modüller yükleme seçeneğiniz her zaman olacaktır. PHP modülleri için kullanılabilir seçenekleri görmek için:

apt search php- | less

Yukarı ve aşağı kaydırmak için ok tuşlarını kullanın ve çıkmak için Q düğmesine basın .

Sonuçların tümü, yükleyebileceğiniz isteğe bağlı bileşenlerdir. Ayrıca hepsinin kısa bir açıklaması vardır.

Örneğin;

Sorting...
Full Text Search...
bandwidthd-pgsql/bionic,bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic,bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic,bionic,bionic,bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic,bionic,bionic,bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic,bionic,bionic,bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic,bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic,bionic,bionic,bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic,bionic,bionic,bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n

kdevelop-php-l10n/bionic,bionic,bionic,bionic 5.2.1-1ubuntu2 all
  localization files for KDevelop PHP plugin

libcode-tidyall-perl/bionic,bionic,bionic,bionic 0.67-1 all
  your all-in-one code tidier and validator

libnet-libidn-perl/bionic,bionic 0.12.ds-2build4 amd64
  Perl bindings for GNU Libidn

libphp-adodb/bionic,bionic,bionic,bionic 5.20.9-1 all
  ADOdb is a PHP database abstraction layer library

libphp-embed/bionic,bionic,bionic,bionic 1:7.2+60ubuntu1 all
  HTML-embedded scripting language (Embedded SAPI library) (default)

libphp-jabber/bionic,bionic,bionic,bionic 0.4.3-5 all
  Object-oriented PHP interface for the Jabber/XMPP protocol

libphp-jpgraph/bionic,bionic,bionic,bionic 1.5.2-13 all
  Object oriented graph library for php
:

Her bir modülün ne yaptığı hakkında daha fazla bilgi edinmek için internette bunlar hakkında daha fazla bilgi arayabilirsiniz. Alternatif olarak, aşağıdakileri yazarak paketin uzun açıklamasına da bakabilirsiniz:

apt show PAKET_ADI

Modülün sağladığı işlevsellik hakkında daha uzun bir açıklamaya sahip bir Description çıktısı olacaktır.

Örneğin, php-cli modülün ne yaptığını öğrenmek için şunu yazabilirsiniz:

apt show php-cli

Çok sayıda bilginin yanı sıra, şuna benzer bir şeyde görmelisiniz;

Package: php-cli
Version: 1:7.2+60ubuntu1
Priority: optional
Section: php
Source: php-defaults (60ubuntu1)
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian PHP Maintainers <[email protected]>
Bugs: https://bugs.launchpad.com/ubuntu/+filebug
Installed-Size: 12.3 kB
Depends: php7.2-cli
Supported: 5y
Download-Size: 3,160 B
APT-Sources: http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
Description: 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 Ubuntu's default
 PHP version (currently 7.2).

Araştırma yaptıktan sonra, bir paket kurmaya karar verirseniz, bunu diğer yazılımlarda yaptığınız gibi apt install komutunu kullanarak yapabilirsiniz.

Örneğin php-cli modülünün ihtiyacınız olan bir şey olduğuna karar verdiyseniz şu komutu vermelisiniz.

sudo apt install php-cli

Birden fazla modül kurmak istiyorsanız, bunu her birini bir boşlukla ayırarak, şöyle yapabilirsiniz:

sudo apt install paket1 paket2 paket3

Bu noktada, LAMP yüklediniz ve yapılandırdınız. Başka bir şey yapmadan önce, sunucunuzun yapılandırma ayrıntılarını saklayabileceğiniz bir Apache sanal ana bilgisayarı kurmanızı öneririz.

Adım 4 - Sanal Ana Bilgisayarları Ayarlama (Önerilir)

Apache web sunucusunu kullanırken, yapılandırma ayrıntılarını kapsüllemek ve tek bir sunucuda birden fazla etki alanını barındırmak için sanal ana makineleri (Nginx’teki sunucu bloklarına benzer) kullanabilirsiniz. Biz sizinalanadiniz.com adlı bir alan adı ayarlayacağız, ancak bunu her ilgili komutta kendi alan adınızla değiştirmeniz gerekecek.

Ubuntu 18.04’teki Apache, varsayılan olarak, /var/www/html dizininden döküman sunmak üzere yapılandırılmış bir sunucu bloğuna sahiptir. Bu tek bir site için iyi çalışacak olsa da, birden fazla siteye ev sahipliği yapıyorsanız sunucunuz hantallaşacaktır. Değiştirmek yerine, yeni sizinalanadiniz.com sitemiz için yeni bir /var/www/html dizin yapısı oluşturalım ve /var/www içerisinde yapılacak bir istemci isteği başka sitelerle eşleşmezse bu dizini kullanıcıya sunulacak olan varsayılan dizin olarak yapılandıralım.

Dizinleri şu şekilde çoğaltabilirsiniz;

/var/www/
├── sizinalanadiniz1.com
│   └── public_html
├── sizinalanadiniz2.com
│   └── public_html
├── sizinalanadiniz3.com
│   └── public_html

Dizini oluşturarak başlayalım;

sudo mkdir -p /var/www/sizinalanadiniz.com/public_html

Ardından, $USER ortam değişkeniyle dizinin sahipliğini atayın:

sudo chown -R www-data: /var/www/sizinalanadiniz.com

unmask değerinizi daha önceden değiştirmediyseniz, web köklerinizin izinleri doğru olmalıdır, ancak şu komutu yazarak emin olabilirsiniz:

sudo chmod -R 755 /var/www/sizinalanadiniz.com

Ardından, favori düzenleyicinizi kullanarak bir index.html örnek sayfa oluşturun (Biz nano kullanacağız):

nano /var/www/sizinalanadiniz.com/public_html/index.html

İçerik olarak aşağıdaki örnek HTML’yi ekleyin:

<!DOCTYPE html>
<html lang="tr" dir="ltr">
  <head>
    <meta charset="utf-8">
        <title>Naber :)</title>
    </head>
    <body>
        <h1>Eskiden buralar hep dutluktu :)</h1>
    </body>
</html>

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Apache’nin bu içeriğe hizmet verebilmesi için, doğru yönergelerle sanal bir /etc/apache2/sites-available/000-default.conf ana bilgisayar dosyası oluşturmanız gerekir. Doğrudan /etc/apache2/sites-available/sizinalanadiniz.com.conf konumunda bulunan varsayılan yapılandırma dosyasını değiştirmek yerine şu adresten yeni bir dosya oluşturalım:

sudo nano /etc/apache2/sites-available/sizinalanadiniz.com.conf

Varsayılana benzer, ancak yeni dizinimiz ve alan adımız için güncellenen aşağıdaki yapılandırma kodunu kopyalayıp yapıştırın:

<VirtualHost *:80>
    ServerName sizinalanadiniz.com
    ServerAlias www.sizinalanadiniz.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/sizinalanadiniz.com/public_html

    <Directory /var/www/sizinalanadiniz.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/sizinalanadiniz.com-error.log
    CustomLog ${APACHE_LOG_DIR}/sizinalanadiniz.com-access.log combined
</VirtualHost>

DocumentRoot Alan adınının yeni dizinimize erişebileceği kısmı tanımlar. ServerAdmin kısmını bir e-postayla güncellediğimize dikkat edin. Ayrıca sanal ana bilgisayar tanımıyla eşleşmesi gereken temel etki alanını oluşturan ve temel admış gibi eşleşmesi gereken diğer adları tanımlayan ServerName ve ServerAlias şeklinde iki yönerge ekledik.

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Dosyayı a2ensite aracıyla etkinleştirelim:

sudo a2ensite sizinalanadiniz.com

Aşağıdaki çıktıyı görmelisiniz:

Enabling site sizinalanadiniz.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

Diğer bir seçenek ise, aşağıda gösterildiği gibi manuel olarak bir sembolik bağlantı oluşturmaktır:

sudo ln -s /etc/apache2/sites-available/sizinalanadiniz.com.conf /etc/apache2/sites-enabled/

000-default.conf konumunda tanımlanan varsayılan siteyi devre dışı bırakın:

sudo a2dissite 000-default.conf

Aşağıdaki çıktıyı görmelisiniz:

Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

Ardından, yapılandırma hatalarını test edelim:

sudo apache2ctl configtest

Aşağıdaki çıktıyı görmelisiniz:

Syntax OK

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

sudo systemctl restart apache2

Apache artık alan adınızı kullanıyor olmalıdır. Bunu, şuna benzer bir ekran görmeniz gereken yere http://sizinalanadiniz.com giderek test edebilirsiniz:

Bununla birlikte, sanal ana bilgisayarınız tamamen kuruldu. Daha fazla değişiklik yapmadan veya bir uygulamayı dağıtıma sürmeden önce, PHP yapılandırmanızı proaktif olarak test etmeniz yararlı olacaktır.

Adım 5 - Web Sunucunuzda PHP İşlemeyi Test Etme

Sisteminizin PHP için düzgün yapılandırıldığını test etmek için, bilgi.php adlı çok temel bir PHP betiği oluşturalım. Apache’nin bu dosyayı bulması ve doğru bir şekilde sunması için web kök dizininize kaydedilmesi gerekir.

Dosyayı önceki adımda oluşturduğunuz web kökünde şu komutla oluşturun:

sudo nano /var/www/sizinalanadiniz.com/public_html/bilgi.php

Boş bir dosya açılacaktır. Geçerli PHP bilgilerini yazdıracak olan şu kodu dosyanın içine ekleyin:

<?php
phpinfo();
?>

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Artık web sunucunuzun bu PHP betiği tarafından oluşturulan içeriği doğru bir şekilde görüntüleyip görüntülemediğini test edebilirsiniz. Bunu denemek için web tarayıcınızda bu sayfayı ziyaret edin. Sunucunuzun genel IP adresine ya da etki alan adınıza tekrar ihtiyacınız olacak.

Ziyaret etmeniz gereken adres:

http://sizinalanadiniz.com/bilgi.php
http://sunucuipadresiniz/bilgi.php

Sayfa şöyle görünmelidir:

Bu sayfa, PHP perspektifinden sunucunuz hakkında bazı temel bilgiler sağlar. Hata ayıklama ve ayarlarınızın doğru yapılandırıldığından emin olmak için kullanışlıdır.

Bu sayfayı tarayıcınızda görebiliyorsanız, PHP’niz ve web sunucunuz beklendiği gibi çalışıyor demektir.

Muhtemelen bu testten sonra bu dosyayı kaldırmak isteyeceksiniz çünkü sunucunuz hakkında yetkisiz kullanıcılara çok fazla bilgi verebilir. Bunu yapmak için aşağıdaki komutu çalıştırın:

sudo rm /var/www/sizinalanadiniz.com/public_html/bilgi.php

Bilgilere daha sonra tekrar erişmeniz gerekirse bu sayfayı her zaman yeniden oluşturabilirsiniz.

Sonuç

Yüklü bir LAMP yazılımı bütününe sahip olduğunuza göre, bundan sonra ne yapacağınız konusunda birçok seçeneğiniz var. Temel olarak, sunucunuza birçok türde web sitesi ve web yazılımı yüklemenizi sağlayacak bir platform kurdunuz.

Bu öğreticinin devamı olarak ziyaret etmek isteyebilirsiniz;

Herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan çekinmeyin :point_down: