آموزش ساده و سریع کانفیگ سرور اوبونتو با انجین‌اکس

173 روز پیش

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

بازم چون معرفی مناسب پیدا نکردم میتونید فعلا متن انگلیسی زیر رو بخونید ولی آموزش فارسی هست:)

Nginx can be deployed to serve dynamic HTTP content on the network using FastCGI, SCGI handlers for scripts, WSGI application servers or Phusion Passenger modules, and it can serve as a software load balancer.

Nginx was written with an explicit goal of outperforming the Apache web server. Out of the box, serving static files, Nginx uses dramatically less memory than Apache, and can handle roughly four times more requests per second. This performance boost comes at a cost of decreased flexibility, such as the ability to override systemwide access settings on a per-file basis (Apache accomplishes this with an .htaccess file, while Nginx has no such feature built in).Formerly, adding third party modules to nginx required recompiling the application from source with the modules statically linked. This was partially overcome in version 1.9.11 with the addition of dynamic module loading. However, the modules still must be compiled at the same time as nginx, and not all modules are compatible with this system; those require the older static linking process.

 

نصب انجین‌اکس

در صورت تمایل به استفاده از آخرین نسخه پایدار انجین‌اکس کد زیر رو بزنید و بعد از مشاهده پیام اینتر را فشار دهید تا مخزن آن اضافه گردد و بعد دستور آپدیت رو بزنید.

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update

با زدن دستور زیر انجین‌اکس رو روی سرور نصب کنید و در پیامی که میاد y رو برای تایید بزنید.

sudo apt-get install nginx

کمی صبر کنید تا خیلی راحت انجین‌اکس نصب بشه:) ایشالا فرصت بشه در مورد تنظیماتش هم مطلبی منتشر کنم.

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

sudo nginx -t
sudo service nginx reload
sudo service nginx restart

آموزش تکمیلی به همراه توضیحات تفضیلی نصب انجین‌اکس رو در دیجیتال اوشن بخونید.

نصب مای‌اس‌کیوال

برای نصب مای‌اس‌کیوال دستور زیر رو بزنید و بعد از مشاهده لیست موردنیاز برای نصب y رو بزنید تا نصب شروع بشه

sudo apt-get install mysql-server mysql-client

احتمالا یه صفحه صورتی رنگ میبینید! رمز موردنظر برای یوزر روت مای‌اس‌کیوال رو وارد کنید. احتمالا دوبار ازتون رمز رو میخواد:/

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

sudo mysql_secure_installation
  • با زدن این دستور اول از همه رمزی که تو مرحله قبل واسه یوزر روت مای‌اس‌کیوال تنظیم کردید رو ازتون میخواد که اون رو وارد کنید.
  • در اولین سوال میخواد که کمکتون کنه که رمزهای قوی‌تری انتخاب کنید که ازش تشکر کرده و هر دکمه‌ای بجز y رو بزنید!
  • الان احتمالا ازتون میخواد که رمز روتی که تازه هم ست کردین رو تغییر بدین که بازم ازش تشکر کرده و هر دکمه‌ای بجز y رو بزنید!
  • از این به بعد تو پرسش‌های بعدی همه رو که احتمالا چهار پرسش هستند y بزنید تا ایمن‌سازی مناسب صورت بگیره.

به‌همین راحتی نصب و ایمن‌سازی مای‌اس‌کیوال هم به اتمام رسید.

نصب پی‌اچ‌پی

رسیدیم سر اصل مطلب:) نصب پی‌اچ‌پی از همه آسون‌تره ولی خب از اونجایی که ما مثل همیشه آخرین نسخه رو میپسندیم میتونید کد زیر رو بزنید تا مخزن مربوط به آخرین نسخه‌های پی‌اچ‌پی رو به سرور اضافه کنید و بعدش هم آپدیت کنید

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

برای نصب پی‌اچ‌پی نسخه ۷.۱ و مخلفات کد زیر رو میتونید اجرا کنید و y رو بزنید. اگر در آینده نسخه جدیدتری اومد عدد ۷.۱ رو به اون نسخه جدیدتر تغییر بدید.

sudo apt-get install php7.1-fpm php7.1-cli php7.1-common php7.1-mbstring php7.1-gd php7.1-intl php7.1-xml php7.1-mysql php7.1-mcrypt php7.1-zip php7.1-curl php7.1-bz2 php7.1-soap php7.1-xmlrpc

