Giriş
Yeni sunucuların yapılandırılmasına ihtiyaç duyduğumuz zamanlar her zaman olur. Bu, iş yükünü dağıtmak için veya sadece daha fazla sunucuya ihtiyacımız olduğu için olabilir. Yeni sunucular kurarken, kullanıcıların bunları yapılandırmak için sunucu otomasyonundan yararlanması gerekir. Bu, manuel müdahaleyi en aza indirmek için yapılır. Ansible, sunucuyu manuel olarak kurarken insan hatası olasılığını azaltarak yeni bir sunucuyu otomatik olarak yapılandırmak için kullanılabilecek yapılandırma yönetim araçlarından biridir.
Ansible, mimari açıdan basit olmasının yanı sıra zengin özelliklere sahip bir araçtır. Sunucuların betikler aracılığıyla yapılandırılmasını kolaylaştırır. Yalın mimarisi nedeniyle Ansible, düğümler arasında başka herhangi bir yazılımın kurulmasını gerektirmez.
Bu öğreticide, bir Ubuntu sunucusu üzerinde çalışan LAMP yığını ile WordPress kurulumunu otomatikleştirmek için Ansible'ı nasıl kullanacağınızı göstereceğiz. WordPress, kodlama dili olarak PHP'yi ve verileri depolamak için MySQL veritabanını kullanan, bloglar ve web siteleri oluşturmak için kullanılan bir CMS'dir. WordPress kurulduktan sonra, kullanıcılar web ön yüzünü kullanarak siteyi yönetebilirler.
Önkoşullar
- Bu öğretici Ubuntu tabanlı olduğundan, en son Ubuntu sürümünün sudo yetkileri ile kurulmuş olması gerekir. Ubuntu kurulu değilse, Ubuntu sunucunuzu nasıl kurarsınız.
- kılavuzumuzu takip edebilirsiniz. Ayrıca bir Ansible kontrol düğümüne de ihtiyacımız olacak. Sudo yetkilerine sahip ve güvenlik duvarı etkinleştirilmiş bir kontrol düğümü olmalıdır. Ubuntu 20.04 üzerinde Ansible Kurulumu ve Yapılandırılması Ansible'ın nasıl yapılandırılacağına dair ayrıntılı bir kılavuz içerir.
- Ayrıca en son Ubuntu sürümünü çalıştıran uzak Ansible ana bilgisayarlarına ihtiyacımız var. Bu ana bilgisayarlar esasen Ansible'daki yönetilen düğümlerdir.
Ansible Playbook Eylemleri Özeti
Bu bölümde, Ansible Playbook'umuzu çalıştırdığımızda ne yaptığını göreceğiz. Bu prosedür, burada sunulan manuel kuruluma bir alternatiftir: Ubuntu 20.04 üzerinde LAMP ile WordPress Nasıl Kurulur.
Playbook'u çalıştırdığımızda Ansible şunları yapacaktır:
- Şunu kuracaktır: aptitude (tercih edilen bir Ansible paket yöneticisidir).
- PHP uzantılarını ve LAMP paketlerini kurup yapılandıracaktır.
- WordPress web sitesi için yeni bir Apache VirtualHost oluşturacaktır.
- Enable the mod_rewrite modülünü etkinleştirecek ve Apache tarafından sunulan varsayılan web sitesini devre dışı bırakacaktır.
- MySQL root kullanıcısı için şifre belirleyecektir.
- Anonim MySQL hesaplarını ve test veritabanını kaldıracaktır.
- Yeni bir kullanıcı ve yeni bir veritabanı oluşturacaktır. Bunlar WordPress web sitesi tarafından kullanılacaktır.
- Set up UFW ayarlarını, yapılandırılan bağlantı noktasında ( 80 varsayılan olarak) HTTP trafiğine izin verecek şekilde yapılandıracaktır.
- WordPress'i indirecek ve arşivden çıkaracaktır.
- Dizin izinlerini ve sahipliklerini ayarlayacaktır.
- Yeni bir wp-config.php dosyasını şablonunu kullanarak yapılandıracaktır.
LAMP Üzerinde WordPress Ansible Playbook Kılavuzu
İlk olarak, LAMP üzerinde WordPress playbook'unu ve bağımlılıklarını do-community/ansible-playbooks deposundan almamız gerekecek. Bu depoyu Ansible Kontrol Düğümü içinde klonlayacağız.
Aşağıda belirtildiği gibi git pull komutunu çalıştırabilirsiniz:
|
1 2 3 4 5 |
cd ~ git clone https://github.com/do-community/ansible-playbooks.git cd ansible-playbooks |
Yukarıda belirtilen deponun güncel sürümünü çektiğinizden emin olun. Bu, depoyu daha önce klonladıysanız geçerlidir. Güncellemeyi şu şekilde alabilirsiniz:
|
1 2 3 |
cd ~/ansible-playbooks git pull |
Şimdi wordpress-lamp_ubuntu klasörünün içindeki dosyaları bulmamız gerekiyor. Bu klasörün adı kullandığınız Ubuntu sürümüne bağlı olarak farklı olabilir. Bir bakışta, bu dizinde aşağıdaki yapıyı göreceksiniz:

