معرفی FTPو ایرادات

معرفی FTPو ایرادات

FTP به پروتکل انتقال فایل ها گفته میشود.یک پروتکل برای انتقال فایل بین یک سرور FTPو یک کاربر کامپیوتر FTPدر اینترنت استفاده میشود.FTPبیشتر به دلیل دانلود های رایج آن در دنیای اینترنت شناخته شده است.FTPیک گزینه دوم برای دانلود و اپلود فایل ها است همانند استفاده از پروتکل HTTP.به زبان ساده تر پروتکل HTTPپوسته جلویی سایت ها و ظواهر را به شما نشان خواهد داد,و FTP به شما تمامی فایل های پشت سایت مانند عکس ها و فیلم ها و فایل هایی که در سایت وجود دارد را نشان خواهد داد.دسترسی های FTPاغلب برای صاحبان سایت طراحی شده است و استفاده عموم برای دسترسی به آنها بسته است.

تاریخچه FTP

در اوایل سال هایی که رایانه ها ساخته شدند برای کار با انها باید فرمان ها و کد های بسیار پیچیده را یاد میگرفتید تا بتوانید از اینترنت استفاده کنید.FTPدر اوایل سال ۱۹۷۰ اختراح شد و یک پروتکل استاندارد برای انتقال فایل ها بین دو سیستم را بوجود آورد.پروتکل های FTPکه برای اینترنت استفاده میشدند,توسط گروه مهندسی فضای اینترنت به عنوان یک سری از RFC یه به فارسی در خواست به وسیله که امروز به اسم دانلود شناخته شده است ,ذخیره شد.و سر انجام در سال ۱۹۷۱ FTP protocol RFC144انتشار پیدا کرد.در طی سال های متعدد پروتکل FTPبار ها مورد بررسی و تعغیر قرار گرفت و نسخه جدید تر منتشر میشدند تا آن را بهتر کنند.

RFC959در سال ۱۹۸۵منتشر شد که به مشخصات استاندارد برای الگو برداری تبدیل شد.تا به امروز تمامی نسخه های این پروتکل منتشر میشود و هر بار برای آن ه بروزرسانی های متفاوتی منتشر میشود که باعث بالا بردن امنیت و دقت آن میشود.

اصول پایه FTP

در مطلب پایین چند تا از مقادیر استاندارد و پایه پروتکل FTPرا برای شما جمع آوری کرده ایم.

Anonymous FTP:بسیاری از کاربران میتوانند به صورت ناشناس وارد پروتکل FTPبشوند,در واقع بسیاری از سرور ها این امکان را برای آن ها فراهم کرده اند.کاربران میتوانند به سرورها وارد شدند و فایل هارا دانلود کنند و نیازی به حساب کاربری ندارند,هر چند اپلود برای کاربران ناشناس مقدور نیست,به یاد داشته باشید هرچند که شما ناشناس وارد سرور شده اید باز هم ای پی ادرس شما قابل ردیابی میباشد.

GET:اغلب ما آن را دانلود صدا میزنیم,این مورد به معنی کپی کردن از سایت FTPبه داخلت سیستم FTPخودتان میباشد.

PUT:همینطور به آن آپلود میگوییم,این عمل برعکس دانلود فایل ها را از سیستم شما به داخل FTPسایت کپی میکند,اپلود کردن فقط مختص به صاحبان سایت میباشد یا کسانی که دسترسی به فایل های سایت دارند.

FTP SITE:به فضای هاست یا میزبانی سرور سایت گفته میشود که شامل فایل ها برای دانلود یا اپلود در آن هاست,برای دسترسی به FTPسایت مورد نظرتان باید ادرس سایت را با پیشوند FTPآغاز کنید,به طور مثال : ftp://

انواع اتصالات FTP:

یک مفهوم کلی که در این پروتکل وجود دارد,تمامی انتقال و رد و بدل شدن اطلاعات از هر طریقی بین کاربر و سرور از طریق دو TCP portsانجام میشود.

پورت COMMAND:این در واقع پورت اصلی TCPمیباشد و وقتی به یک سرور متصل میشوید ساخته خواهد شد و از آن به عنوان انتقال دهنده فرمان ها و گرفتن پاسخ ها استفاده خواهد شد.

پورت DATA:هر زمانی که فایلی یا مسیری بین سرور و کاربر انتقال داده خواهد شد یک اتصال TCP dataصورت خواهد گرفت و اطلاعات از طریق ان انتقال می یابند.زمان که انتقال به پایان برسد این پورت بسته خواهد شد.پورت های dataهیچوققت باز نخواهند ماند و بعد از اتمام انتقال بسته میشوند.

خطاهای FTP:

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

اجرای proftpdدر حالت debug

اگر که شما حین ورود به اکانت خود یا اپلود کردن فایل ها یا ساختن مسیر ها مشکلی دارید و عملیات های مورد نظرتان با شکست مواجه خواهند شد میتواند proftpdرا در حالت debugاجرا کنید تا ببنید سرور proftpdدر حال انجام چه کاری است و شاید هم بتوانید بفهمید به چه دلیلی با ایراد های گفته شده مواجه میشوید.

برای انجام این کار فرمان زیر را وارد کنید:

/etc/init.d/proftpd stop
proftpd -n -d 20

این کار proftpdرا کاملا متوقف میکند و آن را در حالت debugدوباره شروع میکند.به یاد داشته باشید در freebsdشما از فرمان “/usr/local/etc/rc.d/proftpd stop”استفاده میکنید تا proftpdرا متوقف کنید.دوباره روند قبلی خود را انجام دهید تا خطاها رخ دهد,اما این بار Proftpdمقدار بسیار زیادی از اطلاعات را به شما در مورد خطا خواهد داد.خطاها معمولا در قسمت سمت راست پایین نزدیک به تمامی خروجی ها نمایان خواهد شد.زمانی که خطای مورد نظر خود را پیدا کردید,ctrl-cرا فشار دهید تا از daemonخروج پیدا کنید.دایرکت ادمین به صورت خودکار proftpdرا در حالت عادی دوباره اجرا خواهد کرد,یا میتوانید از فرمان بالا که نوشته شده برای اجرای آن استفاده کنید اما اینبار به جای کلمه stop از کلمه start استفاده کنید.

نشان دادن فایل های مخفی با FTP:

همانطور که گفتیم پروتکل FTPهمانند یک انباری برای سایت شما عمل میکند و همیشه تمامی اطلاعات در ان جا به صورت پوشه های درهم وجود دارد.برای دیدن فایل های مخفی از طریق FTP مسیر /etc/proftpd.conf.خود را ویرایش کنید و کد زیر را به آن اضافه کنید:

ListOptions -a

پس از وارد کردن کد آن را ذخیره کنید,از محیط بیرون بیایید و proftpdرا ریستارت کنید.

بروزرسانی یا نصب سرویس های ftp:

اسان ترین روش برای نصب یا بروزرسانی ProFTPDبه وسیله کاستوم بیلد میباشد,برای اجرای آن کد زیر را وارد کنید:

cd /usr/local/directadmin/custombuild
./build update
./build set ftpd proftpd
./build proftpd

همینطور برای نصب یابروزرسانی PureFTPDوارد کردن کد زیر میباشد:

cd /usr/local/directadmin/custombuild
./build update
./build set ftpd pureftpd
./build pureftpd

حذف تمامی remote tar.gz ftpدر یک مسیر:

فرمان زیر تمامی فایل های .tar.gzکه در یک مسیر هستند را حذف خواهد کرد.
برای مشخص کردن فایل هایی که مایل به حذف آن ها هستید,مقادیر grep را تعغیر دهید.به یاد داشته باشید که این فرمان در سیستم های ما تست شده و صددرصد کارآمد است ,اما در صورتی که میخواهید تست های بیشتری انجام دهید debuggingممکن است نیاز به سیستم های دیگری غیر از سیستم شما داشته باشد.

کد زیر را وارد کنید:

#!/bin/sh

ftp_path=/remote/ftp/path
ftp_username=username
ftp_password=password
ftp_ip=remote.host.com
ftp_port=21

for i in `curl -s -l ftp://"$ftp_username":"$ftp_password"@$ftp_ip/$ftp_path/ | grep tar.gz`; do
{
       echo "deleting ${ftp_path}/$i";
       curl ftp://${ftp_ip}:${ftp_port}/${ftp_path}/${i} -u "${ftp_username}:${ftp_password}" -O --quote "DELE ${ftp_path}/${i}"
};
done;

مشکلات در cpanelو راهکار آن

مشکلات در cpanelو راهکار آن

cPanelیک کنترل پنل آنلاین برای سرور های مبتنی بر وب میباشد که کاملا بر روی لینوکس اجرا میشود.سی پنل چندین نسخه مانند:redhat,centOSوCloudLinuxدارد.همچنین سی پنل قادر است تا قابلیت های مهم و کلیدی مانند:ادمین کنترل,دسترسی کاربران و کنترل امنیت هارا به شما بدهد.بهترین بخش سی پنل اراعه یک محیط کاربری گرافیکی کاملا ساده است که کارهای شما را بسیار واضح و ساده به شما نشان خواهد داد.سی پنل به صاحبان وبسایت ها ازادی کامل برای کنترل وبسایت خود وامنیت کاربران را اراعه میدهد,همراه با مدیریت وبسایت.

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

