Pardus Server 21 üzerinde WordPress Sunucusu oluşturmak 
Published: 2021-10-12 08:56:43

Wordpress, çok amaçlı bir site oluşturma servisidir. Wordpress ile bloglardan tutun video paylaşım sitelerine kadar pek çok farklı site oluşturabilirsiniz. Ayrıca dünyada internet sitelerinin %60'ı Wordpress kullanmaktadır gibi de bir iddiası var Wordpress'in.

Bu yazımda Pardus 21 Server üzerinde Wordpress sunucusu oluşturmayı anlatacağım. WordPress'i Pardus kullanan bulut sunucunuza kurmak için WordPress organizasyonunun, Debian için önerdiği temel “5 dakikalık kurulum” kılavuzunu takip edeceğiz. Ancak, WordPress'i kendi özel bulut sunucumuza kurulacağımız için, birkaç ek sunucu tarafı yazılım uygulaması yüklemeniz gerekecektir. Ancak, temelde, şu adımları takip edeceğiz:

* Veritabanı Sunucusunun kurulması
* PHP dili ve sunucu frameworkünun kurulması
* Wordpress'in kurulması
* Veritabanı yapılandırması

## Apache Kurulumu
Temelde Apache ile kuruluma başlamakta yarar vardır. Çünkü Wordpress genelde Apache sunucu kullanılarak yayınlanır. Bunun için:

```bash
sudo apt install apache2
```

diyoruz. Ve apache sunucu kurulmuş oluyor.

## Mariadb Kurulumu
MariaDB'yi WordPress tarafından veritabanı depolama yazılımı olarak kullanılmaktadır. Kurulum için başta paketlerini kuracağız:

```bash
sudo apt install mariadb-server
```
Şimdi de mariadb sunucusunun şifre yöneticisini açarak ayarlamalarda bulunalım:

```bash
sudo mysql_secure_installation
```

Bu aşamada program bizden database için yapacağımız kurulumda şifre oluşturmamızı isteyecektir.

```
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
```

