بلاگ/نصب Nginx روی CentOS 8
به‌روز شده

نصب Nginx روی CentOS 8

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

1398/11/052960 بازدید
نصب Nginx روی CentOS 8
Nginx (بخوانید انجین ایکس) یک وب‌سرور رایگان و متن‌باز با کارایی بالا است. بعلاوه، Nginx به عنوان reverse proxy server و load balancer نیز ایفای نقش می‌کند. ما در این مطلب به آموزش نصب Nginx روی CentOS 8 و کانفیگ آن به منظور میزبانی از یک وب‌سایت استاتیک می‌پردازیم.
مراحل نصب Nginx روی CentOS 8:
1) با استفاده از فرمان ssh به سرور ابری یا فیزیکی خودتان لاگین نمایید:
php
ssh user@cloud-server-ip
2) پکیج Nginx را جستجو نمایید:
php
sudo yum search nginx
3) با استفاده از فرمان yum پکیج Nginx را روی CentOS 8 نصب نمایید:
php
sudo yum updatesudo yum install nginx
4) تنظیمات فایروال را بروز رسانی کرده و پورت‌های تی‌سی‌پی 80 و 443 را باز نمایید:
php
sudo firewall-cmd --permanent --zone=public --add-service=https --add-service=httpsudo firewall-cmd --reload
با ما همراه باشید تا تمامی مراحل را با جزئیات بیشتری مورد بررسی قرار دهیم.
گام اول - بروز رسانی سیستم:
بروز نگه داشتن سیستم، کرنل و اپلیکیشن‌های نصب شده یک کار حیاتی و بسیار مهم بوده و بر عهده ادمین سیستم است. با استفاده از فرامین زیر سیستم را بروز رسانی کنید:
php
sudo yum updateinfosudo yum update## Reboot the system if a new kernel update was installed ##sudo reboot
گام دوم - پیدا کردن پکیج 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 modulesnginx-mod-stream.x86_64 : Nginx stream modulescollectd-nginx.x86_64 : Nginx plugin for collectdnginx-mod-http-perl.x86_64 : Nginx HTTP perl modulenginx-mod-http-xslt-filter.x86_64 : Nginx XSLT modulenginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter modulenginx-filesystem.noarch : The basic directory layout for the Nginx serverpcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webservernginx-all-modules.noarch : A meta package that installs all available Nginx modules
با اجرای فرمان زیر می‌توانید اطلاعاتی درباره ورژن Nginx که در حال نصب آن هستید، کسب نمایید:
php
sudo yum info nginx
خروجی نمونه:
php
Last metadata expiration check: 1:11:11 ago on Sun Nov 24 17:24:15 2019.Installed PackagesName         : nginxEpoch        : 1Version      : 1.14.1Release      : 9.module_el8.0.0+184+e34fea82Arch         : x86_64Size         : 1.7 MSource       : nginx-1.14.1-9.module_el8.0.0+184+e34fea82.src.rpmRepo         : @SystemFrom repo    : AppStreamSummary      : A high performance web server and reverse proxy serverURL          : http://nginx.org/License      : BSDDescription  : 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.
گام سوم - نصب Nginx:
برای نصب آخرین نسخه پایدار وب‌سرور Nginx فرمان زیر را اجرا نمایید :
php
$ sudo yum install nginx
نصب Nginx روی CentOS 8
گام چهارم - فعال‌سازی سرور Nginx
سرویس Nginx را با فرمان systemctl فعال کنید. بدین ترتیب این سرویس در هنگام بوت‌شدن سرور آغاز و اجرا می‌گردد:
php
sudo systemctl enable nginx
نمونه خروجی:
php
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service ? /usr/lib/systemd/system/nginx.service.
شروع سرویس با اجرای فرمان زیر:
php
sudo systemctl start nginx
فرامین 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 ##
استارت، استاپ و ریستارت 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
باز کردن پورت‌های 80 و 443
گام ششم - تست
با استفاده از فرمان ss از باز بودن پورت‌های 80 و 443 اطمینان حاصل نمایید:
php
sudo ss -tulpn
خروجی نمونه (به خطوط 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))
اگر آدرس ip سرور خودتان را نمی‌دانید از فرمان زیر استفاده کنید:
php
ip a
خروجی نمونه:
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 forever6: 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
با توجه به خروجی فوق آدرس ip سرور ما 10.21.136.134 است. یک مرورگر باز کنید و URL (نام دامنه) یا آدرس IP را وارد نمایید:
php
http://10.147.164.2
تست Nginx با استفاده از فرمان curl نیز می‌توان اطلاعات مشابهی را بدست آورد:
php
curl -I http://10.147.164.2curl http://10.147.164.2
تست 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
# 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 {        }    }}
برای مشاهده مستندات سرور 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 .
برای کپی کردن از لوکال دسکتاپ روی ریموت سرور می‌توانید از فرمان rsync یا scp و یا sftp استفاده نمایید:
php
rsync ~/projects/static/www.cyberciti.biz/prod/* your-username@10.147.164.2:/usr/share/nginx/html/

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