DirectAdmin 添加一个域名提示已经存在
一、登入 DirectAdmin 管理员,查找域知否已经存在
二、查看/etc/named.conf文件是否已经存在该域名
来源:http://help.directadmin.com/item.php?id=28
一、登入 DirectAdmin 管理员,查找域知否已经存在
二、查看/etc/named.conf文件是否已经存在该域名
来源:http://help.directadmin.com/item.php?id=28
最近发现有台DA机器的Apache总是自动重启,每次大概1-3分钟,检查apache日记、tcp和80端口连接后发现是挂QQ的程序导致的,接下来扫描用户php文件就好了
screen -S scan find /home/* -type f -name "*.php" |xargs grep "pt.3g.qq.com" > scan.txt
现在挂QQ程序一般是用手机网页QQ,关键词是 pt.3g.qq.com ,扫描完成后会保存在 scan.txt 文件中
从DA 1.24版本开始,就有了这项功能,可以使用DirectAdmin创建自己的服务监控。可以将自己的服务名称加入/usr/local/directadmin/data/admin/services.status页面,DirectAdmin的dataskq会一直保持该服务的监测。
在services.status其中添加:
servicename=ON
或者:
servicename=OFF
如果服务名称在此列表中,ON表示dataskq会监测这个服务,OFF则意味着不会监测,和其他的功能类似,如果你在DirectAdmin面板中点击“停止”按钮,DirectAdmin也会将上面的值设置为OFF。
除此之外,下面的代码依旧有用,可以用它来自定义需要监测监控的服务。
很多的管理员会在Linux系统上运行很多的软件,DirectAdmin不会核对和监控他们,来确保它们一直运行,下面的脚本会让管理员能够监测 程序的运行状况,作为一个例子,我们在这里监测一个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.nn" | /usr/sbin/exim your@email.com fi fi exit 0;
将这段脚本改为自己的脚本之后,用chmod命令将其权限改为755,然后设置一个定时的脚本来检测这个脚本是否运行即可,DirectAdmin将会每分钟检测一次程序的运行状况,但是,脚本不能在程序挂掉之后确定是否发了邮件,所以如果你的程序一直挂在那里,那么你的邮箱估计会在每一分钟就收到一封警告邮件,所以监控的时间间隔设置为5到10分钟就足够了。
参考:http://www.defel.net/create-your-own-service-monitoring-with-directadmin.html
select user,host,password from mysql.user;
增加 Pure-FTPD 的支持
unified_ftp_password_file 选项必须为 1 和所有 passwords 要转换:
参考:http://www.directadmin.com/features.php?id=1134
pureftp=1
该选项也要设置为 1.
After any change to the /etc/proftpd.passwd file, DA will add a task.queue entry:
action=rewrite&value=pureftp_db
and the dataskq will call:
/usr/bin/pure-pw mkdb /etc/pureftpd.pdb -f /etc/proftpd.passwd
安装方式:
使用custombuild安装:
cd /usr/local/directadmin/custombuild ./build set proftpd no ./build set pureftpd yes ./build pureftpd
请记住,这是在测试阶段,可能会发生错误。
如果你发现proftpd仍然在运行,运行以下命令
chkconfig proftpd off service proftpd stop
需要提醒,Pure-FTPD可能会面临被爆破扫描的危险,DA目前无法屏蔽Pure-FTPD穷举的IP,CSF也是。
如果需要转换回来,在安装方式那替换下开启proftpd,关闭pureftpd,然后编译proftpd。
参考:http://www.directadmin.com/features.php?id=1143
比方你现在运行PHP 5.2.11,希望降级/升级到5.2.2。你可以通过编辑versions.txt文件来实现。
cd /usr/local/directadmin/custombuild ./build set autover no vi versions.txt
在文件中查找这两行
php5:5.2.11:0223d71f0d6987c06c54b7557ff47f1d php5-mail:5.2.11:85a62ef3d069403c29604730e02da9c8
替换为
php5:5.2.2: php5-mail:5.2.2:
保存文件退出,输入以下命令
./build update_data ./build php n
下载地址:http://www.custombuild.eu/plugin/custombuild.tar.gz
登入 DirectAdmin 管理员,插件管理,增加插件,输入下载地址以及DA管理员密码,点击安装。
完成后登入SSH执行以下命令
cd /usr/local/directadmin wget -O custombuild.tar.gz http://files1.directadmin.com/services/custombuild/2.0/custombuild.tar.gz tar xvzf custombuild.tar.gz cd custombuild ./build
登入DA控制面板,进入CustomBuild配置。首次需要进入SSH执行以下命令:
cd /usr/local/directadmin cd custombuild ./build all d
更多详细介绍以及注意事项:
http://forum.directadmin.com/showthread.php?t=44743
http://forum.directadmin.com/showthread.php?t=48989
2015年1月13日更新!
在DirectAdmin管理员面板的Brute Force Monitor(穷举监视器)里,我们可以看到proftpd、sshd、exim等一直被暴力猜解,系统消息一封又一封的发过来遭到暴力猜解成百上千次都是同一个IP的行为,这是非常危险的,但我们不可能时刻关注消息手动一个一个的去封锁。我们可以结合CSF来实现自动封锁穷举IP!
cd /usr/local/directadmin/scripts/custom/ cp block_ip.sh block_ip.sh.bak cp unblock_ip.sh unblock_ip.sh.bak
如果你没有 block_ip.sh 和 unblock_ip.sh 文件,会提示如下警告:
cp: cannot stat `block_ip.sh': No such file or directory cp: cannot stat `unblock_ip.sh': No such file or directory
现在获取文件:
cd /usr/local/directadmin/scripts/custom/ wget -O block_ip.sh http://files.plugins-da.net/dl/csf_block_ip.sh.txt wget -O unblock_ip.sh http://files.plugins-da.net/dl/csf_unblock_ip.sh.txt wget -O show_blocked_ips.sh http://files.plugins-da.net/dl/csf_show_blocked_ips.sh.txt chmod 700 block_ip.sh show_blocked_ips.sh unblock_ip.sh
创建白名单和黑名单文件
touch /root/blocked_ips.txt touch /root/exempt_ips.txt
这时候你已经可以从 Brute Force Monitor 里手动选择IP地址禁止,但不会自动封锁。如果你想自动封锁,安装以下脚本
cd /usr/local/directadmin/scripts/custom wget -O brute_force_notice_ip.sh http://files.directadmin.com/services/all/brute_force_notice_ip.sh chmod 700 brute_force_notice_ip.sh
如果没有意外,这时候应该可以自动封锁穷举IP了。
要備份 MySQL 資料庫主要分為兩個方法,
一是將資料庫目錄完整備份
二是使用 MySQL 內建的 mysqldump 程式。
備份資料庫目錄
MySQL 預設的儲存目錄在 /var/lib/mysql 內容,底下會有以資料庫名稱的目錄,例如 mydb 目錄便應該是 mydb 資料庫的資料。
如果 MySQL 正在運行,請先停止 MySQL,原因是可能會有資料未完全寫入,而 MySQL 會 lock 在使用中的 DB 檔案。
/etc/rc.d/init.d/mysqld stop cd /var/lib/mysql/ tar zxcf mydb_backup.tgz mydb /etc/rc.d/init.d/mysqld start
以上指令會先停止 MySQL,然後把 mydb 資料庫製作一個 taz 檔的備份,並儲存到 mydb_backup.tgz。
在使用以上指令時,請根據個別系統的設定作出修改。
好了,以上就麼 3 句指令就完成備份了,如果不幸的事情發生了,資料庫發生錯誤而要復原資料,可使用以下指令:
/etc/rc.d/init.d/mysqld stop cd /var/lib/mysql/ mv mydb mydb_error tar zxvf mydb_backup.tgz /etc/rc.d/init.d/mysqld start #以上指令是先把 /var/lib/mysql/mydb 移到 /var/lib/mysql/mydb_error,然後將原先製作的備份檔解壓到 /var/lib/mysql/mydb。
mysqldump
雖然以上方法十分簡單,但有一個問題存在,那就是在備份及復原時均需停止 MySQL 的運作,這樣對於實際應用十分不便。再者,這樣備份出來的檔案,如果在相同版本的 MySQL Server 應該沒有問題,但移到版本不同的 Server 則不一定可以成功復原。
因為有以上的問題,MySQL 已經內建了備份工具,它就是 mysqldump。
mysqldump 的備份方法是將資料庫內的每個資料表結構及每筆資料產生 SQL 語句,然後存到文字檔。而且它可以自訂每一個資料表一個檔案,以及將資料表結構及資料分開儲存,以下是使用例子:
mysqldump --user=root -p mydb > /backup/mydb.sql
以上指令會使用 mysqldump 將 mydb 備份到 /backup/mydb.sql,在輸入指令後,需要輸入 MySQL 的 root 密碼。
至於復原資料同樣簡單,只要一句指令便完成:
mysqldump --user=root -p mydb < /backup/mydb.sql
以上指令會將 /backup/mydb.sql 備份檔復原到 mydb 裡面。如果你的 MySQL Server 不止一個資料庫,希望可以一次過將所有資料庫備份起來,可以寫一個簡單的 shell script 完成,又或者使用以下指令:
mysqldump --user=root -p --all-databases > /backup/mysql.sql
這個 –all-databases 代表所有資料庫,這樣 mysqldump 便會將所有資料庫備份到 /backup/mysql.sql。
2015年8月16日更新
如果还原单个数据库出现问题,可以进入mysql进行还原
mysql -hlocalhost -u用户名 -p密码 进入mysql create database test; use test; source /root/test.sql
====================================================
歡迎轉載,但轉載時請保留此宣告,不得作為商業用途
作者: Sam Tang
來源網站: http://www.phpdc.com/
DirectAdmin 主机开通后有个临时访问地址:http://ServerIP/~username/
如果安装了suPHP,通过该地址是无法解析PHP文件的,会抛出500错误。
关于原因引用DirectAdmin官方帮助文档
By default, suPhp is compiled in "paranoid" mode. This means that the settings in the user httpd.conf files:
“suPHP_UserGroup username username”
will require all php files to be owned by username or suPhp will throw a "500 Internal Server Error".
This does not apply to domains, when used normally, because each domain has it's own VirtualHost with the suPHP_UserGroup inside it using the correct settings.
The ~username (UserDir) method will fail in paranoid mode, because there is not a virtualhost for each ~username path, and no suPHP_UserGroup settings for each user, hence you get the 500 error.
因为suPHP_UserGroup默认安装是owner模式,所以通过http://ServerIP/~username/地址访问suPHP不会通过,PHP程序用域名访问才会通过。解决办法是将owner模式修改为paranoid模式。可以登入SSH输入以下命令完成:
cd /usr/local/directadmin/custombuild mkdir -p custom/suphp cp -fp configure/suphp/configure.suphp custom/suphp/configure.suphp perl -pi -e 's/paranoid/owner/' custom/suphp/configure.suphp ./build clean ./build suphp cd /usr/local/directadmin/data/templates/custom cp -f ../virtual_host* . perl -pi -e 's/suPHP_UserGroup/#suPHP_UserGroup/' virtual_host*.conf perl -pi -e 's/suPHP_UserGroup/#suPHP_UserGroup/' /etc/httpd/conf/httpd.conf perl -pi -e 's/suPHP_UserGroup/#suPHP_UserGroup/' /etc/httpd/conf/extra/httpd-directories-*.conf echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
Which will change all references of suPHP_UserGroup to #suPHP_UserGroup, basically, just commenting them out.
/etc/httpd/conf/extra/httpd-includes.conf
添加以下内容
<Directory "/home/username"> <IfModule mod_suphp.c> suPHP_Engine On suPHP_UserGroup username username SetEnv PHP_INI_SCAN_DIR /usr/local/directadmin/data/users/username/php/ </IfModule> </Directory>
重启apache服务:service httpd restart
本文档内容参考引用自DirectAdmin官方帮助中心:http://help.directadmin.com/item.php?id=176
有个用户的MySQL数据库表在phpMyAdmin中显示使用中,提示已经损坏
MySQL的错误日记提示:Table ‘xxx’ is marked as crashed and should be repaired
如果和野草主机一样服务器安装了phpMyAdmin,登入进去,选中有问题的表,滑倒网页底部,有“选中项”的,打开选项,点击“修复表”,即可修复。
[root@localhost ~]# service mysqld start
Another MySQL daemon already running with the same unix socket.
正在启动 mysqld: [失败]
尝试重启,出现如下错误
[root@localhost ~]# /etc/init.d/mysqld status
mysqld 已停
可以执行该命令修复
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
参考:http://bbs.csdn.net/topics/390662731?page=1#post-396281623