بایگانی

آموزش نصب وب سرور Nginx بر روی CentOS

 

 
انجین ایکس ( Nginx ) یکی از وب سرور هایی است که به تازگی بسیاری از مدیران سایت های پربازدید را به سوی خود جلب نموده است. انجین ایکس علاوه بر وب سرور، ریورس پراکسی سرور ( reverse proxy server ) و میل پراکسی سرور ( mail proxy server ) نیز می باشد که  بصورت متن باز ( open source ) ارائه شده است و از پروتکل های http , https , SMTP , POP3 و IMAP پشتیبانی می کند. انجین ایکس به گونه ای طراحی شده است که همزمان با پشتیبانی از تعداد کانکشن های بسیار بالا ، عملکرد مناسب و مصرف کم رم را به همراه داشته باشد. این وب سرور محبوب بر روی سیستم عامل های مختلفی از جمله لینوکس ، mac os و سولاریس قابل نصب می باشد. nginx توسط ایگور سیسویو ( igor sysoev ) ساخته شده است، ایگور در سال 1970 در شهر آلماتی قزاقستان به دنیا آمده است و فارغ التحصیل دانشگاه ایالتی مسکو می باشد.

کار ساخت nginx از سال 2002 آغاز گردید و اولین نسخه آن در سال 2004 منتشر گردید. در حال حاضر نزدیک به 12 درصد وب سایت های جهان یعنی چیزی در حدود 22 میلیون وب سایت از nginx به عنوان وب سرور خود استفاده می کنند.

چگونه وب سرور Nginx را بر روی سرور لینوکس خود نصب نمائیم؟

خوشبختانه مدتی است که nginx پکیج باینری آن را از طریق ریپازیتوری nginx ارائه نموده است که این مهم نصب آن را بسیار تسهیل می نماید. در ادامه مراحل نصب آن را مرور می نمائیم:

– مرحل اول: نصب nginx repo

ابتدا دستور زیر را وارد نمائید:

cd /tmp

اگر از نسخه centos 6 استفاده می کنید، دستورات زیر را وارد نمائید:

wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

 – مرحله دوم: نصب وب سرور nginx

پس از نصب ریپو می توانید به کمک دستور زیر nginx را نصب نمائید:

yum install nginx

احتمالا خروجی زیر را بر روی کنسول دریافت خواهید کرد:

Loaded plugins: product-id, rhnplugin, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
nginx                                                    | 1.3 kB     00:00
nginx/primary                                            | 4.8 kB     00:00
nginx                                                                     33/33
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:1.2.6-1.el6.ngx will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package        Arch            Version                    Repository      Size
================================================================================
Installing:
 nginx          x86_64          1.2.6-1.el6.ngx            nginx          361 k
Transaction Summary
================================================================================
Install       1 Package(s)
Total download size: 361 k
Installed size: 835 k
Is this ok [y/N]: y
Downloading Packages:
nginx-1.2.6-1.el6.ngx.x86_64.rpm                         | 361 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : nginx-1.2.6-1.el6.ngx.x86_64                                 1/1
----------------------------------------------------------------------
Thanks for using NGINX!
Check out our community web site:
* <a href="http://nginx.org/en/support.html" rel="nofollow">http://nginx.org/en/support.html</a>
If you have questions about commercial support for NGINX please visit:
* <a href="http://www.nginx.com/support.html" rel="nofollow">http://www.nginx.com/support.html</a>
----------------------------------------------------------------------
Installed products updated.
  Verifying  : nginx-1.2.6-1.el6.ngx.x86_64                                 1/1
Installed:
  nginx.x86_64 0:1.2.6-1.el6.ngx
Complete!

– مرحله سوم : راه اندازی وب سرور

در این مرحله می بایست به کمک دستور زیر وب سرور را فعال نمائید:

chkconfig nginx on

از دستورات زیر نیز می توانید برای متوقف کردن ، فعال کردن مجدد و یا مشاهده وضعیت آن استفاده فرمائید:

