مشکلات رایج 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تعغییر بدهید.