۱)برنامه وردپرس(word press)

در برخی از مواقع مشکلات سی پنل به دلیل تعغیرات کوچکی یا مراحل نصب یک برنامه به وجود می آید,در برخی شرایط زمانی که ورد پرس در حال نصب است,سی پنل به صورت خودکار آن را به آخرین خط وبسایت وصل خواهد کرد,هر چند با داشتن بروزرترین برنامه های اممنیتی بدافزار بازم وجود خواهند داشت و فایل های سیستمی شما را آلوده خواهند کرد.

راهکار:اگر ظاهر شدن های ناگهانی بد افزار ها بازم ادامه داشت,ممکن است مشکل از اکانت های FTPشما باشد,در این شرایط تمامی کد ها امنیتی FTPشما باید عوض شده باشد تا اکانت ها شما را ایمن نگه دارد و از خطر دور کند.همچنین مورد های اسیب پذیر حتمن باید دوباره چک شوند,مواردی در وبسایت و افزونه هایی که در وبسایت استفاده شده اند.مطمعن شوید برنامه وردپرس و افزونه ها به اخرین نسخه موجود بروزرسانی شده اند و ایمن هستند.

۲)اکانت های cPanel

اکانت های سی پنل quota نامحدودی دارند,جدا از اینکه quotaمتفاوت برای هر اکانت قرار داده باشید.در هر حال تمامی آن ها به شما تنظیمات نامحدود quota را نمایش خواهندداد که ممکن است زیاد به شما کمک نکنند.

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

# /scripts/fixquotas

۳)Private Keyبا Certificateیکسان نیست

متاسفانه در سی پنل خیلی دشوار است که به دنبال private keyبرای SSL certificateبگردید,زیرا private keyها با CSR keyساخته میشوند.اگر که تعداد آنها در یک سرور زیاد باشد,باز شرایط برای سی پنل سخت تر خواهد شد تا مسیر درست برای درخواست شما را پیدا کند.

راهکار:ما برای شما دو راهکار برای حل این مشکل پیشنهاد میکنیم,اینکه یک private keyبرای SSL certificateبه صورت دستی بسازید و آن را به جعبه private keyانتقال دهید,یا اینکه یک CSR key و private keyجدید بسازید به اکانت خود وارد شده و SSL certificateرا دوباره راه اندازی کنید تا مشکلاتان برطرف شود.

۴)SSL certificateبرای سی پنل

یکی دیگر از مشکلات رایجی که در سی پنل وجود دارد,در server.example.comدر کمتر از ۳۰ روز منقضی میشود و از طریق ایمیل یا زمانی که کاربران به آن وارد میشوند به آنها اطلاع میدهد.

راهکار:وارد WHMشوید و به مسیر Home >> Services >> Configuration >> Manage service SSL certificates >> Reset certificate for the required serviceبروید,هرچند اگر SSL certificatesخود را از یک منبع معبتر و قابل اطمینان خریداری کرده اید بهتر است این روش را انجام ندهید.

۵)ای پی ادرس مشخص برای قابلیت های کاربر

اگر شما نیاز دارید که کاربری به قابلیت های USERNAMEدسترسی داشته باشد,نیازمند این است که یک ای پی ادرس برای آن در دامین که آن کاربر وجود دارد برای SSLمشخص کنید.در رابطه با نصب SSLمشخص کردن یک ای پی ادرس مشخص یکی از پایه ترین نیازمندی های آن است.

راهکار:اگر که دامین های متعددی وجود دارد که از یک ای پی اشتراک گذاری شده با چندین SSL certificatesهستند,بهترین راه استفاده از SNI support IP address configuration.میباشد.

۶)Domain Mismatch

حتی با اینکه SSL certificatesنصب شده اند بازم خطایی مبنی بر mismatch in domainوجود دارد.ممکن است دامین به محوی تنظیم شده باشد که از self-signed SSLاستفاده کند,هرچند ممکن است SSL certificateبر روی دامین متفاوتی باشد.

راهکار:به دنبال یک SSLمشخص متناسب با دامین خود باشید,برای اینکار میتوانید به میزبان وبسایت سی پنل خود رجوع کنید تا بهترین گزینه ممکن را بیابید.

۷)خطای RoundCube

هر دفعه که کاربر وارد پایگاه اطلاعات خطای RoundCube
میشود,با خطای زیر روبروشده:

DATABASE ERROR: CONNECTION FAILED!

Unable to connect to the database!e

Please contact your server-administrator.

راهکار:برای حل این مشکل شما باید با استفاده از SSHبه عنوان روت در سرور خود وارد شوید و کد زیر را وارد کنید:

# /usr/local/cpanel/bin/update-roundcube –force

۸)وارد نشدن به فضای سی پنل

اگر شما قادر به وارد شدن به فضای اکانت سی پنل خود نیستید,سعی کنید از یک مرورگر دیگر استفاده کنید یا حافظه cacheمرورگرتان و اطلاعات خود را پاک کنید.اگر که شما میتوانید با دامین وارد اکانت سی پنل خود شوید ,کد زیر را وارد کنید:

https://server domain:2083 

یا

https://server domain/cPanel

مواردی وجود دارد که شما نمیتوانید URLرا باز کنید یا با نام کاربری و رمز عبور خود وارد بشوید.این وضعیت در صورتیبروز میدهد که DNSهنوز تعغیرات کامل خود را انجام نداده و در اینترنت کاملا اتفاق نیوفتاده است,شما میتوانید از طریق ادرس زیر به اکانت سی پنل خود دسترسی پیدا کنید:

https://IPaddress:2083/

۹)ایکون های نامشخص

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

/script/upcp

یا

/scripts/upcp –force

۱۰)خطای دامین قبلا pointedشده است

برای حل این مشکل دو مرحله زیر را مطابق میل خودتان وارد کنید.

==> Tweak Settings ==> Domains ==> Allow Remote Domains==> On ==> Save.
Main ==> IP Functions ==> Configure Remote Service IPs ==> Remote DNS IPs Add the IP addresses of the dns ==> save

۱۱)خطای اتصال پایگاه اطلاعات

اگر با علایمی مثل کند شدن بارگذاری صفحات وبسایت یا خطاهای HTTP500مواجه شدید یا خطاهایی که مربوط به MySQLمیباشد,برای حل این مشکل اول فرمان زیر را وارد کنید:

yum clean all

yum update imunify360-php-i360

پس از بروزرسانی که با فرمان بالا صورت گرفت,اپاچی و سرویس های PHPرا ریستارت میکنیم.

سپس Proactive Defense featureرا غیرفعال میکنیم

و در آخر cagefsرا غیر فعال و فعال میکنیم که در واقع یک مجازی ساز فایل های سیستمی برای کاربران است.

/usr/sbin/cagefsctl --disable-all

/usr/sbin/cagefsctl --enable-all

مشکلات MySQL tables

اگر سیستم شما به اجبار متوقف شد یا قسمت mySQL tablesشما دچار مشکل شده است,چندین روش وجود دارد که بتونید اطلاعات tables خود را برگردانید.به یاد داشته باشید,برای freeBSDیا Debianلطفا تمامی instances ها را جایگزین homeکنید.به طور مثال برای شما: /var/lib/mysqlبه /home/mysqlتبدیل خواهد شد.

۱)از دایرکت ادمین بخواهید تا کارتان را برایتان انجام بدهد.

دایرکت ادمین ها در خودشان فرمان تعمیر را دارند که از تنظیمات sql استفاده میکند.

برای استفاده از آنها به مسیر زیر بروید:User Level -> MySQL Management ->بر روی قسمت مربع کلیک کرده آنرا روشن کنید و گزینه repairرا بزنید.

۲)از myisamchkاستفاده کنید و پایگاه های اطلاعات خود را تعمیر کنید.

اگر شما پایگاه های اطلاعات الوده شده زیادی را دارید,و میخواهید همه ی آن ها را در یک مرتبه تعمیر کنید,در shhبه عنوان rootوارد شوید و مرحله های زیر را انجام دهید

۱)mysqldرا خاموش کنید.

Admin Level -> Services Monitor -> mysqld: stop

خاموش کردن mysqld از طریق دایرکت ادمین بسیار مهم است.در صورتی که از طریق دایرکت ادمین اینکار را نکرده باشید,وضعیت قرار گرفته نخواهد شد,و dataskqدوباره از اول شروع خواهد شد که برای شما میتواند مشکل ساز باشد.

۲)یک نسخه پشتیبان تهیه کنید.

cd /home
cp -Rp mysql mysql.backup

۳)tables ها را تعمیر کنید.

