CentOS 7 Üzerine WordPress Kurulumu

Self-hosted denemelerinin vaz geçilmez örneklerinden biri olan WordPress kurulumunu bu yazımda anlatmaya çalışacağım. Kurulumu sanal CentOS 7 üzerinde gerçekleştireceğim. Karşımıza çıkması muhtemel problemleri çıkarabilmek için de elimden geleni yapacağım. Israrla hata yaparak kurmaya çalışacağım 🙂

Bugün satın alacağınız neredeyse tüm shared hosting paketlerine birkaç tıklamayla kurabileceğiniz; hatta bir sanal sunucu kiraladığınızda üzerinde kurulu olarak gelmesini talep edebileceğiniz bir uygulama kuracağız. Amacımız, bu yazılımın çalışma sürecinde arkaplanda olan bitenleri kavrayabilmek.

Öte yandan, “Beni bu kadar uğraştırma, çok uzun olmuş.” diyorsanız; doğrudan “Sonuç Olarak” kısmına atlayabilirsiniz.

Önemli Not: Bu doküman, test ortamında örnek bir kurulum amacıyla hazırlanmıştır. Güvenliği şüphelidir. Prod ortamda kullanım sorumluluğu size aittir.

Bu Kılavuz İçin Ön Gereksinimler

  1. Internet’e çıkabilen bir CentOS 7 makinesi.
  2. İlgili makinede root yetkisi.
  3. Host makinenizden guest makinenize erişim.
    1. Eğer sanallaştırma kullanmıyorsanız, CentOS 7 cihazınızın web tarayıcısına “localhost” ya da “127.0.0.1” yazarak sitenize erişebilirsiniz. Tabii 80 portunu kullanan başka bir servis yoksa.
    2. Eğer VirtualBox kullanıyorsanız, “Köprü Bağdaştırıcısı (Bridge Adapter)” kullanarak elde edeceğiniz IP adresini, host makinenizin web tarayıcısına yazarak sitenize erişebilirsiniz.
    3. Eğer VirtualBox kullanıyorsanız, “NAT Network” ve “Port Forwarding” yardımıyla IP ve port yönlendirmesi yapabilirsiniz. Ben bu dokümanı hazırlarken bu yöntemi kullandım. “127.0.0.100:8090” adresi, guest makinemdeki 80 portuna yönlendirilmiş durumda.
    4. Tarzanca host ve guest tanımı: Host sizin bilgisayarınız. Üzerine VirtualBox kurduğunuz makine. Guest ise içine kurduğunuz sanal makine.

WordPress Nedir?

WordPress, özgür ve açık kaynak kodlu bir içerik yönetim sistemidir (content management system, CMS). PHP ve MySQL üzerinde çalışır. Mayıs 2019 itibariyle dünyanın en çok kullanılan içerik yönetim sistemidir. CMS kullanılan web sitelerinin %60’ı civarı WordPress kullanmaktadır.^1

WordPress İçin Ön Gereksinimler

WordPress’in sunucunuzda çalışabilmesi için bazı ön gereksinimlere ihtiyacı vardır.^2 Burada dikkat etmeniz gereken bir nokta var. WordPress, bir web uygulaması. Paket yöneticinizden indirip, bu sırada bağımlılıklarının da yine paket yöneticiniz tarafından kurulmasını bekleyeceğiniz bir uygulama değil.

WordPress 5.5.3 şunlara ihtiyaç duyar:

  • PHP 7.4 veya üzeri.
    • WordPress, PHP diliyle yazılmış bir uygulamadır. Sunucunuzda PHP yorumlayıcı yoksa, WordPress’i kullanamazsınız.
  • MySQL 5.6 veya üzeri ya da MariaDB 10.1 veya üzeri.
    • WordPress, veritabanına ihtiyaç duyan bir uygulamadır ve MySQL ile çalışmaktadır. MariaDB de MySQL’in bir fork’u olduğu için, MariaDB’yi de desteklemektedir.
  • HTTPS desteği.
    • Nedenini çok tartışmaya gerek yok sanırım. Fakat bu yazıda HTTPS ile ilgilenmeyeceğiz.
  • PHP ve MySQL destekleyen bir web server.
    • Takdir edersiniz ki, bir web uygulamasının çalışması için web server’a ihtiyaç duyarız. WordPress her ne kadar Apache ya da Nginx önerse de, PHP ve MySQL destekleyen farklı bir web server üzerinde de WordPress çalışabilir. Bu yazıda Apache kullanacağız.

Hadi başlayalım. Bakalım başımıza neler gelecek.

WordPress’in İndirilmesi

WordPress’i resmi web sitesinden bir tarball olarak indireceğiz. Sonrasında bu tarball’ı açacağız. Açılmış olan dosyalar, ilerleyen adımlarda kuracağımız web server’ın servis edeceği dizine taşınacak.

WordPress’in indirme sayfasına baktığımızda, “*tar.gz” uzantılı bir tarball linki görüyoruz: https://wordpress.org/latest.tar.gz

Bu link, WordPress’in en güncel sürümünü bize getirecektir. İndirme işlemi için “wget” programından faydalanacağız. “wget” kurulu değilse, “yum install wget” ile kurabilirsiniz.

[root@localhost ~]# wget https://wordpress.org/latest.tar.gz

İndirme işlemi tamamlandıktan sonra tarball’ı açıyoruz:

tar -xzf latest.tar.gz

Bu işlemler sonucunda, aşağıda göreceğiniz gibi WordPress arşivini ve açılmış hâlini elde etmiş oluyoruz:

Wordpress'in indirilmesi ve tarball'ın açılması
WordPress’in indirilmesi ve tarball’ın açılması

Buraya kadar olan kısımda WordPress’in dosyalarını indirdik. Herhangi bir kurulum yapmadık. Kurulum için ihtiyacımız olan ön gereksinimleri tamamlamamız gerekiyor. Burada da işe “MariaDB” tarafından başlayacağız.

MariaDB Kurulumu

MySQL projesinin fork’u olan MariaDB, MySQL’in satın alınmasından sonra ortaya çıkmış bir proje.^3 Pek çok kişi, MySQL’in üzerindeki bazı baskılardan kaçış için MariaDB tarafına yöneldi. Benzer bir durum Open Office ve Libre Office için de yaşanmıştı ve baş rolde yine Oracle vardı 🙂

MariaDB, şu an kullanmakta olduğumuz CentOS 7 repolarında zaten mevcut. Fakat sürümü güncel değil. Güncel olmamasının haricinde, WordPress’in bize önerdiği sürümlerde de değil:

[root@localhost ~]# yum provides "mariadb"
Yüklü eklentiler: fastestmirror
Loading mirror speeds from cached hostfile
 * base: 
 * extras: 
 * updates: 
1:mariadb-5.5.68-1.el7.x86_64 : A community developed branch of MySQL
Depo        : base
[root@localhost ~]# yum provides "mariadb-server"
Yüklü eklentiler: fastestmirror
Loading mirror speeds from cached hostfile
 * base: 
 * extras: 
 * updates: 
1:mariadb-server-5.5.68-1.el7.x86_64 : The MariaDB server and related files
Depo        : base

Yukarıdaki çıktılardan da görüleceği üzere, CentOS 7 repolarında var olan MariaDB sürümü 5.5.68. Fakat bize en az 10.1 sürümü lazım. Bu sürümü edinmek için MariaDB’nin resmi sayfasına gidebileceğiniz gibi, farklı yöntemler de kullanabilirsiniz.

[root@localhost ~]# curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
[info] Successfully added trusted package signing keys
[root@localhost ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb-main]
name = MariaDB Server
baseurl = https://downloads.mariadb.com/MariaDB/mariadb-10.5/yum/rhel/$releasever/$basearch
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY
gpgcheck = 1
enabled = 1


[mariadb-maxscale]
# To use the latest stable release of MaxScale, use "latest" as the version
# To use the latest beta (or stable if no current beta) release of MaxScale, use "beta" as the version
name = MariaDB MaxScale
baseurl = https://dlm.mariadb.com/repo/maxscale/latest/centos/$releasever/$basearch
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-MaxScale-GPG-KEY
gpgcheck = 1
enabled = 1

[mariadb-tools]
name = MariaDB Tools
baseurl = https://downloads.mariadb.com/Tools/rhel/$releasever/$basearch
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Enterprise-GPG-KEY
gpgcheck = 1
enabled = 1

Yukarıda 2 komut çalıştırdık. Bunlardan bir tanesi “curl“. curl, URL transferleri için kullandığımız bir program.

  • -L: Location. URL yeni bir yere yönlendirilmişse isteği yeni noktaya tekrar yap.
  • -s: Silent. Sessiz çalış. Çıktı üretme.
  • -S: Show error. Sessiz çalışırken hata ile karşılaşırsan bunları bildir.

curl’den sonra yazdığımız URL, bir bash script‘i işaret ediyor. Tüm script’i pipe ile “bash“‘e gönderiyoruz. Script çalıştırılıyor. Bu script, MariaDB repolarını bilgisayarınıza ekliyor. Eğer script’i çalıştırmak yerine indirmeyi isterseniz; “curl -LsS” yerine “curl -LO” kullanabilirsiniz.

İkinci komutumuz ise “cat” oldu. Repo’ların içine atılan dosyanın içeriğini incelemek için kullandık. Repo hazır olduğuna göre, paketi kurma işlemine geçebiliriz.

MariaDB repolarının eklenmesi
MariaDB repolarının eklenmesi

MariaDB’nin verimli çalışabilmesi için 3 paket kurmamız öneriliyor. Bu paketler DB sunucusu, DB istemcisi ve yedekleme paketi.

[root@localhost ~]# yum install MariaDB-server MariaDB-client MariaDB-backup

Bu işlemin sonucunda, aşağıdakine benzer bir çıktı almış olmalısınız:

MariaDB paketleri yükleme sonucu
MariaDB paketleri yükleme sonucu

Backup, compat(ibility?), client ve server paketlerinin kurulduğunu görüyoruz. Bunlarla birlikte gereken bazı bağımlılıklar da sisteme eklenmiş. Önceden var olan “mariadb-libs” paketi ise güncellenmiş.

Kurulum sırasında dikkatinizi çekmek istediğim bir nokta daha var. MariaDB, kurulan paketlerin doğrulanması aşamasından önce bize bazı bilgiler sunuyor:

Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.
You can find additional information about the MySQL part at:
https://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

