{"id":41527,"date":"2026-05-01T17:00:57","date_gmt":"2026-05-01T14:00:57","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=41527"},"modified":"2026-05-01T17:00:57","modified_gmt":"2026-05-01T14:00:57","slug":"ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/","title":{"rendered":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP<\/h2>\n<p>Bu makalede, Ubuntu 20.04 LTS (Focal Fossa) i\u015fletim sistemi \u00fczerine pop\u00fcler bir web sunucu y\u0131\u011f\u0131n\u0131 olan LEMP&#8217;i (Linux, Nginx, MySQL, PHP) nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. LEMP, dinamik web siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in yayg\u0131n olarak kullan\u0131lan, y\u00fcksek performansl\u0131 ve esnek bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p>LEMP y\u0131\u011f\u0131n\u0131, a\u015fa\u011f\u0131daki bile\u015fenlerden olu\u015fur:<\/p>\n<p>*   <strong>L (Linux):<\/strong> \u0130\u015fletim sistemimiz olan Ubuntu 20.04.<br \/>\n*   <strong>E (Nginx):<\/strong> Y\u00fcksek performansl\u0131, ters proxy ve web sunucusu.<br \/>\n*   <strong>M (MySQL):<\/strong> Pop\u00fcler bir ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi.<br \/>\n*   <strong>P (PHP):<\/strong> Dinamik web i\u00e7eri\u011fi olu\u015fturmak i\u00e7in kullan\u0131lan bir betik dili.<\/p>\n<p>Bu kurulumu ger\u00e7ekle\u015ftirmek i\u00e7in temel Linux komut sat\u0131r\u0131 bilgisine sahip olman\u0131z ve root veya sudo ayr\u0131cal\u0131klar\u0131na sahip bir kullan\u0131c\u0131 ile \u00e7al\u0131\u015fman\u0131z gerekmektedir.<\/p>\n<h3>Ad\u0131m 1: Sistem G\u00fcncelle\u015ftirmeleri<\/h3>\n<p>Herhangi bir yeni yaz\u0131l\u0131m kurmadan \u00f6nce, sisteminizin paket listesini ve kurulu paketleri g\u00fcncellemek her zaman iyi bir uygulamad\u0131r. Bu, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmaya ve en son kararl\u0131 s\u00fcr\u00fcmleri alman\u0131z\u0131 sa\u011flamaya yard\u0131mc\u0131 olur.<\/p>\n<p>Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p><code>sudo apt update<\/code> komutu, mevcut paket kaynaklar\u0131n\u0131zdan en son paket bilgilerini indirir. <code>sudo apt upgrade -y<\/code> komutu ise sisteminizdeki t\u00fcm g\u00fcncel paketleri y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, y\u00fckseltme i\u015flemi s\u0131ras\u0131nda herhangi bir onay istemeden devam etmesini sa\u011flar.<\/p>\n<h3>Ad\u0131m 2: Nginx Kurulumu<\/h3>\n<p>Nginx, LEMP y\u0131\u011f\u0131n\u0131n\u0131n ilk ve en \u00f6nemli bile\u015fenlerinden biridir. Web sitenizin trafi\u011fini i\u015fleyecek ve istemcilere i\u00e7erik sunacakt\u0131r.<\/p>\n<p>Nginx&#8217;i kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Nginx hizmetinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status nginx<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz. E\u011fer Nginx \u00e7al\u0131\u015fm\u0131yorsa, ba\u015flatmak i\u00e7in <code>sudo systemctl start nginx<\/code> komutunu kullanabilirsiniz.<\/p>\n<p>Nginx&#8217;in do\u011fru kuruldu\u011funu do\u011frulamak i\u00e7in, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131 girin. Varsay\u0131lan Nginx kar\u015f\u0131lama sayfas\u0131n\u0131 g\u00f6rmelisiniz. E\u011fer sunucunuzun IP adresini bilmiyorsan\u0131z, <code>ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's\/\\\/.*$\/\/'<\/code> komutunu kullanabilirsiniz (e\u011fer a\u011f aray\u00fcz\u00fcn\u00fcz <code>eth0<\/code> ise, farkl\u0131 bir isim olabilir, <code>ip a<\/code> komutu ile kontrol edebilirsiniz).<\/p>\n<h4>Nginx G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Ubuntu&#8217;nun varsay\u0131lan g\u00fcvenlik duvar\u0131 olan UFW (Uncomplicated Firewall) ile Nginx&#8217;i \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli izinleri sa\u011flaman\u0131z gerekir.<\/p>\n<p>\u00d6ncelikle UFW&#8217;nin etkin olup olmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>E\u011fer <code>inactive<\/code> ise, etkinle\u015ftirmek i\u00e7in <code>sudo ufw enable<\/code> komutunu kullan\u0131n.<\/p>\n<p>Nginx i\u00e7in UFW profillerini listeleyin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw app list<\/code><\/pre>\n<p>Bu komut size <code>Nginx Full<\/code>, <code>Nginx HTTP<\/code> ve <code>Nginx HTTPS<\/code> gibi profilleri g\u00f6sterecektir.<\/p>\n<p>\u015eimdilik, sadece HTTP trafi\u011fine izin verece\u011fiz. Bu, web taray\u0131c\u0131n\u0131z\u0131n sunucunuza varsay\u0131lan port 80 \u00fczerinden ba\u011flanmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx HTTP'<\/code><\/pre>\n<p>G\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 yeniden y\u00fckleyin ve durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw reload\nsudo ufw status<\/code><\/pre>\n<p>\u015eimdi <code>Nginx HTTP<\/code> kural\u0131n\u0131n etkin oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h3>Ad\u0131m 3: MySQL Kurulumu<\/h3>\n<p>MySQL, web uygulamalar\u0131n\u0131z\u0131n verilerini depolayaca\u011f\u0131 ili\u015fkisel veritaban\u0131 y\u00f6netim sistemidir.<\/p>\n<p>MySQL&#8217;i kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt install mysql-server -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, MySQL&#8217;in g\u00fcvenli\u011fini sa\u011flamak i\u00e7in bir g\u00fcvenlik beti\u011fi \u00e7al\u0131\u015ft\u0131rman\u0131z \u00f6nerilir. Bu betik, varsay\u0131lan kullan\u0131c\u0131lar\u0131 kald\u0131r\u0131r, uzaktan k\u00f6k oturum a\u00e7may\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131r ve parola gereksinimlerini zorlar.<\/p>\n<pre><code class=\"language-bash\">sudo mysql_secure_installation<\/code><\/pre>\n<p>Bu betik size birka\u00e7 soru soracakt\u0131r. Genel olarak a\u015fa\u011f\u0131daki \u015fekilde yan\u0131t verebilirsiniz:<\/p>\n<p>*   <strong>VALIDATE PASSWORD COMPONENT:<\/strong> Parola politikas\u0131 se\u00e7imi. Varsay\u0131lan\u0131 (<code>y<\/code>) se\u00e7ebilir veya daha kat\u0131 bir politika i\u00e7in <code>1<\/code> veya <code>2<\/code> se\u00e7ebilirsiniz.<br \/>\n*   <strong>New password for root user:<\/strong> MySQL k\u00f6k kullan\u0131c\u0131 i\u00e7in g\u00fc\u00e7l\u00fc bir parola belirleyin.<br \/>\n*   <strong>Remove anonymous users?:<\/strong> <code>y<\/code><br \/>\n*   <strong>Disallow root login remotely?:<\/strong> <code>y<\/code><br \/>\n*   <strong>Remove test database and access to it?:<\/strong> <code>y<\/code><br \/>\n*   <strong>Reload privilege tables now?:<\/strong> <code>y<\/code><\/p>\n<p>Bu ad\u0131mlar, MySQL kurulumunuzu daha g\u00fcvenli hale getirecektir.<\/p>\n<p>MySQL hizmetinin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status mysql<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz.<\/p>\n<h4>MySQL K\u00f6k Kullan\u0131c\u0131 Eri\u015fimi<\/h4>\n<p>MySQL k\u00f6k kullan\u0131c\u0131s\u0131 olarak oturum a\u00e7mak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql -u root -p<\/code><\/pre>\n<p>Yukar\u0131da belirledi\u011finiz MySQL k\u00f6k parolas\u0131n\u0131 girmeniz istenecektir. Ba\u015far\u0131l\u0131 bir \u015fekilde giri\u015f yapt\u0131ktan sonra, MySQL komut istemcisini g\u00f6receksiniz.<\/p>\n<pre><code class=\"language-sql\">mysql><\/code><\/pre>\n<p>Buradan veritabanlar\u0131 olu\u015fturabilir, kullan\u0131c\u0131lar ekleyebilir ve di\u011fer veritaban\u0131 i\u015flemlerini ger\u00e7ekle\u015ftirebilirsiniz. \u00c7\u0131kmak i\u00e7in <code>exit;<\/code> yaz\u0131p Enter&#8217;a bas\u0131n.<\/p>\n<h3>Ad\u0131m 4: PHP Kurulumu<\/h3>\n<p>PHP, dinamik web sayfalar\u0131 olu\u015fturmak i\u00e7in kullan\u0131lan bir betik dilidir. LEMP y\u0131\u011f\u0131n\u0131nda PHP&#8217;yi Nginx ile birlikte \u00e7al\u0131\u015ft\u0131rmak i\u00e7in baz\u0131 ek paketlere ihtiyac\u0131m\u0131z olacak.<\/p>\n<p>PHP&#8217;yi ve Nginx ile entegrasyonunu sa\u011flayacak mod\u00fcl\u00fc kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt install php-fpm php-mysql -y<\/code><\/pre>\n<p>*   <code>php-fpm<\/code> (FastCGI Process Manager), PHP betiklerini Nginx ile verimli bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>php-mysql<\/code>, PHP&#8217;nin MySQL veritabanlar\u0131 ile etkile\u015fim kurmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Kurulumdan sonra, PHP-FPM hizmetinin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status php7.4-fpm<\/code><\/pre>\n<p>Ubuntu 20.04 varsay\u0131lan olarak PHP 7.4 ile gelir. \u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz.<\/p>\n<h3>Ad\u0131m 5: Nginx Yap\u0131land\u0131rmas\u0131 (PHP \u0130\u015fleme)<\/h3>\n<p>\u015eimdi, Nginx&#8217;in PHP dosyalar\u0131n\u0131 do\u011fru \u015fekilde i\u015flemesini sa\u011flayacak \u015fekilde yap\u0131land\u0131rmam\u0131z gerekiyor. Bunu, Nginx&#8217;in sunucu bloklar\u0131 (server blocks) arac\u0131l\u0131\u011f\u0131yla yapaca\u011f\u0131z. Sunucu bloklar\u0131, sanal hostlar gibi d\u00fc\u015f\u00fcn\u00fclebilir ve farkl\u0131 alan adlar\u0131 veya dizinler i\u00e7in farkl\u0131 yap\u0131land\u0131rmalar tan\u0131mlaman\u0131za olanak tan\u0131r.<\/p>\n<p>Varsay\u0131lan Nginx yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyece\u011fiz. Ancak, en iyi uygulama olarak, mevcut yap\u0131land\u0131rmay\u0131 yedekleyip yeni bir dosya olu\u015fturmak daha iyidir.<\/p>\n<pre><code class=\"language-bash\">sudo mv \/etc\/nginx\/sites-available\/default \/etc\/nginx\/sites-available\/default.bak<\/code><\/pre>\n<p>\u015eimdi, yeni bir varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/default<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi bu dosyaya yap\u0131\u015ft\u0131r\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n\n    root \/var\/www\/html;\n    index index.php index.html index.htm index.nginx-debian.html;\n\n    server_name your_server_ip_or_domain; # Sunucunuzun IP adresini veya alan ad\u0131n\u0131 buraya girin\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock;\n    }\n\n    location ~ \/\\.ht {\n        deny all;\n    }\n}<\/code><\/pre>\n<p><strong>Yap\u0131land\u0131rma A\u00e7\u0131klamas\u0131:<\/strong><\/p>\n<p>*   <code>listen 80 default_server;<\/code> ve <code>listen [::]:80 default_server;<\/code>: Bu sat\u0131rlar, Nginx&#8217;in IPv4 ve IPv6 \u00fczerinden port 80&#8217;de gelen istekleri dinlemesini sa\u011flar ve bu sunucu blo\u011funun varsay\u0131lan sunucu olaca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>root \/var\/www\/html;<\/code>: Bu, web sitenizin k\u00f6k dizinini belirtir. Varsay\u0131lan olarak <code>\/var\/www\/html<\/code> kullan\u0131l\u0131r.<br \/>\n*   <code>index index.php index.html index.htm index.nginx-debian.html;<\/code>: Bu sat\u0131r, bir dizin istendi\u011finde hangi dosyalar\u0131n indeks olarak aranaca\u011f\u0131n\u0131 belirtir. <code>index.php<\/code>&#8216;nin ilk s\u0131rada olmas\u0131, PHP dosyalar\u0131n\u0131n \u00f6ncelikli olarak i\u015flenece\u011fini g\u00f6sterir.<br \/>\n*   <code>server_name your_server_ip_or_domain;<\/code>: Buraya sunucunuzun genel IP adresini veya alan ad\u0131n\u0131z\u0131 (\u00f6rne\u011fin, <code>example.com<\/code>) girmeniz \u00f6nemlidir. E\u011fer bir alan ad\u0131n\u0131z yoksa, sunucunuzun IP adresini kullanabilirsiniz.<br \/>\n*   <code>location \/ { ... }<\/code>: Bu blok, k\u00f6k dizine (<code>\/<\/code>) yap\u0131lan t\u00fcm istekleri i\u015fler. <code>try_files<\/code> direktifi, \u00f6nce istenen dosyay\u0131, sonra dizini ve en sonunda 404 hatas\u0131 d\u00f6nd\u00fcrmeyi dener.<br \/>\n*   <code>location ~ \\.php$ { ... }<\/code>: Bu blok, <code>.php<\/code> uzant\u0131l\u0131 dosyalar\u0131 i\u015flemek i\u00e7in kullan\u0131l\u0131r.<br \/>\n    *   <code>include snippets\/fastcgi-php.conf;<\/code>: PHP betiklerinin i\u015flenmesi i\u00e7in gerekli FastCGI yap\u0131land\u0131rma bilgilerini i\u00e7erir.<br \/>\n    *   <code>fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock;<\/code>: PHP-FPM ile ileti\u015fim kurmak i\u00e7in kullan\u0131lan Unix soketini belirtir. Bu, PHP-FPM&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131 varsay\u0131lan konumdur.<br \/>\n*   <code>location ~ \/\\.ht { deny all; }<\/code>: Bu blok, <code>.htaccess<\/code> gibi gizli dosyalar\u0131n do\u011frudan eri\u015fime kapat\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Dosyay\u0131 kaydedip kapatmak i\u00e7in <code>Ctrl + X<\/code>, ard\u0131ndan <code>Y<\/code> ve <code>Enter<\/code> tu\u015flar\u0131na bas\u0131n.<\/p>\n<p>\u015eimdi, Nginx yap\u0131land\u0131rmas\u0131n\u0131 test edin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>Herhangi bir hata yoksa, <code>syntax is ok<\/code> ve <code>test is successful<\/code> gibi bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Nginx yap\u0131land\u0131rmas\u0131n\u0131 yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl reload nginx<\/code><\/pre>\n<h3>Ad\u0131m 6: PHP Test Sayfas\u0131 Olu\u015fturma<\/h3>\n<p>Nginx&#8217;in PHP&#8217;yi do\u011fru \u015fekilde i\u015fleyip i\u015flemedi\u011fini do\u011frulamak i\u00e7in basit bir PHP bilgi sayfas\u0131 olu\u015ftural\u0131m.<\/p>\n<p><code>\/var\/www\/html<\/code> dizininde <code>info.php<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/var\/www\/html\/info.php<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-php\"><?php\nphpinfo();\n?><\/code><\/pre>\n<p>Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<p>\u015eimdi, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131 takip eden <code>\/info.php<\/code> yolunu girin. \u00d6rne\u011fin: <code>http:\/\/your_server_ip_or_domain\/info.php<\/code><\/p>\n<p>E\u011fer her \u015fey do\u011fru yap\u0131land\u0131r\u0131ld\u0131ysa, PHP&#8217;nin s\u00fcr\u00fcm\u00fc, yap\u0131land\u0131rma ayarlar\u0131 ve kurulu mod\u00fcller hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgilerin yer ald\u0131\u011f\u0131 bir sayfa g\u00f6rmelisiniz. Bu sayfa, PHP&#8217;nin Nginx taraf\u0131ndan ba\u015far\u0131yla i\u015flendi\u011fini g\u00f6sterir.<\/p>\n<p><strong>G\u00fcvenlik Notu:<\/strong> \u00dcretim ortamlar\u0131nda <code>info.php<\/code> dosyas\u0131n\u0131 silmeniz veya eri\u015fimini k\u0131s\u0131tlaman\u0131z \u015fiddetle tavsiye edilir. Bu dosya, sunucunuzun hassas bilgilerini ortaya \u00e7\u0131karabilir.<\/p>\n<pre><code class=\"language-bash\">sudo rm \/var\/www\/html\/info.php<\/code><\/pre>\n<h3>Ad\u0131m 7: Veritaban\u0131 Olu\u015fturma ve Kullan\u0131c\u0131 Ekleme (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir)<\/h3>\n<p>Genellikle web uygulamalar\u0131n\u0131z i\u00e7in ayr\u0131 bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturmak iyi bir uygulamad\u0131r. Bu, k\u00f6k kullan\u0131c\u0131 bilgilerini do\u011frudan kullanmaktan daha g\u00fcvenlidir.<\/p>\n<p>MySQL istemcisine k\u00f6k kullan\u0131c\u0131 olarak giri\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mysql -u root -p<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak yeni bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturabilirsiniz. <code>your_database_name<\/code>, <code>your_username<\/code> ve <code>your_password<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi tercihlerinizle de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';\nGRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n<p>*   <code>CREATE DATABASE your_database_name ...<\/code>: Yeni bir veritaban\u0131 olu\u015fturur. <code>utf8mb4<\/code> karakter seti, geni\u015f bir karakter yelpazesini desteklemek i\u00e7in \u00f6nerilir.<br \/>\n*   <code>CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';<\/code>: Belirli bir kullan\u0131c\u0131 ad\u0131 ve parola ile yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015fturur. <code>'localhost'<\/code> ifadesi, bu kullan\u0131c\u0131n\u0131n yaln\u0131zca sunucudan ba\u011flanabilece\u011fini belirtir.<br \/>\n<em>   <code>GRANT ALL PRIVILEGES ON your_database_name.<\/em> TO 'your_username'@'localhost';<\/code>: Olu\u015fturulan kullan\u0131c\u0131ya, belirtilen veritaban\u0131ndaki t\u00fcm ayr\u0131cal\u0131klar\u0131 verir.<br \/>\n*   <code>FLUSH PRIVILEGES;<\/code>: Yetkilendirme tablolar\u0131n\u0131 yeniden y\u00fckler, b\u00f6ylece yeni de\u011fi\u015fiklikler hemen ge\u00e7erli olur.<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, web uygulaman\u0131z\u0131n veritaban\u0131 ba\u011flant\u0131 ayarlar\u0131nda bu yeni bilgileri kullanabilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Tebrikler! Ubuntu 20.04 \u00fczerinde Nginx, MySQL ve PHP&#8217;den olu\u015fan LEMP y\u0131\u011f\u0131n\u0131n\u0131 ba\u015far\u0131yla kurdunuz. Art\u0131k dinamik web siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<p>Bu kurulum, LEMP y\u0131\u011f\u0131n\u0131n\u0131n temelini olu\u015fturur. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re ek PHP mod\u00fclleri kurabilir, Nginx&#8217;i daha karma\u015f\u0131k senaryolar i\u00e7in yap\u0131land\u0131rabilir ve MySQL&#8217;i optimize edebilirsiniz. G\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131n\u0131 g\u00f6zden ge\u00e7irmek ve sunucunuzu d\u00fczenli olarak g\u00fcncellemek, sunucunuzun g\u00fcvenli\u011fini sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>Umar\u0131m bu kapsaml\u0131 rehber, LEMP y\u0131\u011f\u0131n\u0131n\u0131 kurma s\u00fcrecini sizin i\u00e7in anla\u015f\u0131l\u0131r hale getirmi\u015ftir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 20. 04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP Bu makalede, Ubuntu 20.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-41527","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 20. 04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP Bu makalede, Ubuntu 20.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-01T14:00:57+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP\",\"datePublished\":\"2026-05-01T14:00:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\"},\"wordCount\":1642,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\",\"name\":\"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-01T14:00:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP","og_description":"Ubuntu 20. 04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP Bu makalede, Ubuntu 20.","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-01T14:00:57+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP","datePublished":"2026-05-01T14:00:57+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/"},"wordCount":1642,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/","name":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-01T14:00:57+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-lemp-stack-kurulumu-nginx-mysql-ve-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 20.04 \u00dczerinde LEMP Stack Kurulumu: Nginx, MySQL ve PHP"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=41527"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41527\/revisions"}],"predecessor-version":[{"id":41528,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41527\/revisions\/41528"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}