解决Directadmin控制面板 磁盘使用状况不准确

总共几个步骤,确认directadmin的”磁盘使用情况”保持正常

1) 检查/etc/cron.d/directadmin_cron
文件是否包含
10 0 * * * root echo ‘action=tally&value=all’ >> /usr/local/directadmin/data/task.queue

2) /usr/sbin/repquota /home
如果没有分出/home这个分区的,就应该是/usr/sbin/repquota /

3) 重新检查磁盘配额
/sbin/quotaoff -a; /sbin/quotacheck -avugm; /sbin/quotaon -a;

4) 检查/etc/fstab的/home或者/ 是否有usrquota,grpquota

5) 如果repquota返回的值不完整,运行
echo “action=tally&value=all” >> /usr/local/directadmin/data/task.queue

6) 确认 quota_partition=/ 或者quota_partition=/home
在directadmin.conf里

cd /usr/local/directadmin
./directadmin c | grep quota_partition

7) 检查/home目录下的tmp文件夹已存在,没有的话就创建它
ls -lad /home/tmp
chmod 1777 /home/tmp

8) /usr/local/directadmin/dataskq d2000

至此,directadmin的磁盘配额恢复正常.

perl_reverse_sort_scalar

学习perl的reverse,sort,scalar,记录一下。

  1. [root@OTRS perl]# more reverse_sort_scalar.pl      
  2. #!/usr/bin/perl -w
  3. use strict;
  4. #reverse
  5. my @array_reverse = 1..3;
  6. my @array_ed = reverse(@array_reverse);
  7. print "数组的值为1 2 3,reverse反转数组的值为: ","@array_ed\n";
  8. #sort
  9. my @array_sort = qw/c b a/;
  10. my @sorted = sort@array_sort;
  11. print "数组的值为c b a,sort排序后为: ","@sorted\n";
  12. #scalar强制指定标量上下文。
  13. my @array_scalar = qw/a b c/;
  14. print "数组的值为abc,scalar指出数组的个数为:",scalar@array_scalar,"\n";
  15. [root@OTRS perl]# perl reverse_sort_scalar.pl
  16. 数组的值为1 2 3,reverse反转数组的值为: 3 2 1
  17. 数组的值为c b a,sort排序后为: a b c
  18. 数组的值为abc,scalar指出数组的个数为:3

perl_pop_push_shift_unshift

perl的pop跟push操作数组的最右边,shift跟unshift操作数组的最左边
学习记录一下

  1. #!/usr/bin/perl -w
  2. use strict;
  3. print '@a @b @c @d 的值都为1 2 3',"\n";
  4. my @a = (1..3);
  5. pop(@a);
  6. print "\@a的值为@a,pop拿掉数组最右边的值\n";
  7. my @b = (1..3);
  8. push(@b,'4');
  9. print "\@b的值为@b,push添加一个值到数组的最右边。\n";
  10. my @c = (1..3);
  11. shift@c;
  12. print "\@c的值为@c,shift拿掉数组最左边的一个值。\n";
  13. my @d = (1..3);
  14. unshift(@d,0);
  15. print "\@d的值为@d,unshift添加一个值到数组的最左边。\n";
  16.  
  17.  
  18. [root@OTRS perl]# perl pop_push_shift_unshift.pl
  19. @a @b @c @d 的值都为1 2 3
  20. @a的值为1 2,pop拿掉数组最右边的值
  21. @b的值为1 2 3 4,push添加一个值到数组的最右边。
  22. @c的值为2 3,shift拿掉数组最左边的一个值。
  23. @d的值为0 1 2 3,unshift添加一个值到数组的最左边。

复制两台Directadmin之间的reseller packages

Directadmin控制面板上定制的包有好几个,一个个输入很麻烦
复制旧的packages信息到新机器上,就不用一个一个添加了。

  1. 旧的服务器上执行
  2. cd /usr/local/directadmin/data/users/Your_Reseller_Name/packages
  3. tar zcf packages.tar.gz * #打包压缩
  4. ftp将压缩包上传到新的服务器上
  5. 路径一样是
  6. /usr/local/directadmin/data/users/Your_Reseller_Name/packages
  7. 解压后 chown diradmin:diradmin *.pkg
  8. 然后cd ../ 到上一层目录
  9. 把旧服务器上的packages.list里面的文字复制到新机器上
  10. 就完成了产品类型的复制
  11. ( *.pkgpackages.list 都确保是diradmin:diradmin,否则会报错)

centos安装Directadmin及安全配置

安装DA控制面板的步骤及相关安全设置与apache的优化,记录一下。

1 ) 最小化安装系统,并且不要带有httpd mysqld等服务

系统要求 http://www.directadmin.com/install.html

2 ) 分区,以500G硬盘为例:

  1. /boot 100M
  2. swap 内存x2的大小
  3. /tmp 5G
  4. / 20G
  5. /var 50G
  6. /usr 20G
  7. /home #剩下的空间全给home

3 ) 准备好User ID跟License ID和hostname

  1. wget http://www.directadmin.com/setup.sh
  2. chmod 755 setup.sh
  3. ./setup.sh
  4. 输入User IDLicense IDhostname之后开始安装。
  5.  
  6. http://www.directadmin.com/installguide.html

4 ) 优化及安全设置

  1. 修改 /etc/fstab
  2. 修改/tmp为值为rw,nosuid,noexec
  3. 添加/home的值nosuid
  4. 修改tmpfs的值为rw,noexec,nosuid
  5. mv /var/tmp /var/tmp_bak #移动/var/tmp目录
  6. ln -s /tmp /var/tmp

设置php.ini的disable_function,执行:

  1. cd /usr/local/directadmin/custombuild
  2. ./build update
  3. ./build secure_php
  4. ./build update
  5. ./build all d

指定mysql监听在127.0.0.1
相信现在应该没有单卖数据库的人了吧
修改 /etc/my.conf
bind-address = 127.0.0.1

安装防火墙
csf 或者手动安装apf+bfd
http://www.configserver.com/cp/csf.html

禁止apache组里的用户调用perl

  1. chgrp apache /usr/bin/perl
  2. chmod 705 /usr/bin/perl

优化apache

  1. #!/bin/bash
  2. echo -e "KeepAlive On\nMaxKeepAliveRequests 120\nKeepAliveTimeout 15\n" >> /etc/httpd/conf/httpd.conf
  3. echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
  4. echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
  5. echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
  6. echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
  7. echo 8069 > /proc/sys/net/core/netdev_max_backlog
  8. /sbin/sysctl -p > /dev/null 2>&1 && /sbin/service httpd restart