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

2089 روز پیش

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

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

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 universe

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

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 apt-get install php7.2-fpm php7.2-cli php7.2-common php7.2-mbstring php7.2-gd php7.2-intl php7.2-xml php7.2-mysql php7.2-zip php7.2-curl php7.2-bz2 php7.2-soap php7.2-xmlrpc

برای نصب نسخه ۷.۳ که همین چند روز پیش اومده می‌تونید بجای دوتا دستور بالا دستور زیر رو بزنید.

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

برای نصب نسخه ۷.۴ می‌تونید بجای دستورات بالا دستور زیر رو بزنید.

sudo apt install php7.4-fpm php7.4-cli php7.4-common php7.4-mbstring php7.4-gd php7.4-intl php7.4-xml php7.4-mysql php7.4-zip php7.4-curl php7.4-bz2 php7.4-soap php7.4-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.4-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.4/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.4-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 mysql

حالا کافیه کوئری زیر رو بزنید تا دسترسی به یوزر روت با پسورد باز بشه. به جای سلام رمز خودتون رو بنویسید.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Salam';

 

حذف آپاچی

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

sudo service apache2 stop
sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
sudo apt-get autoremove
sudo apt remove apache2.*
whereis apache2
sudo rm -rf /etc/apache2

تنظیم منطقه زمانی روی سرور

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

dpkg-reconfigure tzdata

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

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

sudo apt-get install htop git ncdu

sudo apt-get install php-mbstring php7.4-mbstring php-gettext php-curl

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

  1. حاج آق رضا

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

    • جواد عوض زاده

      این نکته رو که تو متن اشاره کردم و تو مثال بعدی هم فایل نهایی رو برای مشاهده گذاشتم!

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

  2. این نوشته در مطلبی با عنوان آموزش ساده و سریع کانفیگ سرور اوبونتو با انجین‌اکس | تجارت هاست|میزبانی هاست-سرور مجازی-ثبت دامنه منتشر شده است

  3. عباس خداخواه

    از راهنمائی های بی دریغ شما ممنونم . و از اینکه وقت گذاشتید تا دیگران را راهنمائی کنید برای شما آرزوی موفقیت دارم. ارادتمند خداخواه.

  4. رضا

    از اینکه دستورات مربوط به نصب پی اچ پی ۷.۲ رو گذاشتید ممنون.
    عالی شد

  5. رضا

    نصب mysql توی نسخه ۱۸٫۰۴ ubuntu یکمی فرق کرده. در بین مراحل نصب پسورد روت رو نمی پرسه و باید با یه روش دیگه اون رو تنظیم کرد.
    اگه وقت کردید آموزش اون رو هم قرار بدید محشر میشه.
    تشکر

    • جواد عوض زاده

      نحوه نصب نسخه ۷.۳ که همین چند روز پیش اومده گذاشته شد. بخش مای‌اس‌کیو‌ال هم بروز شد.

  6. علی

    واقعاااااا دلسوزانه اموزش دادید که توی هیچ دانشگاهی به این قشنگی اموزش نمیدن.

  7. جواد عوض زاده

    برای دسترسی به امکانات بیشتر در انجین اکس می‌تونید کد زیر رو اجرا کنید.
    apt install nginx-extras

  8. جواد عوض زاده

    تنظیمات مورد نیاز توی فایل php.ini هم به نام زیر هستند
    sudo nano /etc/php/7.4/fpm/php.ini

    memory_limit = 256M
    upload_max_filesize = 100M
    max_execution_time = 360

  9. محمد جواد قاسمی

    نصب phpmyadmin با composer بهتره.
    اخرین نسخه رو نصب می کنید. ( نسخه ای که توی مخزن اوبونتو هست چند وقتیه همیشه warning داره و برای حل کردنش باید دستی تو کانفیگش برد )
    https://docs.phpmyadmin.net/en/latest/setup.html

    composer create-project phpmyadmin/phpmyadmin .

  10. جواد ادیب

    برای نصب آخرین نسخه phpmyadmin و همخوانی با sql8
    sudo add-apt-repository ppa:phpmyadmin/ppa

  11. جواد ادیب

    برای نصب اکستنشن کار با تصاویر
    sudo apt install php-imagick

  12. جواد ادیب

    برای نصب زیپ و آنزیپ
    sudo apt install zip unzip

دیدگاه بسته شده است.