Bu bilgiye bakarsak şunu anlayabiliriz. “root@localhost” hesabı oluşturulmuş. Parolası yok. Fakat oturum açabilmek için “root” olmamız gerekiyor. Nasıl yani? Şöyle ki, “root@localhost” kullanıcısı, “localhost’ta yer alan MariaDB veritabanı sunucusundaki” bir kullanıcı iken; “root” kullanıcısı, CentOS 7 cihazımızdaki kullanıcı. Benzer durum, “mysql@localhost” ve “mysql” kullanıcıları için de geçerli.

Bu başlık altında, sadece repoları ekledik ve paketleri kurduk. Süreci daha detaylı incelemek isterseniz MariaDB’nin kendi dokümantasyonunu incelemenizi öneririm.^4

MariaDB Servisinin Başlatılması

MariaDB servisini kullanabilmek için servisi çalıştırmamız gerekiyor. Eğer cihazınız yeniden başlatıldığında da bu servisin kendiliğinden açılmasını istiyorsanız, servisi “enable” etmelisiniz.

Aşağıdaki çıktıyı ve ekran görüntüsünü inceleyin. Servis “inactive” durumdayken veritabanına bağlanamıyoruz. Kullandığımız komutlar şunlar:

  • mysql: Veritabanı sunucusuna bağlantı. Şu an root olduğumuz için doğrudan geçiş yapabiliyoruz.
  • systemctl status mariadb: MariaDB sunucusunun durumu.
  • systemctl enable mariadb: Yukarıda açıkladığım gibi, reboot sonrası servisin ayağa kalkması için gerekli.
  • systemctl start mariadb: MariaDB sunucusunu başlat.
  • Bunlara ek olarak “systemctl stop mariadb” ve “systemctl restart mariadb” de aklınızın bir köşesinde olsun. Tahmin edeceğiniz üzere servisi durdurmak ve yeniden başlatmak için kullandığımız komutlar.
[root@localhost ~]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@localhost ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: inactive (dead)
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
[root@localhost ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Çrş 2020-11-25 14:24:50 +03; 2s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 1699 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 1675 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 1673 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 1686 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─1686 /usr/sbin/mariadbd

Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] InnoDB: 10.5.8...20
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] Plugin 'FEEDBA...d.
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] InnoDB: Loadin...ol
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] InnoDB: Buffer...50
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] Server socket ...'.
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] Reading of all...ed
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] Added new Mast...le
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: 2020-11-25 14:24:50 0 [Note] /usr/sbin/mari...s.
Kas 25 14:24:50 localhost.localdomain mariadbd[1686]: Version: '10.5.8-MariaDB'  socket: '/var/li...er
Kas 25 14:24:50 localhost.localdomain systemd[1]: Started MariaDB 10.5.8 database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>
MariaDB servisinin durum kontrolü, enable edilmesi ve başlatılması.
MariaDB servisinin durum kontrolü, enable edilmesi ve başlatılması.

Daha detaylı bilgi almak isterseniz, MariaDB dokümantasyonuna göz atabilirsiniz.^5

MariaDB Kurulumunun Güvenliğini Arttırma

Tabii ki sadece bir script çalıştırarak “MariaDB’miz güvenli oldu” diyemeyiz…

Kurulum sonrasında bazı varsayılan ayarlardan, hesaplardan ve veritabanlarından kurtulmamızı sağlayan bir shell script var: “mariadb-secure-installation^6

Bu script’i çalıştırdıktan sonra şunları yapıyoruz:

  • root@localhost hesabının güvenliği sorgulanıyor. root (CentOS’taki) hesabınız zaten korunuyorsa ve MariaDB ayarlarınız yalnızca sistem root’unun database root’u olabileceği şeklinde ayarlandıysa – hatırlarsanız varsayılanı zaten bu şekildeydi – unix_socket ve root parolası değiştirme kısımlarında “n” diyebileceğimizi söylüyor.
  • Anonim kullanıcıları kaldırıyoruz.
  • root@localhost’un uzaktan erişmesini engelliyoruz.
  • test veritabanını siliyoruz.
  • Değişikliklerin hemen geçerli olabilmesi için “privilege table”ı güncelliyoruz.
[root@localhost ~]# file $(which mariadb-secure-installation )
/usr/bin/mariadb-secure-installation: POSIX shell script, ASCII text executable
[root@localhost ~]# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@localhost ~]#
MariaDB secure installation
MariaDB secure installation

MariaDB güvenliğinizi arttırmak için şu dokümana göz atabilirsiniz.^7

WordPress İçin Veritabanının Oluşturulması

MariaDB sunucumuz ayağa kalktığına göre, WordPress için gerekli olan veritabanını ve bu veritabanını yönetecek kullanıcıyı oluşturabiliriz. Sonrasında, oluşturduğumuz kullanıcının yeni veritabanımız üzerinde hangi işleri yapabileceği konusunda bir yetkilendirme yapacağız. WordPress’in isteğini dikkate alıp, kullanıcıya veritabanı üzerindeki tüm yetkileri vereceğiz.

MariaDB Kullanıcı Oluşturma

Oluşturacağım kullanıcının adı “wp_db_user” ve parolası “dbpassw0rd“. Veritabanı isimlerinizin ve kullanıcılarınızın, uygulamayı çağrıştıran isimler olmaması gerekir. Adı “wordpress” olan ya da adında “wp” geçen bir veritabanı ya da kullanıcı, yüksek ihtimalle “WordPress”e ait olacaktır değil mi? Şu an test ortamında olduğumuz için bu detaylara çok takılmadan devam ediyoruz.

