سرور و کلاینت NFS

سرور و کلاینت NFS: نحوه راه‌اندازی روی CentOS 7.2

2.9kviews

در این مقاله چگونگی راه‌اندازی یک سرور NFS و یک کلاینت NFS روی یک CentOS 7.2 آموزش داده می‌شود. از طریق NFS یک کلاینت می‌تواند به صورت Remote روی یک سرور NFS دسترسی (خواندن و نوشتن ) داشته باشد به صورتی‌که فایل‌هایی که بر روی سرور هستند انگار که روی کامپیوتر خود شخص قرار دارند. ما به عنوان پایه از یک سرور CentOS 7.2 minimal برای نصب و راه‌اندازی استفاده می‌کنیم.

۱- نکات مقدماتی‌ سرور و کلاینت NFS:

ما در اینجا از دو سیستم CentOS استفاده می‌کنیم:

• NFS Server: server.example.com, IP address: 192.168.1.100
• NFS Client: client.example.com, IP address: 192.168.1.101

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

yum -y install nano

۲- پیکربندی فایروال:

توصیه می‌کنیم که یک فایروال نصب شده داشته باشید. اگر فایروالی نصب ندارید و می‌خواهید از فایروال استفاده کنید با استفاده از دستور زیر می‌توانید آنرا نصب کنید:

yum -y install firewalld

شروع فایروال و فعال شدن آن در زمان بوت آغاز می‌شود.

systemctl start firewalld.service
systemctl enable firewalld.service

در ادامه بعد از باز کردن SSH و پورت‌های NFS مطمئن شوید که از طریق SSH قادر خواهید بود که به سرور متصل شوید برای انجام اهداف مدیریتی توسط NFS و کلاینهای NFS.

firewall-cmd --permanent --zone=public --add-service=ssh
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --reload

۳- نصب NFS:

سرور:

برای سرور NFS دستور زیر را اجرا می کنیم:

yum -y install nfs-utils

سپس برای فعال‌سازی و شروع سرویس‌های NFS دستورات زیر را اجرا کنید:

systemctl enable nfs-server.service
systemctl start nfs-server.service

کلاینت:

بر روی کلاینت‌ها می‌توانیم NFS را مطابق زیر نصب کنیم (در واقع بر روی همان سرور است):

yum install nfs-utils

۴- مسیرهای خروجی بر روی سرور و کلاینت NFS:

سرور:

ما می‌خواهیم دایرکتوری home/ و var/nfs/ برای کلاینت‌ها در دسترس باشد. بنابراین باید آن‌ها را بر روی سرور Export کنیم.
وقتی که یک کلاینت به یک NFS share دسترسی داشته باشد به طور معمول به عنوان کاربر nfsnobody است. معمولا دایرکتوری home/ متعلق به nfsnobody نیست (و من توصیه می‌کنم که مالکیت آنرا به nfsnobody تغییر ندهید) و چون ما می‌خواهیم در home/ بخوانیم و بنویسیم پس باید دسترسی به NFS share به عنوان root ایجاد شود (اگر home فقط خواندنی باشد نیازی به انجام این کار نیست). دایرکتوری var/nfs/ وجود ندارد، بنابراین ما می‌توانیم آن را ایجاد کنیم و مالکیت آن را به کاربر و nfsnobody تغییر دهیم.

mkdir /var/nfs
chown nfsnobody:nfsnobody /var/nfs
chmod 755 /var/nfs

اکنون ما باید /etc/exports که NFS shares خود را export می‌کنیم را اصلاح کنیم. ما home/ و var/nfs/ را به عنوان NFX share مشخص می‌کنیم و دسترسیhome/ را به عنوان root ایجاد می‌کنیم.

man 5 exports
nano /etc/exports
/home 192.168.1.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.1.101(rw,sync,no_subtree_check)

گزینه no_root_squash باعث می شود که home/ به عنوان ریشه در دسترس باشد.
هر زمان که ما /etc/exports را اصلاح کردیم باید دستور زیر را اجرا کنیم:

exportfs –a

پس از آن،ایجاد تغییرات موثر است.

۵- نصب و راه‌اندازی NFS Shares روی سرور و کلاینت NFS:

کلاینت:

در ابتدا ما یک دایرکتوریهایی را ایجاد می کنیم که می خواهیم NFS shares در آن قرار بگیرند مانند:

mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs

در ادامه می‌توانیم به صورت زیر آن‌ها را مقدار دهیم:

mount 192.168.1.100:/home /mnt/nfs/home
mount 192.168.1.100:/var/nfs /mnt/nfs/var/nfs

اکنون باید دو فایل NFS shares در خروجی داشته باشید:

[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home 28G 1.2G 27G 5% /mnt/nfs/home
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs

و

mount
mount[root@client ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)-

 

۶- تست کردن سرور و کلاینت NFS:

اکنون شما می‌توانید روی کلاینت یک فایل تست در NFS shares ایجاد کنید:

کلاینت:

touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt

اکنون به سرور بروید و بررسی کنید که آیا هر دو فایل تست را می‌توانید مشاهده کنید:

سرور:

ls -l /home/
[root@server1 ~]# ls -l /home/
total 0
drwx------. 2 administrator administrator 59 Jun 21 16:13 administrator
-rw-r--r--. 1 root root 0 Jun 29 13:07 test.txt
ls -l /var/nfs
[root@server1 ~]# ls -l /var/nfs
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun 29 13:07 test.txt

(لطفا به مالکیت‌های مختلف فایل‌های تست توجه داشته باشید. home NFS share/ بعنوان ریشه (root) دیده می‌شود. بنابراین /home/test.txt متعلق به ریشه است. /var/nfs share به عنوان nobody/65534 دیده می‌شود بنابراین /var/nfs/test.txt متعلق به nobody است).

۷- نصب و راه‌اندازی NFS Shares در زمان بوت:

به جای نصب و راه‌اندازی NFS Shares به صورت دستی روی سرور، شما می‌توانید /etc/fstab را تغییر دهید به‌صورتی‌که NFS shares به طور خودکار هنگامی‌که کلاینت بوت می‌شود نصب و راه‌اندازی شود.

کلاینت:

etc/fstab/ را باز کنید و خطوط زیر را دنبال کنید:

nano /etc/fstab
[...]
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0

به جای rw,sync,hard,intr شما می‌توانید گزینه‌های مختلفی استفاده کنید. برای کسب اطلاعات بیشتر در مورد گزینه‌های موجود نگاهی بیندازید به:

man nfs

برای اینکه تست کنید که فایل اصلاح شده /etc/fstab کار می‌کند، کلاینت را reboot کنید:

Reboot

پس از راه‌اندازی مجدد سیستم، شما باید دو NFS shares در خروجی داشته باشید:

df –h
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 1.7G 26G 7% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.6M 910M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 208M 290M 42% /boot
tmpfs 184M 0 184M 0% /run/user/0
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home 28G 1.2G 27G 5% /mnt/nfs/home
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs 28G 1.2G 27G 5% /mnt/nfs/var/nfs

و

mount
[root@client ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930320k,nr_inodes=232580,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/home on /mnt/nfs/home type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)
۱۹۲٫۱۶۸٫۱٫۱۰۰:/var/nfs on /mnt/nfs/var/nfs type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.101,local_lock=none,addr=192.168.1.100)

 

۸- لینک‌های سرور و کلاینت NFS:

Linux NFS: http://nfs.sourceforge.net/
CentOS: http://www.centos.org/

نصب Postfix Dovecot ClamAVRoundcube و Fail2ban روی سرور لینوکس با استفاده از iRedmail

2.9kviews

در هفته‌های گذشته درخواست‌هایی را در خصوص ارائه آموزش نصب و راه‌اندازی سرور ایمیل امن از کاربران و بازدید کنندگان خود دریافت کردیم.

سرورهای مجازی ایمیل لینوکس به همراه وب میل اغلب برای کسب و کارهای کوچک که تمایل دارند خودشان سرور ایمیل داشته باشند و یا افرادی که نیاز به ارسال ایمیل‌های تعداد بالا دارند ممکن است کمی چالش برانگیز باشد.

از آن‌جایی که برای داشتن یک سرور ایمیل بهینه و امن لازم است نرم‌افزارهای متعددی نصب و نگهداری و تنظیم شوند، درصد بروز خطا و یا عملیاتی نشدن این نوع پروژه‌ها خصوصا در بلند مدت زیاد است.

برخی با راه‌اندازی سرورهای ایمیل بدون تنظیمات دقیق و نظارت صحیح باعث از دست رفتن ارتباطات یک سازمان و یک شرکت با شرکای تجاری خود می‌شوند که بعضا ضررهای جبران‌ناپذیری را به چرخه کاری و اعتبار آن‌ها وارد می‌کنند.

حال به اصل موضوع می‌پردازیم.

در این مقاله نحوه نصب کلیه این سرویس‌ها در قالب نرم‌افزار iRedmail را آموزش خواهیم داد، در مقاله بعدی آموزش حرفه‌ای‌تر برای نصب تک‌تک موارد ذیل را بدون نیاز به این نرم‌افزار آموزش خواهیم داد.

بسته‌های مورد نیاز جهت داشتن یک سرور ایمیل امن و آنلاین به شرح ذیل است:

 

نام

توضیحات

Postfix

Mail Transfer Agent (MTA)
عامل انتقال ایمیل

Dovecot

POP3, IMAP and Managesieve server
عامل اتصال کاربری

ApacheNginx

Web server
سرویس دهنده وب

OpenLDAPldapd(8)

LDAP server, used for storing mail accounts – optional
اتصال به Active Directory و نرم‌افزارهای مشابه (اختیاری)

MySQLMariaDBPostgreSQL

SQL server used to store application data. Could be used to store mail accounts too
بانک اطلاعاتی جهت ذخیره‌سازی اطلاعات و حساب‌های کاربری

Amavisd-new

Interface between Postfix and SpamAssassin, ClamAV. it calls SpamAssassin and ClamAV for content-based spam/virus scanning
رابط بین Postfix و SpamAssassin و آنتی ویروس ClamAV برای اسکن محتوای ایمیل‌ها از نظر ویروس و هرزنامه

SpamAssassin

Content-based spam scanner
اسکن محتوای ایمیل‌ها برای شناسایی هرزنامه‌ها

ClamAV

Virus scanner
اسکن ویروس

Roundcube

Webmail )
نرم‌افزار مدیریت ایمیل تحت وب به زبان پی‌اچ‌پی

SOGo Groupware

A groupware which provides calendar (CalDAV), contact (CardDAV), tasks and ActiveSync services
نرم‌افزارهای جانبی جهت پشتیبانی از تقویم، مدیریت مخاطبان، فعالیت‌ها و ActiveSync

Fail2ban

Scans log files and bans IPs that show the malicious signs — too many password failures, seeking for exploits, etc
بررسی فایل‌های log جهت مسدودسازی IP ها و اکانت‌هایی که ورود ناموفق داشته‌اند.

Awstats

Apache and Postfix log analyzer
نرم‌افزار تحلیل و آمار سرویس‌دهنده وب و ارسال‌کننده ایمیل

نصب تمامی این نرم‌افزارها به صورت تکی و اعمال تنظیمات بر روی آن‌ها نیازمند دقت، تجربه و اطلاعات کافی است.
البته نرم‌افزار iRedMail با ارائه یک اسکریپت این مشکل را تا حدی برطرف نموده است.

لازم است یک سرور Minimal که صرفا SSH Server بر روی آن نصب است در اختیار داشته باشید، به منظور عدم وجود اختلال در نصب بهتر است هیچ برنامه‌ای بر روی این سرور نصب نشده باشد.

1- بررسی Hostname

سرور باید حتما دارای یک نام FQDN باشد. جهت مشاهده:

$ hostname -f
mx.zagrio.com

