Ubuntu / Apache üzerinde Laravel/WebSockets Kurulumu ve Yapılandırılması.
Barış Bideratan
Posted on April 3, 2023
Bu blog yazısında, DigitalOcean droplet'ına (sanal özel sunucu) kurulu Ubuntu işletim sistemi üzerinde Laravel web uygulaması kurulumu ve WebSockets yapılandırması adımlarını öğreneceksiniz.
1. Dosyaların Sunucuya Gönderilmesi
Laravel projesi için gerekli dosyaları sunucuya göndermek için scp kullanalım. Örnek olarak:
scp /home/baris/app.zip kullanici@sunucuadresi:/var/www/html
Eğer github'dan çekecekseniz ne yapmanız gerektiğini zaten biliyorsunuzdur git clone ...
Dosya aktarımı tamamlandıktan sonra ssh
ile sunucuya bağlanalım
ssh root@ipadresi
Projenin kök klasörüne geçmek için aşağıdaki komutları kullanalım.
cd ..
cd var/www/html
ls komutu ile app.rar dosyanızın bu klasörün içinde olduğundan emin olun, ardından bu dosyayı dışarıya aktaralım.
unrar x app.rar
## veya
unzip app.zip
veya direkt klasör adı belirterek dosyaları klasöre çıkartalım.
unrar x app.rar laravelapp
2. Proje Kurulumu ve Yapılandırılması
Projenin düzgün çalışması için gerekli izinleri verelim.
chown -R www-data:www-data /var/www/html/laravelapp
Node.js ve Composer modüllerini yükleyelim
> composer install --no-dev
> npm install
> npm run build
3. Apache Ayarları
vim editorü ile gerekli ayarları yapmak üzere config
dosyamızı açalım
vim /etc/apache2/sites-available/000-default.conf
Yapılandırma dosyamız aşağıdaki gibi görünmeli aşağıdaki örnek yapılandırma dosyasını kullanarak, projeniz için virtual host ayarlarını yapılandırabilirsiniz. Ayrıca, sakın 127.0.0.1 adresini değiştirmeyin, burası çokomelli :)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/laravelapp/public
<Directory /var/www/html/laravelapp>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
### 127.0.0.1 olarak kalmalı ###
ProxyPass "/app/" "ws://127.0.0.1:6001/app/"
ProxyPass "/apps/" "http://127.0.0.1:6001/apps/"
### websockets içindi bu alan ###
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
</VirtualHost>
Ardından, gerekli Apache modüllerini yüklemek için sırayla aşağıdaki komutları yazalım.
> a2enmod rewrite
> apachectl restart
4. Veritabanı ve Veritabanı Kullanıcısı Oluşturma
MySQL veya MariaDB'ye bağlanmak için aşağıdaki komutu kullanalım
sudo mysql
Bu komutla MySQL veya MariaDB istemcisini başlatabilir ve sunucuya bağlanabilirsiniz. Ardından, aşağıdaki komutu kullanarak yeni bir veritabanı oluşturalım:
CREATE DATABASE laravelapp;
Bu komutla "laravelapp" adında yeni bir veritabanı oluşturmuş oluyoruz. Daha sonra, bu veritabanına bağlanmak için bir kullanıcı oluşturmanız gerekiyor. Aşağıdaki komutla yeni bir kullanıcı oluşturalım.
CREATE USER 'laravelappuser'@'localhost' IDENTIFIED BY 'password';
Bu komutla "laravelappuser" adında yeni bir kullanıcı oluşturduk. Kullanıcının şifresini "password" olarak belirledik, ancak gerçek bir uygulamada daha güçlü bir şifre kullanmanız gerektiğini hatırlatmama gerek yok sanırım :).
Son olarak, yeni kullanıcının laravelapp veritabanına erişebilmesi için aşağıdaki komutla izinleri vermeniz gerekiyor:
GRANT ALL PRIVILEGES ON laravelapp.* TO 'laravelappuser'@'localhost';
FLUSH PRIVILEGES;
Bu komutlarla "laravelappuser" kullanıcısına "laravelapp" veritabanı için tüm izinleri vermiş oluyoruz.
Artık Laravel projemiz için "laravelapp" adında bir veritabanı oluşturuldu ve "laravelappuser" kullanıcısı bu veritabanına erişebilecek şekilde yapılandırıldı. Laravel konfigürasyonunda (.env) veritabanı bilgilerinizi güncelleyerek sunucudaki veritabanına bağlanabilirsiniz.
5. Supervisor Yapılandırması
Supervisor, sistem başlatıldığında arka planda çalışan işlemleri yönetmek için kullanılan bir araçtır. Bu nedenle, Laravel projenizde kullanacağınız Websocket işlemcisi de Supervisor ile yönetilebilir.
Supervisor'ü kuralım.
apt install supervisor
Supervisor yapılandırma dosyasını oluşturalım.
laravel-websockets adını değiştirmeyin ufak ama mide bulandırıcı detaylar var :)
cd /etc/supervisor/conf.d/
touch laravel-websockets.conf
vim laravel-websockets.conf
Dosyamızın içeriğini aşağıdaki gibi düzenleyelim, directory ve command kısmındaki path'i değiştirdiğinizden emin olun.
[program:laravel-websockets]
directory=/var/www/html/laravelapp
command=php /var/www/html/laravelapp/artisan websockets:serve
numprocs=1
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/websockets.err.log
stdout_logfile=/var/log/websockets.out.log
Supervisor'ü yeniden başlatalım
service supervisor restart
son olarak /var/www/html/laravelapp/resources/js/bootstrap.js
dosyasında wshost değerini window.location.hostname olarak değiştirmeliyiz.
wsHost: window.location.hostname,
6. Sonuç
Bu yazıda, DigitalOcean üzerinde Ubuntu ve Apache kullanarak Laravel projenizde Websocket'leri nasıl kurabileceğinizi ve yapılandırabileceğinizi anlattım. Adımları doğru bir şekilde takip ederseniz, Laravel projenizde Websocket'leri kullanarak gerçek zamanlı bir uygulama geliştirebilirsiniz.
Posted on April 3, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.