service nginx start
service nginx stop
service nginx restart
service nginx status
service nginx reload

– مرحه چهارم : کانفیگ وب سرور

مسیر فایل های کانفیگ انجین ایکس را می توانید در زیر بیابید:

Default configuration directory: /etc/nginx/
Default SSL and vhost config directory: /etc/nginx/conf.d/
Default log file directory: /var/log/nginx/
Default document root directory: /usr/share/nginx/html
Default configuration file: /etc/nginx/nginx.conf
Default server access log file: /var/log/nginx/access.log
Default server access log file: /var/log/nginx/error.log

دستور زیر را برای ویرایش تنظیمات وب سرور وارد نمائید:

nano /etc/nginx/nginx.conf

تعداد پردازشگر را اصلاح نموده و gzip را فعال نمائید:

worker_processes  2;
gzip  on;

فایل را بسته و فایل زیر را باز نمائید:

nano /etc/nginx/conf.d/default.conf

نام سرور ، ای پی و پورت tcp را تنظیم نمائید:

listen       202.54.1.1.1:80;
server_name  www.host97.net;

فایل را بسته و دستور زیر را اجرا نمائید:

service nginx start

به کمک دستورات زیر بررسی کنید که آیا nginx بدرستی عمل می کند یا خیر:

netstat -tulpn | grep :80
ps aux | grep nginx

– مرحله پنجم : تنظیمات فایروال

فایل iptables را باز نمائید:

nano /etc/sysconfig/iptables

برای بازنمودن پورت 80 خط زیر را قبل از LOG انتهایی و خط DROP مربوط به INPUT chain قرار دهید:

-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

دستور زیر را وارد نمائید:

service iptables restart

– نصب وب سرور nginx بر روی دایرکت ادمین ( Directadmin ) :

اگر بر روی سرور خود دایرکت ادمین را نصب نموده اید و می خواهید از وب سرور انجین ایکس استفاده کنید، پس از اتصال به کنسول به مسیر زیر مراجعه نمائید:

cd /usr/local/directadmin/

در اینجا می بایست نسخه 2 custombuild دایرکت ادمین را نصب کنید که البته از آنجایی که نسخه پایدار نمی باشد، ممکن است مشکلاتی را نیز به همراه داشته باشد، در صورت تمایل می توانید مراحل زیر را اجرا نمائید:

mv custombuild custombuild-01
wget http://files.directadmin.com/services/custombuild/2.0/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build

حال با وارد کردن دستور زیر می توانید ویرایش custombuild را ملاحظه نمائید:

nano options.conf

نتیجه باید به شرح زیر باشد:

#Custombuild optionscustombuild=2.0

حال مقدار وب سرور را از آپاچه ( Aapche ) به nginx تغییر دهید:

#HTTP server. Possible values: apache, nginxwebserver=apache

همچنین مقدار php1_mode را به php-fpm تغییر دهید:

php1_mode=php-fpm

حال دستور زیر را وارد نمائید:

./build all -y

در این مرحله احتمال دارد که نیاز به آپدیت لایسنس دایرکت ادمین وجود داشته باشد که در صورت نیاز می توانید از لینک زیر استفاده کنید:

با وارد کردن دستور زیر مراحل به اتمام خواهد رسید:

./build rewrite_confs

توجه :
خطا 502 : اگر خطای “502 Bad Gateway” را دریافت کردید، احتمالا مقدار hostname بدرستی وارد نشده است و می بایست اصلاح گردد.

خطای 503 : اگر با این خطا روبرو شدید، دستور زیر را در سرور وارد نمائید:

chown webapps:nginx /var/www

 

آشنایی با PhpMyAdmin و نسخه های مختلف آن

