Nginx، وب سرور و سرویس http منبعباز پرقدرتی است که با بهکارگیری منابع بسیار محدودی از سیستم، بهویژه پردازنده مرکزی، به حجم زیادی از درخواستهای وب پاسخ میدهد. در مقايسه با سرور Apache که بهگونهای طراحی شده است تا حداکثر انعطافپذیری و قابلیت تنظیمات سفارشی را در اختیار کاربر قرار دهد، هدف اصلی طراحی Nginx بر پایه سرعت استوار شده است. طی گذشت سالها، با افزایش تعداد افزونهها و ماژولهایی که میتوان از آنها برای سفارشیسازی پیکربندیها استفاده کرد، Nginx نیز به طور چشمگيری انعطافپذیر شده است. اگر سه عامل مهم عملکرد، رشد روزافزون منابع آموزشی و سهولت در استفاده را در نظر بگیریم، جای تعجب نخواهد بود که Nginx بهسرعت در حال محبوبیت و جایگزین شدن با سایر وب سرورهای موجود باشد.
آموزش راهاندازی وردپرس در کنار Nginx
وردپرس به عنوان پلتفرمی منبعباز برای سیستمهای مدیریت محتوا و ساخت وبلاگ از محبوبیت بسیار زیادی برخوردار است. طبق آمار غیررسمی، بیش از ده درصد از وبسایتهای موجود در اینترنت از وردپرس استفاده میکنند و شکی نیست که تعداد زیادی از کاربران سطح متوسط برای راهاندازی وبسایت خود به سراغ وردپرس بروند. بنابراین ترکیب این دو سرویسدهنده وب – Nginx و WordPress- میتواند وبسایتی بادوام و در عین حال کممصرف از لحاظ منابع سختافزاری را در اختیار شما قرار دهد. در ادامه، توضیح خواهیم داد که چگونه میتوان بهراحتی در یک سیستم PHP عادی Nginx و وردپرس را برای کار با یکدیگر پیکربندی کرد. با وجود اینکه تنظیمات وردپرس کمی پیچیدهتر است، در مجموع نصب و پیکربندی این دو در یک سیستمعامل لینوکسی در کنار یکدیگر کار سادهای است.
انجام مراحل مقدماتی
برای نصب Nginx و وردپرس در کنار یکدیگر، به نصب سه نرمافزار سیستمی پایه نیاز دارید که شامل WordPress ،Nginx و MySQL میشود. WordPress و Nginx کاملاً واضح و هدف اصلی این مقاله هستند. نصب MySQL نیز به این دلیل که وردپرس برای نگهداری دادههای خود از این پایگاه اطلاعاتی استفاده میکند، ضروری است. برای انجام مراحل نصب در توزیع اوبونتو این فرمان را اجرا کنید:
$ sudo apt-get install mysql-server mysql-client nginx-core |_>php5-cli php5-fpm php5-mysql
این فرمان تعداد زیادی بسته نرمافزاری روی سیستم نصب میکند که برای راهاندازی و اجرای سیستم ضروری هستند. در این مرحله هنوز وردپرس را نصب نکردهاید، بنابراین میتوانید بعداً آن را دستی و با استفاده از کد منبع نصب کنید. این نکته را نیز نباید فراموش کرد که نصب وردپرس از طریق فرمان apt-get با نصب خودکار Apache همراه خواهد بود و با وجود اینکه میتوان این انتخاب را غیرفعال کرد، نصب وردپرس به طور دستی و از طریق مدیریت پکیج مزایای خاص خود را دارد. به عنوان بخشی از فرایند نصب، نیاز خواهید داشت که برای حساب کاربری root (ریشه) MySQL، کلمه عبور انتخاب کنید. این کار برای حفظ امنیت سیستم ضروری است؛ بنابراین حتماً از یک کلمه عبور پیچیده استفاده کنید. بعد از اینکه نصب بستههای یادشده به اتمام رسید، با وارد کردن آدرس سرور خود در مرورگر وب، صفحه پیشفرض nginx را مشاهده خواهید کرد که نشاندهنده نصب درست این وب سرور خواهد بود. قبل از انجام این کار از باز بودن پورت 80 در سرور خود اطمینان حاصل کنید.
نصب وردپرس
نصب وردپرس نسبتاً آسان است، بخش پیچیده کار مربوط به زمانی است که قصد دارید nginx را با FPM (نسخه FastCGI از PHP) ادغام کنید. FPM شیوهای است که از طریق آن nginx میتواند PHP را در یک فرایند جداگانه و مستقل بدون ایجاد مزاحمت برای سایر فرایندهای پردازشی nginx یا کاهش زیاد میزان عملکرد سیستم اجرا کند. معمولاً مکان پیشفرض فایلهای HTML در تنظیمات nginx در مسیر/usr/share/nginx/html قرار دارد. در این دایرکتوری یک فایل index.html وجود دارد که محتوای آن صفحه پیشفرض خوشامدگويی nginx را توليد میکند که در زمان نصب این وب سرور مشاهده کردید.
در حالت کلی، آسانترین روش این است که وردپرس را در دایرکتوری جداگانهای نصب کنید. بنابراین وردپرس را دانلود کرده و آن را در آدرس /usr/share/nginx/wordpress باز کنید. هنگامیکه فایل tar را از حالت فشرده خارج میکنید، این دایرکتوری به طور خودکار ساخته میشود. فرامین انجام این کار در زیر نمایش داده شده است:
$ cd /usr/share/nginx $ wget https://wordpress.org/latest.tar.gz $ tar -zvxf latest.tar.gz
بعد از اینکه وردپرس نصب شد، باید آن را اجرا كنيد؛ اما تا قبل از نصب پایگاه داده MySQL، نمیتوانید این کار را انجام دهید. به همین دلیل یکی از بخشهای ضروری در فرایند نصب وردپرس این است که پایگاه داده شما نصب شده و آماده کار باشد. بنابراین ابتدا باید یک پایگاه داده MySQL ایجاد کنید. برای انجام این کار چندین روش متفاوت وجود دارد، اما بهتر است از برنامه mysqladmin استفاده کنید که گزینههایی مشابه با MySQL client را در اختیار شما قرار میدهد که شامل -u برای مشخص کردن کاربری که قصد استفاده از پایگاه داده را دارد و -p است و برای وارد کردن کلمه عبور به کار میرود. برای ساخت پایگاه داده وردپرس از این فرمان استفاده کنید:
$ mysqladmin create wordpress -u root -p
شایان ذکر است وقتی در این فرمان از کاربر root استفاده میشود، منظور استفاده از سطح کاربری root در سطح سیستم UNIX نیست. در واقع در اینجا درباره کاربر root سرور MySQL صحبت میکنیم که از سطح دسترسی نامحدود و همهجانبه به پایگاه داده برخوردار است. زمانیکه سرور MySQL را نصب میکردید، به کلمه عبور root نیاز داشتید. در زمان استفاده از گزينه -p در فرمان گفتهشده، باید همین کلمه عبور را وارد کنید. بعد از ورود به MySQL با کاربر root، میتوانید بررسی کنید که آیا پایگاه داده بهدرستی ایجاد شده است یا نه. برای این کار از فرمان زیر استفاده کنید:
$ mysql -u root -p
بعد از ورود به MySQL با استفاده از فرمان SHOW DATABASES میتوانید فهرستی از پایگاههای داده موجود را مشاهده کنید. در یک سیستم تازه نصبشده، معمولاً فهرست پایگاههای داده به صورت زیر نمایش داده میشود:
mysql> SHOW DATABASES; +-------------------------------+ | Database | +-------------------------------+ | information_schema | | mysql | | performance_schema | | wordpress | +-------------------------------+ 4 rows in set (0.01 sec)
سه پایگاه داده سیستمی به علاوه پایگاه داده wordpress که ایجاد کرده بودید، در فهرست وجود دارد. حالا از طریق خط فرمان پوسته UNIX به پایگاه داده mysql متصل میشوید:
$ mysql mysql -u root -p
همچنین در صورت تمایل میتوانید با استفاده از فرمان زير از داخل خود کلاینت MySQL به پایگاه داده mysql منتقل شوید:
mysql> \u mysql
در هر دو صورت، هماکنون باید با کاربر root به پایگاه داده mysql متصل شده باشید. در مرحله بعد، یک کاربر wordpress ایجاد خواهید کرد و سپس به این کاربر اجازه میدهید به پایگاه داده wordpress شما متصل شود. در بسیاری از موارد به دلیل سهولت در استفاده، کاربران برای کار با تمام پایگاههای داده موجود در MySQL از حساب کاربری root استفاده میکنند، اما از لحاظ امنیتی انجام چنین کاری توصیه نمیشود و بهتر است برای هر یک از پایگاههای داده خود از حساب کاربری جداگانهای استفاده کنید.
بعد از اینکه فرايند اتصال انجام شد، کاربر جدیدی ایجاد خواهید کرد، کلمه عبور مستقلی به آن اختصاص خواهید داد و سطح دسترسی کاملی به پایگاه داده wordpress برای آن تعریف میکنید:
mysql> CREATE USER wordpress@localhost; mysql> SET PASSWORD FOR wordpress@localhost = PASSWORD('my-wp-pw'); mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost; mysql> FLUSH PRIVILEGES;
فرامین SQL به حروف بزرگ و کوچک حساس نیستند، بنابراین برای وارد کردن آنها نیازی به استفاده از حروف بزرگ نیست. اما بر اساس ضوابط تعیینشده برای کدنویسی زیبا و کمک به تشخیص بهتر بین بخشهای مختلف یک برنامه، بهتر است فرامین را با حروف بزرگ وارد کنید.
بر اساس فرامین مذکور، یک پایگاه داده wordpress و یک کاربر wordpress ایجاد کردهاید که به سرور محلی متصل شده است (wordpress@localhost) و زمانیکه قصد اتصال به MySQL را دارید، باید از نام میزبان (hostname) استفاده کنید.
در پایان، وارد کردن فرمان FLUSH PRIVILEGES ضروری است تا به MySQL اعلام شود حتی بدون راهاندازی مجدد سرور دیتابیس باید امتیازات جدید تعریفشده به کاربر تازه اختصاص داده شود. بعد از اتمام این مراحل، باید بررسی کنید که آیا میتوانید با استفاده از کاربر wordpress به پایگاه داده wordpress متصل شويد یا نه. در خط فرمان UNIX فرمان زير را وارد کنید:
$ mysql wordpress -u wordpress -p
زمانیکه از شما درخواست شد کلمه عبور را وارد کنید، همان کلمهعبوری را که برای کاربر wordpress در نظر گرفته بودید، وارد کنید. بعد از این، پیغام welcome و خط فرمان mysql> را مشاهده خواهید کرد. اگر این اتفاق نیفتاد، یک بار دیگر نام کاربری و کلمه عبوری را که ایجاد کردهاید، با دقت بررسی کنید و مطمئن شوید كه از فرمان FLUSH PRIVILEGES استفاده کرده باشید.
بعد از اینکه مطمئن شدید مراحل انجامگرفته برای پیکربندی سیستم بهدرستی انجام شده است، به کمک فایل wp-config.php پیکربندی مربوط به وردپرس را انجام دهید. این فایل در دایرکتوری/usr/share/nginx/wordpress قرار دارد. زمانی که برای اولین بار وردپرس را نصب میکنید، فایل پیکربندی در آن وجود ندارد و باید آن را از داخل فایل wp-config-sample.php کپی کنید:
$ cp wp-config-sample.php wp-config.php
بعد از انجام این کار، فایل را باز کرده و سه خط DB_USER ،DB_NAME و DB_PASSWORD را پیدا کنید، سپس مقادیر آنها را با موارد واردشده در زمان ساخت پایگاه داده (نام پایگاه داده، نام کاربری و کلمه عبور) جایگزین کنید. به کمک اطلاعات موجود در این سه خط است که وردپرس با پایگاه داده شما ارتباط برقرار میکند.
پیکربندی nginx
در این مرحله باید سطوح دسترسی و جوازهای سیستم UNIX را تعریف کنید. در سیستم UNIX هر پردازشی به عنوان یک کاربر مشخص اجرا میشود و nginx نیز از این قاعده مستثنی نیست. در سیستمهای اوبونتو، هم nginx و هم Apache به عنوان کاربر و گروه www-data اجرا میشوند. استفاده از یک user ID مشخص برای اجرای چنین برنامههایی این امکان را فراهم میکند تا مطمئن شوید سطح دسترسی و مجوزهای لازم بهدرستی صادر شده است. همچنین باید اطمینان حاصل کنید که دایرکتوری WordPress و فایلهای درون آن نیز به مالکیت این کاربر درآمده باشند. بنابراین میتوانید این فرامین را اجرا کنید:
$ cd /usr/share/nginx $ sudo chown -Rv www-data:www-data wordpress
گزینه -R به فرمان chown اعلام میکند که به صورت بازگشتی عمل کند. گزینه -v حالت verbose را فعال میکند، به این معنا که در زمان کار برنامه بازخوردهای اضافی را نیز دریافت میکنید. معمولاً برای دریافت بازخوردهای بیشتر بهتر است از -v استفاده شود.
حال زمان آن رسیده است تا سرور nginx خود را پیکربندی کنید. زمانیکه اين وب سرور را نصب کردید، فایل اصلی پیکربندی در مسیر /etc/nginx/nginx.conf قرار داشت. اما در پیکربندیهای جديد nginx به ازای هر سروری که در مسیر/etc/nginx/sites-enabled/ در حال اجرا است، یک فایل پیکربندی وجود دارد. برای نمونه، فایل /etc/nginx/sites-enabled/default سایت پیشفرض را توصیف میکند.
برای سادهتر شدن مراحل انجام کار، فرض میکنیم تنها یک سایت دارید، بنابراین میتوانید به جای چند فایل پیکربندی تنها فایل default را اصلاح کنید. همانگونه که در nginx مرسوم است، پیکربندی به بخشهای مجزا تقسیمبندی میشود. بخش server نحوه چگونگی دریافت درخواستهای http و رسیدگی به آنها را بر عهده دارد. در این مورد خاص، باید تمام درخواستهای ارسالشده به پورت 80 برای تمام نامهای میزبان را به PHP ارجاع دهید. بخش server نمایشدادهشده در زیر، این وظیفه را بر عهده دارد.
server { listen 80 default_server;; root /usr/share/nginx/wordpress;; index index.php index.html index.htm;; server_name localhost;; location / { try_files $uri $uri/ /index.php?q=$uri&$args;; } error_page 404 /404.html;; error_page 500 502 503 504 /50x.html;; location = /50x.html { root /usr/share/nginx/html;; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$;; fastcgi_pass unix:/var/run/php5-fpm.sock;; fastcgi_index index.php;; include fastcgi_params;; } }
اجازه دهید نگاهی دقیقتر به کدهای آوردهشده در این مقاله بیندازیم. در ابتدا مشخص میکنید که این سرور تحت فرمان پورت 80 است. استفاده از این پورت انتخاب مناسبی است، مگر در شرایطی که به دلیل موجهی قصد انتخاب پورت دیگری را داشته باشید. زمانی که قصد استفاده از پروتکل امنیتی SSL را دارید، باید از پورت 443 استفاده کنید. همچنین به یک بخش server جداگانه نیز نیاز خواهید داشت. بهمنظور سادهتر شدن مراحل کار، از این بخش گذر میکنیم.
همچنین برای مشخص کردن اینکه اگر در آینده، شخص دیگری قصد داشت از نام میزبان دیگری استفاده کند که به آدرس ایپی شما متصل میشود، باید از default_server استفاده کنید، اما این بخش توسط سایر نامهای میزبانی قابل کنترل نیست و تنها سرور فعلی باید از آن استفاده کند. اگر سیستم شما تنها از یک سرور http میزبانی میکند، در پیکربندی باید این مؤلفه تنظیم شده باشد. اما اگر سیستمتان میزبان چند سرور http است، باید تصمیم بگیرید که کدامیک به عنوان پیشفرض معرفی شود.
نشانگر root توصیفکننده دایرکتوری است که فایلهایی که شما میزبان آنها هستید، در آن قرار دارد. بعد از خارج کردن فایل tar از حالت فشرده و قرار دادن آن در آدرس/usr/share/nginx/wordpress برای nginx، مشخص میکنید که این دایرکتوری شامل برنامههای PHP است که قصد اجرای آنها را دارید. در واقع تنها یک برنامه PHP در فايل index.php وظیفه انجام تمام کارها را بر عهده دارد.
در صورتی که نام فایلی را مشخص نکرده باشید، فرمان index تعیین میکند که کدام فایلها و به چه ترتیبی باید خوانده شوند. قبل از به کار بردن سایر فایلهای جایگزین، ابتدا فایل index.php برای استفاده وردپرس در نظر گرفته میشود.
مؤلفه server_name به nginx اعلام میکند که کدام نام(ها) باید توسط این سرور تشخیص داده شود. اگر از default_server استفاده میکنید و تنها یک میزبان مجازی (virtual host) دارید، انتخاب این گزینه اهمیت چندانی ندارد. اما اگر قصد میزبانی از چند سرور را دارید، تعیین کردن یک نام ایده خوبی است.
در مرحله بعد و با استفاده از بخش location، تعیین میکنید که بعد از دریافت یک درخواست به یک آدرس URL مشخص چه کاری باید انجام شود. این مؤلفه به nginx میگوید که در مرحله اول باید سعی کند آدرس URL درخواستی را فراخوانی کرده و نتیجه را بازگرداند، اما اگر این کار میسر نشد، باید سراغ فایل index.php برويد و به جای فراخوانی آدرس درخواستی این فایل را به مرورگر بازدیدکننده بازگردانيد. با این کار به جای بازگرداندن پیغام خطا، فایل index.php به مخاطب نمایش داده میشود.
در مرحله بعد مشخص میکنید که در هنگام مواجه شدن با خطا – به استثنای خطای 404 یا همانfile not found- مثل خطاهای جدیتر سمت سرور (خطاهای 50x) چه باید کرد. Nginx از فایلهای ایستا برای مدیریت این خطاها استفاده میکند. برای اینکه نحوه اطلاعرسانی این خطاها را واضحتر به بازدیدکنندگان ارائه کنید، میتوانید آنها را ویرایش کنید.
در نهایت، Nginx را به FPM متصل خواهید کرد. FPM کدهای PHP را در روند جداگانهای اجرا میکند، اما در پایان با فرایند متمرکزی روبهرو هستید و نیاز نیست که هر بار روند جدیدی را آغاز کنید. اگر متوجه شدید که php5-fpm اجرا نشده است، باید با استفاده از فرمان زير آن را اجرا كنيد:
$ sudo php5-fpm restart
بعد از اینکه تمام مراحل ذکرشده به اتمام رسید، میتوانید nginx را ریاستارت کنید.
$ sudo nginx restart
حال در نوار آدرس مرورگر وب خود آدرس ایپی یا نام دامنه سیستم وردپرس خود را وارد کنید. اگر همهچیز بهدرستی انجام شده باشد، به عنوان بخشی از مراحل نصب وردپرس از شما خواسته میشود تا یک زبان را انتخاب کنید. پس از انجام این کار، همه چیز آماده شروع به کار وبسایت یا وبلاگ است. به صفحه بعد برويد و عنوانی برای سایت خود انتخاب و نام کاربری مدیریت، کلمه عبور و آدرس ایمیل را وارد کنید.
نتیجهگیری
نصب و تنظیمات nginx به همراه WordPress کار بسیار راحتی است. با فرض بر اینکه PHP از قبل نصب شده است و سیستم FPM آن نیز نصب شده و در حال اجرا است، ظرف چند دقیقه میتوانید یک وبلاگ وردپرس را که از امتیازات nginx بهره میبرد، پیادهسازی کنید. با وجود اینکه میتوانید وردپرس را از طریق apt-get یا سایر روشهای مدیریت پکیج مشابه نصب کنید، انجام این کار به این معنا است که بهروزرسانیهای شما متکی به میزان فعال بودن توزیع لینوکسی خواهد بود که از آن استفاده میکنید و بهناچار بهروزرسانیهای مستقل خود وردپرس تا زمان عرضه توسط توزیع لینوکس به تعویق خواهد افتاد. البته افزونهها که بخش مهمی از اکوسیستم وردپرس را شامل میشوند، از این قاعده مستثنی هستند.
منابع برای راهاندازی وردپرس در کنار Nginx
Nginx سرور نسبتاً معروفی است و به همین دلیل منابع و اطلاعات فراوانی درباره آن در دسترس است. یکی از بهترین منابع، سایت رسمی این شرکت است. از طریق این سایت میتوانید اسناد و مطالب آموزشی پرباری را مطالعه کنید که شامل بخش ویکی به همراه پیشنهادها و توصیههای سایر کاربران نیز میشود.
وردپرس نیز به دلیل محبوبیت زیاد بین کاربران به محصول منبعباز معروفی تبدیل شده است. میتوانید از سایت رسمی آن منابع فراوان و ارزشمندی را به دست آورید. علاوه بر این، در محیط وب، اطلاعات، منابع آموزشی، کتابها و وبلاگهای فراوانی درباره وردپرس وجود دارد که میتواند برای نصب و استفاده از قابلیتهای ارزشمند این سیستم مدیریت محتوای معروف به شما کمک کند. در صورت مواجه شدن با مشکلات احتمالی چه در زمان نصب و چه در زمان استفاده، میتوانید با جستوجو در http://wordpress.org یا موتورهای جستوجو، به سرعت راهحل رفع مشکل را پیدا کنید.
گیگ بوی سایت شبکه و محتوی شبکه : دانلود بهترین نرم افزارهای شبکه و آموزش های مختلف از دنیای شبکه با ما همراه باشید.