Selamlar ben Alperen,
Bu yazıda sizlere NGINX
ile Symfony 5 projesi nasıl Deploy edilir açıklayamaya çalışıcağım.
Bunu yaparken sırasıyla PHP
, Mysql
, NGINX
,Redis
, Composer
, Gitlab repository'sinden projeyi çekmek
ve NGINX Config
kurulum ve ayarlamalarına da değineceğim.
Öncelikli olarak deploy etmek istediğimiz projenin düzgün bir şekilde Gitlab üzerinde bir repository'de bulunduğunu varsayalım.
Webserver'a nasıl geçicez açıkçası o kısmını ben de bilmiyorum . Bana gökten indi :D
lsb_release -cd ; hostname ; hostname -I ; whoami ; getconf LONG_BIT;
Size de gökten indiyse bu komutları çalıştırarak webserverınız hakkında bilgi alabilirsiniz .
Webserver'ı ayağa kaldırmak için gerekli kurulumları yapalım
PHP 8.1
Kuruluma başlamadan önce PHP nedir ? sorusunun cevabına bakalım
PHP, HTML içine gömülebilen bir betik dilidir.Dilin amacı site geliştirenlere dinamik olarak hızla üretilen sayfalar yazabilme imkanı vermektir.
Php kurulumu için repo'muzu ekleyelim ;
add-apt-repository ppa:ondrej/php -y
Php 8.1 ve gerekli extensionları kuralım ;
sudo apt install php8.1 php8.1-cli php8.1-cgi php8.1-bcmath php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-sqlite3 php8.1-xml php8.1-zip php8.1-snmp php8.1-imap php8.1-common php8.1-tidy php8.1-pgsql php8.1-ldap php8.1-soap php8.1-xsl php8.1-redis php8.1-xmlrpc php8.1-zip php-imagick php-pear php-memcache php-apcu
Php kurulumunu doğrulamak için ;
php -v
Kurduğumuz extansionları görmek için ise ;
php -m
MYSQL 8
Mysql kurulumda dikkat etmemiz gereken bir konu Yetkilendirme
eğer yetkilendirmeyi yapmayı unutursanız database oluşturamaz silemez veya düzenleyemezsiniz.
sudo apt install mysql-server
Mysql'e girş yapalım ;
mysql -u root
Yeni kullanıcı oluşturalım ;
CREATE USER 'yeni_kullanici'@'localhost' IDENTIFIED BY 'sifre';
Yeni kullanıcıya yetkilendirme verelim ;
GRANT ALL PRIVILEGES ON * . * TO 'yeni_kullanici'@'localhost';
Komuttaki yıldızlar (*) database ve tabloları referans vermek içindir. Komut kullanıcıya belirli database ve tablolara izin vermeye olanak sağlar. İşlemi bitirmeden önce yetkileri yenilediğinizden emin olun Daha sonra yeni_kullanıcı
ile mysql'e tekrar giriş yapın .
mysql -u yeni_kullanici -p 'sifre'
Şimdi bir database oluşturalım . Peki bu database ne işimize yarayacak ?
Symfony projemizdeki verileri tutacak .
Projemizdeki .env
dosyasını ayarlarken kullanacağız, database'i ekteki komut ile oluşturalım ;
CREATE DATABASE deneme;
NGINX
Ngınx webserver'i ayağa kaldıracak hızlı stabil ve hafif bir web sunucudur.
sudo apt install nginx
systemctl start nginx
systemctl status nginx
REDIS
sudo apt install redis-server
redis.conf dosyasını düzenleyelim;
sudo nano /etc/redis/redis.conf
supervised
kısmı default olarak no
geliyor görseldeki gibi değiştirelim
COMPOSER
Symfony projemizi ayağa kaldıracak bunu unutmayalım ;
curl -sS https://getcomposer.org/installer | php ; mv composer.phar /usr/local/bin/composer ; chmod +x /usr/local/bin/composer
Sunucu üzerinde gerekli tüm kurulumları bitirdiğimizde aşağıdaki adımları takip ederek deployment işlemine başlayabiliriz.
Projemizi çekeceğimiz dizine girelim;
cd /var/www/html
git clone https://{gitlab-username}:{access_token}@{git-url}
daha anlaşılır olması için bir örnek verelim;
gitlab-username : alper
acces_token : abcdf_1234ae
git-url : gitlab.com/alper/test.git
git clone https://alper: abcdf_1234ae@gitlab.com/alper/test.git
NOT bu kısımda ben acces-token kullandım fakat deploy-token da kullanılabilir.
Projeyi çektikten sonra sahiplendirme ve izin işlemleri için ;
chown -R www-data:www-data /var/www/html/ ; chmod -R 755 /var/www/html/
Projemiz symfony projesi olduğu için gerekli paketleri yükleyelim;
Composer install
.env dosyasını ayarlayalım
bunun için ilk olarak proje dizinine girelim .
cd /var/www/test
nano .env
ekte olduğu gibi MYSQL Kısmında oluşturduğunuz database'i .env
dosyamıza ekliyoruz .
NGINX Config
Projemizi ayağa kaldırmak için en önemli adım NGINX config düzenlemesidir.
Ekteki komutta belirtilen dizine default isimli bir dosya oluşturur;
nano /etc/nginx/sites-available/default
dosyamızın içini düzenleyelim;
server {
listen 80;
listen [::]:80;
server_name domain www.domain.com;
root /var/www/test/public;
index index.php;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
client_max_body_size 100M;
autoindex off;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
kaydetme işlemi için CTRL+O
ENTER
CTRL+X
config dosyamıza sembolik link oluşturalım ;
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
daha sonra nginx.service
tekrar başlatalım ;
sudo systemctl restart nginx.service
her şey tamam .
http://domain.com/
sitenizi görebilirsiniz...
Top comments (1)
Eğer bir macOS kullanıcısıysanız, ServBay.dev denemeye değer. Herhangi bir şeyi kurmak için zaman harcamanıza veya günlerce uğraşmanıza gerek yok. Sadece indirin ve hemen kullanmaya başlayabilirsiniz. Birden fazla PHP sürümünü aynı anda çalıştırabilir ve aralarında kolayca geçiş yapabilirsiniz.
Dürüst olmak gerekirse, bu araç PHP geliştirmemi büyük ölçüde kolaylaştırdı ve kesinlikle denemeye değer!