Önce bir parola hash’i oluşturup sonrasında bu hash’i kullanarak bir kullanıcı oluşturuyoruz ve sonrasında tüm kullanıcıları listeliyoruz.

  • mysql: MariaDB CLI’ını aç.
  • SELECT PASSWORD(‘dbpassw0rd’);: dbpassw0rd kelimesinden bir hash oluştur.
  • CREATE USER wp_db_user@localhost IDENTIFIED BY PASSWORD ‘*3AA1FAA1EA7983922FDB92DE6F199972B231227A’;: localhost sunucusunda wp_db_user isimli ve parola hash’i önceden belirlenmiş bir kullanıcı oluştur.
  • SELECT host, user FROM mysql.user;: Sunucu üzerindeki kullanıcıları ve oturum açabilecekleri host’ları göster.
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> SELECT PASSWORD('dbpassw0rd');
+-------------------------------------------+
| PASSWORD('dbpassw0rd')                    |
+-------------------------------------------+
| *3AA1FAA1EA7983922FDB92DE6F199972B231227A |
+-------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> CREATE USER wp_db_user@localhost IDENTIFIED BY PASSWORD '*3AA1FAA1EA7983922FDB92DE6F199972B231227A';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> SELECT host, user FROM mysql.user;
+-----------+-------------+
| Host      | User        |
+-----------+-------------+
| localhost | mariadb.sys |
| localhost | mysql       |
| localhost | root        |
| localhost | wp_db_user  |
+-----------+-------------+
4 rows in set (0.001 sec)

MariaDB [(none)]>
MariaDB'de kullanıcı oluşturma
MariaDB’de kullanıcı oluşturma

MariaDB Veritabanı Oluşturma

MariaDB’de database oluşturmak için basit bir SQL komutumuz var.

  • CREATE DATABASE blog_db;: “blog_db” adında bir veritabanı oluşturur.
  • SHOW DATABASES;: Sunucu üzerindeki veritabanlarını gösterir.
MariaDB [(none)]> CREATE DATABASE blog_db;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| blog_db            |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]>
MariaDB'de veritabanı oluşturma ve listeleme
MariaDB’de veritabanı oluşturma ve listeleme

Kullanıcıya Veritabanı Üzerinde Yetki VermE

Burada konumuz; belirli bir veritabanı üzerindeki herhangi bir tablo üzerinde yapılabilecek tüm işlemler için bir kullanıcıyı yetkilendirmek olacak.

  • SHOW GRANTS FOR wp_db_user@localhost;: “wp_db_user” kullanıcısının yetkilerini göster.
  • SELECT PASSWORD(‘dbpassw0rd’);: “dbpassw0rd” kelimesi için hash üret.
  • GRANT ALL PRIVILEGES ON blog_db.* TO wp_db_user@localhost IDENTIFIED BY PASSWORD ‘*3AA1FAA1EA7983922FDB92DE6F199972B231227A’;: “blog_db” veritabanındaki tüm tablolar üzerinde (*), parola korumalı “wp_db_user” kullanıcısına tüm yetkileri (ALL PRIVILEGES) ver.
  • FLUSH PRIVILEGES;: MariaDB’nin izinlerle ilgili tuttuğu ön belleği temizle.
  • SHOW GRANTS FOR wp_db_user@localhost;: “wp_db_user” kullanıcısının yetkilerini göster.
MariaDB [(none)]> SHOW GRANTS FOR wp_db_user@localhost;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for wp_db_user@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `wp_db_user`@`localhost` IDENTIFIED BY PASSWORD '*3AA1FAA1EA7983922FDB92DE6F199972B231227A' |
+-------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> SELECT PASSWORD('dbpassw0rd');
+-------------------------------------------+
| PASSWORD('dbpassw0rd')                    |
+-------------------------------------------+
| *3AA1FAA1EA7983922FDB92DE6F199972B231227A |
+-------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON blog_db.* TO wp_db_user@localhost IDENTIFIED BY PASSWORD '*3AA1FAA1EA7983922FDB92DE6F199972B231227A';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;                                                                   Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> SHOW GRANTS FOR wp_db_user@localhost;                                               +-------------------------------------------------------------------------------------------------------------------+
| Grants for wp_db_user@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `wp_db_user`@`localhost` IDENTIFIED BY PASSWORD '*3AA1FAA1EA7983922FDB92DE6F199972B231227A' |
| GRANT ALL PRIVILEGES ON `blog_db`.* TO `wp_db_user`@`localhost`                                                    |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB [(none)]>
MariaDB üzerinde kullanıcılara yetki verme.
MariaDB üzerinde kullanıcılara yetki verme.

Bu adımları tamamladıktan sonra “blog_db” isimli veritabanımız üzerinde her işlemi gerçekleştirebilecek “wp_db_user” isimli kullanıcımızı oluşturmuş oluyoruz. “quit” komutuyla MariaDB shell’inizi kapatabilirsiniz.

Apache Web Server Kurulumu

Web server olarak Apache’yi tercih edeceğimizden bahsetmiştik. Bunun özel bir sebebi yok. Taleplerinize yanıt verebilecek web server’ları bulmak için kıyaslama tablolarından ya da uygulamaların dokümantasyonundan faydalanabilirsiniz.

