Nginx (بخوانید انجین ایکس) یک وب‌سرور رایگان و متن‌باز با کارایی بالا است. بعلاوه، Nginx به عنوان reverse proxy server و load balancer نیز ایفای نقش می‌کند. ما در این مطلب به آموزش نصب Nginx روی CentOS 8 و کانفیگ آن به منظور میزبانی از یک وب‌سایت استاتیک می‌پردازیم.


مراحل نصب Nginx روی CentOS 8:

1) با استفاده از فرمان ssh به سرور ابری یا فیزیکی خودتان لاگین نمایید:

[php]ssh user@cloud-server-ip[/php]

2) پکیج Nginx را جستجو نمایید:

[php]sudo yum search nginx[/php]

3) با استفاده از فرمان yum پکیج Nginx را روی CentOS 8 نصب نمایید:

[php]sudo yum update
sudo yum install nginx[/php]

4) تنظیمات فایروال را بروز رسانی کرده و پورت‌های تی‌سی‌پی 80 و 443 را باز نمایید:

[php]sudo firewall-cmd –permanent –zone=public –add-service=https –add-service=http
sudo firewall-cmd –reload[/php]

با ما همراه باشید تا تمامی مراحل را با جزئیات بیشتری مورد بررسی قرار دهیم.


گام اول – بروز رسانی سیستم:

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

[php]sudo yum updateinfo
sudo yum update
## Reboot the system if a new kernel update was installed ##
sudo reboot[/php]

گام دوم – پیدا کردن پکیج Nginx:

با اجرای فرامین زیر از در دسترس بودن وب‌سرور Nginx در توزیع لینوکس‌ خودتان، اطلاع حاصل کنید:

[php]
Last metadata expiration check: 1:09:02 ago on Sun Nov 24 17:24:15 2019.
============================== Name Exactly Matched: nginx ==============================
nginx.x86_64 : A high performance web server and reverse proxy server
============================= Name & Summary Matched: nginx =============================
nginx-mod-mail.x86_64 : Nginx mail modules
nginx-mod-stream.x86_64 : Nginx stream modules
collectd-nginx.x86_64 : Nginx plugin for collectd
nginx-mod-http-perl.x86_64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.x86_64 : Nginx XSLT module
nginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter module
nginx-filesystem.noarch : The basic directory layout for the Nginx server
pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
[/php]

با اجرای فرمان زیر می‌توانید اطلاعاتی درباره ورژن Nginx که در حال نصب آن هستید، کسب نمایید:

[php]sudo yum info nginx[/php]

خروجی نمونه:

[php]
Last metadata expiration check: 1:11:11 ago on Sun Nov 24 17:24:15 2019.
Installed Packages
Name : nginx
Epoch : 1
Version : 1.14.1
Release : 9.module_el8.0.0+184+e34fea82
Arch : x86_64
Size : 1.7 M
Source : nginx-1.14.1-9.module_el8.0.0+184+e34fea82.src.rpm
Repo : @System
From repo : AppStream
Summary : A high performance web server and reverse proxy server
URL : http://nginx.org/
License : BSD
Description : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
: IMAP protocols, with a strong focus on high concurrency, performance and
: low memory usage.[/php]

گام سوم – نصب Nginx:

برای نصب آخرین نسخه پایدار وب‌سرور Nginx فرمان زیر را اجرا نمایید [nixmd name=”yum”]:

[php]$ sudo yum install nginx[/php]

نصب Nginx روی CentOS 8

گام چهارم – فعال‌سازی سرور Nginx

سرویس Nginx را با فرمان systemctl فعال کنید. بدین ترتیب این سرویس در هنگام بوت‌شدن سرور آغاز و اجرا می‌گردد:

[php]sudo systemctl enable nginx[/php]

نمونه خروجی:

[php]Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service ? /usr/lib/systemd/system/nginx.service.[/php]

شروع سرویس با اجرای فرمان زیر:

[php]sudo systemctl start nginx[/php]

فرامین start/stop/restart سرور Nginx

می‌توانید بر اساس نیازتان هر کدام از فرامین زیر را برای start/stop/restart کردن سرور Nginx اجرا نمایید:

[php]sudo systemctl start nginx ## &lt– start the server ##
sudo systemctl stop nginx ## &lt– stop the server ##
sudo systemctl restart nginx ## &lt– restart the server ##
sudo systemctl reload nginx ## &lt– reload the server ##
sudo systemctl status nginx ## &lt– get status of the server ##[/php]

استارت، استاپ و ریستارت Nginx

گام پنجم – باز کردن و فعال‌سازی پورت‌های 80 و 443 با استفاده از فرمان firewall-cmd

[php]$ sudo firewall-cmd –permanent –zone=public –add-service=http –add-service=https
$ sudo firewall-cmd –reload
$ sudo firewall-cmd –list-services –zone=public[/php]

باز کردن پورت‌های 80 و 443

گام ششم – تست

با استفاده از فرمان ss از باز بودن پورت‌های 80 و 443 اطمینان حاصل نمایید:

[php]sudo ss -tulpn[/php]

خروجی نمونه (به خطوط 80: و 443: توجه نمایید):

[php]
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 10.147.164.2%eth0:68 0.0.0.0:* users:(("NetworkManager",pid=50,fd=15))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1316,fd=6),("nginx",pid=1315,fd=6),("nginx",pid=1314,fd=6))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=1316,fd=7),("nginx",pid=1315,fd=7),("nginx",pid=1314,fd=7))
tcp LISTEN 0 128 [::]:443 [::]:* users:(("nginx",pid=1316,fd=7),("nginx",pid=1315,fd=7),("nginx",pid=1314,fd=7))
[/php]

اگر آدرس ip سرور خودتان را نمی‌دانید از فرمان زیر استفاده کنید:

[php]ip a[/php]

خروجی نمونه:

[php]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:6b:8d:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.147.164.2/24 brd 10.147.164.255 scope global dynamic noprefixroute eth0
valid_lft 3067sec preferred_lft 3067sec
inet6 fe80::216:3eff:fe6b:8df7/64 scope link
valid_lft forever preferred_lft forever[/php]

با توجه به خروجی فوق آدرس ip سرور ما 10.21.136.134 است. یک مرورگر باز کنید و URL (نام دامنه) یا آدرس IP را وارد نمایید:

[php]http://10.147.164.2[/php]

تست Nginx

با استفاده از فرمان curl نیز می‌توان اطلاعات مشابهی را بدست آورد:

[php]curl -I http://10.147.164.2
curl http://10.147.164.2[/php]

تست Nginx با استفاده از فرمان curl

گام هفتم – کانفیگ سرور Nginx
  • CentOS 8 Nginx Config directory – /etc/nginx
  • Master/Global config file – /etc/nginx/nginx.conf
  • TCP ports opened by Nginx – 80 (HTTP), 443 (HTTPS)
  • Document root directory – /usr/share/nginx/html

از یک ویرایشگر متن برای ویرایش فایل‌ها استفاده کنید. با استفاده از فرمان vi/nano نیز اینکار امکان پذیر است:

[php]$ sudo vi /etc/nginx/nginx.conf[/php]

خروجی نمونه:

[php]# For more information on configuration, see:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format main ‘$remote_addr – $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"’;

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}[/php]

برای مشاهده مستندات سرور Nginx به این لینک مراجعه نمایید.

شما می‌توانید تصاویر، js، html و css های خودتان را در آدرس /usr/share/nginx/html/ کپی یا آپلود نمایید:

[php]cd /usr/share/nginx/html/
sudo cp /backups/cyberciti.biz/*.html .
sudo cp /backups/cyberciti.biz/*.css .[/php]

برای کپی کردن از لوکال دسکتاپ روی ریموت سرور می‌توانید از فرمان rsync یا scp و یا sftp استفاده نمایید:

[php]rsync ~/projects/static/www.cyberciti.biz/prod/* your-username@10.147.164.2:/usr/share/nginx/html/[/php]


جمع بندی:

شما در این مطلب با نحوه نصب Nginx روی CentOS 8 آشنا شدید و آموختید که چگونه این وب‌سرور متن‌باز و رایگان را کانفیگ نمایید. امیدواریم که مفید واقع شود.