در RHEL/CentOS/SL نسخه ۶ در فایل زیر:

/etc/sysconfig/network
HOSTNAME=mx.zagrio.com

در نسخه ۷ در فایل

/etc/hostname
mx.zagrio.com

و در فایل
/etc/hosts جهت اتصال IP ها به نامهای سرور

127.0.0.1 mx.zagrio.com mx localhost localhost.localdomain

پس از تغییر با دستور زیر بررسی کنید:

$ hostname -f
mx.zagrio.com

2- غیرفعال‌سازی SELinux در Centos/RHEL

فایل /etc/selinux/config را ویرایش و مقدار ذیل را جایگزین کنید:

SELINUX=disabled

و برای غیرفعال‌سازی فوری آن بدون نیاز به ری‌استارت دستور زیر را اجرا کنید:

# setenforce 0

3- فایل نصب در زمان نگارش این مقاله به شرح ذیل است، می‌توانید از صفحه دانلود آخرین نسخه را دانلود کنید و با دستورات ذیل آن را نصب نمائید:

# wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.5-1.tar.bz2
# cd /root/
# tar xjf iRedMail-0.9.5-1.tar.bz2
# cd /root/iRedMail-x.y.z/
# bash iRedMail.sh<br />

 

4- سپس مراحل نصب را مطابق تصاویر زیر به پیش ببرید.

 

 

5- در این قسمت محل ذخیره‌سازی ایمیل‌ها را مشخص کنید.

 

6- در این مرحله سرویس‌دهنده وب را انتخاب نمائید.

 

7- در این قسمت بانک اطلاعاتی مورد نظر خود را انتخاب کنید.

 

8- در این قسمت باید نام دامنه‌ای که مد نظرتان است را وارد نمائید.

 

9- در این قسمت رمز عبور postmaster خود را وارد نمائید. با این ایمیل به عنوان می‌توانید سیستم را مدیریت نمائید.

 

 

10- نرم‌افزارهای جانبی مورد نیاز خود را انتخاب نمائید.

 

11- در این قسمت اطلاعات نهایی را مشاهده و تایید نمائید تا عملیات نصب آغاز شود.

 

12- پس از نصب حتما موارد زیر را بررسی کنید.

13- فایل /root/iRedMail-x.y.z/iRedMail.tips دارای محتوای مورد نیاز شما در خصوص مسیر URL ها، مسیر دسترسی مدیریت، مسیر LOG ها و .. است که بایدحتما توسط شما مطالعه شود.

14- تنظیمات DNS خود را انجام دهید.

15- اکیدا پیشنهاد می‌شود به منظور حفظ امنیت ارتباطات خود یک گواهینامه امنیتی SSL برای خود تهیه و نصب نمائید.

16- مسیر ایمیل تحت وب: https://your_server/mail

17- مسیر پنل مدیریت: httpS://your_server/iredadmin

18- مسیر آمارگیر: httpS://your_server/awstats/awstats.pl?config=web (or ?config=smtp for SMTP traffic log)

SSH: آموزش افزودن فضای اضافی به پارتیشن اصلی در سرورهای لینوکس

SSH: آموزش افزودن فضای اضافی به پارتیشن اصلی در سرورهای لینوکس

8.4kviews

در این مطلب قصد داریم تا در مورد موضوعی به نام آموزش افزودن فضای اضافی به پارتیشن اصلی در سرورهای لینوکس (SSH)، با شما در بلاگ زاگریو صحبت کنیم.

افزایش حجم  پارتیشن ریشه با استفاده از SSH –  LVM- CentOS

اجرای دستور زیر در SSH

Increase Root Partition size – LVM – CentOS

برای افزایش فضای پارتیشن ریشه  ما باید با یک Iive CD/DVD  یا USB image بوت شویم و از آنجا فضای پارتیشن ریشه را افزایش دهیم و نیاز داریم که سیستم در حالت قطع (DOWNTIME) باشد. غیرممکن است که بدون قطع سیستم بتوانیم فضای پارتیشن ریشه را افزایش دهیم.

پارتیشن ریشه  سرور CentOS ما بر روی یک LVM  قرار گرفته که باعث می‌شود تغییر سایز کردن ساده‌تر شود.

چگونه فضای پارتیشن ریشه را با استفاده از SSH افزایش دهیم:

۱- CentOS live CD/DVD یا USB image خود را آماده کنید.

مطمئن شوید که یک Live CD/DVD  یا USB image برای بوت شدن از روی آن دارید. در این‌جا چگونگی استفاده از CentOS 7 DVD ISO image را خواهیم داشت اما در نهایت شما می‌توانید با استفاده از Fedora, Ubuntu و دیگر live CD/DVD imge همین کار را انجام دهید.

۲-  پارتیشن ریشه خود را شناسایی کنید.