CentOS 7 tarafında Apache web server için kullandığımız paketin adı “httpd“. yine MariaDB tarafında olduğu gibi servisi başlatma ve enable etme işlerimiz olacak.^8

  • yum install httpd
  • systemctl start httpd
  • systemctl enable httpd
  • systemctl status httpd
[root@localhost ~]# yum install httpd
[.......]
Kuruldu:
  httpd.x86_64 0:2.4.6-97.el7.centos

Bağımlılık Kuruldu:
  apr.x86_64 0:1.4.8-7.el7                                apr-util.x86_64 0:1.5.2-6.el7
  httpd-tools.x86_64 0:2.4.6-97.el7.centos                mailcap.noarch 0:2.1.41-2.el7

Tamamlandı!
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Çrş 2020-11-25 17:19:55 +03; 11s ago
[.......]
[root@localhost ~]#

Sunucumuza erişmeye çalıştığımızda, bizi Apache’nin standart ekranı karşılayacaktır. Eğer erişim sağlayamıyorsanız, CentOS 7 üzerindeki firewall bunu engelliyor olabilir.

[root@localhost ~]# systemctl stop firewalld

Bu yazıda “iptables” gibi konulardan ve firewall’ın öneminden bahsetmeyeceğiz. Yukarıdaki komutu kullanarak firewall’ı tamamen kapatıp sonrasında erişmeyi deneyebilirsiniz.

Apache Web Server karşılama ekranı.
Apache Web Server karşılama ekranı.

Apache web server, konfigürasyonların büyük bölümü için “/etc/httpd” dizinini ve bu dizinin içeriğini kullanır. Servis edeceğimiz sayfaları ise “/var/www/html” dizininde görmek ister. Bunlar, varsayılan değerlerdir.

Bu bilgileri Internet’te bulabilirsiniz, uygulamanın dokümanında okuyabilirsiniz. Ya da paket yöneticinize şu soruyu sorarsınız: Bu paket bana neler getirdi? Gelen listede /etc altındakiler config, /var altındakiler ise değişkenlik göstermeye meyilli dosyalar olacaktır. Fakat böyle bir çıkarım yapmak yerine dokümantasyona bakmak daha faydalı olacaktır.

