اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش نصب Nginx, MariaDB 10, PHP 7 (یا LEMP Stack) در Ubuntu 16.04/16.10

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش نصب Nginx, MariaDB 10, PHP 7 (یا LEMP Stack) در Ubuntu 16.04/16.10

    LEMP Stack یک مخفف میباشد که نشان دهنده گروهی از پکیج ها (Linux OS, Nginx web server, MySQL\MariaDB database و زبان برنامه نویسی PHP) که برای گسترش یا توسعه اپلیکیشن های web و صفحات web داینامیک استفاده میشود.

    در این آموزش به شما نحوه نصب LEMP Stack به همراه MariaDB 10 ,PHP 7 و HTTP 2.0 برای Nginx در اوبونتو 16.10 و اوبونتو 16.04 نسخه سرور/دسکتاپ را یاد خواهیم داد.


    همچنین توصیه میشود مطالعه کنید :

    آموزش نصب LEMP "Linux, Nginx, MariaDB, PHP-FPM" در دبیان 9

    آموزش نصب (LEMP (Nginx 1.10.1 ,MariaDB 10 ,PHP 5.5/5.6 روی RedHat/CentOS 7/6 & Fedora 20-24



    مرحله اول : نصب وب سرور Nginx

    1 - انجین ایکس یک وب سرور کارآمد و پیشرفته که برای نمایش صفحات وب به بازدید کنندگان از اینترنت استفاده میشود. ما میخواهیم نصب وب سرور Nginx را از ریپازیتوری های رسمی Ubuntu با استفاده از دستور apt شروع کنیم.
    کد PHP:
    sudo apt-get install nginx 
    Click image for larger version  Name:	Install-Nginx-on-Ubuntu-16.04.png Views:	1 Size:	15.6 KB ID:	22095


    2 - سپس، دستورات netstat و systemctl را برای مطمئن شدن از اینکه سرویس Nginx روی پورت 80 در حال کار کردن میباشد را اجرا میکنیم.
    کد PHP:
    sudo netstat -tlpn 
    Click image for larger version  Name:	Check-Nginx-Network-Port-Connection.png Views:	1 Size:	7.0 KB ID:	22096


    کد PHP:
    sudo systemctl status nginx.service 
    Click image for larger version  Name:	Check-Nginx-Service-Status.png Views:	1 Size:	17.7 KB ID:	22097


    به محض اینکه مطمئن شدید سرویس start میباشد، میتوانید یک مرورگر را باز کنید و با وارد کردن IP آدرس سرور یا DNS record تان با استفاده از پروتکل HTTP برای مشاهده صفحه وب پیش فرض انجین اکس استفاده کنید.
    کد PHP:
    http://IP-Address 
    Click image for larger version  Name:	Verify-Nginx-Webpage.png Views:	1 Size:	11.1 KB ID:	22098



    مرحله دوم : فعال کردن پروتکل Nginx HTTP/2.0

    3 - پروتوكل HTTP/2.0 كه در آخرين نسخه ي باينري انجين اكس روي اوبونتو 16.04 بضورت پيش فرض ايجاد شده تنها بصورت تركيبي با ssl كار ميكند و بهبود عظيمي در سرعت لود صفحات وب ssl را تضمين ميكند.

    برای فعال کردن پروتکل در Nginx روی Ubuntu 16.04 ابتدا وارد فایل های کانفیگ available sites میشویم، سپس با استفاده از دستور زیر از فایل تنظیمات پیش فرض بک آپ تهیه میکنیم.
    کد PHP:
    cd /etc/nginx/sites-available/
    sudo mv default default.backup 
    Click image for larger version  Name:	Backup-Nginx-Sites-Configuration-File.png Views:	1 Size:	5.9 KB ID:	22099


    4 - سپس، با استفاده از ادیتور متن، یک فایل default جدید با دستورالعمل های زیر ایجاد کنید.
    کد PHP:
    server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    root /var/www/html;
    index index.html index.htm index.php;
    server_name 192.168.10.241;
    location / {
    try_files $uri $uri/ =404;
    }
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 180m;
    resolver 8.8.8.8 8.8.4.4;
    add_header Strict-Transport-Security "max-age=31536000;
    #includeSubDomains" 
    always;
    location ~ \.php$ {
    include 
    snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
    location ~ /\.ht {
    deny all;
    }
    }
    server {
    listen         80;
    listen    [::]:80;
    server_name    192.168.10.241;
    return         
    301 https://$server_name$request_uri;

    Click image for larger version  Name:	Enable-Nginx-HTTP-2-Protocol.png Views:	1 Size:	78.8 KB ID:	22100


    تنظیمات بالا استفاده از HTTP/2.0 را با اضافه کردن پارامتر http2 به تمام قسمت های در حال listen کردن SSL، را فعال میکند.

    همچنین، آخرین بخش از دستور بالا در بلاک server برای ریدایرکت کردن کل ترافیک بدون SSL به هاست پیش فرض SSL/TLS استفاده میشود. همچنین، server_name را با IP آدرس یا DNS رکورد خود (ترجیحا FQDN) جایگزین کنید.


    5 - زمانیکه ویرایش فایل پیکربندی انجین اکس با تنظیمات بالا به پایان رسید، بوسیله اجرای دستورات زیر فایل گواهینامه SSL و کلید (Key) را تولید و لیست کنید.

    پرسش های مربوط به گواهینامه (Certificate) به همراه تنظیمات سفارشی خودتان پرکنید و به تنظیمات Common Name برای مطابقت داشتن با رکورد DNS FQDN یا IP Address سرورتان که برای دسترسی به صفحه وب مورد استفاده قرار میگیرد، توجه کنید.
    کد PHP:
    sudo mkdir /etc/nginx/ssl
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
    ls /etc/nginx/ssl
    Click image for larger version  Name:	Generate-SSL-Certificate-and-Key.png Views:	1 Size:	26.9 KB ID:	22101


    6 - همچنین، بوسیله اجرای دستور زیر یک DH cypher (رمز DH) قوی ایجاد کنید، که در فایل کانفیگ Default همانطور که در بالا تصویر آنرا مشاهده میکنید در خط مربوط به مشخص کردن مسیر فایل ssl_dhparam باید مسیر درست آنرا تعریف کنید.
    کد PHP:
    sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 
    Click image for larger version  Name:	Create-Diffie-Hellman-Key.png Views:	1 Size:	8.1 KB ID:	22102

    Click image for larger version  Name:	Check-Diffie-Hellman-Key.png Views:	1 Size:	8.9 KB ID:	22103


    7 - زمانیکه کلید Diffie-Hellman ایجاد شد، با استفاده از دستور nginx -t بررسی کنید که فایل کانفیگ Nginx به درستی نوشته شده است و می تواند توسط وب سرور انجین اکس استفاده شود، سپس برای مشاهده تغییرات توسط دستور زیر سرویس را restart کنید.
    کد PHP:
    sudo nginx -t
    sudo systemctl restart nginx.service 
    Click image for larger version  Name:	Check-Nginx-Configuration.png Views:	1 Size:	6.7 KB ID:	22104


    8 - به منظور تست اینکه Nginx از پروتکل HTTP/2.0 استفاده میکند، دستور زیر را اجرا کنید. وجود داشتن h2 در قسمت "Protocols advertised by server" تایید میکند که Nginx به نحوی کانفیگ شده که از پروتکل HTTP/2.0 استفاده کند. تمامی مرورگرهای به روز و مدرن باید به صورت پیش فرض از این پروتکل پشتیبانی کنند.
    کد PHP:
    openssl s_client -connect localhost:443 -nextprotoneg '' 
    Click image for larger version  Name:	Test-Nginx-HTTP-2-Protocol.png Views:	1 Size:	68.7 KB ID:	22105



    مرحله سوم : نصب مفسر PHP 7

    انجین ایکس برای ایجاد کردن محتوای داینامیک وب با کمک مدیریت پروسه fastcgi (که از طریق نصب پکیج باینری php-fpm از repository های رسمی Ubuntu فراهم میآید) میتواند به همراه مفسر زبان پردازش داینامیک PHP استفاده شود.


    9 - جهت نصب PHP7.0 و پکیج های اضافه که به PHP امکان برقراری ارتباط با وب سرور Nginx را میدهد دستورات زیر را روی کنسول سرورتان اجرا کنید.
    کد PHP:
    sudo apt install php7.0 php7.0-fpm 
    Click image for larger version  Name:	Install-PHP-7-PHP-FPM-for-Ngin.png Views:	1 Size:	13.0 KB ID:	22106


    10 - زمانیکه مفسر PHP7.0 با موفقیت بر روی ماشین تان نصب شد، سرویس php7.0-fpm را توسط دستورات زیر start و چک کنید.
    کد PHP:
    sudo systemctl start php7.0-fpm
    sudo systemctl status php7.0-fpm 
    Click image for larger version  Name:	Start-Verify-php-fpm-Service.png Views:	1 Size:	14.5 KB ID:	22107


    11 - فایل کانفیگ موجود در Nginx به صورت پیش فرض به طوری کانفیگ شده که از مدیر پروسه PHP FastCGI به منظور مدیریت محتوای داینامیک استفاده کند.

    بلاک Server که انجین ایکس را قادر به استفاده از مفسر PHP میسازد در بخش زیر قابل مشاهده است در نتیجه شما نیاز به هیچ گونه اعمال تغییرات بیشتری را روی فایل Nginx نخواهید داشت.
    کد PHP:
    location ~ \.php$ {
    include 
    snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;


    12 - برای تست ارتباط وب سرور انجین ایکس با مدیر پروسه PHP FastCGI یک فایل PHP به نام info.php ایجاد میکنیم و فایل کانفیگ را با اجرا کردن دستور زیر تست میکنیم و تنظیمات را با مشاهده این فایل config و با استفاده از آدرس http://IP_or domain/info.php بررسی میکنیم.
    کد PHP:
    $ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'
    Click image for larger version  Name:	Verify-PHP-FastCGI-Info.png Views:	1 Size:	35.0 KB ID:	22108


    همچنین میتوانید از advertise (منتشر) شدن پروتکل HTTP/2.0 توسط web server مطمئن شوید که برای این منظور باید خط $_SERVER[‘SERVER_PROTOCOL’] را روی بلاک PHP Variables همانند آنچه که در تصویر زیر مشاهده میکنید بررسی کنید.

    Click image for larger version  Name:	Check-HTTP-2.0-Protocol-Info.png Views:	1 Size:	29.7 KB ID:	22109


    13 - به منظور نصب ماژول های اضافی PHP7.0 دستور apt search php7.0 را اجرا کنید تا یک ماژول PHP را پیدا و نصب کنید.

    همچنین سعی کنید ماژول های PHP زیر که برای کار با وردپرس یا CMS های دیگر بسیار مفید است را نصب کنید.
    کد PHP:
    sudo apt install php7.0-mcrypt php7.0-mbstring 
    Click image for larger version  Name:	Install-PHP-7-Modules.png Views:	1 Size:	10.3 KB ID:	22110


    14 - برای ریجیستر کردن ماژول های اضافی PHP تنها کافیست سرویس php-fpm را با اجرای دستور زیر restart کنید.
    کد PHP:
    sudo systemctl restart php7.0-fpm.service 


    مرحله چهارم : نصب دیتابیس MariaDB

    15 - در نهایت به منظور کامل کردن نصب LEMP خود به منظور مدیریت و ذخیره کردن دیتای وب سایت به دیتابیس MariaDB نیاز داریم.


    سیستم مدیریت دیتابیس MariaDB را با اجرای دستور زیر نصب کنید و سرویس PHP-FPM را به منظور استفاده از ماژول MySQL برای دسترسی به دیتابیس restart کنید.
    کد PHP:
    sudo apt install mariadb-server mariadb-client php7.0-mysql
    sudo systemctl restart php7.0-fpm.service 
    Click image for larger version  Name:	Install-MariaDB-for-Nginx.png Views:	1 Size:	19.2 KB ID:	22111


    16 - برای امن کردن MariaDB اسکریپت امنیتی موجود در ریپازیتوری اوبونتو را اجرا کنید، که به صورت پکیج باینری میباشد و از شما میخواهد که پسورد root را تعریف کنید و کاربران ناشناخته را حذف نمایید و همچنین login از راه دوره را به یوزر root را غیر فعال و دیتابیس Test را حذف نمایید.

    اسکریپت را با استفاده از دستور زیر اجرا کنید و به تمام سوالات با yes پاسخ دهید. میتوانید از تصویر زیر به عنوان یک راهنما استفاده کنید.
    کد PHP:
    sudo mysql_secure_installation 
    Click image for larger version  Name:	Secure-MariaDB-Installation-for-Nginx.png Views:	1 Size:	37.0 KB ID:	22112


    17 - برای کانفیگ کردن MariaDB به نحوی که کاربران معمولی هم بدون دسترسی sudo بتوانند به دیتابیس دسترسی داشته باشند باید به محیط کامندی MySQL با یوزر root و با اجرای دستورات زیر وارد شوید.
    کد PHP:
    sudo mysql
    MariaDB
    > use mysql;
    MariaDBupdate user set plugin='' where User='root';
    MariaDBflush privileges;
    MariaDB> exit 
    Click image for larger version  Name:	MariaDB-User-Permissions.png Views:	1 Size:	21.3 KB ID:	22113


    در نهایت به دیتابیس MariaDB لاگین کنید و یک دستور mysql را بدون داشتن پرمیژن root و تنها با استفاده از دستور زیر اجرا نمایید.
    کد PHP:
    mysql -u root --'show databases' 
    Click image for larger version  Name:	Check-MariaDB-Databases.png Views:	1 Size:	5.2 KB ID:	22114


    همچنین توصیه میشود مطالعه کنید.

    نحوه رمزگذاری دایرکتوری ها در وب سرور Nginx

    راه اندازی Virtual Hosting بر پایه Name و IP در وب سرور انجین ایکس

    آموزش نصب SSL (تنظیمات https به همراه گواهینامه SSL) در وب سرور nginx روی RHEL/CentOS 7/6

    آموزش امن کردن و بالا بردن سرعت وب سرور Nginx


    اکنون شما روی سیستم تان یک LEMP کانفیگ شده بر روی سرور اوبونتو 16.10 و 16.04 دارید که به شما امکان ایجاد اپلیکیشن های تحت وب پیچیده داینامیک را میدهد که میتواند با دیتابیس تعامل داشته باشد.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-08-2021, 11:12 PM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

    #2
    با سلام و احترام
    همه قسمتهای نصب بخوبی جلو رفت ولی درشماره 9: نصب PHP متوقف شد

    کد خطای زیر را میدهد:

    apt-get install php7.0 php7.0-fpm $
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Note, selecting 'php7.0-remctl' for regex 'php7.0'
    Note, selecting 'php7.0-common' for regex 'php7.0'
    Note, selecting 'php-remctl' instead of 'php7.0-remctl'
    E: Unable to locate package php7.0-fpm
    E: Couldn't find any package by glob 'php7.0-fpm'
    E: Couldn't find any package by regex 'php7.0-fpm'

    جلوتر از این نرفت.
    بجای apt-get install php7.0 php7.0-fpm $ از دستور زیر استفاده کردم:
    apt-get install php7.2 php7.2-fpm $
    و نصب شد
    فقط ip را در مرورگر میزنم صفحه خطا میاد.
    همچنین info.php
    This site can’t be reached

    The webpage at https://127.0.0.53/ might be temporarily down or it may have moved permanently to a new web address.

    ERR_SPDY_PROTOCOL_ERROR
    لطفا راهنمایی کنید
    با تشکر
    آخرین ویرایش توسط Sokote Zaman; در تاریخ/ساعت 05-19-2018, 07:30 PM.

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X