نصب استک LEMP روی لینوکس(لوکال)

سلام دوستان چند وقت پیش که خواستم تو لینوکس پی اچ پی رو بالا بیارم شروع به خوندن چند وبسایت و ویدیو کردم که بلاخره موفق شدم به بالا اوردن LEMP روی لینوکس . البته بگم که این کانفیگ کلا روی لوکال هست و روی سرور اصلی کار های بیشتری نیاز هست از جمله مسایل امنیتی که در این جا من ازشون صجبت نمیکنم . و واس اون کار نیاز به تخصص هست که فعلا بنده ندارم .و همچنین این اموزشی که میزارم کاملا مبتدی بوده و برای راه انداختن کار هستش و اگه در مراحل جلوتر چیزی دیدم بهش اضافه میکنم و پست رو هم به صورت ویکی درمیارم تا بقیه دوستان حتما ویرایش و تصحیحش کنن تا بهتر بشه :rose: . بازم مثل همیشه زیاد حرف زدم … بهتره برم سر اصل مطلب. :sweat_smile::v:

1- نصب NGINX اولین کار ما خواهد بود.

اول اینکه بهتره nginx رو نصب کنیم . و برای اینکار مستقیم میریم سراغ وبسایت nginx. به ادرس nginx.org

و برای نصب روی لینوکس باید به قسمت لینوکس بریم و بنابه ورژن توزیعی که داریم نصب رو انجام بدیم … برای مثال اوبونتو (18.4).

به این صورت که تو صفحه اول هر ورژنی که رو میخواهیم کلیک میکنیم و در قسمت راست که میبینید تو بخش documentation کلیک کرده و باز در قسمت اول صفحه داکیومنتیشن , بخش installing nginx رفته و installation on linux package رو میزنیم

حالا ابتدا باید به این مسیر رفته تا codename توزیع مورد استفاده مون رو تو سورس لیست پکیج منیجرمون قرار بدیم

sudo nano /etc/apt/sources.list

و به اخر فایل, این دو خط کد رو اضافه میکنیم codename رو از تو سایت انجین اکس بیابید.

deb http://nginx.org/packages/ubuntu/ codename nginx   
deb-src http://nginx.org/packages/ubuntu/ codename nginx          

مال من اینطور شد :

deb http://nginx.org/packages/ubuntu/ bionic nginx  
deb-src http://nginx.org/packages/ubuntu/ bionic nginx  

که شما باید ورژن توزیعتون رو قرار بدید .

بعد از این ها نوبت میرسه به این بخش که ابتدا باید فایل کلید رو دانلود و اضافه کنیم (key file). که اون فایل دانلود شده رو میندازیم تو home و بعد:

sudo apt-key add nginx_signing.key  

رو میزنیم و بعد دیدن ok مبنی بر درست انجام دادن کار یکم خوشحال میشیم .

البته بعدش یه sudo apt update بزنید تا مخازنتون اپدیت بشه

دستور نصب nginx رو وارد میکنیم . به این صورت

apt-get install nginx

حالا انجین ایکس نصب شد و برای روشن کردن باید این دستور رو وارد کنیم

 sudo service nginx start

و برای این که ببینیم در چه وضعیتی قرار داره

sudo service nginx status 

و الان اگه به مرورگرمون رفته و ادرس localhost رو وارد کنیم صفحه خوش امد گویی انجین ایکس رو خواهیم دید

2-حال سراغ نصب php میریم …

والا من که تو سایت php چیز خاصی پیدا نکردم … یه چیزیم پیدا کردم که ورژن 5 بود ولی تو این سایت دیدم که باید مخزن اضافه کنیم ولی باید قبلش طبق گفته خودش این دستور رو بزنیم

apt-get install python-software-properties

وبعد اتمام دستور بالایی به این شکل عمل کنیم:

 add-apt-repository ppa:ondrej/php 

 apt-get update 

و بعدشم برای نصب ورژن 7.2

 apt-get install php7.2

میزنیم و حالا نصب میشه

و اگه بخوایم ورژنش رو بگیریم میزنیم

 php -v

و بازم اینجا یه مقدار دیگه خوشحال باشیم . :sweat_smile:

و حالا میخوایم fpm نصب کنیم . اگه بپرسین fpm چیه … بهتره اینو خودتون سرچ کنید چون خودم بلد نیستم ولی یه جایی اینو نوشته بود :sweat_smile:

یه هندلر هستش . تو این سایت نوشته این هندلر، یکی از مشتقات (Fork) هندلر Fast-CGI است که دارای feature های مازادی جهت مدیریت بهتر سایت هایی می باشد که دارای Request های بسیار بالاتری نسبت به سایت های معمولی هستند.

که برای نصبشم این دستور رو میزنیم

sudo apt install php7.2-fpm   

و حالا مثل دستور قبلی برای دیدن وضعیت fpm

 sudo service php7.2-fpm status

رو میزنیم و میبینیم که فعال است

و حالا برای اینکه php با mysql ارتباط داشته باشد این دستور هم اجرا میکنیم که mysql رو تو مرحله بعد نصب میکنیم

sudo apt install php7.2-mysql 

حالا من تو سایت دیجیتال اوشن یه دستور دیدم که میگه باید تو فایل php ini اون رو تغییر بدید برای امنیت بیشتر (حالا ما لوکال هستیم و فکر نکنم مشکلی پیش بیاد ولی …)

به این صورت میریم جلو

 sudo nano /etc/php/7.2/fpm/php.ini

و بعد دنبال این عبارت cgi.fix_pathinfo=1 میگردیم و عددد 1 اخرشو به 0 تغییر میدیم

حالا باید fpm رو رستارت کنیم

sudo service php7.2-fpm restart 

حالا سراغ نصب mysql میریم که از سایت دیجیتال اوشن باز پیداش کردم …

sudo apt install mysql-server   

تو قسمت بعدی ازتون یه رمز میخواد که باید یه رمز برا خودتون انتخاب کنید. (یه چیزی انتخاب کنید که یادتون بمونه … بعدا لازمتون میشه هاااا…)

و حالا با دستور

mysql -u root -p

میخوایم ببینیم نصب شده یا نه البته اینجا باز رمزی که انتخاب کردین رو ازتون میخواد که وارد کنید .

حالا صفحه mysql monitor رو میبینید که یعنی نصب شده … حالا بازم اینجا یه لبخندی بزنید .

اگه یادتون بیاد ما برای اینکه لوکال هاستمون رو ببینیم توی ادرس مرورگر میزدیم localhost حال برای اینکه اینو تغییر بدیم و یه چیز دلخواه بزنیم میتونیم به این شکل عمل کنیم :

sudo nano /etc/hosts   

من اینجور تغییرش دادم

127.0.0.1       localhost  
127.0.1.1       taher-CX62-6QL 
127.0.0.1       phplearn.taher
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters   

ولی شما میتونید مثل من که خط 3 رو خودم اضافه کردم رو اضافه کنید و استفاده کنید.

و الانم برای اینکه این دامین لوکالمون تو انجین ایکس هم شناسایی بشه و همچنین یه مقدار شحصی سازی و دستکاریش کنیم به این شکل عمل میکنیم
ابتدا میزنیم
sudo nano /etc/nginx/nginx.conf
و تو خط اول. قسمت user رو به www-data تغییر میدیم تا دسترسی کامل رو در تمام قسمت های سرورمون داشته باشیم

بعد قسمت اصلی (که همون که گفتم برای هر دامنمون که میخوایم یه فایل کانفیگ انجین ایکس جداگانه داشته باشیم و مطابق میلمون عوضش کنیم و دیگه فایل کانفیگ اصلیمون رو هی عوض نکنیم و برای هر دامین و پروژمون یه دامنه و کانفیگ جداگانه داشته باشیم ).

اول به این پوشه میریم

cd /etc/nginx/conf.d

بعد به اینصورت یه فایل ایجاد میکنیم

touch example.conf 
  • نکته * example همون نام دامنه ای باشه که تو hosts نوشتید

حالا میریم تو اون فایل جدیدی که ساختیم
sudo nano example.conf

بعد این دستورات رو وارد میکنیم و سیو میکنیم.