[root@localhost ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
[......]
/var/log/httpd
/var/www
/var/www/cgi-bin
/var/www/html
[root@localhost ~]#

Apache konfigürasyonu apayrı bir iş. Onu şimdilik bir kenara bırakarak yolumuza devam edelim. Elimizde bir veritabanı sunucusu ve bir web sunucusu var. Bu arkadaşlar ayakta ve hizmete hazır görünüyor. Şimdilik.

PHP Kurulumu

PHP, yorumlanan bir dildir. Derlenmez (compile edilmez). Sıradan bir text dosyasına PHP kodlarınızı yazarak çalıştırabilirsiniz. Fakat bu çalıştırma işini, arkaplanda sizin için yapması gereken bir yorumlayıcıya ihtiyaç duyarsınız.

Benzer durumlar farklı dillerde de karşımıza çıkıyor. HTML’i yorumlamak için web tarayıcılarından faydalanıyoruz. Python script’lerini çalıştırmak için Python’a, shell script‘leri çalıştırmak için shell’e ihtiyaç duyuyoruz.

Peki kurmazsak ne olur? Basit bir PHP kodu yazıp sunucumuzdan servis etmeyi deneyelim:

[root@localhost ~]# echo '<?php echo "Khabib is the G.O.A.T."; ?>' > /var/www/html/test.php
[root@localhost ~]# cat /var/www/html/test.php
<?php echo "Khabib is the G.O.A.T."; ?>

Tarayıcıya gittiğimizde, ekranda “Khabib is the G.O.A.T.” yazmasını bekliyoruz. Fakat aldığımız sonuç bu değil:

PHP yorumlayıcısı çalışmıyor.
PHP yorumlayıcısı çalışmıyor.

PHP kodumuz, çalıştırılmak yerine doğrudan ekrana basılmış. Tıpkı sıradan bir text gibi. PHP kurulumunu yaptıktan sonra yeniden deneyelim.

[root@localhost ~]# yum install php
[......]
Kuruldu:
  php.x86_64 0:5.4.16-48.el7

PHP yorumlayıcısı kurulduktan sonra sayfayı tekrar ziyaret ediyoruz. Burada cache’ten dolayı herhangi bir değişiklik görmeme ihtimaliniz var. Tarayıcı değiştirmeyi ya da “httpd” servisini yeniden başlatmayı deneyebilirsiniz. Sonuç aşağıdaki gibi olacaktır.

PHP kurulduktan sonra içeriğin görünümü.
PHP kurulduktan sonra içeriğin görünümü.

Buradan görebileceğimiz üzere, PHP kurulumunu da başarıyla tamamladık. O zaman WordPress’i çalıştırmaya başlayabiliriz.. Acaba?

WordPress Kurulumu

Ön gereksinimleri hazırladığımıza göre, WordPress’in dosyalarını ilgili dizine kopyalayıp kurulumu başlatabiliriz.

  • pwd: Bulunduğum dizini göster. Ben “wordpress” arşivini root’un ev dizinine (/root) çıkarmıştım.
  • ls: Bulunduğum dizinin içeriğini listele. “wordpress” dizininin burada olduğunu doğruladık.
  • cp -R wordpress/* /var/www/html/: Bulunduğumuz dizindeki “wordpress” dizini içerisindeki tüm dosya ve dizinleri “/var/www/html” altına kopyala.
  • cd /var/www/html: “/var/www/html” dizinine geç.
[root@localhost ~]# pwd
/root
[root@localhost ~]# ls
anaconda-ks.cfg  latest.tar.gz  wordpress
[root@localhost ~]# cp -R wordpress/* /var/www/html/
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
index.php    wp-activate.php     wp-comments-post.php  wp-cron.php        wp-load.php   wp-settings.php   xmlrpc.php
license.txt  wp-admin            wp-config-sample.php  wp-includes        wp-login.php  wp-signup.php
readme.html  wp-blog-header.php  wp-content            wp-links-opml.php  wp-mail.php   wp-trackback.php
[root@localhost html]#

Kurulumu kendiniz yapmak isterseniz, “wp-config-sample.php” dosyasını düzenlemeniz gerekiyor. Bu ayrı bir süreç.^9 Biz, bu ayarlamayı WordPress’in kendisinin yapmasını istiyoruz. Tabii ki bize soracağı şeyler var. Fakat alacağı yanıtları config dosyasına kendisi yazsın istiyoruz. Görülmesini istediğim bir hata var. Bu nedenle “wp-config-sample.php” dosyasının adını, “wp-config.php” olarak değiştiriyoruz.

[root@localhost html]# mv wp-config-sample.php wp-config.php

Sonrasında web sitemizi ziyaret ediyoruz ve karşımıza gelen şey: “Your server is running PHP version 5.4.16 but WordPress 5.5.3 requires at least 5.6.20.

Hatırlarsanız ön gereksinimler kısmında bazı sürüm numaraları görmüştük. Hatta MariaDB’yi kurarken “yum install mariadb” yapıp geçmek yerine MariaDB repolarıya uğraşmamızın sebebi de buydu. CentOS 7 repoları, uygulamaların sürümlerini biraz geriden takip eder. Bunun çeşitli, mantıklı sebepleri vardır. Fakat yeri burası değil. O yüzden hiç girmiyorum.

WordPress en az PHP 5.6.20 istediğini belirtiyor. Dokümantasyon ise en az 7.4 olsun demişti. Biz dokümantasyonu baz alarak ilerleyeceğiz. Şöyle ki, evet WordPress çalışır. Fakat bazı tutarsızlıklar, eklenti uyumsuzlukları, tema sorunları gündeme gelebilir. Bugün çıkmasa yarın çıkacak problemler bunlar. Dolayısıyla PHP sürümünü 7.4’e çekeceğiz.

EPEL Repo’larının Aktif Edilmesi

EPEL, yani “Extra Packages for Enterprise Linux“; bir paket deposu. Fedora ile yakından ilgili olan bu repo hakkında detaylı bilgi almak isterseniz Fedora’nın resmi web sitesini ve EPEL ile ilgili dokümanlarını inceleyebilirsiniz.

[root@localhost html]# yum install epel-release
[......]
Running transaction
  Kuruluyor    : epel-release-7-11.noarch                                                                                   1/1
  Doğrulanıyor : epel-release-7-11.noarch                                                                                   1/1

Kuruldu:
  epel-release.noarch 0:7-11

“epel-release” paketi, bazı repolar için anahtarları barındırır. Bu anahtarları aldıktan sonra, PHP için gerekli repo’yu enable edebiliriz.

  • yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm: Remi repo paketini kur.
  • yum update: Repo’ların güncellenmesi için çalıştırdım. Repo’lar güncellendikten sonra update işlemini sorduğunda ise “n” diyerek güncellemeyi reddettim.
  • yum search php: PHP paketlerini ara. İhtiyacımız olan paket php74.
  • yum install php74: PHP 7.4 sürümünü kur.
[root@localhost html]# yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Yüklü eklentiler: fastestmirror
remi-release-7.rpm                                                                                       |  20 kB  00:00:00
[......]
Kuruldu:
  remi-release.noarch 0:7.8-1.el7.remi

Tamamlandı!
[root@localhost html]# yum update
[......]
remi-safe                                                                                                | 3.0 kB  00:00:00
remi-safe/primary_db                                                                                     | 1.8 MB  00:00:06
Bağımlılıklar Çözülüyor
[......]
Kur        1 Paketler (+1 Bağımlı paketler)
Yükselt  131 Paketler

Toplam indirme boyutu: 254 M
Is this ok [y/d/N]: n
[......]
[root@localhost html]# yum search php
[......]
php73-xhprof.noarch : A Hierarchical Profiler for PHP - Web interface
php73-zephir.noarch : Zephir language for creation of extensions for PHP.
php74.x86_64 : Package that installs PHP 7.4
php74-php.x86_64 : PHP scripting language for creating dynamic web sites
php74-php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
[......]
[root@localhost html]# yum install php74
[......]
Kuruldu:
  php74.x86_64 0:1.0-3.el7.remi

[......]

Tamamlandı!

Bu işlemleri yaptıktan sonra ne olacak? Hiçbir şey.. Çünkü sistemimizde hâlâ “php” denilince akla 5.4.16 versiyonu geliyor. Güncel sürümü ise “php74” komutuyla çağırıyoruz. “python” ve “python3” durumuna benzer bir şey yaşıyoruz sanki, değil mi?

[root@localhost ~]# php -v
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
[root@localhost ~]# php74 -v
PHP 7.4.13 (cli) (built: Nov 24 2020 10:03:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
  • yum install yum-utils: yum-config-manager’ı kullanmak için yum-utils paketini kur.
  • yum-config-manager –enable remi-php74: Remi PHP 7.4 reposunu enable et.
  • yum repolist: Repo listesini güncelle. Bu sefer yum update yerine bunu kullandım.
  • yum install php: Hiçbir sürüm numarası belirtmeden PHP’yi kur.
  • php -v: PHP versiyonunu göster.
[root@localhost ~]# yum install yum-utils
[......]
Kuruldu:
  yum-utils.noarch 0:1.1.31-54.el7_8

Bağımlılık Kuruldu:
  libxml2-python.x86_64 0:2.9.1-6.el7.5                    python-chardet.noarch 0:2.2.1-3.el7                    python-kitchen.noarch 0:1.1.1-5.el7

Bağımlılık Güncellendi:
  libxml2.x86_64 0:2.9.1-6.el7.5

Tamamlandı!
[root@localhost ~]# yum-config-manager --enable remi-php74
=========================================================================== repo: remi-php74 ============================================================================
[remi-php74]
[......]
[root@localhost ~]# yum repolist
[......]
remi-php74                                                                                                                                        | 3.0 kB  00:00:00
remi-php74/primary_db                                                                                                                             | 223 kB  00:00:00
[......]
[root@localhost ~]# yum install php
[......]
Bağımlılık Kuruldu:
  libsodium.x86_64 0:1.0.18-1.el7                     php-json.x86_64 0:7.4.13-1.el7.remi                     php-sodium.x86_64 0:7.4.13-1.el7.remi

Güncellendi:
  php.x86_64 0:7.4.13-1.el7.remi

Bağımlılık Güncellendi:
  php-cli.x86_64 0:7.4.13-1.el7.remi                                                php-common.x86_64 0:7.4.13-1.el7.remi

Tamamlandı!
[root@localhost ~]# php -v
PHP 7.4.13 (cli) (built: Nov 24 2020 10:03:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Peki önceden kurduğumuz “php74” ne olacak? Kaldıralım derim. Alt tarafı bir PHP kuracaktık değil mi? Biraz acı çekmenizi istedim, kusura bakmayın. 🙂

[root@localhost ~]# rpm -qa | grep php
php74-php-common-7.4.13-1.el7.remi.x86_64
php-json-7.4.13-1.el7.remi.x86_64
php-sodium-7.4.13-1.el7.remi.x86_64
php74-php-json-7.4.13-1.el7.remi.x86_64
php74-php-cli-7.4.13-1.el7.remi.x86_64
php-common-7.4.13-1.el7.remi.x86_64
php-7.4.13-1.el7.remi.x86_64
php74-runtime-1.0-3.el7.remi.x86_64
php74-1.0-3.el7.remi.x86_64
php-cli-7.4.13-1.el7.remi.x86_64

Yukarıdaki çıktıda, içinde PHP geçen paketleri listeledim. “php74” ile başlayan tüm paketleri kaldıracağız.

[root@localhost ~]# yum remove php74-php-common php74-php-json php74-php-cli php74-runtime php74

PHP MySQL Eklentisi

PHP 7.4’ü – sonunda – kurmayı başardık. Bunu yaptıktan sonra işimiz bitiyor mu? Hayır 🙂

Öncelikle Apache’yi yeniden başlatıp web sitemizi tekrar ziyaret ediyoruz.

[root@localhost ~]# systemctl restart httpd

Bu sefer bizi yeni bir sürpriz bekliyor: Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

php mysql eklenti hatası
php mysql eklenti hatası

PHP için MySQL eklentimiz eksikmiş. Hemen kuralım. Sonra da web server’ımızı yeniden başlatalım:

[root@localhost ~]# yum install php-mysql
[......]
[root@localhost ~]# systemctl restart httpd

Tadaaa! Yine bozuk.

Wordpress veritabanı bağlantı hatası
WordPress veritabanı bağlantı hatası

Bu hatayı aldık. Çünkü “wp-config-sample.php” dosyamızın adını “wp-config.php” olarak değiştirmiştik. Peki neden değiştirdik? Değiştirmeseydik eski PHP versiyonunu kullandığımıza dair hatayı alamayacaktık (En azından ben görememiştim). Onu görelim istemiştim.

Burada şunu yapabiliriz. “wp-config.php” dosyasının içeriğini şuradaki dokümana göre doldurabiliriz. Ya da dosyanın ismini tekrar “wp-config-sample.php” yaparız ve bu dosyayı WordPress’in oluşturmasını isteriz.

[root@localhost ~]# mv /var/www/html/wp-config.php /var/www/html/wp-config-sample.php

Bu işlemden sonra web sitemize girdiğimizde bizi WordPress kurulum ekranı karşılıyor:

Wordpress kurulum ekranı
WordPress kurulum ekranı

Bence iyi bile geldik buraya kadar 🙂 Şimdi önceden hazırladığımız bilgilerle kurulumu yapalım.

Wordpress kurulumu konigürasyon ekranı
WordPress kurulumu konigürasyon ekranı

Bir sonraki adımda, WordPress yazılımının “wp-config.php” dosyasına yazamadığını görüyoruz. Bunun kullanıcı yönetimi ve dosya izinleriyle bir ilgisi ve bu durumun çözümü tabii ki var. Fakat bu sefer kolaya kaçalım ve önerildiği gibi tüm içeriği alıp “wp-config.php” dosyasına biz yazalım.

wp-config.php yazma hatası
wp-config.php yazma hatası

Herhangi bir editör kullanarak “wp-config.php” dosyasını hazırlayabilirsiniz. Tabii ki bu dosya, “/var/www/html/” dizininde olacak. Sonrasında “Run the installation” butonuna tıklayabilirsiniz. Karşınıza gelen ekrandaki bilgileri doldurduktan sonra WordPress’iniz kullanıma hazır olacak.

Wordpress ilk ayarlar
WordPress ilk ayarlar
Wordpress kurulum sonu
WordPress kurulum sonu
Wordpress dashboard
WordPress dashboard
Wordpress anasayfa
WordPress anasayfa

Sonuç Olarak

İyi bir sistem yöneticisi olmak istiyorsak, neyi neden yaptığımızın farkında olmalıyız, bence. Bu kurulumu bu kadar dolambaçlı yollardan geçerek yapmamın sebepleri şunlar:

  1. Bir uygulamanın ön gereksinimleri ve konfigürasyonlarıyla uğraşarak deployment sürecini görmek. Ki WordPress kurulumu nispeten basit. Daha neler var.
  2. “yum instal bıdıbıdı” yazarak her şeyi kuramayacağımızı göstermek.
  3. Herhangi bir servisi kurmanın ötesinde konfigürasyonunun önemini vurgulamak.
  4. Karşılaşılması muhtemel hataları göstermek.

Şu noktaları kesinlikle göz ardı etmemelisiniz:

  1. Bu doküman, test ortamında örnek bir kurulum amacıyla hazırlanmıştır.
  2. Neredeyse her servis, varsayılan konfigürasyonlarıyla bırakılmıştır.
  3. Özellikle veritabanı ile ilgili kısımlar benim çok uzak olduğum noktalar. Dolayısıyla hatalarım olabilir.
  4. Hem firewall’ın durdurulması, hem de /var/www/html tarafındaki sahiplik ve izinler nedeniyle güvenliği sorgulanması gereken bir kurulumdur.
  5. Bu gibi kurulumlarda çoğu zaman ilgili dosya ve dizinler “root”a ait olmaz. Uygulama için yeni bir kullanıcı oluşturulur ve sahiplikler ona devredilir.
  6. Mümkün mertebe “root” kullanıcısını kullanmaktan kaçınmalısınız. Bunun yerine, yetkilendirilmiş bir kullanıcı oluşturup “sudo” gibi yardımcı araçlar kullanabilirsiniz.

Bu dokümana göre kurulumunuzu yaptıktan sonra, resmi dokümanları inceleyerek çok daha sağlam ve sağlıklı bir kurulum yapabilirsiniz.

TL; DR;

#Wordress'i indir:
wget https://wordpress.org/latest.tar.gz
#Arşivi çıkar:
tar -xzf latest.tar.gz
#MariaDB repolarını çek:
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
#MariaDB'yi kur:
yum install MariaDB-server MariaDB-client MariaDB-backup
#MariaDB servisi enable et ve başlat:
systemctl enable mariadb
systemctl start mariadb
#MariaDB secure installation adımları yap:
mariadb-secure-installation
#MariaDB shell'ine geç:
mysql
#Parola oluştur:
SELECT PASSWORD('parola');
#Kullanıcı oluştur:
CREATE USER kullanici@localhost IDENTIFIED BY PASSWORD 'parola_hash';
#Veritabanı oluştur:
CREATE DATABASE veritabani;
#Kullanıcıya yetki ver:
GRANT ALL PRIVILEGES ON veritabani.* TO kullanici@localhost IDENTIFIED BY PASSWORD 'parola_hash';
#Yetkileri güncelle:
FLUSH PRIVILEGES;
#Apache'yi kur:
yum install httpd
#Apache servisi başlat ve enable et:
systemctl start httpd
systemctl enable httpd
#Firewall'ı kapat:
systemctl stop firewalld
#Wordpress dosyalarını Apache servis dizinine at:
cp -R wordpress/* /var/www/html/
#EPEL repolarını kur:
yum install epel-release
#Remi repolarını kur:
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
#yum-utils'i kur:
yum install yum-utils
#Remi PHP 7.4 reposunu enable et:
yum-config-manager --enable remi-php74
#Repoları güncelle:
yum repolist
#PHP ve PHP MySQL eklentisini kur:
yum install php php-mysql
#Apache'yi yeniden başlat:
systemctl restart httpd

Bağlantılar

1- Overview of WordPress, https://wordpress.org/support/article/overview-of-wordpress/

2- Requirements, https://wordpress.org/about/requirements/

3- About MariaDB Server, https://mariadb.org/about/

4- MariaDB Package Repository Setup and Usage, https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/

5- Starting and Stopping MariaDB, https://mariadb.com/kb/en/starting-and-stopping-mariadb-automatically/

6- mysql_secure_installation, https://mariadb.com/kb/en/mysql_secure_installation/

7- Securing MariaDB, https://mariadb.com/kb/en/securing-mariadb/

8- Compiling and Installing, https://httpd.apache.org/docs/2.4/install.html

9- Editing wp-config.php, https://wordpress.org/support/article/editing-wp-config-php/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir