CentOS 7: آموزش نصب Apache ،MariaDB و PHP

4.4kviews

در این مقاله نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی ماریا دی‌بی (آخرین نسخه) و پی‌اچ‌پی (آخرین نسخه) را به همراه ماژول‌های آن روی سیستم عامل‌های CentOS 7 با استفاده از مخزن EPEL و دستور YUM آموزش خواهیم داد.

Install-LAMP

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

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

ماریا دی بی (MariaDB) چیست؟

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

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

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

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

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

 

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

yum -y install mariadb-server mariadb httpd php

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

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel mod_ssl mod_security php-ioncube-loader php-mcrypt php-suhosin php-xml php-magickwand libexif php-imap openssl zip zlib

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

## Enable Apache and MariaDB on Run-Levels ##
## Apache Commands ##
systemctl start httpd.service
systemctl enable httpd.service
## MariaDB Commands ##
systemctl start mariadb.service
systemctl enable mariadb.service

مرحله پنجم: تنظیمات MariaDB

با استفاده از دستور زیر نسبت اعمال تنظیمات MariaDB اقدام کنید.

mysql_secure_installation

مرحله ششم: تنظیمات Firewall

با استفاده از دستورات زیر پورت ۸۰ و ۴۴۳ که مربوطه به HTTP و HTTPS است را در فایروال آزاد می‌کنیم.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

مرحله هفتم: تنظیمات Hostname

با استفاده از دستور زیر نام سرور را مطابق نیاز خود تنظیم کنید.

hostnamectl set-hostname centos7.zagrio.com

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

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

<php
phpinfo ();
?>

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

Install LAMP

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

اسکریپت تهیه نسخه پشتیبان از فایل‌ها و بانک‌های اطلاعاتی در SSH

اسکریپت تهیه نسخه پشتیبان از فایل‌ها و بانک‌های اطلاعاتی در SSH

1.5kviews

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

اسکریپت تهیه نسخه پشتیبان از فایل‌ها و بانک‌های اطلاعاتی در SSH

در سرورهای لینوکسی (هاست لینوکس) می‌توانید با استفاده از این اسکریپت در SSH به اهداف ذیل دست پیدا کنید:

  • تهیه نسخه پشتیبان از پوشه‌ها و فایل‌های مورد نظر
  • امکان عدم تهیه نسخه پشتیبان از پوشه‌هایی مشخص درون فایل‌های فوق
  • فشرده‌سازی نسخه پشتیبان
  • تغییر نام فایل نسخه پشتیبان به همراه متغیرهایی همچون تاریخ و ساعت
  • تهیه نسخه پشتیبان از بانک اطلاعاتی MySQL
  • ارسال نسخه پشتیبان به سرور FTP

ابتدا فایل اجرایی را با دستور زیر ایجاد نمائید.

[root@zagrio ~]# nano backup.sh

محتوای فایل: (موارد قرمز رنگ می بایست مطابق نیاز اصلاح شود)

#!/bin/sh
#Path Configuration
export BACKUP_PATH='/root/backup/'
export FILES_BACKUP_FILENAME='files.tar.gz'
export DATABASE_BACKUP_FILENAME='database.sql.gz'
export PATH_TO_BACKUP='/path/to/backup'
export PATH_TO_EXCLUDE1='/path/to/backup/excludethis1'
export PATH_TO_EXCLUDE2='/path/to/backup/excludethis2'
#Database Configuration
export DATABASE_USERNAME='username'
export DATABASE_PASSWORD='password'
export DATABASE_HOST='localhost'
export DATABASE_NAME='database'
#FTP Configuration
export FTP_HOST='ftp.host.com'
export FTP_USERNAME='username'
export FTP_USERNAME='password'
#Create Backup Directory
mkdir $BACKUP_PATH
#Compress files / define any excluded folder
tar -cjvf $BACKUP_PATH$DATABASE_BACKUP_FILENAME $PATH_TO_BACKUP --exclude $PATH_TO_EXCLUDE1 --exclude $PATH_TO_EXCLUDE2
#Create MySQL Backup
mysqldump -u $DATABASE_USERNAME -h $DATABASE_HOST -p$DATABASE_PASSWORD $DATABASE_NAME | gzip -9 > $BACKUP_PATH$DATABASE_BACKUP_FILENAME
#Get Date
MY_DATE=date +%Y%m%d
export MY_DATE
#Transfer Backups to FTP Host
ftp -n -i $FTP_HOST <<END_SCRIPT
user ${FTP_USERNAME} ${FTP_PASSWORD}
put ${BACKUP_PATH}${DATABASE_BACKUP_FILENAME} files_${MY_DATE}.sql.gz
put ${BACKUP_PATH}${FILES_BACKUP_FILENAME} database_${MY_DATE}.tar.gz
END_SCRIPT
#Remove local backup after upload
rm $BACKUP_PATH* -f