مطمئن شوید هنگامی‌که در Live System هستید توانایی شناسایی پارتیشن ریشه را دارید. چون ما در حال افزایش پارتیشن ریشه  LVM  هستیم ساده‌ترین راه بخاطر سپردن سایز است. اگر پارتیشن‌های بسیاری با سایز یکسان دارید شما می‌توانید از ابتدا تا انتها بلوک‌ها را بررسی کنید.
با استفاده از LVM، پارتیشن ریشه را با عنوان /dev/mapper/cenos-root LVM Partition  مشخص کردم که بدین معنی است که این پارتیشن در یک (VG(Volume Group به نام CentOS و یک (LV (Logical Volume  به نام Root قرار دارد.

۳- اضافه کردن دیسک اضافی

با اضافه کردن دیسک اضافی به سیستم می‌توانیم فضای پارتیشن ریشه را افزایش دهیم یا مطمئن که یک فضای قابل استفاده روی دیسک پیکربندی شده موجود داریم. از آن‌جا که از ما از یک سیستم مجازی استفاده می‌کنیم یک فضای ۲GB اضافی، افزوده شده که در سیستم با عنوان /dev/ sdb شناخته می‌شود.

۴-  Reboot کردن سیستم‌تان

Live image را در CD/DVD درایو یا USB port را در سیستم قرار دهید. چون من از یک سیستم مجازی استفاده می‌کنم CentOS 7 ISO را در CD/DVD درایو مجازی قرار می‌دهم. در زمان بوت به “boot menu”  می‌رویم و محیط صحیح را برای بوت شدن انتخاب می‌کنیم.
بعد از این منوی CentOS 7 باید ظاهر شود.

۵-  انتخاب ” Troubleshooting”

هنگامی که CentOS 7  بوت می‌شود گزینه Troubleshooting” را از اولین منو انتخاب کنید.
SSH

۶-  انتخاب ” Rescue a CentOS system”

در منوی دوم گزینه ” Rescue a CentOS system” را انتخاب کنید.

۷-  پرش از نصب تاسیسات لینوکس موجود با SSH

هنگامی که باری پیدا کردن و نصب تأسیسات لینوکس موجود پرسیده می‌شود “Skip” را انتخاب کنید. چون ما در حال افزایش Root Partition خود هستیم این پارتیشن نباید نصب شود.

با زدن Enter به  Bash shell بر می‌گردید.

۸- آماده‌سازی دیسک جدید با SSH

از آنجا که ما ۲GB Disk جدید را به طور کامل به سیستم مجازی اضافه کرده‌ایم ما باید این دیسک را برای استفاده LVM  آماده کنیم. اگر در حال گسترش Root Partition با یک پارتیشن خالی موجود هستید نیز فرآیند مشابه است. فقط  از مشخص کننده پارتیشن (sdaX or sdbX) هنگامی‌که در حال اجرای دستورات هستید استفاده کنید.

پیکربندی آخرین دیسک را با دستور “fdisk -1” د بررسی کنید.

ما باید دیسک اضافی جدید را با ایجاد یک (PV( Physical Volume  جدید و گسترش (VG(Volume Group که در شکل زیر نشان داده می شود، در مرحله ۲ و با fdisk قابل تشخیص است، آماده کنیم. VG گسترش یافته “CentOS”  نامیده می‌شود.

همان‌طور که در Screenshot جدید می‌بینیم VG ما که CentOS نامیده شد حالا ۵۱۱ PE(Physical Extents) خالی دارد. در سطر “Free PE / Size” می‌بینیمکه به این معنی است که ما می‌توانیم root LV خود را با ۵۱۱ PE افزایش دهیم.

۹- افزایش فضای پارتیشن ریشه

بعد از به نتیجه رسیدن موارد بالا ما نیاز داریم که root LV را با دستور “Lvextend” گسترش دهیم. در این مورد من با ۵۱۱ PE (به همان اندازه که فضای آزاد وجود دارد) افزایش می‌دهم و همچنین از پارامتر “-r”  در انتهای دستور استفاده می‌کنم که بطور اتوماتیک فایل سیستم تغییر سایز شود.

نحوه دستوری که استفاده می‌کنم “lvextend -1+511 centos/root –r” است. علامت “+” را قبل از عدد PE فراموش نکنید. اگر فراموش شود داده‌های خود را از دست می‌دهید.

 همان‌طور که در انتهای دستور خروجی می‌بینیم data blocks number و همچنین partition size افزایش یافته است.

۱۰-  ریبوت کردن سیستم با استفاده از SSH

الان زمان برداشتن live image از CD/DVD  یا USB و راه‌اندازی مجدد بوت شدن سیستم موجود است. پس از آن ما می‌توانیم فضای آزاد دیسک پارتیشن ریشه را با SSH بررسی کنیم.

همان‌طور که می‌بینیم ۲GB فضای آزاد قابل استفاده روی root partition داریم که به این معنی است که ما موفق به افزایش سایز پارتیشن ریشه شدیم.

زاگریو

CentOS: آموزش نصب Apache ،MySQL و Fedora

4.7kviews

در مقاله قبل نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی ماریا دی‌بی (آخرین نسخه) و پی‌اچ‌پی (آخرین نسخه) را به همراه ماژول‌های آن روی سیستم عامل‌های CentOS 7 با استفاده از مخزن EPEL و دستور YUM آموزش داده شد .در این مقاله نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی مای اس کیو ال (آخرین نسخه) و پی‌اچ‌پی (آخرین نسخه) را به همراه ماژول‌های آن بر روی سیستم عامل‌های RHEL 6.4/6.3/6.2/6.1/6.0/5.9/5.8/5.6, CentOS 6.4/6.3/6.2/6.1/6.0/5.9/5.8/5.6/6.0/6.5/6.6/6.7  و  Fedora 12,13,14,15,16,17,18,19 با استفاده از مخزن Remi و دستور YUM آموزش خواهیم داد.

Install-LAMP CentOS

آپاچی (Apache)  چیست؟

آپاچی یک وب سرور HTTP متن باز رایگان است که بر روی تمامی توزیع‌های لینوکس و همچنین سیستم عامل ویندوز قابل نصب و اجراست. وب سرور آپاچی توانایی سرویس‌دهی به صفحات برنامه‌نویسی شده (.htm .php .pl .cgi .js) و موارد بسیاری دیگر را دارد. بر اساس آمارهای به دست آمده در اسفند ماه ۱۳۹۱ حدود ۶۵٫۲۴% دامنه‌های وب سایت‌های توسط آپاچی سرویس‌دهی می‌شوند.

ما اس کیو ال (MySQL) چیست؟

MySQL یکی از محبوب‌ترین رابط‌های بانک‌های اطلاعاتی در جهان محسوب می‌شود که بر روی هر نوع سروری قابل اجراست توانایی دادن دسترسی چندین کاربر به چندین بانک اطلاعاتی را داراست. MySQL به همراه Apache اجرا می‌شود.

پی اچ پی (PHP) چیست؟

یک زبان برنامه‌نویسی سرور محور متن باز رایگان است که از بهترین گزینه‌ها جهت گسترش صفحات وب است. این مفسر قابلیت تولید سایت‌های پویا (Dynamic) را داراست.

ماژول‌های PHP

در این آموزش قصد داریم ماژول‌های زیر را نصب کنیم:

MySQL (php-mysql) – A extension for PHP applications that use MySQL databases.
PostgreSQL (php-pgsql) – A extension for PostgreSQL database for PHP.
MongoDB (php-pecl-mongo) – A driver for MongoDB database.
SQLite (php-sqlite) – Extension for SQLite Database Engine.
Memcache (php-pecl-memcache) – Memcached caching daemon.
Memcached (php-pecl-memcached) – Memcached caching daemon.
GD (php-gd) – GD extension for PHP application to serve graphics.
XML (php-xml) – XML Parser for PHP applications.
MBString (php-mbstring) – Mbstring extension is used to handle multi-byte string in PHP applications.
MCrypt (php-mcrypt) – A Mcrypt library for PHP scripts.
APC (php-pecl-apc) – APC module used to optimize and cache PHP code.
CLI (php-cli) – Command-line interface for PHP. PEAR (php-pear) – Application Repository framework for PHP.
PDO (php-pdo) – Database access module for PHP applications.

 

مرحله اول: نصب دایرکتوری مخزن Remi

 

## Install Remi Repository on Fedora 19, 18, 17, 16, 15 ##
rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
## Fedora 19 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-19.rpm
## Fedora 18 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-18.rpm
## Fedora 17 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-17.rpm
## Fedora 16 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-16.rpm
## Fedora 15 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-15.rpm
## Fedora 14 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-14.rpm
## Fedora 13 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-13.rpm
## Fedora 12 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-12.rpm
## Install Remi & Epel Repository on RHEL/CentOS 6.4-6.0 - 32 Bit##
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
## Install Remi & Epel Repository on RHEL/CentOS 6.4-6.0 - 64 Bit ##
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
## Install Remi Repository on RHEL/CentOS 5.9-5.0 - 32 Bit ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
## Install Remi Repository on RHEL/CentOS 5.9-5.0 - 64 Bit ##
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

 

مرحله دوم: نصب Apache ،MySQL و PHP

## Installing on Fedora 12, 13, 14, 15, 16, 17, 18, 19 ##
# yum --enablerepo=remi install httpd mysql mysql-server php php-common
## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install httpd mysql mysql-server php php-common

 

مرحله سوم: نصب ماژول‌های PHP

## Installing on Fedora 12, 13, 14, 15, 16, 17, 18, 19 ##
# yum --enablerepo=remi install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
## Installing on RHEL/CentOS 5-6 ##
# yum --enablerepo=remi,remi-test install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo

 

مرحله چهارم: فعال/غیرفعال کردن سرویس‌های Apache و MySQL

## Enable Apache and MySQL on Run-Levels ##
# chkconfig --levels 235 httpd on
# chkconfig --levels 235 mysqld on
## Apache Commands ##
# /etc/init.d/httpd start
# /etc/init.d/httpd stop
# /etc/init.d/httpd status
## MySQL Commands ##
# /etc/init.d/mysqld start
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld status

مرحله پنجم: کنترل نصب Apache ،MySQL و PHP

۱-    یک فایل با نام phpinfo.php بسازید، موارد زیر را درون آن قرار دهید و در مسیر /var/www/html/phpinfo.php ذخیره کنید.

<php
phpinfo ();
?>

۲-    حالا بوسیله مرورگر خود آدرس http://localhost/phpinfo.php را باز نمائید. خروجی شما مانند صفحه زیر خواهد بود.

CentOS Install LAMP

در صورتی که با مشکلی مواجه شدید در تماس گرفتن با ما تردیدی نکنید.

افزودن درایو جدید به سیستم CentOS و یا سیستم RedHat

1.2kviews

در این مقاله طریقه استفاده از درایو دوم برای فضای اضافی را آموزش می‌دهیم. در ادامه راه‌حلی سریع برای انجام این کار ارائه می‌دهیم.

۱- ابتدا مطمئن شوید که کدام‌یک از درایوها را می‌خواهید فرمت کنید. درایوهای اول، دوم و سوم به ترتیب /dev/sdb/ ،dev/sda و /dev/sdc هستند. دیسک را با دستور fdisk -l  چک کنید.
adding-drive-to-centeos
۲- شما می‌توانید ببینید که /dev/sdb (درایو دوم شما) هیچ پارتیشنی ندارد. ابتدا باید بر روی این درایو پارتیشن ایجاد کنید و بعد فایل سیستم را روی آن بسازید و سپس آنرا نصب کنید. پارتیشن‌ها با استفاده از دستور  fdisk /dev/sdb ایجاد می‌شوند.
adding-drive-to-centeos2
۳- همان‌طور که می‌توان از منوی help دید (با استفاده از دستور”m”) می‌خواهیم یک پارتیشن جدید ایجاد کنیم.  استفاده از پیش‌فرض‌ها، باعث می‌شود که از تمام دیسک استفاده شود. پس از آن‌که پارتیشن ایجاد شد شما می‌توانید از دستور “w” به منظور نوشتن روی دیسک و خروج استفاده کنید.
adding-drive-to-centeos3
۴- اکنون می‌بینید که خروجی دستور  fdisk -1 /dev/sdb پارتیشنی با عنوان /dev/sdb1  را نشان می‌دهد.
adding-drive-to-centeos4
۵- اکنون نیاز داریم که یک سیستم فایل بر روی آن ایجاد کنیم. برای اهداف کلی همیشه از ext3 استفاده می‌کنیم. می‌توانیم از دستور mkfs –t ext3 /dev/sdb1 استفاده کنیم.
adding-drive-to-centeos5
۶- حالا ما یک درایو ثانویه یک پارتیشنه داریم که از فایل سیستمی ext3 استفاده می‌کند. اکنون شما می‌توانید یک راهنمای نصب تنها با استفاده از “/drive 2” ایجاد کنید. با استفاده از دستور mount -t [filesystem] [source] [mount directory] زیر می‌توانید این کار را انجام دهید.
adding-drive-to-centeos6
۷- اکنون از طریق دستور df متوجه می‌شوید که درایو نصب شده است.
adding-drive-to-centeos7
۸- در آخر باید مطمئن شوید که درایو به طور اتوماتیک وقتی که سرور boot و reboot می‌شود، نصب می‌شود. شما نیاز دارید که خط زیر را به فایل /etc/fstab اضافه کنید.
adding-drive-to-centeos8

چگونه هاست‌های مجازی آپاچی را در CentOS7 راه اندازی کنیم؟

2.9kviews

مقدمه:

وب سرور آپاچی یکی از محبوب‌ترین راه‌کار برای سرویس‌دهی به محتوی وب است که بسیار قدرتمند و منعطف است.
آپاچی به عملکرد و اجزای منحصربه‌فردی تجزیه می‌شود که می‌تواند به صورت سفارشی و مستقل پیکربندی شود. واحد پایه‌ای که یک سایت خاص با یک دامنه را توصیف می‌کند یک میزبان مجازی (virtual host) نامیده می‌شود. میزبان مجازی به یک سرور اجازه می‌دهند چندین دامین متعدد یا رابط را با استفاده از تطابق سیستم میزبانی کند. این مورد مربوط می‌شود به افرادی که یک سرور مجازی (VPS) را برای میزبانی بیشتر از یک سایت می‌خواهند. هر دامینی که پیکربندی می‌شود بازدیدکنندگان را به سمت یک دایرکتوری خاص که اطلاعات مربوط به سایت را نگهداری می‌کند، هدایت می‌کند. همان سرور برای سایت‌های دیگر مسئول است. این طرح بدون هیچگونه محدودیت نرم‌افزاری تا زمانی که سرور شما می‌تواند ترافیک تمام سایت‌های مجذوب را رسیدگی کند، قابل ارتقا است.
در این مقاله ما می‌خواهیم آموزش دهیم گه چگونه چند میزبان مجازی آپاچی را بر روی سرور مجازی CentOS7 پیاده‌سازی کنیم. در طی این فرآیند شما یاد می‌گیرید که چگونه برای محتوای متفاوت به بازدیدکنندگان متفاوتی که به دامنه‌های مختلفی را درخواست کرده‌اند، خدمات گوناگونی را ارائه دهید.

پیش‌نیازها:

قبل از اینکه طبق این راهنما شروع کنید چند مرحله وجود دارد که لازم است تکمیل شود.
شما نیاز دارید که به یک سرور CentOS7 یا یک کاربر غیر از root دسترسی داشته باشید که این کاربر امتیازات Sudo(sudo privileges) را داشته باشد. اگر هنوز تنظیماتی را انجام نداده‌اید می‌توانید با استفاده از این لینک این کاربر را ایجاد کنید.
همچنین شما برای پیکربندی میزبان‌های مجازی بر روی سرور نیاز دارید که یک آپاچی نصب کنید. اگر قبلا این کار را انجام نداده‌اید می‌توانید با استفاده از دستور yum آپاچی را طریق مخازن نرم‌افزاری پیش‌فرض CentOS نصب کنید.

 

sudo yum -y install httpd

در ادامه، آپاچی را به عنوان یک سرویس CentOS فعال کنید که بعد از reboot کردن سیستم به صورت خودکار آغاز می‌شود.

sudo systemctl enable httpd.service

بعد از اینکه این مراحل کامل شد، از طریق SSH بعنوان یک کاربر غیرریشه‌ای (non-root) به سیستم وارد شوید و آموزش را ادامه دهید.

مرحله اول: ایجاد ساختار دایرکتوری

در ابتدا ما نیاز داریم یک ساختار دایرکتوری ایجاد کنیم که اطلاعات سایت را برای ارائه خدمات به بازدیدکنندگان در آنجا نگهداری کنیم.
اسناد ریشه ما (document root: بالاترین سطح از دایرکتوری که به نظر می‌رسد آپاچی برای پیدا کردن مطالب و ارائه خدمات آن را جستجو می‌کند) به دایرکتوری‌های منحصربه‌فردی در دایرکتوری /var/www تنظیم می‌شوند. ما یک دایرکتوری برای هر یک از میزبان‌های مجازی که قصد ایجاد آن را داریم، ایجاد خواهیم کرد.
در هر یک از دایرکتوری‌ها، یک دایرکتوری public_html ایجاد خواهیم کرد که فایل‌های واقعی را در آن نگهداری شود. این کار انعطاف‌پذیری بیشتری در میزبانی می‌دهد.
ما می‌توانیم این دایرکتوری‌ها را با استفاده از دستور mkdir (استفاده از –p که اجازه می‌دهد که یک پوشه درون پوشه دیگری ایجاد کنیم) بسازیم.

 

sudo mkdir -p /var/www/itse.com/public_html
sudo mkdir -p /var/www/itse2.com/public_html

مرحله دوم: اعطای مجوز

در حال حاضر ما یک ساختار دایرکتوری برای فایل‌های خود داریم. اما آن‌ها به کاربر ریشه (root) تعلق دارند. اگر ما بخواهیم که کاربران به طور منظم قادر به تغییر فایل‌ها در دایرکتوری‌های وب‌سایت ما باشند، می‌توانیم با استفاده از دستور chown مالکیت آن‌ها را تغییر دهیم:

sudo chown -R $USER:$USER /var/www/itse.com/public_html
sudo chown -R $USER:$USER /var/www/itse2.com/public_html

متغییر $USER نام همان کاربری را خواهد گرفت که شما اخیرا با آن وارد سیستم شده‌اید در زمانی که دستور را ارسال می‌کنید. با انجام این کار، کاربران منظم ما مالک دایرکتوری‌های public_html جایی که ما محتوای خود را ذخیره می‌کنیم، هستند.
همچنین باید مجوزهایمان را طوری اصلاح کنیم که با کمی تغییر مطمئن شویم که دسترسی خواندن به دایرکتوری وب و همه فایل‌ها و فولدرهای درون آن به طور کلی مجاز است. بنایراین صفحاتی که را می‌توان به درستی به کار گرفت:

sudo chmod -R 755 /var/www

وب سرور شما در حال حاضر باید مجوزهای مورد نیاز برای خدمات محتوا و کاربران شما که قادر هستند محتوا را در داخل پوشه‌های مناسب ایجاد کنند، را داشته باشد.

مرحله سوم: ایجاد نسخه نمایشی صفحات برای هر میزبان مجازی

حالا که ما یک ساختار دایرکتوری را داریم، اجازه دهید که برخی از مطالب را برای استفاده ایجاد کنیم.
زیرا که این تنها راه برای نمایش و آزمایش است، صفحات ما بسیار ساده خواهند بود. ما فقط صفحه index.html برای هر سایت ایجاد می‌کنیم که آن دامنه خاص را شناسایی می‌کند.
اجازه دهید که با example.com شروع کنیم. ما می‌توانیم یک فایل index.html را در ویرایشگر با تایپ کردن دستور زیر باز کنیم:

nano /var/www/itse.com/public_html/index.html

در این فایل یک سند HTML ساده ایجاد می‌شود که سایتی را نشان می‌دهد که این صفحه به آن متصل است. در این آموزش فایلی که برای اولین در دامنه ما نمایش داده می‌شود، مطابق زیر است:

<html>
<head>
<title>Welcome to Itse.com!</title>
</head>
<body>
<h1>Success! The itse.com virtual host is working!</h1>
</body>
</html>

بعد از اتمام این مرحله فایل را ذخیره کنید و ببندید.

ما می‌توانیم با تایپ کردن دستور زیر این فایل را به عنوان یک الگو برای استفاده در index.html سایت دوممان کپی کنیم.

cp /var/www/itse.com/public_html/index.html /var/www/itse2.com/public_html/index.html

حالا اجازه دهید فایل را باز کنیم و بخش‌های مربوط به اطلاعات را اصلاح کنیم.

nano /var/www/itse2.com/public_html/index.html
<html>
<head>
<title>Welcome to itse2.com!</title>
</head>
<body>
<h1>Success! The itse2.com virtual host is working!</h1>
</body>
</html>

این فایل را نیز دخیره کنید و ببندید. اکنون شما صفحات لازم برای تست پیکربندی میزبان مجازی را دارید.

مرحله چهارم: ایجاد فایل میزبان مجازی جدید

فایل‌های میزبان مجازی برای سایت‌های جداگانه ما طوری پیکربندی شده‌اند که مشخص می‌کنند چگونه وب سرور آپاچی به درخواست دامنه‌های متفاوت پاسخ دهند.
برای شروع، ما نیاز داریم که یک دایرکتوری را راه‌اندازی کنیم که میزبان‌های مجازی ما در آن ذخیره شوند و همچنین دایرکتوری که به آپاچی می‌گوید که یک میزبان مجازی آماده پاسخگویی به بازدیدکنندگان است.
دایرکتوری sites-available همه فایل‌های میزبان مجازی ما را نگهداری خواهد کرد. درحالی‌که دایرکتوری sites-enabled لینک‌های نمادین ماشین میزبان‌های مجازی که ما می‌خواهیم انتشار دهیم را نگهداری می‌کند. ما با تایپ دستورات زیر می‌توانیم هر دو دایرکتوری را ایجاد کنیم:

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

در ادامه ما باید به آپاچی بگوییم که میزبان‌های مجازی را در دایرکتوری sites-enabled مشاهده کند. برای انجام این کار، ما فایل اصلی پیکربندی آپاچی را ویرایش می‌کنیم و یک خط که یک دایرکتوری اختیاری را برای پیکربندی اضافی فایل‌ها اعلام می‌کند را اضافه می‌کنیم:

sudo nano /etc/httpd/conf/httpd.conf

این خط را به انتهای فایل اضافه کنید:

IncludeOptional sites-enabled/*.conf

بعد از اضافه کردن این خط فایل را ذخیره کنید و ببندید. اکنون ما آماده‌ایم اولین فایل میزبان مجازی را ایجاد کنیم.

ایجاد اولین فایل میزبان مجازی:

با باز کردن یک فایل جدید در ویرایشگر خود با دسترسی root شروع کنید:

sudo nano /etc/httpd/sites-available/itse.com.conf

در ابتدا، با ایجاد یک جفت tag برچسب محتوا به عنوان یک ماشین مجازی که درحال گوش دادن به پورت ۸۰ (پورت پیش‌فرض HTTP) است، شروع کنید:

<VirtualHost *:80>
</VirtualHost>

در ادامه نام سرور اصلی را اعلام کنید. در اینجا ما به عنوان مثال www.itse.com را وارد کرده‌ایم. ما همچنین نام مستعار سرور را به itse.com اشاره می‌دهیم به‌طوری‌که درخواست‌ها برای www.itse.com و itse.com با محتوای یکسان ارسال می‌شوند:

<VirtualHost *:80>
ServerName www.itse.com
ServerAlias itse.com
</VirtualHost>

نکته: برای اینکه نسخه‌های www از دامنه به درستی کار کنند پیکربندی DNS های دامنه نیاز به یک A record یا CNAME دارند که درخواست‌های www را به IP سرور اشاره دهد. برای کلمات (*) رکورد نیز کار می‌کند. برای اطلاعات بیشتر در مورد DNS این لینک را مطالعه نمائید.

در نهایت، ما با اشاره به دایرکتوری root از اسناد وب‌سایتمان که در دسترس عموم است کار را پایان می‎دهیم. ما همچنین به آپاچی می‌گوییم که خطاها و درخواست log های مربوط به این سایت خاص را در کجا ذخیره کند:

<VirtualHost *:80>
ServerName www.itse.com
ServerAlias itse.com
DocumentRoot /var/www/itse.com/public_html
ErrorLog /var/www/itse.com/error.log
CustomLog /var/www/itse.com/requests.log combined
</VirtualHost>

هنگامی که نوشتن این موارد به پایان رسید می‌توانید این فایل را ذخیره کنید و ببندید.

کپی کردن اولین میزبان مجازی و سفارشی‌سازی آن برای دامنه‌های اضافی:

حالا که اولین فایل میزبان مجازی خود را ایجاد کردیم، ما می‌توانیم با کپی کردن این فایل و تنظیم موارد مورد نیاز دومین میزبان مجازی را ایجاد کنیم.
با استفاده از دستور cp کپی را شروع کنید:

sudo cp /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-available/itse2.com.conf

یک فایل جدید با دسترسی root در ویرایشگر خود باز کنید:

sudo nano /etc/httpd/sites-available/itse2.com.conf

شما اکنون نیاز دارید که تمامی قسمت‌های اطلاعاتی را که به دامین دوم شما ارجاع داده می‌شود را تغییر دهید. بعد از اینکه کار شما تمام شد، فایل‌های میزبان مجازی دوم شما ممکن است چیزی شبیه به این باشد:

<VirtualHost *:80>
ServerName www.itse2.com
DocumentRoot /var/www/itse2.com/public_html
ServerAlias itse2.com
ErrorLog /var/www/itse2.com/error.log
CustomLog /var/www/itse2.com/requests.log combined
</VirtualHost>

وقتی که انجام این تغییرات به پایان رسید، می‌توانید فایل را ذخیره کنید و ببندید.

مرحله پنجم: فعال کردن فایل میزبان مجازی جدید

اکنون که فایل‌های میزبان مجازی را ایجاد کرده‌ایم، باید آنها را فعال کنیم تا آپاچی برای استفاده از آن‌ها برای بازدیدکنندگان آنها را شناسایی کند. برای انجام این کار، ما می‌توانیم لینک نمادین را برای هر میزبان مجازی در دایرکتوری ites-enabled ایجاد کنیم:

sudo ln -s /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-enabled/itse.com.conf
sudo ln -s /etc/httpd/sites-available/itse2.com.conf /etc/httpd/sites-enabled/itse2.com.conf

هنگامی که کار شما به پایان رسید برای اعمال تغییرات Apache را ری‌استارت کنید:

sudo apachectl restart

مرحله ششم: راه‌اندازی فایل میزبان‌های محلی (اختیاری)

اگر شما برای تست این روش از دامنه‌های example به جای دامنه‌های واقعی استفاده می‌کنید، شما همچنان می‌توانید قابلیت‌های میزبان‌های مجازی خود را بطور موقت با تغییر در فایل‌های میزبان کامپیوتر خود تست نمائید. این عمل هرگونه درخواست برای دامین‌هایی که شما پیکربندی کرده‌اید و به سرور VPS خود اشاره داده‌اید را جدا می‌کند. فقط یک سیستم DNS می‌تواند این کار را انجام دهد اگر شما از دامنه‌های ثبت شده استفاده کنید. هرچند این کار فقط به روی کامپیوتر شما انجام می‌شود و به سادگی برای آزمایش اهدافتان مفید است.

نکته: مطمئن شوید که این مراحل را روی کامپیوتر محلی خود انجام می‌دهید نه روی سرور مجازی‌تان. شما نیاز دارید که به اعتبارنامه‌های اداری برای این کامپیوتر دسترسی داشته باشید.

اگر شما بر روی یک کامپیوتر Mac با Linux هستید، می‌توانید با تایپ دستور زیر فایل میزبان‌های محلی خود را با دسترسی مدیریتی ویرایش کنید:

sudo nano /etc/hosts

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

جزئیاتی که نیاز دارید اضافه کنید، IP آدرس‌های عمومی سرور مجازی شما به همراه دامنه‌هایی که برای رسیدن به آن سرور مجازی می‌خواهید، هستند:

127.0.0.1 localhost
127.0.1.1 guest-desktop
server_ip_address itse.com
server_ip_address itse2.com

این دستورات هر درخواستی که برای itse.com و itse2.com بر روی کامپیوتر محلی ما فرستاده می‌شود و آنها را بر روی سرور ما server_ip_address ارسال می‌کند.

مرحله هفتم: نتایج آزمون شما

حالا که شما میزبان‌های مجازی پیکربندی شده‌ای دارید، می‌توانید تنظیمات خود را به راحتی با رفتن به دامنه‌هایتان که در مرورگر وب خود پیکربندی کرده اید، تست کنید.

http://itse.com

شما باید یک صفحه مانند زیر مشاهده کنید.

به همین ترتیب اگر شما دامنه‌های دیگرتان را بازدید کنید، فایل‌هایی را که ایجاد کرده‌اید را می‌بینید.

اگر تمام سایت‌هایی که پیکربندی کرده‌اید به درستی کار کنند، پس شما با موفقیت میزبان‌های مجازی آپاچی جدید خود را روی همان سرور CentOS پیکربندی کرده‌اید.
اگر فایل میزبان‌های کامپیوتر خانگی خود را تنظیم کرده‌اید، حالا که مطمئن شده‌اید پیکریندی شما به درستی کار می‌کند ممکن است بخواهید خط‌هایی را که اضافه کرده‌اید را حذف کنید.
این مورد باعث جلوگیری از ایجاد فایل‌های میزبان‌های شما با مواردی می‌شود که در اصل نیازی به آن‌ها نیست.

نتیجه:

شما اکنون باید اکنون قادر باشد یک سرور CentOS7 را با سایت‌های مختلف با دامنه‌های مجزا رسیدگی کنید. شما می‌توانید این فرآیند را با دنبال کردن مراحل بالا به میزبان‌های مجازی بیشتری گسترش دهید. هیچ محدودیت نرم‌افزاری برای تعداد نام دامنه‌هایی که آپاچی می‌تواند رسیدگی کند وجود ندارد.