Nginx (یا انجین ایکس، انجین اکس)وب سروری است که به سرعت در دنیای اینترنت در حال رشد می باشد. از مزیت های آن می توان به مدل ماژولار، رایگان، اپن سورس، کارایی بالا، پایداری، تنظیم آسان فایلها، معماری asynchronous (مبتنی بر رویداد) و نیاز کم به منابع برای اجرا اشاره کرد.
پیش نیازها :
برای RHEL 7.0
برای CentOS7.0
تنظیم آدرس ip استاتیک
همچنین توصیه میشود مطالعه کنید.
آموزش نصب وب سرور Nginx (انجین اکس) در اوبونتو 16
آموزش نصب وب سرور Nginx (انجین اکس) در دبیان 9
آموزش نصب وب سرور Nginx (انجین اکس) در ردهت، فدورا و سنت او اس 7
از آنجاییکه مخازن official RHEL/CentOS 7 پکیج binary مربوط به nginx را فراهم نمی کنند، ما در این آموزش شما را در نصب آخرین ورژن استیبل Nginx 1.6.0 بر روی Red Hat Enterprise یا CentOS 7 از طریق source راهنمایی خواهیم کرد. اگر می خواهید از نصب سورس دوری کنید، میتوانید مخزن رسمی nginx رو اضافه کنید و پکیج باینری (ورژن 1.4.x) را به کمک مدیریت پکیج yum نصب کنید.
نصب از طریق کامپایل سورس دارای چندین مزیت است، علاوه بر اینکه شما میتوانید آخرین ورژن موجود را نصب کنید، میتوانید تنظیمات nginx رو با اضافه یا حذف ماژول ها، تغییر مسیر نصب سیستم، یا تنظیمات مهم دیگر تغییر بدهید. به عبارت دیگر شما کنترل کامل روی پروسه نصب خواهید داشت.
گام اول : دانلود، کامپایل (Compile) و نصب nginx
1 : قبل از شروع کامپایل Nginx و پروسه نصب مطمین باشید که کامپایلر C / C++ و PCRE یا (Perl Compatible Regular Expressions)، کتابخانه فشرده سازی Zlib و OpenSSL (اگر میخواهید nginx را به همراه SSL اجرا کنید) را بر روی سیستم نصب دارید که از دستور زیر استفاده می کنید :
2 : حالا به صفحه رسمی Nginx برید و آخرین ورژن استیبل (nginx 1.6.0) موجود را با دستور wget دانلود کنید، آن را extract کنید و وارد پوشه extract شده nginx بشوید و دستورات زیر را به ترتیب وارد کنید :
3 : گام بعدی سفارشی کردن پروسه نصب nginx است. از فایل configure استفاده کنید تا آپشن های تنظیمات و ماژول های مورد نیاز برای پروسه کامپایل تان را ببینید از دستور زیر استفاده کنید و مطمین باشید که در مسیر nginx 1.6.0 هستید :
4 : حالا زمان آن است که nginx را با تنظیمات خاص خودتان کامپایل کنید و ماژول ها را فعال یا غیر فعال کنید. برای این آموزش ماژول ها و تنظیمات زیر استفاده شده اند، اما شما می تونید کامپایل را به هر چیزی که برایتان مناسب تر است تغییر دهید.
–user=nginx –group=nginx :
یوزر و گروه که Nginx تحت آنها اجرا خواهد شد.
–prefix=/etc/nginx :
مسیر قرارگرفتن فایل های کانفیگ سرور (فایل nginx.conf و دیگر فایلهای تنظیمات) - البته پوشه پیشفرض /usr/local/nginx می باشد.
–sbin-path=/usr/sbin/nginx :
محل قرار گرفتن فایل اجرایی Nginx
–conf-path=/etc/nginx/nginx.conf :
این گزینه برای فایل تنظیمات nginx.conf نام تعریف می کند - که میتوانید تغییر بدهید.
–error-log-path=/var/log/nginx/error.log :
تعریف مسیر فایل Log Error (لاگ ارور) در nginx
http-log-path=/var/log/nginx/access.log :
تعریف کردن مسیر فایل access.log
–pid-path=/var/run/nginx.pid :
تعریف نام برای فایل اصلی ID پروسس
–lock-path=/var/run/nginx.lock :
تعریف نام برای فایل nginx lock
–with-http_ssl_module :
امکان ایجاد ماژول HTTPS را فعال می کند - که به صورت پیش فرض ساخته نمی شود و نیاز به کتابخانه OpenSSL دارد.
–with-pcre :
مسیر سورس کتابخانه PCRE را مشخص می کند - که به صورت پیش فرض ساخته نمی شود و نیاز به کتابخانه PCRE دارد.
برای مشاهده لیست ماژول های Nginx به صفحه وب ویکی Nginx مراجعه کنید : http://wiki.nginx.org/Modules.
اگر نیاز به نصب ماژول خاصی روی nginx ندارید میتوانید آن را با استفاده از دستور زیر غیر فعال کنید :
حالا Nginx را با دستور زیر کامپایل کنید، که در واقع تمام تنظیمات و ماژول های بحث شده در بالا را استفاده خواهد کرد. (مطمئن باشید که دستور در یک سطر باقی می ماند.)
5 : بعد از این که پروسس کامپایل تمام ابزار های مورد نیاز سیستم مانند کامپایلر گنو c ,PCRE و کتابخانه OPenSSL را تایید کرد، اون فایل make.conf را می سازد و یه خروجی از خلاصه تمام تنظیمات می دهد.
6 : آخرین گام ساخت باینری ها با استفاده از دستور make است، که نسبت به منابع کامپیوتر شما می تواند زمانی طول بکشد و nginx را بر روی سیستم تان با استفاده از دستور make install نصب کنید.
به این نکته توجه کنید که دستور make install به مجوز root برای اجرای نصب نیازمند است، بنابراین اگر با اکانت root لاگین نشده اید از یوزر با مجوز بالا با sudo استفاده کنید :
گام دوم : تغییر Nginx و ایجاد اسکریپت INIT
7 : بعد از اینکه نصب با موفقیت به اتمام رسید باید یوزر nginx را تعریف کنیم (دایرکتوری etc/nginx/ بعنوان پوشه ی home یوزر در نظر گرفته شود و دسترسی شل برای یوزر لحاظ نشود ) که یوزری است که nginx تحت آن و با استفاده از دستور زیر اجرا خواهد شد :
8 : چون در پروسه کامپایل مشخص کرده ایم که nginx توسط یوزر سیستمی nginx اجرا خواهد شد، فایل nginx.conf را باز کرده و عبارت یوزر را به nginx تغییر دهید.
در اینجا با استفاده از آپشن های زیر، یوزر و همچنین عبارات document root location را قرار دهید.
9 : قبل از شروع nginx اطمینان حاصل کنید که مسیر root داکیومنت وب را ایجاد کرده اید، بعد nginx را با دستور زیر استارت کنید :
اگر می خواهید چک کنید که آیا nginx در حال اجرا است, دستور netstat را اجرا کنید تا ببینید که آیا در حال listen می باشد :
10 : برای چک کردن توسط یک سیستم ریموت، یک رول فایروال اضافه کنید تا ارتباط به بیرون بر روی پورت 80 را باز کند.
مرورگر را باز کنید و آدرس زیر را وارد کنید :
11 : برای مدیریت پروسس nginx از دستورات زیر استفاده کنید.
12 : اگر می خواهید پروسه daemon (دمون) nginx را از طریق اسکریپت init RHEL/CentOS مدیریت کنید، فایل nginx را در مسیر سیستمی /etc/inint.d بسازید، و بعد می تونید از دستورات service یا systemctl برای مدیریت پروسس استفاده کنید :
محتوای زبر را به فایل اضافه کنید :
13 : بعد از ایجاد فایل init nginx مجوز اجرایی را اضافه کنید و دمون (daemon) رو با استفاده از دستور زیر مدیریت کنید :
14. اگر میخواهید از nginx به صورت دایم وهمیشگی استفاده کنید برای استارت شدن ان به هنگام بوت (start at boot time) دستور زیر را اجرا کنید :
تمام شد. حالا شما آخرین ورژن nginx را بر روی سیستم RHEL/CentOS 7 خود نصب دارید.
پیش نیازها :
برای RHEL 7.0
- نصب minimal RHEL 7.0
- فعال کردن subscription ردهت و مخازن در RHEL 7.0
برای CentOS7.0
- نصب mininma CentOS 7.0
تنظیم آدرس ip استاتیک
- تعریف کردن آدرس ip استاتیک بر روی RHEL/CentOS 7.0
همچنین توصیه میشود مطالعه کنید.
آموزش نصب وب سرور Nginx (انجین اکس) در اوبونتو 16
آموزش نصب وب سرور Nginx (انجین اکس) در دبیان 9
آموزش نصب وب سرور Nginx (انجین اکس) در ردهت، فدورا و سنت او اس 7
از آنجاییکه مخازن official RHEL/CentOS 7 پکیج binary مربوط به nginx را فراهم نمی کنند، ما در این آموزش شما را در نصب آخرین ورژن استیبل Nginx 1.6.0 بر روی Red Hat Enterprise یا CentOS 7 از طریق source راهنمایی خواهیم کرد. اگر می خواهید از نصب سورس دوری کنید، میتوانید مخزن رسمی nginx رو اضافه کنید و پکیج باینری (ورژن 1.4.x) را به کمک مدیریت پکیج yum نصب کنید.
نصب از طریق کامپایل سورس دارای چندین مزیت است، علاوه بر اینکه شما میتوانید آخرین ورژن موجود را نصب کنید، میتوانید تنظیمات nginx رو با اضافه یا حذف ماژول ها، تغییر مسیر نصب سیستم، یا تنظیمات مهم دیگر تغییر بدهید. به عبارت دیگر شما کنترل کامل روی پروسه نصب خواهید داشت.
گام اول : دانلود، کامپایل (Compile) و نصب nginx
1 : قبل از شروع کامپایل Nginx و پروسه نصب مطمین باشید که کامپایلر C / C++ و PCRE یا (Perl Compatible Regular Expressions)، کتابخانه فشرده سازی Zlib و OpenSSL (اگر میخواهید nginx را به همراه SSL اجرا کنید) را بر روی سیستم نصب دارید که از دستور زیر استفاده می کنید :
کد:
# yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
2 : حالا به صفحه رسمی Nginx برید و آخرین ورژن استیبل (nginx 1.6.0) موجود را با دستور wget دانلود کنید، آن را extract کنید و وارد پوشه extract شده nginx بشوید و دستورات زیر را به ترتیب وارد کنید :
کد:
# wget http://nginx.org/download/nginx-1.6.0.tar.gz # tar xfz nginx-1.6.0.tar.gz # cd nginx-1.6.0/ # ls -all
3 : گام بعدی سفارشی کردن پروسه نصب nginx است. از فایل configure استفاده کنید تا آپشن های تنظیمات و ماژول های مورد نیاز برای پروسه کامپایل تان را ببینید از دستور زیر استفاده کنید و مطمین باشید که در مسیر nginx 1.6.0 هستید :
کد:
# ./configure --help
4 : حالا زمان آن است که nginx را با تنظیمات خاص خودتان کامپایل کنید و ماژول ها را فعال یا غیر فعال کنید. برای این آموزش ماژول ها و تنظیمات زیر استفاده شده اند، اما شما می تونید کامپایل را به هر چیزی که برایتان مناسب تر است تغییر دهید.
–user=nginx –group=nginx :
یوزر و گروه که Nginx تحت آنها اجرا خواهد شد.
–prefix=/etc/nginx :
مسیر قرارگرفتن فایل های کانفیگ سرور (فایل nginx.conf و دیگر فایلهای تنظیمات) - البته پوشه پیشفرض /usr/local/nginx می باشد.
–sbin-path=/usr/sbin/nginx :
محل قرار گرفتن فایل اجرایی Nginx
–conf-path=/etc/nginx/nginx.conf :
این گزینه برای فایل تنظیمات nginx.conf نام تعریف می کند - که میتوانید تغییر بدهید.
–error-log-path=/var/log/nginx/error.log :
تعریف مسیر فایل Log Error (لاگ ارور) در nginx
http-log-path=/var/log/nginx/access.log :
تعریف کردن مسیر فایل access.log
–pid-path=/var/run/nginx.pid :
تعریف نام برای فایل اصلی ID پروسس
–lock-path=/var/run/nginx.lock :
تعریف نام برای فایل nginx lock
–with-http_ssl_module :
امکان ایجاد ماژول HTTPS را فعال می کند - که به صورت پیش فرض ساخته نمی شود و نیاز به کتابخانه OpenSSL دارد.
–with-pcre :
مسیر سورس کتابخانه PCRE را مشخص می کند - که به صورت پیش فرض ساخته نمی شود و نیاز به کتابخانه PCRE دارد.
برای مشاهده لیست ماژول های Nginx به صفحه وب ویکی Nginx مراجعه کنید : http://wiki.nginx.org/Modules.
اگر نیاز به نصب ماژول خاصی روی nginx ندارید میتوانید آن را با استفاده از دستور زیر غیر فعال کنید :
کد:
--without-module_name
کد:
# ./configure --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre
5 : بعد از این که پروسس کامپایل تمام ابزار های مورد نیاز سیستم مانند کامپایلر گنو c ,PCRE و کتابخانه OPenSSL را تایید کرد، اون فایل make.conf را می سازد و یه خروجی از خلاصه تمام تنظیمات می دهد.
6 : آخرین گام ساخت باینری ها با استفاده از دستور make است، که نسبت به منابع کامپیوتر شما می تواند زمانی طول بکشد و nginx را بر روی سیستم تان با استفاده از دستور make install نصب کنید.
به این نکته توجه کنید که دستور make install به مجوز root برای اجرای نصب نیازمند است، بنابراین اگر با اکانت root لاگین نشده اید از یوزر با مجوز بالا با sudo استفاده کنید :
کد:
# make # make install
گام دوم : تغییر Nginx و ایجاد اسکریپت INIT
7 : بعد از اینکه نصب با موفقیت به اتمام رسید باید یوزر nginx را تعریف کنیم (دایرکتوری etc/nginx/ بعنوان پوشه ی home یوزر در نظر گرفته شود و دسترسی شل برای یوزر لحاظ نشود ) که یوزری است که nginx تحت آن و با استفاده از دستور زیر اجرا خواهد شد :
کد:
# useradd -d /etc/nginx/ -s /sbin/nologin nginx
8 : چون در پروسه کامپایل مشخص کرده ایم که nginx توسط یوزر سیستمی nginx اجرا خواهد شد، فایل nginx.conf را باز کرده و عبارت یوزر را به nginx تغییر دهید.
کد:
# nano /etc/nginx/nginx.conf
کد:
user nginx; location / { root /srv/www/html; autoindex on; index index.html index.htm;
9 : قبل از شروع nginx اطمینان حاصل کنید که مسیر root داکیومنت وب را ایجاد کرده اید، بعد nginx را با دستور زیر استارت کنید :
کد:
# mkdir -p /srv/www/html # /usr/sbin/nginx
کد:
# netstat -tulpn | grep nginx
10 : برای چک کردن توسط یک سیستم ریموت، یک رول فایروال اضافه کنید تا ارتباط به بیرون بر روی پورت 80 را باز کند.
کد:
# firewall-cmd --add-service=http ## For on-fly rule # firewall-cmd --permanent --add-service=http ## For permanent rule # systemctl restart firewalld
کد PHP:
http://server_ip/
11 : برای مدیریت پروسس nginx از دستورات زیر استفاده کنید.
- nginx –V : نمایش تنظیمات و ماژول های nginx
- nginx –h : آپشن راهنما
- Nginx : شروع پروسس nginx
- nginx -s stop : استاپ کردن پروسس nginx
- nginx -s reload : ریلود (reload) کردن پروسس nginx
کد:
# nginx -V
12 : اگر می خواهید پروسه daemon (دمون) nginx را از طریق اسکریپت init RHEL/CentOS مدیریت کنید، فایل nginx را در مسیر سیستمی /etc/inint.d بسازید، و بعد می تونید از دستورات service یا systemctl برای مدیریت پروسس استفاده کنید :
کد:
# nano /etc/init.d/nginx
کد:
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # pidfile: /var/run/nginx.pid # user: nginx # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" lockfile=/var/run/nginx.lock start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
13 : بعد از ایجاد فایل init nginx مجوز اجرایی را اضافه کنید و دمون (daemon) رو با استفاده از دستور زیر مدیریت کنید :
کد:
# chmod +x /etc/init.d/nginx # service nginx start|stop|restart|reload|force_reload|configtest|condrestart # systemctl start|stop|restart nginx
14. اگر میخواهید از nginx به صورت دایم وهمیشگی استفاده کنید برای استارت شدن ان به هنگام بوت (start at boot time) دستور زیر را اجرا کنید :
کد:
# chkconfig nginx on OR # systemctl enable nginx