{"id":2202,"date":"2026-04-18T10:02:31","date_gmt":"2026-04-18T07:02:31","guid":{"rendered":"https:\/\/saviorhost.com\/blog\/?p=2202"},"modified":"2026-04-18T10:03:14","modified_gmt":"2026-04-18T07:03:14","slug":"kisitli-jailed-ssh-ortaminda-node-js-ve-pm2-kurulumu-kesin-cozum-rehberi","status":"publish","type":"post","link":"https:\/\/saviorhost.com\/blog\/kisitli-jailed-ssh-ortaminda-node-js-ve-pm2-kurulumu-kesin-cozum-rehberi\/","title":{"rendered":"K\u0131s\u0131tl\u0131 (Jailed) SSH Ortam\u0131nda Node.js ve PM2 Kurulumu: Kesin \u00c7\u00f6z\u00fcm Rehberi"},"content":{"rendered":"<p data-path-to-node=\"4\">Payla\u015f\u0131ml\u0131 hosting sunucular\u0131nda veya KeyHelp, cPanel, Plesk gibi kontrol panellerinde k\u0131s\u0131tl\u0131 (Jailed) SSH eri\u015fimi ile Node.js uygulamas\u0131 bar\u0131nd\u0131rmak genellikle kabusa d\u00f6n\u00fc\u015febilir. Sunucu y\u00f6neticileri g\u00fcvenlik amac\u0131yla &#8220;Root&#8221; yetkilerini kapatt\u0131\u011f\u0131nda, standart <code data-path-to-node=\"4\" data-index-in-node=\"262\">npm install<\/code>, derleme (build) i\u015flemleri ve <code data-path-to-node=\"4\" data-index-in-node=\"304\">pm2<\/code> komutlar\u0131 ard\u0131 ard\u0131na <b data-path-to-node=\"4\" data-index-in-node=\"330\">EACCES (Yetki Reddedildi)<\/b> veya <b data-path-to-node=\"4\" data-index-in-node=\"361\">ERR_DLOPEN_FAILED<\/b> hatalar\u0131 vermeye ba\u015flar.<\/p>\n<p data-path-to-node=\"5\">Bu kapsaml\u0131 rehberde; Keyhel Panel&#8217;de Jailed SSH ortam\u0131nda g\u00fcvenlikten \u00f6d\u00fcn vermeden, gerekli izinleri ayarlamay\u0131, <b data-path-to-node=\"5\" data-index-in-node=\"99\">NVM (Node Version Manager)<\/b> kullanarak Node.js kurmay\u0131 ve uygulamalar\u0131n\u0131z\u0131 <b data-path-to-node=\"5\" data-index-in-node=\"173\">PM2<\/b> ile 7\/24 kesintisiz nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m anlat\u0131yoruz.<\/p>\n<hr data-path-to-node=\"6\" \/>\n<h2 data-path-to-node=\"7\" id=\"1-adim-on-hazirlik-ek-ikili-dosyalar-ve-kutuphane-izinleri\">1. Ad\u0131m: \u00d6n Haz\u0131rl\u0131k \u2013 &#8220;Ek \u0130kili Dosyalar&#8221; ve K\u00fct\u00fcphane \u0130zinleri<\/h2>\n<p data-path-to-node=\"8\">Jailed SSH (Hapishane) ortam\u0131, kullan\u0131c\u0131y\u0131 sadece belli ba\u015fl\u0131 komutlarla s\u0131n\u0131rland\u0131r\u0131r. NPM&#8217;in paketleri indirebilmesi, zipli dosyalar\u0131 a\u00e7abilmesi ve \u00f6zellikle <b data-path-to-node=\"8\" data-index-in-node=\"160\">Vite\/Rollup<\/b> gibi modern ara\u00e7lar\u0131n Linux \u00e7ekirdek k\u00fct\u00fcphanelerine ula\u015f\u0131p derleme (build) yapabilmesi i\u00e7in sunucu panelinizden baz\u0131 komutlara izin vermeniz gerekir.<\/p>\n<p data-path-to-node=\"9\">Hosting panelinizden (\u00d6rn: KeyHelp&#8217;te <code data-path-to-node=\"9\" data-index-in-node=\"38\">Yap\u0131land\u0131rma &gt; S\u0131n\u0131rland\u0131r\u0131lm\u0131\u015f SSH &gt; Ek \u0130kili Dosyalar<\/code> b\u00f6l\u00fcm\u00fcne) a\u015fa\u011f\u0131daki listeyi eksiksiz olarak ekleyin ve kaydedin:<\/p>\n<div class=\"code-block ng-tns-c515271043-343 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQjgI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-343 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-343\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-343 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-343\">\n<div class=\"animated-opacity ng-tns-c515271043-343\">\n<pre class=\"ng-tns-c515271043-343\"><code class=\"code-container formatted ng-tns-c515271043-343\" role=\"text\" data-test-id=\"code-content\">\/usr\/bin\/node\r\n\/usr\/bin\/npm\r\n\/usr\/local\/bin\/pm2\r\n\/usr\/bin\/sed\r\n\/usr\/bin\/awk\r\n\/usr\/bin\/tr\r\n\/usr\/bin\/uname\r\n\/usr\/bin\/tar\r\n\/usr\/bin\/gzip\r\n\/usr\/bin\/xz\r\n\/usr\/bin\/sort\r\n\/usr\/bin\/grep\r\n\/usr\/bin\/tail\r\n\/usr\/bin\/head\r\n\/usr\/bin\/cut\r\n\/usr\/bin\/wc\r\n\/usr\/bin\/dirname\r\n\/usr\/bin\/find\r\n\/usr\/bin\/tee\r\n\/usr\/bin\/sha256sum\r\n\/usr\/bin\/rm\r\n\/usr\/bin\/cp\r\n\/usr\/bin\/mv\r\n\/lib\/x86_64-linux-gnu\/librt.so.1\r\n\/usr\/lib\/x86_64-linux-gnu\/librt.so.1\r\n\/lib64\/librt.so.1\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"11\"><i data-path-to-node=\"11\" data-index-in-node=\"0\">Not: Listenin sonundaki <code data-path-to-node=\"11\" data-index-in-node=\"24\">librt.so.1<\/code> yollar\u0131, Vite ve Rollup kullanan projelerde derleme s\u0131ras\u0131nda al\u0131nan <code data-path-to-node=\"11\" data-index-in-node=\"104\">Error: librt.so.1: cannot open shared object file<\/code> (ERR_DLOPEN_FAILED) hatas\u0131n\u0131n kesin \u00e7\u00f6z\u00fcm\u00fcd\u00fcr.<\/i><\/p>\n<hr data-path-to-node=\"12\" \/>\n<h2 data-path-to-node=\"13\" id=\"2-neden-jailed-sshta-standart-node-js-kurulumu-coker\">2. Neden Jailed SSH&#8217;ta Standart Node.js Kurulumu \u00c7\u00f6ker?<\/h2>\n<p data-path-to-node=\"14\">\u0130zinleri verdikten sonra bile, sistem sizi genellikle <code data-path-to-node=\"14\" data-index-in-node=\"54\">\/www<\/code> veya <code data-path-to-node=\"14\" data-index-in-node=\"64\">\/home\/kullaniciadi<\/code> gibi bir dizine hapseder. Ancak Node.js ve NPM, kurulum ve \u00f6nbellek (cache) i\u015flemleri i\u00e7in ana sunucu dizinlerine (<code data-path-to-node=\"14\" data-index-in-node=\"198\">\/.npm<\/code>) eri\u015fmeye \u00e7al\u0131\u015f\u0131r.<\/p>\n<p data-path-to-node=\"15\">Bu durum kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z en me\u015fhur hatay\u0131 do\u011furur: <code data-path-to-node=\"15\" data-index-in-node=\"51\">Error: EACCES: permission denied, mkdir '\/.npm'<\/code><\/p>\n<p data-path-to-node=\"16\"><b data-path-to-node=\"16\" data-index-in-node=\"0\">\u00c7\u00f6z\u00fcm:<\/b> Uygulamalar\u0131 &#8220;Root&#8221; d\u00fczeyinde de\u011fil, tamamen kullan\u0131c\u0131n\u0131n kendi izole alan\u0131nda (Kapsay\u0131c\u0131 mant\u0131\u011f\u0131yla) kurmakt\u0131r.<\/p>\n<hr data-path-to-node=\"17\" \/>\n<h2 data-path-to-node=\"18\" id=\"3-adim-adim-nvm-ile-ozel-node-js-motoru-kurmak\">3. Ad\u0131m Ad\u0131m NVM ile \u00d6zel Node.js Motoru Kurmak<\/h2>\n<p data-path-to-node=\"19\">Her m\u00fc\u015fteriye veya projeye kendi ba\u011f\u0131ms\u0131z Node.js motorunu atamak i\u00e7in NVM kullan\u0131yoruz. Bu sayede ayn\u0131 sunucuda bir proje Node 18 ile \u00e7al\u0131\u015f\u0131rken di\u011feri Node 20 ile \u00e7ak\u0131\u015fmadan \u00e7al\u0131\u015fabilir.<\/p>\n<p data-path-to-node=\"20\">Terminalinize giri\u015f yap\u0131n ve ortam\u0131 uyand\u0131rmak i\u00e7in \u015fu komutlar\u0131 s\u0131ras\u0131yla girin (NVM kurulu de\u011filse standart cURL komutuyla kurabilirsiniz):<\/p>\n<div class=\"code-block ng-tns-c515271043-344 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQjwI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-344 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-344\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-344 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-344\">\n<div class=\"animated-opacity ng-tns-c515271043-344\">\n<pre class=\"ng-tns-c515271043-344\"><code class=\"code-container formatted ng-tns-c515271043-344\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># NVM'in yolunu belirleyin<\/span>\r\n<span class=\"hljs-built_in\">export<\/span> NVM_DIR=<span class=\"hljs-string\">\"\/www\/.nvm\"<\/span>\r\n\r\n<span class=\"hljs-comment\"># NVM'i aktif edin<\/span>\r\n[ -s <span class=\"hljs-string\">\"<span class=\"hljs-variable\">$NVM_DIR<\/span>\/nvm.sh\"<\/span> ] &amp;&amp; \\. <span class=\"hljs-string\">\"<span class=\"hljs-variable\">$NVM_DIR<\/span>\/nvm.sh\"<\/span>\r\n\r\n<span class=\"hljs-comment\"># \u0130stedi\u011finiz Node s\u00fcr\u00fcm\u00fcn\u00fc kurun ve kullan\u0131n (\u00d6rn: v20)<\/span>\r\nnvm install 20\r\nnvm use 20\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"22\" \/>\n<h2 data-path-to-node=\"23\" id=\"4-npm-eacces-yetki-hatalarini-tamamen-asmak\">4. NPM EACCES (Yetki) Hatalar\u0131n\u0131 Tamamen A\u015fmak<\/h2>\n<p data-path-to-node=\"24\">NPM&#8217;in sunucu k\u00f6k dizinlerine dosya yazmaya \u00e7al\u0131\u015fmas\u0131n\u0131 engellemek i\u00e7in ona &#8220;Ev&#8221; dizininin neresi oldu\u011funu s\u00f6ylemeliyiz. A\u015fa\u011f\u0131daki komut, NPM&#8217;in t\u00fcm \u00f6nbellek dosyalar\u0131n\u0131 k\u0131s\u0131tl\u0131 alan\u0131m\u0131z olan <code data-path-to-node=\"24\" data-index-in-node=\"192\">\/www<\/code> i\u00e7erisine yazmas\u0131n\u0131 sa\u011flar:<\/p>\n<div class=\"code-block ng-tns-c515271043-345 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQkAI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-345 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-345\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-345 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-345\">\n<div class=\"animated-opacity ng-tns-c515271043-345\">\n<pre class=\"ng-tns-c515271043-345\"><code class=\"code-container formatted ng-tns-c515271043-345\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">export<\/span> HOME=<span class=\"hljs-string\">\"\/www\"<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"26\" id=\"surum-cakismalarini-eresolve-gidermek\">S\u00fcr\u00fcm \u00c7ak\u0131\u015fmalar\u0131n\u0131 (ERESOLVE) Gidermek<\/h3>\n<p data-path-to-node=\"27\">Projelerinizde paket s\u00fcr\u00fcmleri uyu\u015fmazl\u0131\u011f\u0131 (<code data-path-to-node=\"27\" data-index-in-node=\"44\">npm error ERESOLVE<\/code>) ya\u015f\u0131yorsan\u0131z, NPM&#8217;e eski tip ba\u011f\u0131ml\u0131l\u0131k \u00e7\u00f6z\u00fcmlemeyi kullanmas\u0131n\u0131 s\u00f6yleyerek kurulumu zorlayabilirsiniz:<\/p>\n<div class=\"code-block ng-tns-c515271043-346 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQkQI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-346 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-346\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-346 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-346\">\n<div class=\"animated-opacity ng-tns-c515271043-346\">\n<pre class=\"ng-tns-c515271043-346\"><code class=\"code-container formatted ng-tns-c515271043-346\" role=\"text\" data-test-id=\"code-content\">npm install --legacy-peer-deps\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"29\" \/>\n<h2 data-path-to-node=\"30\" id=\"5-jailed-ortamda-pm2-kurulumu-ve-module_conf-json-hatasi-cozumu\">5. Jailed Ortamda PM2 Kurulumu ve &#8220;module_conf.json&#8221; Hatas\u0131 \u00c7\u00f6z\u00fcm\u00fc<\/h2>\n<p data-path-to-node=\"31\">Uygulaman\u0131z\u0131 arka planda s\u00fcrekli \u00e7al\u0131\u015ft\u0131racak olan PM2&#8217;yi kurmak, yetki sorunlar\u0131n\u0131n en \u00e7ok ya\u015fand\u0131\u011f\u0131 yerdir. PM2 loglar\u0131 ve PID dosyalar\u0131n\u0131 ana dizindeki <code data-path-to-node=\"31\" data-index-in-node=\"155\">\/.pm2<\/code> i\u00e7ine yazmaya \u00e7al\u0131\u015f\u0131r. Bunu \u00f6nlemek i\u00e7in PM2&#8217;nin \u00e7al\u0131\u015fma alan\u0131n\u0131 yeniden y\u00f6nlendiriyoruz:<\/p>\n<div class=\"code-block ng-tns-c515271043-347 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQkgI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-347 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-347\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-347 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-347\">\n<div class=\"animated-opacity ng-tns-c515271043-347\">\n<pre class=\"ng-tns-c515271043-347\"><code class=\"code-container formatted ng-tns-c515271043-347\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># PM2'ye yeni bir ev g\u00f6steriyoruz<\/span>\r\n<span class=\"hljs-built_in\">export<\/span> PM2_HOME=<span class=\"hljs-string\">\"\/www\/.pm2\"<\/span>\r\n\r\n<span class=\"hljs-comment\"># PM2'yi global olarak kuruyoruz<\/span>\r\nnpm install -g pm2\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"33\">Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in:<\/p>\n<div class=\"code-block ng-tns-c515271043-348 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQkwI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-348 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-348\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-348 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-348\">\n<div class=\"animated-opacity ng-tns-c515271043-348\">\n<pre class=\"ng-tns-c515271043-348\"><code class=\"code-container formatted ng-tns-c515271043-348\" role=\"text\" data-test-id=\"code-content\">pm2 status\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"35\"><i data-path-to-node=\"35\" data-index-in-node=\"0\">Bu komut size bo\u015f da olsa o me\u015fhur PM2 tablosunu vermelidir.<\/i><\/p>\n<hr data-path-to-node=\"36\" \/>\n<h2 data-path-to-node=\"37\" id=\"6-uygulamayi-baslatmak-ve-pm2yi-kalici-hale-getirmek\">6. Uygulamay\u0131 Ba\u015flatmak ve PM2&#8217;yi Kal\u0131c\u0131 Hale Getirmek<\/h2>\n<p data-path-to-node=\"38\">T\u00fcm altyap\u0131m\u0131z haz\u0131r. \u015eimdi Node.js veya derlenmi\u015f (build edilmi\u015f) projemizi canl\u0131ya alal\u0131m.<\/p>\n<p data-path-to-node=\"39\"><b data-path-to-node=\"39\" data-index-in-node=\"0\">1. Uygulaman\u0131z\u0131n klas\u00f6r\u00fcne girin:<\/b><\/p>\n<div class=\"code-block ng-tns-c515271043-349 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQlAI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-349 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-349\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-349 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-349\">\n<div class=\"animated-opacity ng-tns-c515271043-349\">\n<pre class=\"ng-tns-c515271043-349\"><code class=\"code-container formatted ng-tns-c515271043-349\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">cd<\/span> \/www\/\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"41\"><b data-path-to-node=\"41\" data-index-in-node=\"0\">2. PM2 ile uygulamay\u0131 ba\u015flat\u0131n:<\/b> Birden fazla uygulama bar\u0131nd\u0131r\u0131yorsan\u0131z <code data-path-to-node=\"41\" data-index-in-node=\"72\">--name<\/code> parametresi ile isimleri birbirinden ay\u0131rmay\u0131 unutmay\u0131n.<\/p>\n<div class=\"code-block ng-tns-c515271043-350 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQlQI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-350 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-350\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-350 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-350\">\n<div class=\"animated-opacity ng-tns-c515271043-350\">\n<pre class=\"ng-tns-c515271043-350\"><code class=\"code-container formatted ng-tns-c515271043-350\" role=\"text\" data-test-id=\"code-content\">pm2 start index.js --name <span class=\"hljs-string\">\"proje-adi\"<\/span> --cwd \/www\/\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"43\"><b data-path-to-node=\"43\" data-index-in-node=\"0\">3. \u0130\u015flemi Kaydedin:<\/b> Sunucu herhangi bir sebeple yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda uygulaman\u0131z\u0131n otomatik olarak tekrar a\u00e7\u0131lmas\u0131 i\u00e7in listeyi kaydedin:<\/p>\n<div class=\"code-block ng-tns-c515271043-351 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQlgI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-351 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-351\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-351 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-351\">\n<div class=\"animated-opacity ng-tns-c515271043-351\">\n<pre class=\"ng-tns-c515271043-351\"><code class=\"code-container formatted ng-tns-c515271043-351\" role=\"text\" data-test-id=\"code-content\">pm2 save\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"45\" \/>\n<h2 data-path-to-node=\"46\" id=\"bonus-ssh-her-acildiginda-ayarlari-korumak-bashrc-otomasyonu\">Bonus: SSH Her A\u00e7\u0131ld\u0131\u011f\u0131nda Ayarlar\u0131 Korumak (.bashrc Otomasyonu)<\/h2>\n<p data-path-to-node=\"47\">Jailed SSH ortamlar\u0131 \u00e7ok &#8220;unutkand\u0131r&#8221;. Terminali kapat\u0131p a\u00e7t\u0131\u011f\u0131n\u0131zda <code data-path-to-node=\"47\" data-index-in-node=\"69\">pm2 status<\/code> veya <code data-path-to-node=\"47\" data-index-in-node=\"85\">npm<\/code> komutlar\u0131 tekrar hata verebilir. \u00c7\u00fcnk\u00fc girdi\u011fimiz <code data-path-to-node=\"47\" data-index-in-node=\"139\">export<\/code> komutlar\u0131 haf\u0131zadan silinir.<\/p>\n<p data-path-to-node=\"48\">Her giri\u015finizde tek bir kelimeyle ortam\u0131 haz\u0131rlamak i\u00e7in kendinize bir k\u0131sayol (alias) olu\u015fturun:<\/p>\n<div class=\"code-block ng-tns-c515271043-352 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwiE5PCo5PaTAxUAAAAAHQAAAAAQlwI\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c515271043-352 ng-star-inserted\">\n<p><span class=\"ng-tns-c515271043-352\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c515271043-352 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c515271043-352\">\n<div class=\"animated-opacity ng-tns-c515271043-352\">\n<pre class=\"ng-tns-c515271043-352\"><code class=\"code-container formatted ng-tns-c515271043-352\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">echo<\/span> <span class=\"hljs-string\">'alias start=\"export HOME=\/www &amp;&amp; export PM2_HOME=\/www\/.pm2 &amp;&amp; export NVM_DIR=\/www\/.nvm &amp;&amp; [ -s \\\"\\$NVM_DIR\/nvm.sh\\\" ] &amp;&amp; . \\\"\\$NVM_DIR\/nvm.sh\\\" &amp;&amp; nvm use 20\"'<\/span> &gt;&gt; \/www\/.bashrc\r\n<span class=\"hljs-built_in\">source<\/span> \/www\/.bashrc\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"50\">Art\u0131k SSH&#8217;a her ba\u011fland\u0131\u011f\u0131n\u0131zda sadece <b data-path-to-node=\"50\" data-index-in-node=\"39\"><code data-path-to-node=\"50\" data-index-in-node=\"39\">start<\/code><\/b> yaz\u0131p Enter&#8217;a basman\u0131z yeterlidir. T\u00fcm NVM ve PM2 yollar\u0131n\u0131z saniyeler i\u00e7inde arka planda haz\u0131r hale gelecektir.<\/p>\n<hr data-path-to-node=\"51\" \/>\n<h3 data-path-to-node=\"52\" id=\"ozet\">\u00d6zet<\/h3>\n<p data-path-to-node=\"53\">K\u0131s\u0131tl\u0131 SSH izinleri, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in bir engel de\u011fildir. Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f NVM ortamlar\u0131, \u00e7ekirdek <code data-path-to-node=\"53\" data-index-in-node=\"129\">librt<\/code> izinleri ve <code data-path-to-node=\"53\" data-index-in-node=\"147\">export<\/code> y\u00f6nlendirmeleri ile ana sunucuya hi\u00e7bir zarar vermeden (Root yetkisi kullanmadan) tamamen izole, g\u00fcvenli ve y\u00fcksek performansl\u0131 Node.js bar\u0131nd\u0131rma altyap\u0131lar\u0131 kurabilirsiniz. Ba\u015far\u0131lar dileriz!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Payla\u015f\u0131ml\u0131 hosting sunucular\u0131nda veya KeyHelp, cPanel, Plesk gibi kontrol panellerinde k\u0131s\u0131tl\u0131 (Jailed) SSH eri\u015fimi ile Node.js uygulamas\u0131 bar\u0131nd\u0131rmak genellikle kabusa&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2203,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78,62,80,81],"tags":[],"class_list":["post-2202","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-guvenlik","category-keyhelp","category-node-js"],"_links":{"self":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/comments?post=2202"}],"version-history":[{"count":2,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2202\/revisions"}],"predecessor-version":[{"id":2205,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/posts\/2202\/revisions\/2205"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media\/2203"}],"wp:attachment":[{"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/media?parent=2202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/categories?post=2202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saviorhost.com\/blog\/wp-json\/wp\/v2\/tags?post=2202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}