به همین راحتی پی‌اچ‌پی‌ رو هم نصب کردید ولی مساله اینه که انجین‌اکس هنوز نمیدونه که باید فایل‌های پی‌اچ‌پی رو هم هندل کنه و برای این باید تنظیمات پیش‌فرضش رو تغییر بدیم.

تنظیم انجین‌اکس برای هندل پی‌اچ‌پی

دستور زیر رو بزنید تا تنظیمات موردنیاز برای دامنه‌هاتون واسه انجین‌اکس رو توی ادیتور کنسول وارد کرده و ذخیره کنید.

sudo nano /etc/nginx/sites-available/php.conf

حالا مقادیر زیر روی توی این فایل بریزید. تا همه تنظیمات رو یکجا داشته باشیم و هر وقت لازم داشتیم از اونها تو دامنه‌های متفاوت استفاده کنیم.

index index.php index.html index.nginx-debian.html;

location / {
 # First attempt to serve request as file, then
 # as directory, then fall back to displaying a 404.
 # try_files $uri $uri/ =404;
 try_files $uri $uri/ /index.php$is_args$args;
}

# pass PHP scripts to FastCGI server
location ~ \.php$ {
 include snippets/fastcgi-php.conf;
 fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}

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

location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ { expires max; log_not_found off;}

الان کافیه که این فایل رو در تنظیمات پیش‌فرض وارد کنیم. دستور زیر رو بزنید تا تنظیمات پیش فرض در ادیتور کنسول باز بشه.

sudo nano /etc/nginx/sites-available/default

کافیه خطوط تکراری در تنظیمات رو با اضافه کردن علامت شارپ # در ابتدای خط کامنت کنید و در انتهای بخش server خط زیر رو وارد کنید.

include sites-available/php.conf;

دقت کنید که پس از اضافه کردن خط بالا که با رنگ سبز مشخص شده فایل تنظیمات پیش‌فرض بجز کامنت‌ها باید شامل خطوط زیر باشد. هم‌چنین توجه داشته باشید که نام سرور و آدرس رو میتونید توی این فایل تنظیم کنید.

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	server_name ـ;
	root /var/www/html;

	# include php config 
	include sites-available/php.conf; 
}

برای هندل کردن دامنه جدید هم کافیه همین مقدار بالا رو توی یه فایل جدید ریخته و بخش آبی رنگ مربوط به default_server رو حذف کرده و در بخش server_name نام دامنه یا آی‌پی رو بنویسید تا هندل بشه. به‌عنوان نمونه برای تجارک باید تقریبا مشابه عبارت زیر رو در یه فایل جدید مثلا به نام tejarak ذخیره کنید. یادتون باشه بخش‌های قرمز رنگ در این آموزش باید به مقدار مناسب در سرور شما تغییر پیدا کنن!

server {
	listen 80;
	listen [::]:80;

	# handle addresses in below code
	server_name tejarak.com *.tejarak.com;
	root /home/evazzadeh/tejarak;

	# include php config
	include sites-available/php.conf;
}

بعد از انجام و برای هندل کردن دامنه تجارک لازمه که کد زیر رو هم اجرا کنید تا یه شورت‌کات از فایل بالا در پوشه سایت‌های فعال ساخته بشه و بعد از یه ریلود بوم!

sudo ln -s /etc/nginx/sites-available/tejarak /etc/nginx/sites-enabled/

نکات تکمیلی در مورد فایل کانفیگ در آینده اضافه خواهند شد.

تنظیم کاربر اجراکننده دستورات پی‌اچ‌پی

احتمالا نیاز خواهید داشت که کاربر اجرا کننده پی‌اچ‌پی رو تغییر بدید. کاری که در آپاچی با تغییر فایل envars به آسونی قابل انجام بود اینجا یکمی بیشتر کار داره. برای مشاهده کاربری که درحال اجرای فایل‌های پی‌اچ‌پی هست میتونید یه فایل پی‌اچ‌پی ساخته و کد زیر رو توی اون قرار بدید تا ببینید که کاربر پیش‌فرض شما احیانا www-data خواهد بود که ما قصد تغییر اون رو داریم.

<?php var_dump(exec('whoami')); var_dump($_SERVER);

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

adduser evazzadeh

حالا که کاربر جدیدی دارین برای تغییر کاربر قبلی، دستور زیر رو بزنید تا تنظیمات پی‌اچ‌پی توی ادیتور کنسول باز بشه

