Düne kadar Flarum’da Websocket uzantısı ücretli bir uzantı ilken eklentinin yazarı @Kyrne uzantısını ücretsiz dağıtma kararı aldı. Bende eklentinin nasıl kurulacağını anlatmak istedim. Çünkü kurulumu biraz karmaşık. Kurulumu adım adım anlatacağım.
Bu anlatım sitesinde SSL kullananlar içindir.
Flarum’u paylaşımlı hosting’de kullananlar maalesef eklentiyi kuramazlar.
Kurulum
- Flarum sitenin kurulu olduğu dizinde .nginx.conf adında bir dosya var. Bu dosyayı açın. Bu dosyanın ilk dört satırı aşağıdaki gibi.
# Pass requests that don't refer directly to files in the filesystem to index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Yukarıdakileri aşağıdakilerle değiştirin.
# Pass requests that don't refer directly to files in the filesystem to index.php
location @web {
try_files $uri $uri/ /index.php?$query_string;
}
- /etc/nginx/sites-available veya /etc/nginx/conf.d dizininde site conf dosyası olmalı. Bu dosyayı açın ve en üstüne aşağıdakileri yapıştırın.
map $http_upgrade $type {
default "web";
websocket "ws";
}
Sonra yine aynı dosyada SSL bloğu içine (443 port) aşağıdakileri yapıştırın.
location / {
try_files /nonexistent @$type;
}
location @ws {
proxy_pass http://127.0.0.1:2083;
proxy_read_timeout 60;
proxy_connect_timeout 60;
proxy_redirect off;
# Allow the use of websockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Yani son görünüm aşağıdakine benzer olmalı. Sadece bahsettiklerimi nereye eklediğime dikkat edin.
map $http_upgrade $type {
default "web";
websocket "ws";
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
ssl_client_certificate /etc/ssl/cloudflare.crt;
ssl_verify_client on;
server_name flarumtr.com;
index index.php index.html index.htm;
root /var/www/flarumtr/public;
client_max_body_size 40M;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 90s;
fastcgi_send_timeout 90s;
fastcgi_read_timeout 90s;
}
location / {
try_files /nonexistent @$type;
}
location @ws {
proxy_pass http://127.0.0.1:2053;
proxy_read_timeout 60;
proxy_connect_timeout 60;
proxy_redirect off;
# Allow the use of websockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Dosyayı bu şekilde değiştirdikten sonra nginx -t
komutunu çalıştırın. Eğer herhangi bir hata görmüyorsanız değişikliklerin aktif olabilmesi için nginx’i yeniden başlatın. systemctl restart nginx
- Artık eklentiyi aşağıdaki komutu kullanarak kurabilirsiniz. İlk önce pusher eklentisini kaldırmanız gerekiyor. Bunun için
composer remove flarum/pusher
komutunu kullanın.
composer require kyrne/websocket
Eğer hata mesajı görürseniz aşağıdaki komutu kullanın:
composer require kyrne/websocket -W
- Bu kurulumda ben 2083 portunu tercih ettim. Aşağıdaki portlardan birini kullanabilirsiniz. Bu portlar Cloudflare kullanan sitelerde çalışacaktır.
2053
2083
2087
2096
8443
Diyelim ki 2083 portunu kullanmaya karar verdiniz. Bu portun sunucuda açık olduğundan emin olun. Güvenlik duvarında bir porta izin vermek için sudo ufw allow port_numarası
ile izin verebilirsiniz.
- Şimdi eklentiyi Forum Yönetim panelinden aktif edebilirsiniz.
- SSH ile flarum sitesinin kurulu olduğu dizine gelin ve aşağıdaki komutu çalıştırın.
php flarum websocket:serve
Yukarıdaki komut çalıştığı sürece websocket çalılşacaktır. Ancak SSH’dan çıktığınız anda websocket çalışmayı durdurur. İşte bu noktada Supervisior adlı uygulama imdadımıza yetişip bu komutun sürekli çalışmasını sağlayacaktır.
Supervisior kurulum ve ayarları için bu makaleden devam ediniz.
- Eklentini ayarlar sayfasında SSL için dosya yolunu eklemeniz ve ters proxy seçeneğini aktif etmeniz gerekiyor.