Aşağıda bu dosyaların amacını özetleyelim:
- files/apache.conf.j2: Apache, VirtualHost kullanır. Bu dosya, VirtualHost.
- ayarlarını belirtmek için kullanılır./files-wp.config.j2: Bu dosya, WordPress'i yapılandırmak için gereken ayarları içerir.
- vars/default.yml: Playbook ayarlarını yapılandırır.
- playbook.yml: Uzak bir sunucuda yürütülmesi gereken görevler varsa, bu dosya bunları yapılandırmak için kullanılır.
- readme.md: Playbook'u kullanma kılavuzu.
Kurulumu özelleştirmek için playbook'un değişken dosyasını düzenlememiz gerekiyor. İlk olarak, yukarıda belirtilen dizinin içinde bulunan vars/default.yaml dosyasını açın:
|
1 2 3 |
cd wordpress-lamp_ubuntu1804 nano vars/default.yml |
Bu dosya oldukça uzundur. Kurulumumuzda bize yardımcı olacak bir dizi yapılandırma içerir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--- #Sistem Ayarları php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Ayarları mysql_root_password: "mysql_root_password" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "password" #HTTP Ayarları http_host: "your_domain" http_conf: "your_domain.conf" http_port: "80" |
Burada aşağıdaki değişkenlerle ilgileniyoruz:
- php_modules: WordPress kurulumunuzu desteklemek için yüklenmesi gereken PHP uzantılarını içeren bir dizi. Daha fazla modül yüklemek istiyorsanız bunu burada belirtebilirsiniz.
- mysql_root_password: root MySQL hesabının şifresi.
- mysql_db: WordPress'in kullanacağı MySQL veritabanının adını belirtir.
- mysql_user: WordPress için oluşturulması gereken MySQL kullanıcısının adı.
- mysql_password: Yeni MySQL kullanıcısının şifresi.
- http_host: Sunucunun alan adı veya IP adresi.
- http_conf: Apache içinde oluşturulacak yapılandırma dosyasının adı.
- http_port: Bu sanal ana bilgisayar için HTTP bağlantı noktası. Bu port web sitesine erişmek için kullanılır. Varsayılan değer 80'dir.
Ardından, yukarıdaki dosyaya değerleri girin, kaydedin ve kapatın. Nano düzenleyiciyi kullanan kullanıcılar için, CTRL+X, Y tuşlarına basın ve ardından ENTER.
tuşuna basın. Artık bu playbook'u çalıştırmaya hazırsınız. Bu playbook'u bir veya daha fazla sunucuda çalıştırabilirsiniz. Bu playbook'u belirli bir sunucuda çalıştırmak istiyorsanız, -l bayrağını kullanabilirsiniz. Ayrıca, uzak sunucuya bağlanacak kullanıcıyı belirtmeniz gerekiyorsa, -u bayrağını kullanarak kullanıcıyı belirtin.
Playbook'umuzu herhangi bir sunucuda, srvr1 üzerinde, u1 kullanıcısını kullanarak çalıştırmak istediğimizi varsayalım, aşağıdaki komutu çalıştırabiliriz:
|
1 |
ansible-playbook playbook.yml -l server1 -u cloudsigma |
Yukarıdaki komutu çalıştırdığınızda aşağıdakine benzer bir çıktı alacaksınız:
|
1 2 3 4 5 6 7 8 9 |
PLAY [all] ******************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [server1] TASK [Install prerequisites] ******************************************************************************** ok: [server1] |
Playbook yürütülmesinin tamamlanmasını bekleyin. Ardından, web tarayıcınızda server_name adresine gidin:
|
1 |
http://server_host_or_ip/ |
Şu ekranı göreceksiniz:

Ardından, istediğiniz dili seçin ve Devam Et butonuna basın. Kurulumu tamamlamak için bazı bilgileri isteyen bir sonraki ekranla karşılaşacaksınız:

Bundan sonra, bilgileri girin ve WordPress'i Kur butonuna basın. Bu işlem biraz zaman alacaktır ve ardından aşağıdakine benzer bir ekran göreceksiniz:

