Nginx (بخوانید انجین ایکس) یک وبسرور رایگان و متنباز با کارایی بالا است. بعلاوه، Nginx به عنوان reverse proxy server و load balancer نیز ایفای نقش میکند. ما در این مطلب به آموزش نصب Nginx روی CentOS 8 و کانفیگ آن به منظور میزبانی از یک وبسایت استاتیک میپردازیم.
مراحل نصب Nginx روی CentOS 8:
1) با استفاده از فرمان ssh به سرور ابری یا فیزیکی خودتان لاگین نمایید:
ssh user@cloud-server-ip
2) پکیج Nginx را جستجو نمایید:
sudo yum search nginx
3) با استفاده از فرمان yum پکیج Nginx را روی CentOS 8 نصب نمایید:
sudo yum update sudo yum install nginx
4) تنظیمات فایروال را بروز رسانی کرده و پورتهای تیسیپی 80 و 443 را باز نمایید:
sudo firewall-cmd --permanent --zone=public --add-service=https --add-service=http sudo firewall-cmd --reload
با ما همراه باشید تا تمامی مراحل را با جزئیات بیشتری مورد بررسی قرار دهیم.
گام اول – بروز رسانی سیستم:
بروز نگه داشتن سیستم، کرنل و اپلیکیشنهای نصب شده یک کار حیاتی و بسیار مهم بوده و بر عهده ادمین سیستم است. با استفاده از فرامین زیر سیستم را بروز رسانی کنید:
sudo yum updateinfo sudo yum update ## Reboot the system if a new kernel update was installed ## sudo reboot
گام دوم – پیدا کردن پکیج Nginx:
با اجرای فرامین زیر از در دسترس بودن وبسرور Nginx در توزیع لینوکس خودتان، اطلاع حاصل کنید:
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
با اجرای فرمان زیر میتوانید اطلاعاتی درباره ورژن Nginx که در حال نصب آن هستید، کسب نمایید:
sudo yum info nginx
خروجی نمونه:
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.
گام سوم – نصب Nginx:
برای نصب آخرین نسخه پایدار وبسرور Nginx فرمان زیر را اجرا نمایید [nixmd name=”yum”]:
$ sudo yum install nginx
گام چهارم – فعالسازی سرور Nginx
سرویس Nginx را با فرمان systemctl فعال کنید. بدین ترتیب این سرویس در هنگام بوتشدن سرور آغاز و اجرا میگردد:
sudo systemctl enable nginx
نمونه خروجی:
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service ? /usr/lib/systemd/system/nginx.service.
شروع سرویس با اجرای فرمان زیر:
sudo systemctl start nginx
فرامین start/stop/restart سرور Nginx
میتوانید بر اساس نیازتان هر کدام از فرامین زیر را برای start/stop/restart کردن سرور Nginx اجرا نمایید:
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 ##
گام پنجم – باز کردن و فعالسازی پورتهای 80 و 443 با استفاده از فرمان firewall-cmd
$ sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-services --zone=public
گام ششم – تست
با استفاده از فرمان ss از باز بودن پورتهای 80 و 443 اطمینان حاصل نمایید:
sudo ss -tulpn
خروجی نمونه (به خطوط 80: و 443: توجه نمایید):
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 سرور خودتان را نمیدانید از فرمان زیر استفاده کنید:
ip a
خروجی نمونه:
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
با توجه به خروجی فوق آدرس ip سرور ما 10.21.136.134 است. یک مرورگر باز کنید و URL (نام دامنه) یا آدرس IP را وارد نمایید:
http://10.147.164.2
با استفاده از فرمان curl نیز میتوان اطلاعات مشابهی را بدست آورد:
curl -I http://10.147.164.2 curl http://10.147.164.2
گام هفتم – کانفیگ سرور 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 نیز اینکار امکان پذیر است:
$ sudo vi /etc/nginx/nginx.conf
خروجی نمونه:
# 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/ کپی یا آپلود نمایید:
cd /usr/share/nginx/html/ sudo cp /backups/cyberciti.biz/*.html . sudo cp /backups/cyberciti.biz/*.css .
برای کپی کردن از لوکال دسکتاپ روی ریموت سرور میتوانید از فرمان rsync یا scp و یا sftp استفاده نمایید:
rsync ~/projects/static/www.cyberciti.biz/prod/* your-username@10.147.164.2:/usr/share/nginx/html/
جمع بندی:
شما در این مطلب با نحوه نصب Nginx روی CentOS 8 آشنا شدید و آموختید که چگونه این وبسرور متنباز و رایگان را کانفیگ نمایید. امیدواریم که مفید واقع شود.