/usr/bin/myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
*/*.MYI

به یاد داشته باشید,بر روی FreeBSDیا Debian باید از مسیر زیر استفاده کنید.

/usr/local/mysql/bin/myisamchk

۴)دوباره mySQLرا اجرا کنید.

Admin Level -> Services Monitor -> mysqld: start.


تبدیل کردن MySQL5.5به MariaDB5.5

اگر شما در حال اجرای mySQL5.5هستید و میخواهید که آن را به نسخه mariaDB5.5تعغیر دهید(که در ادامه به شما اجازه به بالا بردن نسخه میدهد)روش گفته شده زیر را به ترتیب انجام دهید.

۱)قبل از انجام هرکاری از تمامی کاربران دایرکت ادمین و .sqlهای خود نسخه پشتیبان کامل تهیه کنید.مطمعن شوید که پشتیبان های گرفته شده کاملا سالم هستند و برای بازرگردانی آماده هستند,تا اگر اشتباهی رخ داد بتوانید از آنها استفاده کنید.برای ساختن پشتیبان های .sqlفرمان زیر را وارد کنید:

cd /usr/local/directadmin/custombuild
./build set mysql_backup yes
./build mysql_backup
#wait for the backup to complete, then rename it to a unique folder so it's not overwritten:
mv mysql_backups mysql_backups.`date +%F`
./build set mysql_backup no

۲)در قدم دوم شما باید از پوشه /var/lib/mysqlیک کپی بوجود بیاورید(/home/mysql on Debian/FreeBSD)

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

perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status
service mysqld stop
cd /var/lib
cp -Rp mysql mysql.conversion_backup

۳)در واقع عمل swap of rpmsباید به صورت دستی انجام شود.rpmsهای mySQLرا حذف کنید و کد زیر را وارد کرده:

rpm -e `rpm -qa | grep MySQL`

۴)در وضعیت الان ما اطلاعات لازم برای نسخه ۵٫۵را داریم و مکشلی نیست ولی هیچ کتابخانه یا فایل های باینری نصب نشده است,برای نصب mariaDBمیتوانید کد دستوری زیر را وارد کنید:

./build set mariadb 5.5
./build set mysql_inst mariadb
./build mariadb

۵)کد زیر را وارد کنید:

./build php n

۶)برای بروزرسانی های اینده,بهتر است که قابلیت بروزرسانی را دوباره فعال کنید همینطور mysqld monitoring را دوباره فعال کنید,برای انجام آن کد دستوری زیر را وارد کنید:

perl -pi -e 's/mysqld=OFF/mysqld=ON/' /usr/local/directadmin/data/admin/services.status
./build set mysql_backup yes

مطمعن شوید که همه چیز کاملا به درستی درحال پردازش است.


downgrade از mySQL5.6به ۵٫۵

متاسفانه mysql در بروزرسانی کرد به نسخه های جدید همیشه شانس بیشتری نسبت به downgrade به نسخه های قدیمی تر داشته.همانطور که میدانید ممکن است نسخه های قدیمی تر فایل های ساخته شده توسط نسخه جدید را پشتیبانی نکند,از همین رو downgrade کردن آن امری حساس میباشد.هدف اصلی از اراعه این اموزش,بیشتر برای کاربران debian 7 میباشد,که قصد ندارند از myqsl5.6استفاده کنند.در این مثال ما نسخه ۵٫۵٫۳۵ را downgrade خواهیم کرد اما شما به جای نسخه گفته شده میتوانید,نسخه دلخواه خودتان را قرار دهید.

این اموزش برای یک شروع از نو میباشد به این منظور که هیچ اطلاعاتی اضافه نشده است.اگر که تا الان شما به آن اطلاعاتی در پایگاه اطلاعاتی خود اضافه کرده اید بهتر است قبل از شروع کار از آنها نسخه پشتیبان تهیه کنید و بعد از اتمام downgrade ان هارا به دوباره بازگردانی کنید.
برای گرفتن پشتیبان از ابزار زیر استفاده کنید:

User Level -> Create/Restore Backups

راحت ترین راه استفاده از مسیری است که بالا به شما گفته شد,همچنین استفاده از این روش به شما اجازه میدهد که نام کاربری و رمز های خود را هم بازگردانی کنید و حتی به شما اجازه میدهد ۲ پایگاه اطلاعات برای تنظیمات پشتیبانی و بازگردانی خود انتخاب کنید,تا دیگر اطلاعات مربوط به کاربران دیگر کمتر مورد دخالت قرار بگیرد.به دلیل متفاوت بودن فرمت ها mysqldumps/restores که متعلق به mysqlهستند,پایگاه اطلاعات آن ها را شناسایی نمیکند.

به یاد داشته باشید که این روش چندان مناسب کاستوم بیلد نیست,زیرا این روش یک پاکسازی کامل را انجام میدهد,و یک نصب کاملا تازه از نسخه ۵٫۵را انجام میدهد(و دایرکت ادمین وریشه های اکانت را مشخص میکند)که کاستوم بیلد آن هارا انجام نمیدهد.

۱)در اولین قدم باید نسخه ۵٫۵ را دانلود کنیم,کد زیر را وارد کنید:

cd /usr/local/directadmin/scripts/packages
wget http://files.directadmin.com/services/all/mysql/debian/64-bit/mysql-5.5.35-linux2.6-x86_64.tar.gz

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

/usr/local/directadmin/scripts/files.sh

خط mysql_standardرا پیدا کنید و آن را به فایل جدید تعغیر دهید:

mysql_standard=mysql-5.5.35-linux2.6-x86_64.tar.gz

۳)mysqlقدیمی را پاک کرده و اطلاعاتی که از آن به جا مانده است را پاک کنید.

  • در دایرکت ادمین به Admin Level -> Services Monitor -> mysqld:رفته و مقدار را به stop تعغییر دهید.
  • اطلاعات قدیمی خودتان را از سر راهتان بردارید و مطمعن شوید که برای نصب دوباره اماده است:
rm -f /usr/local/mysql
mv /home/mysql /home/mysql.old
rm -f /tmp/mysql.sock

۴)در قدم بعد آن را نصب کنید,درصورتی که شما سوالی پرسیده شد که مایل به حذف مسیر old /home/mysqlهستید,شما باید yجواب دهید,تا ما از فایل های جدیدی که پشتیبانی نمیشوند استفاده کنیم.

همچنین شما میتوانید مقدار بولد شده در کد زیر که مربوط به رمز عبور میشود را تعغیر دهید و مقدار دلخواهتان آن را تنظیم کنید.

cd /usr/local/directadmin/scripts
./mysql.sh rootpass da_admin daadminpass

۵)بعد از انجام هر گونه تعغیری در نسخه های mySQLبه شما پیشنهاد میکنیم phpرا دوباره اجرا کنید و کد زیر را وارد کنید:

cd /usr/local/directadmin/custombuild
./build php n

۶)برای بروزرسانی های آینده میتوانید از کاستوم بیلد استفاده کنید.حتمن اطمینان حاصل کرده که mysql= valueدر تنظیمات options.confبر روی ۵٫۵تنظیم شده باشد.تا نسخه آن درهمان خط باشد.

۷)اگر شما نیاز دارید که یک new tar.gzبرای mysqlبسازید,میتوانید از گزینه جدید force_mysql_compileاستفاده کنید:

./build set mysql_force_compile yes
./build mysql
مشکلات رایج log در سیستم عامل های سرور

مشکلات رایج log در سیستم عامل های سرور

در بحث مشکلات سیستم عامل های سرور ما اول باید ادرس دقیق فایل های path را پیدا کنیم.

لیست فایل های logبه ترتیب زیر میباشد:

فایل های دایرکت ادمین:

/var/log/directadmin/error.log
/var/log/directadmin/errortaskq.log
/var/log/directadmin/system.log
/var/log/directadmin/security.log

فایل های apache:

/var/log/httpd/error_log
/var/log/httpd/access_log
/var/log/httpd/suexec_log
/var/log/httpd/fpexec_log
/var/log/httpd/domains/domain.com.error.log
/var/log/httpd/domains/domain.com.log
/var/log/messages (generic errors)

فایل های Proftpd:

/var/log/proftpd/access.log
/var/log/proftpd/auth.log
/var/log/messages (generic errors)

فایل های PureFTPd:

/var/log/pureftpd.log

فایل های Dovecotو vm-pop3d:

/var/log/maillog
/var/log/messages

فایل های named (bind):

/var/log/messages

فایل های exim:

/var/log/exim/mainlog
/var/log/exim/paniclog
/var/log/exim/processlog
/var/log/exim/rejectlog

(بر روی freeBSD,exim دقیقاروبروی اسم فایل ها نوشته شده)

فایل هایmysqld:

redhat:

/var/lib/mysql/server.hostname.com.err

فایل های FreeBSD و Debian:

/usr/local/mysql/data/server.hostname.com.err

فایل هایcrond:

/var/log/cron

برای دیدن فایل های logکد زیر را اجرا کنید:

less /var/log/filename

در لوکیشنی که شما میخواهید ببینید:/var/log/filename/

اگر که فایل های log شما طولانیست از فرمان tailزیر استفاده کنید:

tail -n 30 /var/log/filename

شماره ۳۰ جاییست که شما نیاز به دیدن دارید.


یکسان نبودن ای پی دستگاه با فایل های گواهی:

اگر شما با این پیام مواجه شدید:

The ip of this machine () does not match the ip in the license file

وقتی که شما تلاش میکنید که دایرکت ادمین را اجرا کنید سپس تنظیمات internet_devدر تنظیمات directadmin.confباهم چک خواهند شد و به خطا برخورد خواهند کرد,کد زیر را تایپ کنید:

/sbin/ifconfig

برای دیدن دستگاه های که ای پی شما بر روی آنها فعال هستند,اسم دستگاه های رایج:eth0, eth0:1, eth1, venet0:0هستند.
به یاد داشته باشید که شما میتونید مشخص کنید دستگاه های فرعی شما ای پی های متفاوتی را بگیرند.زمانی که اسم دستگاه خود را پیدا کردید مسیر زیر را ادیت کنید: /usr/local/directadmin/conf/directadmin.conf
تنظیمات را عوض یا اضافه کنید:

ethernet_dev=eth0

شما در قسمت eth0باید اسم دستگاه اینترنتی که از آن استفاده میکنید را قرار دهید.


پردازش task.queueشروع به کار نمیکند:

۱)/usr/local/directadmin/data/task.queueرا چک کنید در آنجا باید در هر دقیقه حذف شود.اگر فایل وجود داشت,محتویات آنرا چک کنید,اگر بیشتر از ۱ یا ۲خط وجود داشت پس dataskqشما اجرا نمیشود.

۲)مسیر /var/log/cron (/var/log/syslog on Debian)را چک کنید.چک کنید اگر dataskgدر هر دقیقه در حال اجرا نبود آنرا اجرا کنید.

chmod 644 /etc/cron.d/directadmin_cron
/sbin/service crond restart

۳)مطمعن شوید که cronدر حال اجراست(منظور از cronدر freeBSDمیباشد):

ps ax | grep cron

۴)سعی کنید از مسیر زیر /sbin/service crond restart ,cronرا ریستارت کنید.مسیر /var/log/cron and /var/log/را برای مشاهده پیام های احتمالی با /etc/cron.d/directadmin_cron file (/etc/crontab on FreeBSD)چک کنید.اگر شما crondرا ندارید کد زیر را تایپ کنید:

yum -y install vixie-cron cronie
service crond start
chkconfig crond on

اگر با تمامی روش های بالا بازم task.queueشروع به پردازش نکرد,سعی کنید آنرا با روش دستی اجرا کنید:

/usr/local/directadmin/dataskq d

مصرف بالای دیسک یکی ازکاربر ها:

در زمان انتشار بروزرسانی دایرکت ادمین ۱٫۳۹٫۴قابلیت جدیدی منتشر شد که به شما اجاره میدهد با دایرکت ادمین مصرف دیسک کاربران را مشاهده کنید,مشابه به خروجی که ما در روش زیر برایتان نوشته ایم.

اگر فکر میکنید مصرف دیسک بیشتر از آن چیزی هست که باید باشد,یا میخواهید درجریان باشید چه مقادیر مصرف دیسک از دایرکت ادمین شما می آید,کد زیر را وارد کنید:

cd /usr/local/directadmin
echo "action=tally&value=username&type=user" >> data/task.queue
./dataskq d800

در کد جایی که usernameمشخص شده با اسم کاربری که میخواهید را قرار دهید.


نحوه ساخت مسیر home:

ممکن است برایتان پیش امده باشد,که مسیر homeرا اتفاقی پاک کرده باشید,در حالت معمول این اتفاق خوبی نیست زیرا هممه اطلاعات شما آنجا ذخیره شده است,شما نیاز دارید که تمام مسیر را دوباره بسازید و همینطور مقداری فایل های دایرکت ادمین برای اجرا کردن:

فایل های tmp directoryرا بسازید تا بتوانید دوباره در دایرکت ادمین وارد شوید:

mkdir -p /home/tmp
chmod 1777 /home/tmp

۲)مسیر /home/username directories and subdirectories:را بسازید:

cd /home
vi make_dirs.sh

برای ورود به حالت insert mode کلید i را فشار دهید و کد زیر را وارد کنید:

#!/bin/sh
for i in `ls /usr/local/directadmin/data/users`; do
{
for d in `cat /usr/local/directadmin/data/users/${i}/domains.list`; do
{
mkdir -p /home/${i}/domains/${d}/public_html/cgi-bin
mkdir -p /home/${i}/domains/${d}/private_html
mkdir -p /home/${i}/domains/${d}/public_ftp
mkdir -p /home/${i}/domains/${d}/stats
mkdir -p /home/${i}/domains/${d}/logs
};
done;
mkdir -p /home/${i}/backups
chown -R $i:$i /home/${i}
chmod -R 755 /home/${i}
};
done;
exit 0;

برای خروج از حالت insert mode کلید crtl-cرا باهم فشار دهید,و برای ذخیره کلید shift-zرا دوبار فشار دهید و خارج شوید.زمانی که فایل ذخیره شد,کد زیر را وارد کنید:

chmod 755 make_dirs.sh
./make_dirs.sh

طریقه بازیابی یک پشتیبانی بزرگ:

اگر شما فایل پشتیبانی دارید که برای بازگردانی دایرکت ادمین بزرگ است که
پردازش بازرگردانی آن برایش مشکل است,پس tar.gzمیتواند هم اندازه بشود تا مقداری از اعضای آن را
حذف کند تا پردازش بازیابی به روش معمول انجام بگیرد,و اعضای حذف شده آن میتواند به روش دستی دوباره بازرگردانی شود.روشی که ما آن را انجام میدهید,برداشتن مسیر دامین ها از فایل های
پشتیبانی است(به طور مثال که این مسیر باعث مصرف زیادی شده است)

cd /home/admin/admin_backups
mv user.admin.username.tar.gz user.admin.username.backup.tar.gz
mkdir temp
cd temp
tar xvzf ../user.admin.username.backup.tar.gz backup
tar cvzf ../user.admin.username.tar.gz backup
chown admin:admin ../user.admin.username.tar.gz

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

فایل را به حالت معمول در دایرکت ادمین بازیابی کنید.زمانی که تمام شد,اطلاعات از /home/username/domainsگم خواهد شد,حالا آن را به صورت دستی استخراج کنید:

cd /home/username
tar xvzf /home/admin/admin_backups/user.admin.username.backup.tar.gz domains
chown username:username domains

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


پر شدن /var:

اگر شما پارتیشن /varرا دارید و آن
ارتیشن آنقدر کوچک است که سریع پر میشود,در صورتی که میخواهید اطلاعات ذخیره شده در /varرا به یک پارتیشن دیگر انتقال دهید,کد زیر را اجرا کنید:

cd /var
du | sort -n

کد وارد شده شما یک نگاه کلی به تمامی مسیر هایی که بیشترین فضا را دارند میدهد.مسیری که بیشترین استفاده از دیسک را میکند در زیر لیست نشان داده خواهد شد.یکی از رایجترین دلیل mysqlاست.(/var/lib/mysqlدر redhat)

برای جابه جا کردن آن مسیر به یک پارتیشن دیگر کد زیر را وارد کنید:

cd /home
mkdir mysql
chown mysql:mysql mysql
cd mysql

perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status
/sbin/service mysqld stop

cp -Rp /var/lib/mysql/* .
cd /var/lib
mv mysql mysql_old
ln -s /home/mysql ./mysql

/sbin/service mysqld start
perl -pi -e 's/mysqld=OFF/mysqld=ON/' /usr/local/directadmin/data/admin/services.status

#once satisfied that mysqld is running and functioning correctly, remove the old data:

rm -rf mysql_old

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

/usr/local/directadmin/conf/mysql.conf

اگر با خطایی مشابه زیر مواجه شدید:

[Warning] Can't create test file /home/mysql/server.lower-test

بعد جابه کردن فایل ها به /home,پردازش داده شده به فایل mariadb.serviceیا mysqld.serviceرا چک کنید و به دنبال همچین لاینی بگردید:

ProtectHome=true

ومقدار وارد شده true را به falseتعغییر بدهید.

تنظیمات سیستمی در Apache

تنظیمات سیستمی در Apache

تنظیمات سیستم دایرکت ادمین:

برای تنظیم کردن ساعت از فرمان کدی تاریخ استفاده کنید,برای سیستم های redhatاز فرمت زیر استفاده کنید:

date --set="Mmm DD HH:MM:SS YYYY"

به طور مثال:

date --set="Oct 20 15:52:29 2004"

برای سیستم های FreeBSDاز فرمت ها زیر استفاده کنید:

date YYMMDDHHMM

به طور مثال:

date 0410201544

با اجرای کد های که بالا برایتان مثال زدیم  ساعت و تاریخ به ۲۰ اکتبر۲۰۰۴ و ساعت ۳:۴۴pm خواهد رفت.برای هر برنامه اجرای,اگر که برنامه تنظیم تاریخ را دارید کافیست کد زیر را وارد کنید:

rdate -s rdate.directadmin.com

برای همگام سازی با ساعت اتمی در boulder در Colorado.

Ntpنسخه جدید تر است,روش دقیق تر و بهتر برای تنظیم تاریخ:

/usr/sbin/ntpdate -b -u ntp.directadmin.com

به یاد داشته باشید که اگر مقادیر گذاشته شده توسط rdate/ntpdateدرست نیست,پس منطقه زمانی شما اشتباه تنظیم شده است.فرمان هایی مثل system-config-dateیاredhat-config-dateمیتوانند آنهارا برای شما تنظیم کند.شما همینطور نیاز به ساخت یک لینک نشان دهنده منبع خود از یکی از منطقه هایی زمانی در /usr/shared/zoneinfoبه /etc/localtime,eg:

mv /etc/localtime /etc/localtime.moved
ln -s /usr/share/zoneinfo/Canada/Mountain /etc/localtime

شما همچنین باید php.iniخود را بروزرسانی کنید تا بتوانید از منطقه زمانی درست استفاده کنید.

مقادیر زیر را تغییر دهید:

date.timezone = "UTC"

و UTCرا به یکی از منقطه های زمانی معتبر تغییر دهید.


ساخت service monitor شخصی:

با بروز رسانی نسخه ۱٫۲۴٫۰,هرچند کدی که ما برایتان در مطلب امروز نوشته ایم کماکان اجرا میشود,برای تعغییرات بیشتر نیاز به دسترسی دارد.دایرکت ادمین اینکار را برای شما به صورت خودکار انجام میدهد,اغلب ادمین ها برنامه های اضافی را اجرا میکنند که دایرکت مستقیم ان هارا چک نمیکند برای اینکه مطمعن شوند برنامه در حال اجراست.کد زیر یک فرمول بسیار ساده است که یک ادمین را فعال میکند تا برنامه های اجرا شده را زیر نظر داشته باشد.در این مثال,ما برنامه spamdرا چک میکنیم.کلمه های بولد شده را با ایتم های خود جابه جا کنید.

#!/bin/sh
COUNT=`ps -ax | grep -v grep | grep -c spamd`
if [ $COUNT -eq 0 ]; then
            #the command used to start spamd
            /usr/bin/spamd -d -c -m 5
   
            sleep 3

            COUNT=`ps -ax | grep -v grep | grep -c spamd`
            if [ $COUNT -eq 0 ]; then
                         echo -e "Subject: spamd is downnnspamd is downn.\n\n" | /usr/sbin/exim your@email.com
            fi
fi
exit 0;

گم شدن مکان homeبعد از ساختن username

این ارور معمولا زمانی برای شما نشان داده میشود که در انجام ساخت نام کاربری که توسط سیستم به شما اراعه میشود مشکلی وجود داشته باشد.یکی از دلایلی که میتواند باعث این مشکل باشد این است که دایرکت ادمین فرض میکند که پوشه /home/usernameبا دسترسی های صحیح ساخته میشود بعد از اینکه useraddاجرا شود.در شرایطی خاص,یا اینکه برنامه آنرا نمیسازد,یا به دلیل وجود داشتن برنامه UID/GIDقبل از انها,برنامه فقط مقادیر را در فایل passwdنشان میدهد.

برای مواردی همگام سازی دچار تاخیر طولانی میشود,این مشکل با استفاده از یک کد به اسم دیوار قابل حل است:

cd /usr/sbin
mv useradd useradd.orig
nano useradd

سپس در داخل ویرایشگر کد زیر را در یک فایل useraddوارد کنید

#!/bin/sh
/usr/sbin/useradd.orig $@
RET=$?
sleep 15;
exit $RET;

در موقعیتی که sleep 15 دقیقه باشد,تاخیر ۱۵ ثانیه است.شما میتوانید مقدار را کمتر کنید تا مشکل خودش را نشان دهد و دوباره آنرا زیاد کنید تا از بین برود,تا آنجا که ما با این مورد مواجه شده ایم این تاخیر به صورت کاملا تصادفی برای شما اتفاق میوفتد و به این بستگی دارد که سیستم داخل برنامه ها در حال انجام چه کاری است,پس تنظیم کردن مقدار بالاتر امن تر است.


ساخت فایل swap

برخی از VPSها دارای فایل swapنیستند.دایرکت ادمین ۲گیگابایت رم و ۴ گیگابایت swap پیشنهاد میکند.هر چه مقدار رم شما بیشتر است برای سرعت سیستم شما بهتر از اما در swapبیشتر از ۴ گیگابایت توانایی خاصی را برای شما بوجود نمیاورد.برای اضافه کردن ۴ گیگابایت به swapبا این فرض که شما فضای کافی بر روی هارد دیسک خود دارید,کد زیر را اجرا کنید:

dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

و با بارگذاری شدن خطر زیر تایید میشود:

free -m

نحوه نصب cmake

برخی از سرویس های جدید به صورت پیشفرض به cmake نیاز دارند,برای مثال :MySQL5.6.ما نصب cmakeرا از طریق برنامه مدیریت نصب سیستم خود پیشنهاد میکنیم:

CentOS

yum install cmake

Debian

apt-get install cmake

Free BSD

pkg_add -r cmake

هرچند اگر مدیریت نصب شما کار نمیکند,شما باز هم میتوانید cmake را از منبع نصب کنید:

cd /root
wget http://files1.directadmin.com/services/custombuild/cmake-2.8.11.tar.gz
tar xzf cmake-2.8.11.tar.gz
cd cmake-2.8.11
./configure
make
make install

که باید باعث نصب cmakeدر ادرس /usr/local/bin/cmake,eg:

root@server~# /usr/local/bin/cmake --version
cmake version 2.8.11

خطاهای مربوط:

Extracting mysql-5.6.29.tar.gz ...
Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed!

تشخیص پروسه ها و استفاده از پورت ها

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

در این مثال ما میخواهیم اتصالاتی که از پورت ۲۵ استفاده میکنند را ردیابی کنیم.در لینوکس (centOs/Debian)میتوانید از فرمان netstatاستفاده کنید.

netstat -np --protocol=inet | grep ESTABLISHED | grep :25

یا بر روی FreeBSD:

sockstat -c -p 25 -P tcp

در هر دو روش شماره PIDبرای شما ساخته میشود,فرمان netstatشماره PIDرا سمت راست برای شما قرار میدهد,و sockstatرا در ردیف سوم قرار میدهد.
وقتی که شماره PIDخود را بدست اوردید,میتوانید خط زیر را وارد کنید:

ps aux | grep 1234

در قسمت ۱۲۳۴ شما PIDخود را که از خروجی گرفتید جایگذاری میکنید.


تشخیص سیستم عامل خود

گاهی اوقات ما در حسین درخواست پشتیبانی از مشتریان خود میپرسیم که از کدام سیستم عامل استفاده میکنند.اجرای تمامی این فرمان ها و ارسال خروجی انها به ما نسخه و نوع دقیق سیستم عاملی که شما دارید را نشان میدهد و متوجه میشویم که نسخه باکس شما ۶۴بیتی یا ۳۲بیی است.

cat /etc/redhat-release
cat /etc/debian_version
uname
uname -r
uname -m

برخی از فایل های بالا ممکن است وجود نداشته باشند,اما وجود نداشتن انها به ما کمک میکند که متوجه شویم شما ازکدام سیستم عامل استفاده میکنید.
اغلب ما برای دانستن نسخه سیستم عامل شما,از شما میپرسیم سیستم عامل دایرکت ادمین شما چه نسخه است,برای دانستن آن به
Admin Level -> Licenses/Updates
یا از sshکد زیر را تایپ کنید.

/usr/local/directadmin/directadmin o

کم کردن TTL قبل از عوض شدن آی پی (IP)

کم کردن TTL قبل از عوض شدن آی پی (IP)

برای کم کردنTTL:

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

روش جدید:

با آمدن ادمین مستقیم(direct amin)نسخه ۱٫۳۷٫۰کاربران میتوانند مقادیر TTLرا با استفاده از User Level -> DNS Management -> TTL (bottom)عوض کنند.


روش جهانی:

انی روش تنها در صورتی کار میکند که بصورت موقتی per-record ttl values را با تنظمیات dns_ttl=0 in the directadmin.confغیرفعال کنید و دایرکت مستقیم را ریستارت کنید و بعد از اتمام کار آنرا روشن کنید.به یادداشته باید این روش مقادیر تمام TTLهارا در تمامی مناطق یکسان میکند.همینطور TTL مورد نظر خود را در directadmin.confقرار کنید و ادمین مستقیم را ریستارت کنید.وقتی که مقادیر dns_ttl=0 و default_ttl=300را مشخص کردید کد زیر را وارد کنید:

cd /usr/local/directadmin
echo "action=rewrite&value=named" >> data/task.queue; ./dataskq d2000

بعد از اتمام کار میتوانید دوباره dns_ttl=1را مشخص کنید و default_ttl=14400را به حالت پیش فرض بیارید و ادمین مستقیم را ریستارت کنید.


روش قدیمی:

پی نوشت:این روش در صورتی که dns_ttl=1فعال باشد تاثیر نخواهد داشت,حتی اگر غیرفعال هم باشد,شما فقط میتوانید مقادیرdefault_ttl= valueدر directadmin.confرا مطابق خواسته خودتان تغییر دهید,وقتی ای پی یک دامین را تغییر میدهید,end userها ای پی دامین های قدیمی را در حافظه کش ISP’sخود برای زمان مشخصی  ذخیره خواهند داشت.مقدار پیش فرض ذخیره آن ۱۴۴۰۰ثانیه یا ۴ ساعت میباشد,به این معنیست که بعد از اینکه شما ای پی سرور را تغییر میدهید,در بدترین حالت,کاربران آخر برای ۴ ساعت از ای پی اشتباهی استفاده خواهند کرد قبل از اینکه حافظه کش آن ها منقضی شود و مقادیر ای پی به مقدار درست برسد.ساده ترین راه برای کم کردن ارور در TTL,ما TTLرا از ۱۴۴۰۰را به ۱۰۰ثانیه برای همه ی دامین های روی سرور شما تغییر میدهیم(فرض بر اینکه سرور حرکت کند)کد زیر را دنبال میکنیم:

cd /usr/local/directadmin/data/templates
perl -pi -e 's/14400/100/' named.db
echo "action=rewrite&value=named" >> /usr/local/directadmin/data/task.queue

دو دقیقه صبر کنید تا پردازش انجام شود و فایل های /var/named/*.dbخود را چک کنید,حالا TTLاز ۱۴۴۰۰باید تبدیل به ۱۰۰ ثانیه شده باشد.بعد از اتمام آن همین کار را دوباره در فرمان PERL انجام بدهید و مقادیر ۱۴۴۰۰را با ۱۰۰ عوض کنید.اگر شما از این روش فقط برای یک دامین استفاده میکنید در فرمان PERL /var/named/domain.com.dbرا قرار دهید,فایل named.dbرا قرار دهید و آن را ریستارت کنید.در هر دو شرایط شما باید حداقل ۴ساعت اینکار را انجام دهیدقبل از اینکه فایل های ذخیره شده کش شما در ای پی شما از ۱۴۴۰۰ثانیه به ۱۰۰ثانیه تعغیر کند,اسم سرور همانطور که شما کد هارا برای آن وارد کرده اید در صف میمیاند و اینبار بجای ۱۴۴۰۰ثانیه هر ۱۰۰ ثانیه خواهد بود,و به کاربر آخر سریعتر ای پی جدید را خواهد داد.


اضافه کردن سابقهSRV:

سوابق SRVراه های استانداردی را برای سرویس ها اراعه میدهند تا از مقادیر متفاوتی استفاده کنند و برای یک برنامه مشخص, تا تشخیص دهد آن اتصالات به چه روشی هستند.ما از گفته های ویکی پدیا در اینجا استفاده کرده ایم,با توجه به گفته ها,فرمت باید به همچین شکلی باشد:

_service._proto.name TTL class SRV priority weight port target

و ما از مثال آنها استفاده میکنیم:

_sip._tcp.example.com. 86400 IN SRV 0 5 5060 sipserver.example.com.

قسمت ذکر شده یعنی _sip._tcp.example.comبه داخل سمت چپ قرمز سابقه SRVدر ادمین مستقیم (DIRECT ADMIN)میرود,و بخش ۰ ۵ ۵۰۶۰ sipserver.example.com.به داخل سمت راست آبی میرود.(ادمین مستقیم به صورت خودکار TTL را برای شما مشخص میکند).قسمت قرمز رنگ کد شامل سرویس ها,اسم ها,پروتکل ها و با فاصله کارکترها را جدا کرده است.کد زیر یک مثال از توضیحاتیس که به شما دادیم:

service: _sip
protocol: _tcp
name: example.com.
priority: 0
weight: 5
port: 5060
target: sipserver.example.com.

به یاد داشته باشید که بخش “name”باید همیشه با مقادیر اسم آن منطقه یکسان باشد.به طول مثال مقادیر نوشته شده در پایین باهم برابراند و از هر دو میشود استفاده کرد:

_sip._tcp.example.com.
_sip._tcp

شکسته شدن سوابق به صورت TXTو چند خط شدنه آنها:

در فایل های TXT هر خط برای هر خودش محدودیتی را دارد,سیستم DNSبه شما قابلیت استفاده از چند خطی برای سوابق را میدهد,ما از قابلیت چند خطی استفاده میکنیم زیرا DKIM keysبه اجازه استفاده از خط های بلند را نمیدهد.

به طور مثال فایل سابقه ی DKIM TXTکه ما برای directadmin.comاستفاده میکنیم در فایل dbهمچین متنی است:

x._domainkey 14400 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApxJI+ldB/P7ocCsU4MjgC0iK+sIQ2g1Ft1RG3LuqquzaY8dmK+SsLVQi8uuo8t7DzAhsAGcHgHNOi189twbtQEz"
"۴R3KOLhESd3xGUYP0FTvyejDOaAeZzvjCzI6oj42Y0pNDRrmuOgAd61qJy46+smfKc+QrI4E1DGHnjrlXzrsBK73DMqX9JuD9oGRaXDghakGdAebBjNcRsZfjIv84DPmrHE9/nqacqUnpK8Z71jAEc"
"nklPIfC6LNmrWPzG7+6fN+LbAAUSjvXGw0GpB6EkhRsrcSwilE+vPe+S42aE4dBCvAbLjcZgJIA/gVqnNlm8jfL8qshXpQjIUObfd+o4wIDAQAB" )

و پیش نمایس خروجی از dnsهمچین حالتی خواهد داشت:

[root@jbmc-software public_html]# dig TXT x._domainkey.directadmin.com +short
"v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApxJI+ldB/P7ocCsU4MjgC0iK+sIQ2g1Ft1RG3LuqquzaY8dmK+SsLVQi8uuo8t7DzAhsAGcHgHNOi189twbtQEz" "4R3KOLhESd3xGUYP0FTvyejDOaAeZzvjCzI6oj42Y0pNDRrmuOgAd61qJy46+smfKc+QrI4E1DGHnjrlXzrsBK73DMqX9JuD9oGRaXDghakGdAebBjNcRsZfjIv84DPmrHE9/nqacqUnpK8Z71jAEc" "nklPIfC6LNmrWPzG7+6fN+LbAAUSjvXGw0GpB6EkhRsrcSwilE+vPe+S42aE4dBCvAbLjcZgJIA/gVqnNlm8jfL8qshXpQjIUObfd+o4wIDAQAB"
[root@jbmc-software public_html]#

اگر یک برنامه در حال چک کردن سابقه اینگونه مقادیر باشد,به خود برنامه مربوط میشود که به چه حالت متن ها را نمایش دهد و آن ها را کنار هم بچیند,به طور مثال eximاز خط های منظم استفاده میکند و آنرا مرتب برای شما میچیند.


حذف دسته جمعی یک سابقه NSاز تمامی منطقه ها با استفاده از perl:

اگر شما هم میخواهید سابقه های NS را از تمامی مناطق خود حذف کنید,PERLمیتواند برای شما مفید باشد,فرض میکنیم شما میخواهید مقدار ns1.domain.comرا از تمامی سابقه های NSخود در تمامی مناطق پاک کنید:

۱)در مرحله اول برای جلوگیری از بروز مشکلات احتمالی یک نسخه پشتیبان از تمامی مناطق خود تهیه کنید:

cd /var/named
tar cvzf /root/dns_backup.tar.gz *

۲)سپس کد زیر را اجرا کنید:

perl -pi -e 's#^.*NS\s+ns2\.domain\.com\.\n##' *.db

سعی کنید قبل از وارد کردن کد ها به آنها دقت کنید که اشتباهی وارد نشده باشد.

۳)در آخر نیاز دارید که تمامی سریال های در مناطق خود را بروزرسانی کنید,کد زیر را وارد کنید:

perl -pi -e 's#^.*NS\s+ns2\.domain\.com\.\n##' *.db

پی نوشت:یک منطقه باید حداقل یک سابقه NSرا داشته باشد,در غیر اینصورت کد ها بارگذاری نمیشود.

برای مطمعن شدن از عمل کردن کد یکی از منطقه هارا به صورت تصادفی چک کرده.

حذف شدن ایمیل ورودی به صورت خودکار در سرور

حذف شدن ایمیل ورودی به صورت خودکار در سرور


 

حذف کردن ایمیل

بهترین و سریعترین راه برای حذف شدن ایمیل های ارسالی به شما,فرستادن آن به سیاه چاله یا انتقال دادن آن است به طریق زیر:

:blackhole:

یا از

:fail:

هم میتوانید استفاده کنید.با کد اول پیام هایی که به شما ارسال میشوند به دست شما میرسند ولی ذخیره نخواهند شد, ولی در کد دوم  یک متن”پیام با موفقیت ارسال نشد”برای ارسال کننده نشان داده میشود.این کد ها برروی همه اکانت های شما کاربرد خواهند داشت.


کنترل کردن ایمیل اکانت های دامین پوینتر(domain pointer)

دامین پوینتر ها به شکلی طراحی شده اند که دقیقا مشابه دامینی باشد که زیر آنها ساخته شده اند,به همین دلیل نمیتوان مناطق زیادی از ان را تغییر داد.هر چند اگر شما میخواهید اطلاعات وبسایتی همانند دامین اصلی خود داشته باشد ولی قادر به دستکاری اکانت ایمیل های آن باشید,میتونید با ساخت domainpointer.comبه عنوان اسم کامل دامین و استفاده از لینک های نشانه ای اطلاعات سایت را به سایت اصلی وصل کنید.

۱)اگر Domain Pointerوجود دارد آنرا حذف کنید.

۲)یک Domain Pointerبه عنوان دامین کامل بسازید:- User Level -> Domain Setup -> Add Another Domain -> domain=domainpointer.com

۳)وصل کردن اطلاعات Root متعلق به domainpointer.comو وصل کردن آن به دامین اصلی یاهمان maindomain.com:

Admin Level -> Custom Httpd Config -> domainpointer.com

اضافه کردن کد کاستوم توکن(custome token):

*if SSL_TEMPLATE="1"|
|?DOCROOT=`HOME`/domains/maindomain.com/private_html|
|*else|
|?DOCROOT=`HOME`/domains/maindomain.com/public_html|
|*endif|

و برروی ذخیره کلیک کنید یا اینکه از روش دیگری اقدام کنید:

وصل کردن مسیر اطلاعات دامین کامل به کاربر username که نیازمند SSH خواهد بود:

cd /home/username/domains/domainpointer.com/
mv public_html public_html.old
ln -s ../maindomain.com/public_html ./public_html
mv private_html private_html.old
ln -s ../maindomain.com/private_html ./private_html
chown -h username:username public_html private_html

اگر تمامی مسیر هارا به درستی رفته باشید,هیچ اطلاعاتی نباید در مسیر public_htmlو private_htmlوجود داشته باشد و میتوانید این دو مسیر بی استفاده را حذف کرده.حالا کاملا جدا از دامین اصلی میتوانید ایمیل اکانت برای domainpointer.comبسازید.یکی از اثرات مفید استفاده از این روش این است که برای هر pointerمیتوانید,گواهی SSLآنها را کنترل کنید.


ساخت لیستی از تمامی اکانت ایمیل ها در سرور:

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

#!/bin/sh
cd /etc/virtual
for d in `cat domains`; do
{
if [ ! -s $d/passwd ]; then
continue;
fi
for u in `cat $d/passwd | cut -d: -f1`; do
{
echo $u@$d
};
done;
};
done;
exit 0;

به یاد داشته باشید این روش تمامی ایمیل های مجازی اکانت شمارا خروجی میکند.همچنین با اینکار ۱اکانت سیستمی برای هر کاربر وجود خواهد داشت,که با فایل های /etc/virtual/domainownersقابل برداشتن خواهد بود.


ذخیره کردن اطلاعات ایمیل بر روی پارتیشن متفاوت:

در حالت پیش فرض اطلاعات Maildirشما در مسیر زیر ذخیره شده اند:

  • /home/fred/imap/domain.com/user/Maildir
  • /home/fred/Maildir

در اینجا عبارت fredاسم اکانت سیستم میباشد.ذخیره کردن اطلاعات برروی دیگر پارتیشن ها مزایا خاص خود را دارد از قبیل:

  • میتوان از دیسک های کوچکتر و سریعتر استفاده کرد با عملکرد I/Oبهتری,برای ایمیل های iopsبالاتر نیاز است.
  • همچنین در دیسک وبسایت فضای بیشتری را فراهم میکند و سرعت پردازش وبسایت را بالاتر میبرد.
  • از پاک شدن اتفاقی اطلاعات ایمیل توسط خودتان جلوگیری میکند.

برای اینکار ما از تنظیمات Custom Mail Partitionکه متعلق به دایرکت ادمین است استفاده میکنیم,که به ما اجازه میدهد برخی اطلاعات مانند مسیر ها و مکان ذخیره ایمیل ها را شخصی سازی کنیم,به طور مثال مسیر( /home, eg: /email/fred/Maildir)را عوض کنیم.

۱)در مرحله اول فرض میکنیم که شما پارتیشن جدیدی برای ایمیل های خود را با استفاده از /etc/fstab نصب کرده اید و اماده اید که با ان کار کنید,در ابتدا باید به دایرکت ادمین در این مورد اطلاع بدین,کد زیر را وارد کنید:

cd /usr/local/directadmin
./directadmin set mail_partition /email
service directadmin restart

۲)مرحله دوم الزامی نیست:

یک شبیه ساز مکالمه را بین خودتان و ادمین مستقیم اجرا کنید تا ببنیداو برای شما چه چیزی را اجرا میکند,اگر که سوالی داشتید کد زیر را اجرا کنید:

cd /usr/local/directadmin
echo 'action=convert&value=mail_partition&simulate=yes' > data/task.queue.cb; ./dataskq d200 --custombuild

در قدم بعدی آنرا تبدیل میکنید.

۳)تبدیل:

cd /usr/local/directadmin
echo 'action=convert&value=mail_partition' > data/task.queue.cb; ./dataskq d200 --custombuild

۴)اگر به مشکلی برخوردید و خواستید که انرا دوباره اجرا کنید ولی فقط میخواهید آنرا چک کنید و فایل هایی که کپی نشده اند را دوباره کپی کنید برای مسیر,کافیست که یک کلمه yes را به تنظیمات مکالمه اضافه کنید.

cd /usr/local/directadmin
echo 'action=convert&value=mail_partition&quick=yes' > data/task.queue.cb; ./dataskq d200 --custombuild

۵)حالا که اطلاعات و مقادیر به درستی جای گذاری شده است,باید مثل گذشته بتوانید به ایمیل اکانت خود وارد شوید.فایل های قدیمی هنوز وجود دارند(درواقع اتفاقی شبیه به یک مسابقه برای کپی کردن برای آنها اتفاق افتاده است,و پیام های جدید دوبار کپی نخواهند شد)

۶)با جدا کردن اطلاعات ایمیل بر روی هارددیسک کاملا جدا,شما نیاز دارید که ادمین مستقیم هم در مصرف کاربرتان باشد,برای اطلاع دادن به ادمین مستقیم از پارتیشن جدید,کد زیر را وارد کنید:

/usr/local/directadmin/directadmin set ext_quota_partitions /email
service directadmin restart

نکته:اگر شما چند پارتیشن جدا دارید(به طور مثال:home2)کد دستوری کمی متفاوت و به این شکل میشود:/directadmin set ext_quota_partitions ‘/home2,/email’

و پس از آن به ادمین مستقیم اجازه دهید تا مقادیر رار برای شما تنظیم کند:

cd /usr/local/directadmin
echo 'action=rewrite&value=quota' > data/task.queue.cb; ./dataskq d2000 --custombuild
قرار گذاشتن DAبا گواهیSSL

قرار گذاشتن DAبا گواهیSSL

شما میتوانید به حالت ادمین مستقیم یا (direct admin)تغییر داده تا بتوانید از ssl بجای متن های ساده استفاده کنید و گواهی دلخواه را بسازید.

به یاد داشه باشید این اموزش برای ادمین مستقیم بر روی پورت ۲۲۲۲ هست و نه برای اپاچی.

ساختن یک گواهی دست ساز:

اگر که شما گواهی مختص به خودتان را ندارید میتوانید وارد کردن کدهایی که ما به شما میدهیم را شروع کنید.

/usr/bin/openssl req -x509 -sha256 -newkey rsa:4096 -keyout /usr/local/directadmin/conf/cakey.pem -out /usr/local/directadmin/conf/cacert.pem -days 9000 -nodes
chown diradmin:diradmin /usr/local/directadmin/conf/cakey.pem
chmod 400 /usr/local/directadmin/conf/cakey.pem

وارد کردن یک گواهی خریداری شده:

اگر که شما از قبل شماره کلید گواهی خریداری شده را دارید آن را به فایل های زیر انتقال دهید:

certificate: /usr/local/directadmin/conf/cacert.pem
key: /usr/local/directadmin/conf/cakey.pem

/usr/local/directadmin/conf/directadmin.confرا ویرایش کنید و ssl را بر روی ۱ قرار دهید,در حالت پیش فرض sslبر روی ۰ تنظیم شده است.این فرمان به ادمین مستقیم شما میگوید که گواهی را بارگزاری کند و به کلید فرمان میدهد تا از اتصال ssl استفاده کند.اطمینان حاصل کنید directadmin.confشما مقادیر را درست وارد کرده باشد.

cacert=/usr/local/directadmin/conf/cacert.pem
cakey=/usr/local/directadmin/conf/cakey.pem

اما در صورت نیاز میتوان آنهارا تغییر داد.ادمین مستقیم ها بعد از هر تغیری کوچکی درdirectadmin.conf. نیاز دارد که ریستارت شوند,اگر که شما گواهی CA Root Certificateرا دارید با وارد کردن کد زیر میتوانید آنهارا هم اضافه کنید.

carootcert=/usr/local/directadmin/conf/carootcert.pem

استفاده از ابزار رایگان Lets encryptبرای امن کردن ۲۲۲۲:

مثل ادمین مستقیم ۱٫۵۰٫۰ما قابلیتی اضاف کردیم که به شما اجازه میدهد,با استفاده از آن گواهی ssl دریافت کنید.

۱)در قدم اول lets encrypt را در سیستمتان فعال کنید.

۲)و بعد گواهی برنامه را برای host name خود تنظیم کنید.


ساختن گواهی اشتراک گذاشته شده سرور:

کدی که برای شما قرار میدهیم یک گواهی به شاتراک گذاشته سرور را به شما خواهد داد.

/usr/bin/openssl req -sha256 -x509 -newkey rsa:4096 -keyout /etc/httpd/conf/ssl.key/server.key -out /etc/httpd/conf/ssl.crt/server.crt -days 9000 -nodes

همچنین شما میتوانید برای انجام این کار از ادمین مستقیم هم استفاده کنید:برای این کار به عنوان ادمین وارد شوید,بر روی سطع کاربر کلیک کنید,از دامین که زیر ادمین بوجود اومده استفاده کنید (اگر دامین وجود ندارد اهمیتی ندارد میتوانیدتقلبی آنرا بسازید و استفاده کنید)

به گواهی ssl رفته,با این فرض که ادمین استفاده از سرور را تعیین میکند و گواهی که خودمان طراحی کرده ایم server.crtو فایل های server.keyرا میسازد.در ضمن اگر شما گواهی را میسازید,مراقبت باشید چون در حالی که شما اینکار را انجام میدهید یک درخواست گواهی و keyثبت خواهد شد,در حین این پردازش کلید ها ذخیره نمیماند(بجز برای ادمین ها بر روی ای پی سرور),پس فراموش نکنید که حتمن در جایی امن گواهی ها و کلید هارا ذخیر داشته باشید.


روش ساختن /etc/exim.cert and /etc/exim.key:

اگر که میخواهید exim.certجدیدی بسازید یا فایل های exim.key کد زیر را وارد کنید:

/usr/bin/openssl req -x509 -sha256 -days 9000 -nodes -newkey rsa:4096 -keyout /etc/exim.key -out /etc/exim.cert

و جواب تمام سوالات را به مقادیر و اطلاعاتی که میخواهید گواهی داشته باشد میتوانید پر کنید و پس از اتمام کارتان کد بعدی را وارد کنید:

chown mail:mail /etc/exim.key
chmod 644 /etc/exim.key
chmod 644 /etc/exim.cert
/etc/init.d/exim restart

پیام های خطاهای مربوطه در /var/log/exim/mainlog:

(SSL_CTX_use_PrivateKey_file file=/etc/exim.key): error:0200100D:system library:fopen:Permission denied

به یاد داشته باشید که /etc/proftpd.confهم از انها استفاده میکنند.


گواهی SSLبا dovecot

به صورت پیش فرض /etc/dovecot/dovecot.confازفایل های exim cert/keyاستفاده میکند.

/etc/exim.cert
/etc/exim.key

اینجا جاییست که باید فایل ها را قرار دهید.همچنین Dovecot از گواهی ای پی ها پشتیبانی میکن,در صورتی که به چندین گواهی از dovecotاحتیاج  داشتید./etc/dovecot/dovecot.conf additions:

local_name 1.2.3.4 {
ssl_cert = </etc/ssl/certs/imap.example.org.crt
ssl_key = </etc/ssl/private/imap.example.org.key
}
local_name 1.2.3.5 {
ssl_cert = </etc/ssl/certs/imap.example2.org.crt
ssl_key = </etc/ssl/private/imap.example2.org.key
}

مسیر ها و مقادیر هارا هر طور که میخواهید مشخص کنید.مطمع شوید که گواهی ها و کلید ها از طریق “mail”.قابل خواندن هستند.سرور های جدید تر و mailهای جدید تر ممکن است از SNI پشتیبانی کنند(که البته ما به شما پیشنهاد نمیکنیم)در برخی شما میتوانید ipsهای را به جای مقادیر local name قرار دهید بوسیله مقادیر واقعی “imap.domain.com”,اما به عنوان کاربر باید دقیقا از همان مقادیر استفاده کرد تا اثر گذار باشند.


گواهی های سطح بالا:

اگر که شما گواهی CA Root را دارید میتوانید خط زیر را در /etc/dovecot/dovecot.conf.خود جاگذاری کنید:

/etc/exim.cacert

و دیگر نیازی به اضافه کردن :

ssl_ca = </etc/exim.cacert

ندارید.همچنین ممکن از بخواهید با “chattr +i dovecot.conf” بخش dovecot.confخود را قفل گنید تا از هشدار فرستادن کاستوم بیلد جلوگیری کنید.

بروزرسانی:اگر شما به سادگی باندل caرا در /etc/exim.certقرار دهید,دقیقا در زیر گواهی اصلی,dovecotآنرا به درستی میخواند.با اینجام اینکار در eximو یا dovecotشما را از نوشتن و تغییر دادن در فایل های exim.confو dovecot.conf راحت میکند.


مشکل کار نکردن SSHبعد از نصب با اکانت های قدیمی:

تمامی اکانت های SSHکه بااستفاده از ادمین مستقیم (direct admin)ساخته شده اند,تنظیمات AllowUsersرا به فایل های /etc/ssh/sshd_configاضافه میکنند.زمانی که شما ادمین مستقیم را نصب میکنید,گزینه “root” و ”admin”را در بخش تنیمات AllowUsersاضافه میکند.تمامی کاربرانی که اکانت SSHرا در سیستم خود داشتند,نیاز دارند که فایل ها را اضافه کنند تا دسترسی به سرور با SSHبرای انها ممکن بشود.


نحوه راه اندازی Mail system:

مشکل رایجی که همه با ان روبرو میشوند راه اندازی اشتباه mail systemاست.در اینجا ما لیستی از قواعد و قانون هایی که باعث با آنها توجه شود را قرار داده ایم:

۱)نام های هاست(host name) و دامین ها (domain)که در حال استفاده هستند باید متفاوت باشد.به طور مثال اگر دامینی به اسم domain.comدارید و میخواهید ایمیلی بر روی اکانت user@domain.comدریافت کنید,نباید نام هاست خود را domain.comقرار دهید.ما به شما پیشنهاد میکنیم در عوض از server.domain.com استفاده کنید.برای حل این مشکل مطمعن شوید سابقه ای برای server.domain.comقرار دهید.

۲)نام هاست شما باید در فایل های /etc/virtual/domainsباشد.

۳)نام هاست شما نباید در بین فایل های /etc/virtual/domainownersباشد.

۴)نام هاست شما باید انرا حل کند,اگر که اینکار را نکرد میتواند با اضافه کردن سابقه به منطقه dnsخود مشکل را حل کنید.

۵)دو مسیر /etc/virtual/hostnameو /etc/virtual/server.domain.comباید وجود داشته باشند و هیچ فایلی در آنها وجود نداشته باشد.

۶)هر دامینی را که میخواهید برای ایمیل استفاده کنید(برای مثال:domain.com) باید در هر دو مسیر /etc/virtual/domains file and the /etc/virtual/domainowners fileوجود داشته باشند و فایل آنها هم همینطور.مسیر /etc/virtual/domain.comباید وجود داشته باشد و همینطور فایل /etc/virtual/domain.comباید وجود داشته باشد.

۷)دسترسی فایل ها برای جعبه دریافت های مجازی و بالا امدن آنها به کد زیر نیاز دارد:

/var/spool/virtual/domain.com 770 username:mail
/var/spool/virtual/domain.com/* 660 username:mail

۸)مطمعن شوید اسم هاست شما تماما با حروف کوچک نوشته شده است.

۹)مطمعن شوید که سرور اصلی شما یک پشتیبانی وارونه دارد.

امنیت سرور مجازی و اختصاصی لینوکس (بخش اول )

امنیت سرور مجازی و اختصاصی لینوکس (بخش اول )

 امنیت سرور مجازی و اختصاصی لینوکس

امنیت سرور مجازی

 

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

Read More »

انواع Rich Snippets

انواع Rich Snippets

انواع Rich Snippets

همانگونه که پیشتر در مورد Rich Snippets توضیح داده شد این یکی از جدیدترین قابلیت هایی می باشد که گوگل در اختیار وب مستر ها قرار داده است تا با استفاده از آن کاربر قبل از وارد سشدن به سایت مختصری از محتوای سایت مطلع گردد. اما Rich Snippets خود نیز در انواع مختلف می باشد. در این بخش از آموزش به بررسی تعاریفی از انواع Rich Snippets پرداخته شده است. امید است این مطلب در ارتقاء کیفیت سایت شما تاثیری مطلوب داشته باشد. لطفا تا پایان مطلب با ما همراه باشید… Read More »