Web sitenizde oturum açmak ve ayarları yapılandırmak için Giriş seçeneğini belirleyin:

Ansible Playbook İçeriği
Şu klasörü hatırlayın: wordpress-lamp_ubuntu klasörü. İçinde birkaç dosya barındırır. Şimdi bunları tek tek inceleyelim:
● vars/default.yml
Bu dosya, WordPress web sitenizin ayarlarını yapılandırmak için kullanılan değerleri içerir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#Sistem Ayarları php_modules: [ 'php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip' ] #MySQL Ayarları mysql_root_password: "mysql_root_sifresi" mysql_db: "wordpress" mysql_user: "sammy" mysql_password: "sifre" #HTTP Ayarları http_host: "alan_adiniz" http_conf: "alan_adiniz.conf" http_port: "80" |
● files/apache.conf.j2
Bu dosya, Apache VirtualHost'u yapılandırmak için kullanılır:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<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> |
● files/wp-config.php.j2
Bu dosya WordPress'i yapılandırmak için kullanılır. Karma (hash) fonksiyonları tarafından üretilen benzersiz anahtarları ve tuzları içerir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
<?php /** * WordPress için temel yapılandırma * * wp-config.php oluşturma betiği kurulum sırasında bu dosyayı * kullanır. Web sitesini kullanmak zorunda değilsiniz, bu dosyayı * "wp-config.php" olarak kopyalayabilir ve değerleri doldurabilirsiniz. * * Bu dosya aşağıdaki yapılandırmaları içerir: * * * MySQL ayarları * * Gizli anahtarlar * * Veritabanı tablo öneki * * ABSPATH * * @link https://codex.wordpress.org/Editing_wp-config.php * * @package WordPress */ // ** MySQL ayarları - Bu bilgileri web barındırıcınızdan alabilirsiniz ** // /** WordPress için veritabanı adı */ define( 'DB_NAME', '{{ mysql_db }}' ); /** MySQL veritabanı kullanıcı adı */ define( 'DB_USER', '{{ mysql_user }}' ); /** MySQL veritabanı şifresi */ define( 'DB_PASSWORD', '{{ mysql_password }}' ); /** MySQL sunucu adı */ define( 'DB_HOST', 'localhost' ); /** Veritabanı tabloları oluşturulurken kullanılacak veritabanı karakter seti. */ define( 'DB_CHARSET', 'utf8' ); /** Veritabanı karşılaştırma türü. Kararsız kalırsanız bunu değiştirmeyin. */ define( 'DB_COLLATE', '' ); /** Dosya sistemi erişimi **/ define('FS_METHOD', 'direct'); /**#@+ * Kimlik Doğrulama Benzersiz Anahtarları ve Tuzları. * * Bunları farklı benzersiz ifadelerle değiştirin! * Bunları {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org gizli anahtar servisini} kullanarak oluşturabilirsiniz * Mevcut tüm çerezleri geçersiz kılmak için bunları istediğiniz zaman değiştirebilirsiniz. Bu, tüm kullanıcıları tekrar giriş yapmaya zorlayacaktır. * * @since 2.6.0 */ define( 'AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_KEY', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'SECURE_AUTH_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'LOGGED_IN_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); define( 'NONCE_SALT', '{{ lookup('password', '/dev/null chars=ascii_letters length=64') }}' ); /**#@-*/ /** * WordPress Veritabanı Tablo ön eki. * * Her birine benzersiz bir ön ek vererek tek bir veritabanında * birden fazla kurulum yapabilirsiniz. Lütfen sadece sayı, harf ve alt çizgi kullanın! */ $table_prefix = 'wp_'; /** * Geliştiriciler için: WordPress hata ayıklama modu. * * Geliştirme sırasında uyarıların görüntülenmesini etkinleştirmek için bunu true olarak değiştirin. * Eklenti ve tema geliştiricilerinin geliştirme ortamlarında WP_DEBUG * kullanmaları şiddetle tavsiye edilir. * * Hata ayıklama için kullanılabilecek diğer sabitler hakkında bilgi edinmek için * visit the Codex. * * @link https://codex.wordpress.org/Debugging_in_WordPress */ define( 'WP_DEBUG', false ); /* Hepsi bu kadar, düzenlemeyi durdurun! Mutlu yayınlar. */ /** WordPress dizininin mutlak yolu. */ if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } /** WordPress değişkenlerini ve dahil edilen dosyaları ayarlar. */ require_once( ABSPATH . 'wp-settings.php' ); |
● playbook.yml
Bu dosya, bu kurulumda tanımlanan tüm görevleri içerir. Bu kurulum tarafından hedeflenen bir grup sunucuyu listeleyerek başlar. Yapılandırma seçeneklerini yüklemek için vars/default.yml değişken dosyasını içerir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
--- - hosts: all become: true vars_files: - vars/default.yml tasks: - name: Kur önkoşulları apt: name=aptitude update_cache=yes state=latest force_apt_get=yes tags: [ system ] - name: Kur LAMP Paketlerini apt: name={{ item }} update_cache=yes state=latest loop: [ 'apache2', 'mysql-server', 'python3-pymysql', 'php', 'php-mysql', 'libapache2-mod-php' ] tags: [ system ] - name: Kur PHP Eklentilerini apt: name={{ item }} update_cache=yes state=latest loop: "{{ php_modules }}" tags: [ system ] # Apache Yapılandırması - name: Oluştur doküman kök dizini file: path: "/var/www/{{ http_host }}" state: directory owner: "www-data" group: "www-data" mode: '0755' tags: [ apache ] - name: Yapılandır up Apache VirtualHost template: src: "files/apache.conf.j2" dest: "/etc/apache2/sites-available/{{ http_conf }}" notify: Yeniden yükle Apache tags: [ apache ] - name: Etkinleştir rewrite modülü shell: /usr/sbin/a2enmod rewrite notify: Yeniden yükle Apache tags: [ apache ] - name: Etkinleştir yeni sitesi shell: /usr/sbin/a2ensite {{ http_conf }} notify: Yeniden yükle Apache tags: [ apache ] - name: Devre dışı bırak varsayılan Apache sitesi shell: /usr/sbin/a2dissite 000-default.conf notify: Yeniden başlat Apache tags: [ apache ] # MySQL Yapılandırması - name: Belirle the root şifresi mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/run/mysqld/mysqld.sock tags: [ mysql, mysql-root ] - name: Kaldır tüm anonim kullanıcı hesaplarını mysql_user: name: '' host_all: yes state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Kaldır the MySQL test veritabanını mysql_db: name: test state: absent login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: Oluşturur veritabanı için WordPress mysql_db: name: "{{ mysql_db }}" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] - name: WordPress için MySQL kullanıcısı oluştur mysql_user: name: "{{ mysql_user }}" password: "{{ mysql_password }}" priv: "{{ mysql_db }}.*:ALL" state: present login_user: root login_password: "{{ mysql_root_password }}" tags: [ mysql ] # UFW Yapılandırması - name: "UFW - {{ http_port }} portunda HTTP'ye izin ver" ufw: rule: allow port: "{{ http_port }}" proto: tcp tags: [ system ] # WordPress Yapılandırması - name: En son WordPress'i indir ve arşivden çıkar unarchive: src: https://wordpress.org/latest.tar.gz dest: "/var/www/{{ http_host }}" remote_src: yes creates: "/var/www/{{ http_host }}/wordpress" tags: [ wordpress ] - name: Sahipliği ayarla file: path: "/var/www/{{ http_host }}" state: directory recurse: yes owner: www-data group: www-data tags: [ wordpress ] - name: Dizinler için izinleri ayarla shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type d -exec chmod 750 {} \\;" tags: [ wordpress ] - name: Dosyalar için izinleri ayarla shell: "/usr/bin/find /var/www/{{ http_host }}/wordpress/ -type f -exec chmod 640 {} \\;" tags: [ wordpress ] - name: wp config dosyasını -ayarla template: src: "files/wp-config.php.j2" dest: "/var/www/{{ http_host }}/wordpress/wp-config.php" tags: [ wordpress ] handlers: - name: Apache'yi yeniden yükle service: name: apache2 state: reloaded - name: Apache'yi yeniden başlat service: name: apache2 state: restarted |
Kurmakta olduğunuz web sitesinin özel ihtiyaçlarına göre bu dosyaları dilediğiniz gibi değiştirebilirsiniz.
Sonuç
Bu eğitimde, Ansible ile en son Ubuntu işletim sistemi üzerinde LAMP yığını üzerinde çalışan bir WordPress web sitesinin kurulumunu ve yapılandırmasını nasıl otomatikleştirebileceğinizi gösterdik.
Ansible ile çalışmaya yönelik daha fazla kılavuz için, aşağıdaki eğitimlere göz atabilirsiniz: blogumuz:
- CloudSigma ile Ansible Kullanımı
- Ansible ve Ubuntu 20.04 kullanarak Sunucu Kurulumunu Otomatikleştirme
- Ansible ile Ubuntu 20.04 üzerinde LAMP Kurulumu ve Yapılandırması
Keyifli çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.