LAMP yığını, Linux, Apache, MySQL/MariaDB ve PHP yığınının kısaltmasıdır. Bu, internetteki birçok web sitesine ve web uygulamasına güç veren güçlü bir yığın oluşturur. LAMP yığını, bir araya getirildiğinde size eksiksiz bir çözüm sağlayacak dört açık kaynaklı projenin birleşimidir. Bu kılavuzda Ansible kullanarak Ubuntu/Debian üzerinde LAMP yığınının nasıl kurulacağını tartışacağız.
LAMP Stack aşağıdaki açık kaynaklı yazılım uygulamalarını içerir.
- Linux – Bu, Uygulamaları barındıran işletim sistemidir.
- Apache – Apache HTTP, ücretsiz ve açık kaynaklı, çapraz platformlu bir web sunucusudur.
- MySQL/MariaDB – Açık Kaynak ilişkisel veritabanı yönetim sistemi.
- PHP – Web uygulamaları geliştirmek için kullanılan Programlama/Komut Dosyası Dili.
Kurulum Önkoşulları
Başlamadan önce aşağıdaki minimum gereksinimlere sahip olduğunuzdan emin olun.
- Ubuntu 20.04 veya Debian 10/11 bilgisayarları
- Sudo ayrıcalıklarına sahip uzak bir kullanıcı
- Uzaktan yürütme için SSH anahtar kimlik doğrulaması kurulumu
- Ansible kontrol düğümünüze yüklendi
1) Ortam Hazırlıkları
Bu kılavuzda Ansible oyun kitaplarından ve rollerinden yararlanacağız. Bunlar Ansible’ın kullanımını çok kolaylaştıran modüllerden bazılarıdır.
Eğer makinenizde (iş istasyonunuz) Ansible kurulu değilse aşağıdaki komutlarla kurabilirsiniz. Unutmayın, bu LAMP yığınını dağıtmayı planladığımız sunucularda değil, ansible komutlarını çalıştırmak için kullanacağınız makinede yapılmalıdır.
Ubuntu/Debian için:
sudo apt install ansible -y
RPM tabanlı işletim sistemi için:
sudo yum install ansible -y
Uzak sunucuya SSH anahtarı kimlik doğrulamasını yapılandırın:
ssh-copy-id username@remote-server
İş istasyonunuzda bu kurulum için çalışma dizini olarak kullanılacak bir dizin oluşturun.
mkdir ansible_playbook && cd $_
2) Ansible Playbook’u ve Rolleri yapılandırın.
Daha önce tartışıldığı gibi, aşağıdaki görevleri gerçekleştirmek için Ansible oyun kitaplarını ve rollerini yapılandıracağız:
- Ansible için tercih edilen paket yöneticisi olan Aptitude’u yükleyin
- Apache, MariaDB sunucusu ve PHP’yi kuracak
- Apache için VirtualHost oluşturma ve etkinleştirme
- Apache için varsayılan VirtualHost’u devre dışı bırakın
- MariaDB için root şifresini yapılandırın
- PHP test dosyasını yapılandırın
- Güvenlik duvarı üzerinden HTTP trafiğine izin verin.
Apache ve PHP kurulumu için bir yanıtlayıcı rol ve MariaDB kurulumu için bir tane daha oluşturacağız.
Varsayılan Değişkenler Oluştur
Etki alanı adı, MariaDB kök parolası vb. gibi bilgileri içerecek varsayılan değişkenler dosyasını oluşturun.
Çalışma dizinimizde vars adında bir alt dizin oluşturun ve değişkenlerin yapılandırma dosyasını ekleyin.
mkdir vars && cd vars
vim default.yml
default.yml dosyasında, değişkenleri kendi ayrıntılarınızla değiştirerek aşağıdaki bilgileri ekleyin.
---
mysql_root_password: "P@ssw0rd"
app_user: "apache"
http_host: "lamp.example.com"
http_conf: "lamp.example.com.conf"
http_port: "80"
disable_default: true
Varsayılan çalışma dizininde bir ana bilgisayar envanter dosyası oluşturun. Burada LAMP stack kurmayı düşündüğümüz uzak sunucunun IP’sini ekliyoruz.
vim hosts
....
[lampstack]
192.168.100.227
Apache Rolü Oluştur
Çalışma dizininden bir roller alt dizini ve Apache için başka bir alt dizini oluşturun.
mkdir -p roles/apache
Burada Apache hizmeti için gerekli tüm adımları, modülleri ve şablonları içerecek olan Apache ve PHP rolünü oluşturmamız gerekiyor.
Apache ve PHP görevi oluştur
Apache dizini içinde Apache ve PHP için ana yürütme görevini oluşturun
mkdir tasks && cd tasks
vim main.yml
Aşağıdaki içeriği main.yml dosyasına ekleyin:
---
- name: Install prerequisites
apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
loop: [ 'aptitude' ]
#Apache Configuration
- name: Install Apache and PHP Packages
apt: name={{ item }} update_cache=yes state=latest
loop: [ 'apache2', 'php', 'php-mysql', 'libapache2-mod-php' ]
- name: Create document root
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'
- name: Set up Apache virtualhost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
- name: Enable new site
shell: /usr/sbin/a2ensite {{ http_conf }}
- name: Disable default Apache site
shell: /usr/sbin/a2dissite 000-default.conf
when: disable_default
notify: Reload Apache
# UFW Configuration
- name: "UFW - Allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp
# PHP Info Page
- name: Sets Up PHP Info Page
template:
src: "files/info.php.j2"
dest: "/var/www/{{ http_host }}/info.php"
- name: Reload Apache
service:
name: apache2
state: reloaded
- name: Restart Apache
service:
name: apache2
state: restarted
Apache İşleyicileri Oluşturun
Apache için İşleyicileri ekleyin. Bu Apache rol dizini altında yapılmalıdır:
mkdir handlers && cd handlers
vim main.yml
Apache işleyicileri için aşağıdaki içeriği ekleyin
---
- name: Reload Apache
service:
name: apache2
state: reloaded
- name: Restart Apache
service:
name: apache2
state: restarted
Apache Dosyalarını Ekle
VirtualHost’un ve info.php dizin dosyasının oluşturulması için kullanılacak dosyaları oluşturun. Bu aynı zamanda Apache rol dizininde de yapılır.
mkdir files && cd files
VirtualHost dosyasını oluşturun
vim apache.conf.j2
<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/{{ http_host }}>
Options -Indexes
</Directory>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
</VirtualHost>
PHP test dosyasını oluşturun
$ vim info.php.j2
<?php
phpinfo();
Dizin ağacınızın şu şekilde göründüğünden emin olun:
../apache$ tree
├── files
│ ├── apache.conf.j2
│ └── info.php.j2
├── handlers
│ └── main.yml
└── tasks
└── main.yml
3 directories, 4 files
MariaDB Rolü Oluşturun
MariaDB için bir rol oluşturun. Roller dizininde MariaDB görevi için bir dizin oluşturun.
mkdir -p mariadb/tasks && cd mariadb/tasks
MariaDB görevi için bir yapılandırma dosyası oluşturun:
vim main.yml
---
- name: Install prerequisites
apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
loop: [ 'aptitude' ]
#Install MariaDB server
- name: Install MariaDB Packages
apt: name={{ item }} update_cache=yes state=latest
loop: [ 'mariadb-server', 'python3-pymysql' ]
# Start MariaDB Service
- name: Start MariaDB service
service:
name: mariadb
state: started
become: true
# MariaDB Configuration
- name: Sets the root password
mysql_user:
name: root
password: "{{ mysql_root_password }}"
login_unix_socket: /var/run/mysqld/mysqld.sock
- name: Removes all anonymous user accounts
mysql_user:
name: ''
host_all: yes
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Removes the MySQL test database
mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
Ansible rollerine ilişkin yapınızın şöyle göründüğünü doğrulayın:
../roles$ tree
.
├── apache
│ ├── files
│ │ ├── apache.conf.j2
│ │ └── info.php.j2
│ ├── handlers
│ │ └── main.yml
│ └── tasks
│ └── main.yml
└── mariadb
└── tasks
└── main.yml
6 directories, 5 files
Ansible Başucu Kitabı’nı oluşturun
Ana çalışma dizininde yukarıda oluşturduğumuz rollerden yararlanan bir oyun kitabı oluşturun.
$ vim lampstack.yml
---
- name: configure lamp
hosts: lampstack
become: yes
become_method: sudo
vars_files:
- vars/default.yml
roles:
- apache
- mariadb
Çalışma dizinindeki tüm konfigürasyon ağacı buna uygun olmalıdır:
../ansible_playbook$ tree
.
├── hosts
├── lampstack.yml
├── roles
│ ├── apache
│ │ ├── files
│ │ │ ├── apache.conf.j2
│ │ │ └── info.php.j2
│ │ ├── handlers
│ │ │ └── main.yml
│ │ └── tasks
│ │ └── main.yml
│ └── mariadb
│ └── tasks
│ └── main.yml
└── vars
└── default.yml
8 directories, 8 files
LAMP Stack’i Ubuntu / Debian’a kurmak için Ansible Playbook’u çalıştırın
Ortamımız hazır olduğunda, LAMP yığınını Debian/Ubuntu’ya kurmak için oyun kitabını çalıştırmamız gerekecek
$ ansible-playbook -i hosts lampstack.yml -u <remote-user>
<uzak kullanıcı> seçeneğini SSH için yapılandırdığınız kullanıcıyla değiştirin.
Yapılandırma başlamalıdır. Başarılı bir yürütme sonrasında aşağıdaki gibi bir çıktı almalısınız:
Kurulumumuz başarılı oldu. Artık tarayıcıdan sunucuya ulaşıp ulaşamayacağımızı kontrol edebiliriz.
Navigate to http://server-IP/info.php
Yazının orijinalini buradan okuyabilirsiniz
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.