
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 آشنا شدید و آموختید که چگونه این وبسرور متنباز و رایگان را کانفیگ نمایید. امیدواریم که مفید واقع شود.