nano /etc/php/7.1/fpm/pool.d/www.conf

توی این فایل در چهارخط زیر باید مقدار www-data‌ رو به‌نام کاربر موردنظرتون تغییر بدید.

user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data

برای اعمال تغییرات نیاز به ریستارت کردن سرویس پی‌اچ‌پی دارین ولی قبلش نیازه که دستور زیر رو هم بزنید تا یه تغییر کوچیک توی تنظیمات انجین‌اکس هم داشته باشیم.

nano /etc/nginx/nginx.conf

توی فایل کانفیگ انجین‌اکس همون خط اول مقدار www-data رو هم به نام کاربر جدید تغییر بدید. میتونید با یک اسپیس نام گروه رو هم بصورت متفاوت تنظیم کنید.

user www-data

با انجام عملیات‌های بالا الان تمام تنظیمات موردنیاز برای تغییر کاربر به کاربر جدید انجام شده و لازمه که پی‌اچ‌پی و انجین‌اکس رو توسط دستورات زیر ریستارت کنید.

service php7.1-fpm restart
service nginx restart

خب الان انجین‌اکس فایل‌های پی‌اچ‌پی رو میفهمه و اون‌هارو اجرا کنه. برای تست کاربر هم میتونید همون فایل پی‌اچ‌پی تستی که ساختید رو دوباره چک کنید. فرآیند نصب پی‌اچ‌پی هم اینجا به اتمام رسید.

نصب پی‌اچ‌پی مای‌ادمین

کد زیر رو زده و y رو وارد کنید تا نصب پی‌اچ‌پی مای‌ادمین شروع بشه.

sudo apt-get install phpmyadmin
  • تو صفحه صورتی رنگی که پیش رو دارید از شما خواسته شده که وب‌سرور رو انتخاب کنید که انجین‌اکس بینشون نیست! تب رو بزنید تا فوکوس به دکمه ok منتقل بشه و بعد اینتر رو بزنید.
  • در سوال بعدی گزینه yes رو انتخاب کنید.
  • سپس پسورد مای‌اس‌کیوال که چند مرحله قبل‌تر تنظیم کرده بودید وارد کنید و دوباره تاییدیه اون‌رو هم وارد کنید.

با اتمام این نصب پی‌اچ‌پی مای‌ادمین به پایان رسید ولی برای دسترسی به اون لازمه که کد زیر رو بزنید. این کد یه شورتکات از پی‌اچ‌پی مای‌ادمین توی پوشه پیش‌فرض میسازه. یادتون باشه در صورت تغییر پوشه پیش‌فرض لازمه که شورتکات رو هم در آدرس جدید بسازید!

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

با زدن آدرس زیر در مرورگر میتونید به پی‌اچ‌پی مای‌ادمین دسترسی داشته باشید. آدرس سایت یا آی‌پی خودتون رو جایگزین کنید!

http://example.com/phpmyadmin

هم‌چنین برای یک ایمن‌سازی ساده میتونید آدرس دسترسی از طریق وب رو با کد زیر تغییر بدید.

sudo mv /var/www/html/phpmyadmin /var/www/html/salamphpmyadmin

 

راهنمای تکمیلی و کامل‌تر و تفضیلی بخش‌هایی از این آموزش رو در دیجیتال‌اوشن بخونید.

موارد مناسب برای نصب!

علاوه بر احتیاجات اصلی ذکر شده در بالا احتمالا برای کانفیک یه سرور کامل نیاز به برخی از برنامه‌های زیر هم دارید که با دستور زیر میتونید اون‌ها رو نصب کنید

sudo apt-get install htop git

 

امیدوارم این آموزش بتونه کمکی بهتون برای راه‌اندازی یه سرور تر و تازه کنه. البته قطعا برای امور حرفه‌ای تر لازمه مهارت خودتون رو توی درک مفاهیم شبکه افزایش بدید ولی همیشه باید از یجایی شروع کرد. اینجا جای خوبیه:)

  1. حاج آق رضا پاسخ دادن

    داداش باید میگفتی دایکرتوری / رو از روی دیفالت های تنظیمات ان جین ایکس پاک کنن یا کامنت کنند بعد دوباره تعریف می کردی توی فایل php
    این طوری که شما گفتی ارور داریم که nginx: [emerg] duplicate location “/” in /etc/nginx/sites-available/php.conf:3