سپس با دستور زیر سطح دسترسی اجرایی برای آن تعریف کنید. | تهیه نسخه پشتیبان

[root@zagrio ~]# chmod backup.sh 777

حالا به شکل زیر آن را اجرا نمائید و یا در Cron قرار دهید.

[root@zagrio ~]# ./backup.sh

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

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

نحوه حذف مطمئن Kernel های قدیمی چیست؟

921views

مرحله اول

ابتدا با دستور زیر Kernel فعال را پیدا کنید:

uname -r

نمونه خروجی:

۲٫۶٫۱۸-۵۳٫۱٫۴٫el5

مرحله دوم

سپس با دستور زیر کلیه Kernel های نصب شده بر روی سیستم را مشاهده نمائید:

# rpm -q kernel

نمونه خروجی:

kernel-2.6.12-1.el5
kernel-2.6.18-17.el5
kernel-2.6.18-53.el5
kernel-2.6.18-53.1.4.el5

کاربران توزیع های Ubunto و Debian از دستور زیر استفاده نمایند:

$ dpkg --list 'linux-image*'

نمونه خروجی:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=============================-=============================-==========================================================================
ii linux-image 2.6.22.14.21 Generic Linux kernel image.
un linux-image-2.6 (no description available)
rc linux-image-2.6.20-15-generic 2.6.20-15.27 Linux kernel image for version 2.6.20 on x86/x86_64
ii linux-image-2.6.20-16-generic 2.6.20-16.32 Linux kernel image for version 2.6.20 on x86/x86_64
ii linux-image-2.6.22-14-generic 2.6.22-14.47 Linux kernel image for version 2.6.22 on x86/x86_64
ii linux-image-generic 2.6.22.14.21 Generic Linux kernel image

مرحله سوم: حذف Kernel های قدیمی

**اخطار – دستورات فوق می بایست با دقت تمام اجرا شود، در صورت عدم اجرای صحیح سیستم شما غیرفعال می شود. توجه داشته باشید Kernel فعال را حذف نکنید!
با استفاده از دستور زیر نسبت به حذف در سیستم های RHEL / CentOS / Fedora Linux اقدام نمائید:

# rpm -e kernel-2.6.12-1.el5

با استفاده از دستور زیر نسبت به حذف در سیستم های Debian / Ubunto Linux اقدام نمائید:

$ sudo apt-get remove linux-image-2.6.22-14-generic

افزودن درایو جدید به سیستم 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

چگونه از rsync برای همگام‌سازی دایرکتوری‌های Remote و Local روی یک VPS استفاده کنیم

2.5kviews

Rsync که پایه و اساس remote sync است، یک ابزار برای همگام‌سازی فایل‌های Local و Remote است. با استفاده از این الگوریتم مقدار اطلاعات کپی شده تنها با حرکت بخش‌هایی از فایلهایی که تغییر کرده‌اند به حداقل می‌رسد. در این مقاله کاربردهای اساسی این ابزار سودمند را ارائه می‌دهیم. ما در این مثال‌ها از سرور مجازی Ubuntu 12.04 استفاده می‌کنیم اما شما می‌توانید از هر توزیع لینوکس استفاده کنید.

Rsync چیست؟

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

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

با توجه به اینکه لینوکس و سیستم‌های Unix-like در همه جا حضور دارند و به عنوان یک ابزار دارای اسکریپت سیستم، محبوبیت بسیاری دارند باعث شده که این مورد در اکثر توزیع‌های لینوکس به صورت پیش‌فرض قرار داده شود.

Basic Syntax

سوئیچ‌های پایه‌ای Rsync بسیار ساده هستند و اجرای آن‌ها شبیه به ssh, scp, و cp است.

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

cd ~ mkdir dir1 mkdir dir2 touch dir1/file{1..100}

درحال حاضر ما یک دایرکتوری به نام dir1 با ۱۰۰ فایل خالی درون آن داریم.

ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

ما همچنین یک دایرکتوری خالی به نام dir2 داریم.

برای یکی کردن محتویات dir1 به dir2 در همان سیستم دستور زیر را تایپ کنید:

rsync -r dir1/ dir2

گزینه r- بر ای تمامی زیرپوشه‌ها نیزعمل می‌کند و برای یکی کردن دایرکتوری لازم است.

همچنین می‌توانیم از سوئیچ a- به جای آن استفاده کنیم.

rsync -a dir1/ dir2

گزینه a- یک سوئیچ ترکیبی است.

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

به همین دلیل معمولا از r- استفاده می‌شود و این چیزی است که معمولا شما می‌خواهید استفاده کنید.

یک نکته مهم:

ممکن است که متوجه شده باشید که یک / در پایان اولین آرگومان در دستورات بالا وجود دارد.

rsync -a dir1/ dir2

این کار لازم است و به معنی محتویات درون dir1 است.