PhpMyAdmin ( پی اچ پی مای ادمین ) یک نرم افزار Web Based نوشته شده به زبان PHP به منظور فراهم آوردن یک Interface کامل برای مدیریت دیتابیس های MySQL است که از ابتدا به عنوان یک پروژه Open Source توسعه یافته و به ۸۰ زبان زنده دنیا ترجمه شده است. بزرگترین کمپانی های هاستینگ و توسعه دهندگان کنترل پنل هایی نظیر cPanel و Directadmin این نرم افزار را بر روی سرورهای خود نصب نموده و استفاده از آن را به کاربران خود توصیه می کنند.

بوسیله PhpMyAdmin می توان دستورات اصلی MySQL را بر روی دیتابیس های موجود در سرور اجرا نمود. در ادامه برخی از ویژگی های این نرم افزار قدرتمند و محبوب را با هم مرور می کنیم.

  • Create و Drop کردن دیتابیس
  • مدیریت دیتابیس های MySQL ( مای اس کیو ال ) و MariaDB ( ماریا دی بی )
  • Import دیتابیس در فرمت های SQL و CSV یا بصورت فایل فشرده
  • بک آپ گیری از دیتابیس در فرمت های CSV ، SQL ، XML و PDF
  • مدیریت یکپارچه چندین سرور
  • مدیریت کاربران و سطح دسترسی آنها
  • جستجو سراسری در تمامی دیتابیس ها
  • نمایش میزان Connection ها و مصرف CPU/Memory بصورت نمودارهای گرافیکی
  • Cross-Platform بودن و نصب بر روی سیستم عامل های مختلف

آنچه تا کنون درباره آن صحبت کردیم خلاصه ای از ویژگی ها کلی PhpMyAdmin بوده است. در ادامه با ویژگی های این نرم افزار در نسخه های مختلف آشنا می شویم.

نسخه های مختلف PhpMyAdmin و ویژگی های آنها

در بخش قبل به اختصار با برخی از قابلیت های PhpMyAdmin آشنا شدیم. در این قسمت بصورت دقیق تر به تفاوت نسخه های مختلف و Feature های اضافه شده در هر نسخه می پردازیم.

آخرین نسخه منتشر شده توسط تیم پشتیبانی این نرم افزار ، نسخه ۴٫۶ می باشد. در ادامه تفاوت نسخه های مختلف از نسخه ۳٫۰ تا ۴٫۶ آورده شده است.

PhpMyAdmin 3.0
نسخه ۳٫۰ در سال ۲۰۰۸ معرفی شده و برای نصب آن نیاز به PHP 5.2 و MySQL 5+ می باشد. نصب این نسخه به هیچ عنوان پیشنهاد نمی گردد چرا که دارای ضعف های امنیتی متعددی بوده و توسط تیم برنامه نویسی و توسعه پشتیبانی نمی گردد.

PhpMyAdmin 3.5
با آپگرید به نسخه ۳٫۵ قابلیت های زیادی به PhpMyAdmin اضافه خواهد شد. از برخی از این قابلیت ها می توان به استفاده از تکنولوژی AJAX در انجام Task های مختلف ، معرفی Theme جدید و بهبود مانیتورینگ MySQL Server از طریق بخش Status اشاره نمود. استفاده از Synchronization جهت همسان سازی ۲ دیتابیس هم بصورت لوکال و هم بصورت ریموت از دیگر موارد اضافه شده در این نسخه می باشد.

PhpMyAdmin 4.0
حذف Synchronization را می توان یکی از اساسی ترین تغییرات این نسخه به شمار آورد. البته این بدان معنا نیست که امکان همسان سازی ۲ دیتابیس از PhpMyAdmin حذف شده است ، بلکه با عرضه این نسخه می توان ۲ دیتابیس را از طریق Replication با یکدیگر همسان نمود. قابلیتی که در نسخه ۳٫۵ نیز وجود داشت اما بصورت آزمایشی بوده و حالا در نسخه ۴٫۰ تکمیل و به مرحله اجرا رسیده است.

اضافه شده بخش تغییر کلمه عبور در صفحه اصلی و رفع ضعف های امنیتی متعدد از دیگر تغییرات این نسخه می باشد.