upstream phplearn_php { 
        server unix:/run/php/php7.2-fpm.sock;
        server 127.0.0.1:9000;
}
    server {
    listen       80;
    server_name  phplearn.taher;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    root  /home/taher/dev/phplearn;
    index  index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
     try_files $uri $uri/ /index.php?$query_string;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   phplearn_php;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   phplearn_php;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;

    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

اون بالایی کانفیگ مال خودمه که شما باید قسمت های phplearn_php رو با اسم مال خودتون تغییر بدین

و همچنین میتونید لوکیشن روت خودتون رو تغییر بدید و فولدری که پروژتون توش هست رو بهش بدید و از اونجا براتون لود بشه
و server_name ‌رو هم تغییر بدین
(راستش اینجا رو من خودم خوب بلد نیستم و دوستم بهم کانفیگشو داد و من تغییرش دادم . باز اگه یه جاییش رو موندید رو بگید تا هر کمکی از دستم بربیاد رو انجام بدم)

بعد انجین ایکس رو یه رستارت کنید

sudo service nginx restart

حالا مسیری که روت دادین (مسیر پروژتون که تو فایل انجینکس که ساختین) رو برید توش یه فایل پی اج پی بسازید و توش یه هلو ورد همیشگی بزنید و بعدش به دامینتون برید تو مرورگر و تست کنید ببینید کار میکنه یا نه … البته توکل بر خدا … ایشالله کار میکنه

و اگه بخواین phpmyamdin نصبب کنید چی؟

اونوقت هم

sudo apt install phpmyadmin  

میزنید

در حین پروسه نصب، از شما میخواهد وب سروری که باید به صورت اتوماتیک برای اجرای PhpMyAdmin استفاده شود رو انتخاب کنید. Nginx در لیست وب سرورها نبود باید کلید TAB و سپس Enter را بزنید

بعد yes رو بزنید
سپس، برای ساخت دیتابیس مربوط به phpmyadmin در mysql پسورد خود را وارد کنید. گفتم که باز لازم میشه .

و حالا اینجاشو که سر اقا توماج @toomaj رو درد دادم چون نتونستم مشکلمو بهتر بپرسم بازم ای ام ساری واقعا .

که باید برای دسترسی به اینترفیس وب phpmyadmin (در مرورگر خود)، symlink زیر را ایجاد کنیم:

sudo ln -s /usr/share/phpmyadmin /var/www/htmlphpmyadmin  

که حتما یادتون باشه که قسمت دوم دستور باید مسیر روتی رو که شما تو کانفیگ انجین ایکستون وارد کردید(مسیر پروژه) رو وارد کنید تا باز بشه.

sudo ln -s /usr/share/phpmyadmin /home/taher/dev/phplearn
5 پسندیده

یه آلترناتیو جذاب برای phpmyadmin!
من اولین بار که میخواستم LEMP کانفیگ کنم دیدم کانفیگ phpmyadmin سخته کلا بی‌خیالش شدم :slight_smile: (سخت بودن استفاده از یه ابزار، یعنی یا بهترش هست، یا باید بهترش رو بسازیم)

یه آلترناتیو براش هست که از خیلی جهات بهتره و مطمئنا معایب خودش رو داره.
از مزایا میشه به «تک فایل بودن» اشاره کرد که باعث میشه نیاز به هیچ کانفیگی نداشته باشه. مثل یه اسکریپت معمولی php با حجم ۲۰۰کیلوبایت (اگه فقط زبان انگلیسی و فقط mysql ساپورت کنه) میشه کپی کرد توی public_html و کار میکنه!
مزایای دیگه‌ای هم داره مثلا پشتیبانی از postgresql و دیتابیسهای دیگه. در حالی که phpmyadmin تا جایی که من میدونم فقط mysql ساپورت میکنه.

لیست دیتابیسهایی که پشتیبانی میکنه:

  • MySQL
  • MariaDB
  • PostgreSQL
  • SQLite
  • MS SQL
  • Oracle
  • Firebird
  • SimpleDB
  • Elasticsearch
  • MongoDB

آدرس وبسایت (برای دانلود اسکریپت و تم‌ها)

https://www.adminer.org

گیتهاب:

راستی تم پذیر هم هست. سیستم کارش هم اینطوریه که دنبال فایلی با نام adminer.css میگرده و اگه پیداش نکرد، استایل دیفالت رو اعمال میکنه.
توی سایت یه تب برای پلاگینها داره. تا حالا استفاده نکردم ازشون ولی خواستم بهش اشاره کنم که یه سر به این تب بزنید.

2 پسندیده

نه @anon69377999 جان اشتباه از من بود که یادم رفت پیگیری کنم، اما بنظر میاد شما حسابی درگیر این موضوع شدی و این مطلب کامل رو گذاشتی، دفعه بعد که خواستم phpmyadmin نصب کنم حتما به این پست رجوع میکنم :hugs:.

فقط یک موضوعی هست اونم اینه که phpmyadmin برای جایی که به ترمینال و شل دسترسی نداریم خیلی خوبه، اما آیا روی سیستم لوکال هم لازمه که داشته باشیم اونم با این همه پیچیدگی؟ البته این فقط یک سواله🐍

1 پسندیده

سلام … شما اختیار دارین … خب ما هم باید تلاشمون رو بکنیم … مرسی از بازخورد مثبتی که داداین .:rose:

در مورد سوالتون . که درسته منم اگه پروژه کوچیک باشه یا حتی واسه یادگیری اینا باشه زیاد به phpmyadmin لازم ندارم . و روی خود mysql کارمو راه میندازم … (فوقش یه دیتابیس میسازیم) البته اگه شروع به یادگیری یه دیتابیس به صورت کامل رو نداشته باشم …
در کل ولی وقتی میخوایم مثلا وردپرس رو بالا بیارم و بررسیش کنم و یا چند تا پروژه با دیتابیسش داشته باشم بیشتر سمت phpmyadmin میرم … چون گرافیکیه محیط و کمتر گیج میشم … ولی باز حرف شما متینه . ولی من به شخصیه مبتدیم :smile: محیط گرافیکیو ترجیح میدم