Ana içeriğe geç

WordPress'i VPS'e kurma#

WordPress internetin dörtte birini çalıştırıyor ve bunun bir sebebi var: bir kez düzgün kurulduğunda çalışmayı sürdürüyor. "Düzgün" kelimesi burada önemli - bu sayfa o kısmı anlatıyor.

En kısa yol

VeriTeknik VPS'inde WordPress panelden tek tıkla kurulabiliyor. Sunucunuzu alırken ya da aldıktan sonra uygulama listesinden seçmeniz yeterli.

Aşağıdakiler, kurulumu kendiniz yapmak ya da ne olduğunu anlamak istediğinizde.


0. Alan adını yönlendirin#

A kaydınız sunucunun IP'sini göstermeli. Sertifika adımı buna bağlı olduğu için ilk bunu yapın.

dig +short example.com

1. Gereken paketleri kurun#

sudo apt update
sudo apt install -y nginx mariadb-server php-fpm php-mysql \
  php-curl php-gd php-mbstring php-xml php-zip php-intl unzip
sudo dnf install -y nginx mariadb-server php-fpm php-mysqlnd \
  php-curl php-gd php-mbstring php-xml php-zip php-intl unzip
sudo systemctl enable --now php-fpm

Morpheus ile

"sunucuma WordPress için gereken nginx, mariadb ve php paketlerini kur"

Morpheus dağıtımı tespit edip doğru paket adlarını seçer - PHP paket isimleri Debian ve RHEL tarafında farklıdır, bu ayrımı sizin bilmenize gerek yok.


2. Veritabanını hazırlayın#

sudo systemctl enable --now mariadb
sudo mysql_secure_installation

mysql_secure_installation etkileşimli bir betiktir; sorulara siz cevap vermelisiniz. Root parolası belirleyin, anonim kullanıcıları ve test veritabanını silin.

Morpheus bunu çalıştırmaz

Bu komut Morpheus'un kapısında bilerek engellidir: etkileşimli komutlar SSH oturumunu kilitler. Bu adımı kendiniz yapın ya da Morpheus'a eşdeğer SQL'i çalıştırtın.

Veritabanı ve kullanıcı oluşturun:

sudo mysql -e "CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'BURAYA_GUCLU_PAROLA';"
sudo mysql -e "GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"

Parolayı gerçekten güçlü seçin: openssl rand -base64 24


3. WordPress dosyalarını yerleştirin#

cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo mkdir -p /var/www/example.com
sudo cp -r wordpress/* /var/www/example.com/
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;

İzinler

Rocky/AlmaLinux'ta kullanıcı www-data değil nginx olabilir. 777 vermeyin - internette gördüğünüz "izin sorununu çözer" tavsiyelerinin çoğu aslında sunucunuzu açar.


4. Nginx yapılandırması#

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    location ~ /\.(?!well-known) {
        deny all;
    }
}

fastcgi_pass yolu sürüme göre değişir; doğrusunu bulun:

ls /run/php/
sudo nginx -t && sudo systemctl reload nginx

Son iki location bloğu güvenlik içindir: yükleme dizininden PHP çalıştırılmasını ve gizli dosyaların okunmasını engeller. WordPress saldırılarının klasik yolu tam olarak budur.


5. Sertifika#

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

6. Kurulumu tamamlayın#

https://example.com adresine gidin ve WordPress sihirbazını doldurun. Veritabanı bilgileri 2. adımda oluşturduklarınız.

Kurulum bitince:

  • Yönetici kullanıcı adını admin yapmayın
  • İki faktörlü doğrulama eklentisi kurun
  • Kullanmadığınız tema ve eklentileri silin, devre dışı bırakmak yetmez

7. Yedek ve bakım#

WordPress'te iki ayrı şeyi yedeklemeniz gerekir: dosyalar ve veritabanı.

# Veritabanı
sudo mysqldump wordpress | gzip > /opt/yedek/wp-db-$(date +%F).sql.gz

# Dosyalar
sudo tar czf /opt/yedek/wp-files-$(date +%F).tar.gz -C /var/www example.com

Panelden snapshot almak ikisini birden kapsar ve daha kolaydır.

Morpheus ile

"her gece 03:00'te wordpress veritabanı yedeği al, 7 günden eskileri sil"

"wordpress ve eklentilerde güncelleme var mı kontrol et"

Güncellemeyi yedeksiz yapmayın

WordPress çekirdek güncellemesi genelde sorunsuzdur; eklenti güncellemeleri her zaman değil. Önce snapshot alın. Snapshot almak dakikalar sürer, kırık bir siteyi elle onarmak günler.


Kontrol listesi#

  • [ ] https://example.com kilit simgesiyle açılıyor
  • [ ] http:// adresi otomatik https://'e yönleniyor
  • [ ] Yönetici kullanıcı adı admin değil, 2FA açık
  • [ ] sudo nginx -tsyntax is ok
  • [ ] Yükleme dizininden PHP çalışmıyor (yapılandırmadaki deny all blokları yerinde)
  • [ ] Bir kez gerçekten yedek alındı ve geri yükleme denendi
  • [ ] sudo certbot renew --dry-run hatasız
  • [ ] Kullanılmayan tema/eklenti silindi