از نسخه ۴ به بعد امکان طراحی ساختار دیتابیس بوسیله ابزار گرافیکی Designer فراهم شده است. این Feature بصورت پیش فرض فعال نمی باشد. برای فعال سازی آن می توانید به شکل زیر اقدام کنید :

بسته به تنظیمات سرور خود به این مسیر بروید:

path/to/phpmyadmin/config.inc.php/

حال این تغییرات را اعمال نمایید:

$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'yourpass';

فراموش نکنید حتما به کاربر pma کلمه عبور اختصاص دهید تا افراد دیگر قادر به مشاهده دیزاینر مد نباشند.
حال نام دیتابیس ها را تغییر دهید . همچنین به این نکته توجه داشته باشید که اسم جدول ها به بزرگی و کوچکی حروف حساس هستند.

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';

در انتها باید یک اسکریپت sql که در مسیر زیر یافت می شود را اجرا نمایید:

path/to/phpmyadmin/scripts/create_tables_mysql_4_1_2+.sql/

به سادگی پس از اجرای این sql توسط ابزار import در phpmyadmin جداول و دیتابیس های بالا ایجاد می گردد.

PhpMyAdmin 4.4
برای نصب این ورژن نیاز به PHP 5.3 و MySQL 5.5+ می باشد. بخش Recent و Favorites که به ترتیب نمایش دهنده آخرین دستورات اجرا شده و Favorite Table می باشند در این نسخه به PhpMyAdmin اضافه شده اند. همچنین در این نسخه Designer بصورت پیش فرض فعال می باشد. قابلیت Ajax در هنگام اضافه نمودن Table جدید نیز حذف شده است.

Feature جدیدی نیز با نام Console در این نسخه اضافه شده است (با آیکن ترمینال و نام Console در پایین صفحه سمت چپ قابل مشاهده می باشد) که بوسیله آن می توان دستورات MySQL را بصورت Interactive اجرا نمود. تنها کافیست کوئری خود را در باکس مشخص شده وارد نموده و برای اجرای آن CTRL+ENTER را فشار دهید.

PhpMyAdmin 4.6
آخرین نسخه Stable و قابل نصب نیاز به PHP 5.5 بر روی سرور دارد. پشتیبانی از نسخه ۶ مرورگر IE به اتمام رسیده و یک Directive جدید به نام ssl_verify جهت رفع مشکل گواهی نامه های self-signed معرفی شده است که برای استفاده از آن می بایست نسخه PHP را به ۵٫۶ ارتقا داد. از دیگر تغییرات می توان به قابلیت بررسی Syntax کوئری های وارد شده در Console ، رفع مشکل تغییر کلمه عبور در دیتابیس های MariaDB و امکان پشتیبانی از JSON اشاره نمود.

تب جدیدی نیز با نام Plugins ایجاد شده که نشان دهنده اطلاعات تکمیلی در خصوص پلاگین های نصب شده بر روی MySQL Server می باشد.

نصب PhpMyAdmin

حال که با تفاوت نسخه های مختلف آشنا شدیم به سراغ نصب PhpMyAdmin می رویم. جهت نصب PhpMyAdmin تنها می بایست فایل مورد نظر را از سایت رسمی آن دانلود و برخی تغییرات را در تنظیمات وب سرور اعمال نماییم.

نصب بر روی آپاچی
ابتدا نسخه مورد نظر را از طریق لینک زیر بر روی سرور دانلود می نماییم:

https://www.phpmyadmin.net/downloads

معمولا مدیران سرور PhpMyAdmin را در یکی از مسیرهای زیر نصب می کنند.

usr/share/phpmyadmin/
var/www/html/

مشکلی در خصوص نصب در مسیرهای دیگر وجود ندارد و تنها می بایست پس از Extract نمودن فایل اقدام به اعمال تغییرات در وب سرور نماییم.

tar –xzvf phpMyAdmin-xxx.tar.gz
mv phpMyAdmin-xxx phpmyadmin