Eğer yeni bir şifre oluşturacaksanız buna evet manasında Y'ye tıklayın.
```
There are three levels of password validation policy:

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

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

Bu aşamada orta uzunlukta bir şifre oluşturalım, bu yüzden 1'e tıklayalım

```
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : 
```
buna da n diyelim. Böylece kurulum tamamlanmış oldu.

Şimdi MySQL kullanıcılarını listeleyelim
```bash
sudo mysql
```
Bu bizim için bir SQL kabuk ortamı oluşturacaktır. Şimdi şunları yazalım.
```sql
MariaDB [(none)]> SELECT user,authentication_string,plugin,host FROM mysql.user;
```
Çıktısı şu şekilde görünecektir
```bash
+------------------+-------------------------------------------+-----------------------+-----------+
| 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 | *FA769377A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
```

Burada göründüğü üzere auth_socket şifresi verelim. Burada 'password' bizim belirleyeceğimiz şifre olacak. Öntanımlı olarak ben password olarak belirledim.

```sql
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
```

Bu değişikliğin okunması için tablomuzu güncelleyelim

```sql
MariaDB [(none)]> FLUSH PRIVILEGES;
```
Ve yeniden Tablomuzu kontrol edelim

```sql
MariaDB [(none)]> SELECT user,authentication_string,plugin,host FROM mysql.user;

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *FA769377A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
```

`Ctrl-D`'ye basarak mariadb sql konsolundan çıkabilirsiniz

Kurulumunuzu güvenceye almak için yukarıdaki komutları izleyin. 
*Not:* Veritabanlarınızın güvenliğini sağlamak ve herhangi bir harici erişime izin vermemek büyük önem taşımaktadır.

MariaDB sunucusunun çalıştığından emin olmak ve kontrol etmek için şu komutu kullanabilirsiniz:

```bash
sudo systemctl status mariadb
```

## PHP Kurulumu

Şimdi PHP betik dilini kurmanın zamanı geldi. Bu dil, WordPress'in yazıldığı dildir. Bu sebeple hala komut satırındayken, devam edelim, PHP'yi ve gerekli modülleri kuralım:

```bash
sudo apt install php libapache2-mod-php php-mysql
```
Kurulumun tamamlanması ile beraber PHP'ye ve WordPress için gerekli modüllere sahip olmalısınız. PHP kurulum sürümünüzü kontrol etmek için isteğe bağlı olarak şu komutu çalıştırabilirsiniz:

```
php -v
```

PHP kurulduktan sonra Apache2'nin durdurulup yeniden başlatılması gerekebilir. Bunun için:

```bash
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start
```

## Veritabanı Yapılandırması

Apache, MariaDB ve PHP kurulumunun ardından wordpress için bir database oluşturmamız gerekecek. Öncelikle mariadb içerisine girelim

```bash
mysql -u root -p
```
Bizden şifre isteyecek ki bu şifreyi yukarıda tanımlamıştık. Onu girelim. Şimdi ise mariadb veritabanı açmak için SQL konsolunda şunu yapalım:

```sql
MariaDB [(none)]> CREATE DATABASE wordpress_database;
```
Benim özelimde wordpress tarafından kullanılan veritabanı ismi *"wordpress_database"* olacak. Şimdi bu veritabanını yönetecek kullanıcıyı oluşturalım. Benim özelimde bu kullanıcının adı *"slmn"*, şifresi ise *"password"* olacak:

```sql
MariaDB [(none)]> CREATE USER 'slmn'@'localhost' IDENTIFIED BY 'password';
```

Şimdi bu kullanıcıya veritabanına erişim izni verelim:

```sql
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `wordpress_database`.* TO 'slmn'@'localhost';
```
Ve tüm yetkileri sunucuda uygulayalım

```sql
MariaDB [(none)]> FLUSH PRIVILEGES;
```

## Sunucuları Yeniden Başlatmak

Şimdi mariadb ve apache sunucularını yeniden başlatalım:
```bash
sudo systemctl restart apache2
sudo systemctl restart mariadb
```

## WordPress Kurulumu

Yükleme işleminin bu son aşamasında, WordPress kaynak dosyalarının yeni bir kopyasını indirecek, bunları veritabanınıza bağlayacak ve yepyeni bir WordPress sitesi oluşturmaya başlayacağız.

Her web sitesinin bir "belge kökü" olduğunu, temel olarak, genel web sitesi dosyalarının bulunduğu Apache web sunucusuna işaret eden bir dosya yolunun olduğunu unutmayın. Bu adımda apache ile birlikte gelen varsayılan dizini kullanacağız: `/var/www/html/`.

```bash 
cd /var/www/html
```

Şimdi super kullanıcı yetkisi alalım
```bash
sudo su
```
Ve wordpress kaynak kodunu çekelim:

```bash 
curl http://wordpress.org/latest.tar.gz -o latest.tar.gz
```

Ve içeriği çıkartalım:
```bash
tar xfz latest.tar.gz 
```

Bu işlem sonucunda, arşiv dosyasının içindeki tüm WordPress kaynak dosyaları "wordpress/" dizini altında çıkarılır. Ancak Apache'ye ekstra bir ayar yapmadığımız için Wordpress dosyalarını `/var/www/html/` dizinde istiyoruz. Bu yüzden şu komutu kullanıyoruz:

```bash
mv wordpress/* .
```

Ve boş wordpress dizinini silelim:

```bash
rmdir wordpress/
``` 
Ayrıca öntanımlı Apache index dosyasını da silelim:
```bash
rm index.html
```

### Wordpress yapılandırması

Şimdi, `wp-config.php` veritabanı bağlantı bilgilerini içeren çekirdek dosyasını düzenlememiz gerekecek.
WordPress, veritabanına bağlanmak ve değişiklik yapmak için uygun kimlik bilgilerine ihtiyaç duyar.Bu aşamada yukarıda kullandığımız kullanıcı adı ve şifreleri kullanacağız ancak öncelikle bu dosyanın örnek dosyasını alalım ve wp-config.php adıyla kopyalayalım:

```bash 
cp wp-config-sample.php wp-config.php
```
Ardından wp-config'i açıp düzenleyelim:

```bash
nano wp-config.php
```
Dosyada aşağıdaki kısımları bulalım:

```
define( 'DB_NAME', 'database_name_here' );
/** MySQL database username */
define( 'DB_USER', 'username_here' );
/** MySQL database password */
define( 'DB_PASSWORD','password_here' );
```

Ve kendi kullanıcı bilgilerimizle değiştirelim
```
define( 'DB_NAME', 'wordpress_database' );
/** MySQL database username */
define( 'DB_USER', 'slmn' );
/** MySQL database password */
define( 'DB_PASSWORD','password' );
```

### Wordpress Site kurulumu

Kurulum komut dosyasını başlatmak için bir web tarayıcısı kullanacağız. WordPress kurulumunu yapmak için şu adresi ziyaret etmelisiniz: `http://SUNUCU_IP_ADRESI/wp-admin/install.php`

![install-step5_v47](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ezw6dwcmystovdbus0um.png)
 
Artık kurulumu tamamladık... İyi çalışmalar...