در موارد جایگزین، بدون/باید مکان dir1، محتوی دایرکتوری درون dir2 باشد. به این‌صورت سلسله مراتبی ایجاد می‌شود که مانند زیر به نظر می‌رسد:

~/dir2/dir1/[files]

همیشه آرگومان‌ها را قبل از اجرای یک دستور rsync مجددا چک کنید.

Rsync با عبور از گزینه‌های n- یا dir- روش‌هایی برای انجام این کار فراهم می‌کند. سوئیچ v- برای دریافت خروجی مناسب است.

rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .

این خروجی را با خروجی که هنگام حذف / بدست می آورید مقایسه کنید.

rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .

در این‎جا می‎بینید که دایرکتوری‌هایتان منتقل شدند.

چگونه از rsync برای همگام‌سازی یک Remote system استفاده کنیم؟

همگام‌سازی به یک Remote system بسیار واضح و بدیهی است اگر دسترسی SSH به یک remote machine داشته باشید و Rsync درهر دو سمت نصب شده باشد. اگر نیاز به راه‌اندازی کلید SSH دارید set up SSH keys را کلیک کنید.

هنگامی‌که شما دسترسی SSH بین دو ماشین دارید، می‌توانید قبل از remote computer با استفاده از syntax همگام سازی کنید ( توجه داشته باشید که ما می‌خواهیم دایرکتوری‌های واقعی را در این مورد انتقال دهیم، بنابراین / را حذف می کنیم).

rsync -a ~/dir1 username@remote_host:destination_directory

این کار Push عملیات نامیده می‌شود چون دایرکتوری را از یک سیستم Local به یک Remote سیستم فشار (Push) می‌دهد.

pull” عملیات مخالف با Push است. عمل Pull برای همگام‌سازی یک دایرکتوری از Remote سیستم به یک سیستم Local است. اگر dir1 به جای سیستم Local بر روی Remote سیستم قرار داشته باشد Syntax به صورت زیر است:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

مانند CP و ابزارهای مشابه، اولین آرگومان به عنوان مبدا و دومین آرگومان مقصد است.

گزینه‌های مفید برای Rsync

Rsync گزینه‌های بسیاری برای تغییر رفتار پیش‌فرض ارائه می‌کند. ما در حال حاضر در مورد بعضی از پرچم‌های ضروری گفتگو می‌کنیم.

اگر شما درحال انتقال فایل‌هایی هستید که فشرده شده نیستند، مانند فایل‌های متنی، می‌توانید با اضافه کردن گزینه z- فایل‌ها را فشرده کنید و انتقال را کاهش دهید.

rsync -az source destination

سوئیچ p- خیلی مفید است. این سوئیچ ترکیب سوئیچ‌های progress — و partial — است. اولین مورد پیشرفت انتقال را نشان می‌دهد و دومی به شما اجازه می‌دهد تا انتقال قطع شده را مجددا ارسال کنید.

rsync -azP source destination
sending incremental file list
./
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=96/101)

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

این مورد قابلیت rsync را بیان می‌کند که با استفاده از تاریخ تغییر فایل‌ها بتواند مشخص کند که آیا تغییراتی بر روی فایل‌ها اعمال شده است یا نه.

rsync -azP source destination

sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

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

touch dir1/file{1..10}

rsync -azP source destination
sending incremental file list
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .

به منظور این‌که هر دو دایرکتوری که به درستی همگام شده را حفظ کنیم، اگر این فایل‌ها از منبع حذف شده باشند لازم است که فایل‌ها را از دایرکتوری مقصد حذف کنیم. Rsync بطور پیش‌فرض هیچ فایلی را از دایرکتوری مقصد حذف نمی‌کند.
ما می‌توانیم این رفتار را با گزینه delete – تغییر دهیم. قبل از استفاده از این گزینه از گزینه dry –run- استفاده کنید و این تست را برای آزمایش از دست دادن اطلاعات انجام دهید.

rsync -a --delete source destination

اگر مایل به حذف فایل‌های خاص یا دایرکتوری واقع در دایرکتوری که درحال همگام‌سازی آن هستید می‌توانید بعد از گزینه –exclude= آنها را در یک لیست با کاما از هم جدا کنید.

rsync -a --exclude=pattern_to_exclude source destination

اگر ما یک الگوی مشخص برای حذف کردن داشته باشیم، می‌توانیم برای فایل‌هایی که با الگوی متفاوت مطابق هستند با استفاده از گزینه –include= استثنا ایجاد کنیم.

rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination

نتیجه

Rsync می‌تواند به سادگی فایل‌های شما را بر روی بستر شبکه منتقل کند و همچنین با قدرت بالا پوشه‌های موجود بر روی سیستم شما را همگام (sync) کند. انعطاف‌پذیری Rsync گزینه‌های خوبی برای عملیات بر روی فایل‌ها سطوح مختلف ایجاد می‌کند.