مسیر پیش فرض نصب سرویس آپاچی etc/httpd/ می باشد. اما چنانچه فایلی در این مسیر وجود نداشت می توان از طریق دستورات زیر فایل های تنظیمات آپاچی را پیدا نمود.

Redhab-Based Distros
rpm –qc httpd
Debian-Based Distros
dpkg –L httpd

حال با یکی از نرم افزار های ویرایش متن وارد فایل تنظیمات شده و Alias مورد نظر را ایجاد نماییم. این مورد را با یک مثال بر روی سیستم عامل CentOS بررسی می کنیم.

vim /etc/httpd/conf/httpd.conf
Alias /phpmyadmin /var/www/html/phpMyAdmin

همان طور که مشاهده می نمایید در مثال بالا برای پوشه phpMyAdmin قرارگرفته در مسیر var/www/html/ یک Alias تعریف نموده ایم. در آخر نیز سرویس آپاچی را ریستارت می کنیم.

service httpd restart

در نتیجه با وارد نمودن آدرس http://server-ip/phpmyadmin در مرورگر محتویات این پوشه نمایش داده خواهد شد.
نصب در DirectAdmin
تنها تفاوت نصب در دایرکت ادمین با بخش قبلی مسیر فایل تنظیمات وب سرور می باشد. تنظیمات Alias در دایرکت ادمین در فایل دیگری به مسیر زیر ذخیره می گردد.

etc/httpd/conf/extra/httpd-alias.conf/

نسخه پیش فرض PhpMyAdmin نصب شده بوسیله Custombuild 1 برابر با ۴٫۰ می باشد که می توان آن را بصورت Manual ارتقا داد. ضمنا با آپگرید Custombuild به نسخه ۲ و اجرای دستور build update/. آخرین نسخه PhpMyAdmin بر روی سرور نصب خواهد شد.

نصب در cPanel
مسیر قرار گیری phpMyAdmin در سی پنل بصورت زیر می باشد. فایل phpMyAdmin را دانلود و در این مسیر extract می نماییم.

usr/local/cpanel/base/3rdparty/

نسخه پیش فرض نصب شده بر روی cPanel 12 ، نسخه ۴٫۰ به همراه PHP 5.6 می باشد.
نصب بر روی Nginx
نصب بر روی انجینیکس مستلزم انجام بعضی تغییرات بر روی سرور می باشد.بصورت پیش فرض Nginx در مسیر etc/nginx/ نصب می گردد.
ابتدا مسیر اصلی قرار گیری فایل های وبسایت خود را مشخص می نماییم .

vim /etc/nginx/sites-available/default
#To do this we have to define the location for "root" parameter
#Pattern 1
root /var/www/html
#Pattern 2
root /usr/share/nginx/html

همانند تنظیمات آپاچی فایل PhpMyAdmin را دانلود و در یکی از مسیرهای مشخص شده Extract می کنیم.سپس Alias مورد نظر را در فایل default ایجاد می کنیم.

location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}

در آخر نیز سرویس nginx را ریست می کنیم.

service nginx restart

چنانچه در هنگام لود فایل های PHP در Nginx با مشکل عدم نمایش این نوع فایل ها مواجه شده و در عوض باکس دانلود فایل نمایش داده شد ، می بایست تغییرات زیر را در فایل default( و یا فایل تنظیمات nginx برای وبسایت مربوطه) اعمال نماییم(تغییرات زیر بر روی Nginx 1.10 و PHP7.0 انجام شده است)

index index.html index.php index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

تنظیمات کامل Nginx برای اجرای فایل های PHP و اتصال به دیتابیس از طریق PhpMyAdmin به شکل زیر می باشد.

#/etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /usr/share/nginx/html;
# Add index.php to the list if you are using PHP
index index.html index.php index.htm index.nginx-debian.html;
#Leave it alone
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /phpmyadmin {
alias /usr/share/nginx/html/phpmyadmin;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}