سرویس Nginx مخفف ( Engine-X ) یکی از پرکاربردترین وب سرورها در جهآن است که به دلیل سرعت بالا، مقیاسپذیری و قابلیتهای بارگذاری توزیع شده، مورد توجه بسیاری از توسعهدهندگآن و مدیرآن سیستم قرار گرفته است. طبق آمارهای Netcraft، Nginx بیش از ۳۰٪ از کل وبسایتهای جهآن را پشتیبانی میکند.
وردپرس نیز محبوبترین سیستم مدیریت محتوا (CMS) است که بیش از ۴۰٪از تمامی وبسایتها از آن استفاده میکنند. با استفاده از وردپرس، کاربران میتوانند بدون نیاز به دآنش فنی بالا، وبسایتهای حرفهای و متنوعی ایجاد کنند.
در این مقاله از توزیع Ubuntu استفاده شده است.
در تمامی مراحل به دلیل نیاز به دسترسی بالا از کاربری root استفاده شده است.
apt update && apt upgrade -y
apt install nginx –y
چون وردپرس با php نوشته شده است. نیاز داریم که پکیج php رو نصب کنیم.
برای اینکه بتوآنیم اخرین نسخه از phpرا به راحتی از مخازن Ubuntu دریافت کنیم از مخزن ondrej/php استفاده می کنیم. که در آن پیکیج های بروز php قرار گرفته است. ما نیاز داریم که آن را به سیستم اضافه بکنیم.
apt install software-properties-common
این بسته شامل ابزارهایی است که به شما امکآن میدهند مخازن نرمافزاری را به سیستم خود اضافه کنید و آنها را مدیریت کنید.
با این دستور به راحتی میتوآنید از مخازن دیگری اقدام به دآنلود و نصب پیکیج ها بکنید.
add-apt-repository ppa:ondrej/php
این دستور یک مخزن PPA (Personal Package Archive) جدید به نام ondrej/php را به سیستم شما اضافه میکند. این پیکیج از مشهورترین مخزن برای بسته های php می باشد. و نسخه های بروز را ارائه می دهند که ممکن هست در مخازن رسمی Ubuntu این پیکیج های بروز وجود نداشته باشند.
apt update
این دستور مجدد می زنیم تا سیستم از وجود بسته های جدید مطلع بشود و نسخه های جدید را پیدا کند.
apt install php-fpm
این ماژول برای مدیریت فرایند های php هست. که بهتر از روش های سنتی می باشد. این دستور به nginx کمک میکند تا بجای اجرای مستقیم php درخواست ها را php-fpm بفرستد تا php آن را پردازش کند.
ماژول Php-fpm بهینه تر و مقیاس پذیر تر هست و برای سرور هایی با بار سنگین مناسب هست.
apt install php-mysql
این ماژولی برای ارتباط php با پایگاه داده می باشد.نصب این ماژول ضروری هست چرا که اطلاعات خود شامل: پستها، کاربران، تنظیمات و... را در پایگاه داده ذخیره می کند.
مرحله چهارم: نصب MySQL
apt install mysql-server -y
بسته ی mysql-server شامل نرم افزار سرور MySQL است که برای ایجاد مدیریت و استفاده از پایگاه داده ها استفاده میشود. این سرور اصلی است که به کاربران و برنامه ها اجازه می دهد داده ها را در یک سیستم مدیریت پایگاه داده رابطه ای ذخیره و بازیابی کنند. . وظیفه این سرور میزبان اصلی پایگاه داده ها است و کار مدیریت و ارائه دسترسی به داده ها را بر عهده دارد. وردپرس برای ذخیره سازی اطلاعات خود مآنند پستها تنظیمات و کاربران نیاز به MySQL یا MariaDB دارد. . کاربرد نصب این بسته به معنی راه اندازی سرور پایگاه داده ای است که اپلیکیشنهای مختلف از جمله وردپرس میتوانند به آن متصل شوند و عملیاتهای مختلفی روی داده ها آنجام دهند.
سرور mysql server پایگاه داده است و php mysql پل ارتباطی بین PHP و MySQL برای دسترسی و استفاده از آن پایگاه داده می باشد.
بعد از نصب باید آن را ایمن سازی کنیم.
mysql_secure_installation
دستور mysql_secure_installation برای ایمن سازی تنظیمات اولیه MySQL استفاده میشود. وقتی MySQL را نصب میکنیم تنظیمات پیش فرض آن کاملاً ایمن نیستند بنابراین این ابزار به ما کمک میکند تا امنیت سرور MySQL را بهبود دهیم.
مراحل امن سازی به صورت زیر می باشد.
VALIDATE PASSWORD COMPONENT
این مولفه به امکان می دهد که تا هنگام ایجاد یا تغییر رمز عبور، قدرت و امنیت رمز عبور را بررسی کند و اطمینآن حاصل کند که رمز عبور بهآندازه کافی قوی است. اگر ما y|Y را آنتخاب کنیم از ما 3 سطح را
می پرسد.
سطح Low بررسی ساده رمزهای عبور میتوانند بسیار ساده باشند.
سطح Medium سطح متوسط طول رمز عبور و ترکیب نمادها بررسی می شود.
سطح Strong سطح بالا رمز عبور باید بسیار قوی باشد ترکیبی از حروف بزرگ ،کوچک عدد و نماد و حداقل طول).
تغییر پسوورد root :
ممکن است از شما خواسته شود که رمز عبور کاربر root MySQL را تنظیم یا تغییر دهید این کار برای اطمینآن از امنیت دسترسی به پایگاه داده مهم است. این کاربر فقط در پایگاه داده MySQL وجود دارد و بالاترین سطح دسترسی به تمام جداول و پایگاههای داده را دارد. اما دسترسی او محدود به خود MySQL است و با سیستمعامل ارتباط مستقیم ندارد. بنابراین، تغییر رمز عبور root در MySQL فقط رمز عبور مدیریت پایگاه داده MySQL را تغییر میدهد و تأثیری بر حساب کاربری root سیستم لینوکس ندارد.
حذف کاربران ناشناس MySQL :
به طور پیش فرض یک کاربر ناشناس ایجاد میکند. این کاربر میتوآند بدون رمز عبور وارد سرور شود. برای امنیت بیشتر پیشنهاد میشود این کاربران حذف شوند.
غیر فعال کردن ورود از راه دور به کاربر mysql root
با این گزینه دسترسی از راه دور به کاربر root محدود میشود تا فقط بتوآنید از طریق خود سرور محلی به root دسترسی داشته باشید این کار امنیت سرور را افزایش میدهد.
حذف ديتابيس تست MySQL
به طور پیش فرض یک دیتابیس آزمایشی به نام (test ) ایجاد میکند این دیتابیس برای تست و توسعه استفاده میشود و همه کاربران میتوانند به آن دسترسی داشته باشند اما اگر این دیتابیس حذف نشود، ممکن است در محیط واقعی یک نقطه ضعف امنیتی باشد.
بارگذاری مجدد جداول امتیازها (Privilege)
بعد از اعمال این تغییرات MySQL باید جدول امتیازها را دوباره بارگذاری کند تا تغییرات امنیتی بلافاصله اعمال شوند. این مرحله آخرین بخش از فرآیند است.
حذف صفحه پیشفرض Nginx:
پس از پیکربندی Nginx برای وبسایت وردپرس، باید فایل پیکربندی پیشفرض Nginx را غیرفعال کنید تا صفحه پیشفرض Nginx نمایش داده نشود. برای این کار، فایل پیشفرض را از دایرکتوری sites-enabled حذف کنید:
rm /etc/nginx/sites-enabled/default
برای وردپرس کانفیگ جدیدی ایجاد میکنیم و موارد زیر را در داخل آن قرار می دهیم
vi /etc/nginx/sites-available/wordpress
سپس درون فایل کانفیگ زیر را قرار می دهیم.
می توانیم ip یا دامنه خودمان را وارد میکنیم من در اینجا ازip private استفاده کرده ام. و پورت http به صورت پیش فرض بر روی 80 تنظیم شده است.
root /var/www/wordpress
دایرکتوری هست که در این مسیر وردپرس معرفی کرده ایم و بعدا در این مسیر وردپرس را نصب خواهیم کرد.
index index.php index.html index.htm;
این خط به ما میگوید که nginx به ترتیب سراغ کدام فایل برود اگر اولی نبود سراغ دومی می رود و الی اخر.
location / {
این خط آغاز یک بلوک پیکربندی برای مسیر اصلی (/) است. یعنی هر درخواست ورودی که به سرور وارد شود و آدرسی خاصی نداشته باشد به این بلوک هدایت میشود.
به عبارتی، اینجا مسیری است که برای صفحه اصلی یا صفحات دیگری که مستقیماً درخواست میشوند، پردازش خواهد شد.
try_files $uri $uri/ /index.php?$args;
ابتدا Nginx بررسی میکند که آیا فایلی به نام $uri وجود دارد یا نه. اگر چنین فایلی وجود داشت، آن صفحه را به کاربر برمیگردآند. اگر فایل موردنظر موجود نبود، بررسی میکند که آیا یک دایرکتوری به نام uri/$ وجود دارد یا خیر. اگر هیچکدام پیدا نشد، درخواست به index.php هدایت میشود تا وردپرس بتوآند آن را مدیریت کند.
و ?$args به این معناست که پارامترهای کوئری نیز به فایل index.php ارسال شود. این قسمت برای پردازش درخواستهای پویا در وردپرس حیاتی است.
به عنوان مثال : site/?search=apple در اینجا، search=apple پارامتر کوئری است.
location ~ \.php$ {
این خط یک بلوک جدید تعریف میکند که درخواستهایی را که به فایلهای با پسوند .php ختم میشوند مدیریت کند.
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
این خط مهم است زیرا Nginx بهطور مستقیم نمیتوآند فایلهای PHP را پردازش کند، بنابراین باید آنها را به یک پردازنده PHP مآنند PHP-FPM بفرستد. اینجا از یک (Unix Socket) استفاده شده است که در مسیر /var/run/php/php8.2-fpm.sock قرار دارد. این مسیر محل قرارگیری PHP-FPM است و باعث ارتباط بین Nginx و PHP-FPM میشود.
ماژول PHP-FPM درخواستهای PHP را پردازش کرده و نتیجه را به Nginx برمیگرداند.
location ~ /\.ht {
deny all;
این بخش به فایلهایی که با .ht شروع میشوند (مانند .htaccess و دیگر فایلهای پیکربندی مخفی) پاسخ میدهد. علامت ~ نشاندهنده استفاده از عبارات منظم Regular Expressions برای تطابق است.
این خط دسترسی به این فایلها را بهطور کامل ممنوع میکند. این اقدام برای امنیت است، زیرا فایلهای پیکربندی مانند .htaccess نباید از طریق وب قابل دسترسی باشند و باید از دسترسی عمومی محافظت شوند.
گام سوم: فعالسازی فایل پیکربندی سایت
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
با دستور بالا یک softlink برای فعال سازی سایت ایجاد می کنیم.
بررسی خطاهای پیکربندی Nginx
nginx –t
وقتی که دستور بالا موفقیت امیز باشد.پیام زیر مشاهده می شود.
nginx: configuration file /etc/nginx/nginx.conf test is successful
در صورتی که موارد درست آنجام شده باشد. اقدام به reload کانفیگ می کنیم.
systemctl reload nginx
نصب و پیکربندی وردپرس
ابتدا داخل محلی می شویم که میخواهیم وردپرس در انجا نصب شود.
cd /var/www
wget https://wordpress.org/latest.tar.gz
پس از دآنلود، باید فایل فشرده را استخراج کنیم
tar -xvzf latest.tar.gz
سپس باید دسترسیهای لازم را برای دایرکتوری وردپرس تنظیم کنیم:
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
مالکیت دایرکتوری وردپرس را به کاربر www-data کاربر پیش فرض Nginx تغییر میدهیم.
و برای دیگرآن هم دسترسی خوآندن و اجرا را فراهم میکنیم.
گام چهارم: ایجاد پایگاه داده برای وردپرس
mysql -u root –p
بخش mysql این بخش دستور خط فرمآن MySQL را فراخوآنی میکند و به سیستم میگوید که میخواهید وارد محیط MySQL شوید.
بخش u root- : این گزینه به MySQL میگوید که به عنوآن کاربر root وارد شوید. u- به معنی user است و بعد از آن نام کاربر MySQL میآید. در اینجا ما از کاربر مدیریتی MySQL به نام root استفاده میکنیم.
بخش p- : این بخش به MySQL میگوید که از شما رمز عبور را بپرسد. وقتی که این گزینه را استفاده میکنید، پس از زدن دستور، از شما خواسته میشود که رمز عبور کاربر root را وارد کنید.
و در قسمت بعدی ما یک user اضافه خواهیم کرد که برای بخش امنیتی می باشد که فقط این user به وردپرس دسترسی خواهد داشت و کار دیگری نمی تواند بکند.
CREATE DATABASE wordpress
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
پیکربندی فایل wp-config.php
در مرحله بعد، باید فایل کآنفیگ وردپرس را ایجاد کنیم تا وردپرس به درستی به دیتابیس متصل شود.
ابتدا فایل نمونه wp-config-sample.php را به wp-config.php تغییر نام دهید:
cd /var/www/wordpress
cp wp-config-sample.php wp-config.php
ویرایش فایل wp-config.php
وارد کانفیگ شده و اطلاعات دیتابیسی که ایجاد کرده ایم را باید اینجا تعریف کنیم .
Vi /var/www/wordpress/wp-config.php
در بخش زیر مواردی که در داخل دیتابیس معرفی کرده ایم را تغییر می دهیم.
define( 'DB_NAME', 'wordpress' ); define( 'DB_USER', 'wpuser' ); define( 'DB_PASSWORD', 'your_password' ); define( 'DB_HOST', 'localhost' ); define( 'DB_CHARSET', 'utf8' ); define( 'DB_COLLATE', '' );
خط 1 : DB_NAME : نام دیتابیس که اسم آن را wordpress گذاشتیم.
خط 2 : DB_USER : نام کاربری دیتابیس که در مرحله ی پیش wpuser قرار دادیم
خط 3 : رمز عبور کاربر wpuser که قبلاً تنظیم کردهاید
خط 4 : localhost است.
بعد از ذخیره سازی فایل وقتی که ip را در داخل مرورگر وارد کنیم و شکل گرافیکی وردپرس برخود خواهیم داشت.
در مرحله ی بعدی کارهای مدیریتی سایت را انجام می دهیم.
اگر تمام تنظیمات درست باشد.
و بعد از قسمت ورود می توآنیم وارد پنل مدیریتی بشویم و در آن جا کارهای وردپرسی خود را آنجام بدهیم.
در نهایت می توانیم موارد دیگر که مربوط به وردپرس می باشد را انجام دهیم
رفع مسئولیت:
این مقاله به عنوان یک راهنمای عمومی برای راهاندازی وردپرس با استفاده از Nginx بر روی اوبونتو تهیه شده است. با اینکه سعی کردهایم که تمامی مراحل بهطور دقیق و کامل توضیح داده شود، ممکن است برخی از جزئیات و تنظیمات خاص به نیازهای خاص شما وابسته باشد. توصیه میشود که قبل از اعمال هرگونه تغییرات، از اطلاعات و پشتیبانی مناسب استفاده کنید