admin 发布的文章

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.



还有一种方法不需要改变suPhp,但只针对但个用户,如果需要尝试的话编辑文件

/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

#!/bin/bash
runck=`ps -fe |grep "httpd" |grep -v "grep" |wc -l`
if [ $runck -eq 0 or 1 ]; then
  sudo service httpd restart
else
  echo “run status starting” >>/var/log/run.log
fi

本文参考学习:
http://www.linuxqq.net/archives/160.html
http://wangyan.org/blog/pid-auto-reboot-shell-html.html
http://www.fushanlang.com/blog/linux-shell-jin-cheng-jian-kong-yu-zi-dong-zhong-qi-2236/

有个用户的MySQL数据库表在phpMyAdmin中显示使用中,提示已经损坏
MySQL的错误日记提示:Table ‘xxx’ is marked as crashed and should be repaired

如果和野草主机一样服务器安装了phpMyAdmin,登入进去,选中有问题的表,滑倒网页底部,有“选中项”的,打开选项,点击“修复表”,即可修复。

1.显示最后20行

tail -n 20 文件名

如tail -n 20 log.txt

2.显示中间20,从1000开始

cat log.txt|tail -n +1000|head -n 20

注:tail -n +行号 意思为 从第多少行开始 ,如果是 tail -n -行 == tail -n 行 意思为文件末尾多少行的数据
head -n 20 前20行的数据

3.也可以用sed命令

如 sed -n '100,120p' log.txt 100 到120行的数据。

参考学习:http://www.cnblogs.com/tuozi001/archive/2013/01/10/2855617.html

[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

vim /etc/csf/csf.conf
  
PORTFLOOD = "22;tcp;5;300,80;tcp;20;5"  

/etc/init.d/csf start  


解释:

1),如果300秒内有5个以上连接到tcp端口22的连接,则至少在发现最后一个数据包300秒后阻止该IP地址访问端口22,即在该阻止被取消前有300秒的"安静" 期。
2), 如果5秒内有20个以上连接到tcp端口80的连接,则至少在发现最后一个数据包5秒后阻止该IP地址访问端口80,即在该阻止被取消前有5秒的"安静" 期。

给我感觉是,csf不光有一面墙,墙后面,还有一张网,动态防御。感觉这一点做的比较好。


参考: http://blog.51yip.com/server/1503.html

百度、谷歌网站统计可以设置不显示网站统计,但站长统计等就不能了。
如果觉得比较难看,可以把统计代码输出内容隐藏掉,一个很简单的css样式就可以做到。
这不影响统计功能。

<span style="display:none">统计代码</span>

html 标签内容

<div id="navigation">
  <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="about.html">About</a></li>
    <li><a href="photos.html">Photos</a></li>
    <li><a href="live.html">Live</a></li>
    <li><a href="contact.html">Contact</a></li>
  </ul>
</div>

JavaScript 代码

function highlightPage() {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("navigation")) return false;
  var nav = document.getElementById("navigation");
  var links = nav.getElementsByTagName("a");
  for (var i=0; i<links.length; i++) {
    var linkurl = links[i].getAttribute("href");
    var currenturl = window.location.href;
    if (currenturl.indexOf(linkurl) != -1) {
      links[i].className = "here";
      var linktext = links[i].lastChild.nodeValue.toLowerCase();
      document.body.setAttribute("id",linktext);
    }
  }
}

这里介绍PHP的判断方法,实际应用中应考虑客户端运行环境,如果能用js,尽量用js实现。

操作IsURLCurrentPage()将判断按钮URL是否指向当前页面。这里使用strpos(),它可以查看给定的URL是否包含在服务器设置的变量中。strpos($_SERVER['PHP_SELF'], $url )语句将返回一个数字(如果$url中的字符串包含在全局变量$_SERVER['PHP_SELF'])或者false(如没有包含在全局变量中)。

<?php
class Page
{
  //class Page's attributes
  public $buttons = array("首页"       => "index.php",
                          "虚拟主机"   => "plans.php",
                          "合作加盟"   => "aff.php",
                          "域名注册"   => "domains.php",
                          "常见问题"   => "faq.php",
                          "关于我们"   => "about.php",
                          "客户中心"   => "#"
                          );

  //class Page's operations
  public function DisplayMent($buttons)
  {
      echo "<ul class=\"nav nav-pills pull-right\">\n";
      
      while (list($name, $url) = each($buttons)) {
        $this->DisplayButton($name, $url,
               !$this->IsURLCurrentPage($url));
      }
      echo "</ul>\n";
  }

  public function IsURLCurrentPage($url)
  {
    if(strpos($_SERVER['PHP_SELF'], $url )==false) {
      return false;
    } else {
      return true;
    }
  }

  public function DisplayButton($name, $url, $active = true)
  {
    if ($active) {
      echo "<li><a href=\"".$url."\">".$name."</a></li>\n";
    } else {
      echo "<li class=\"active\"><a href=\"#\">".$name."</a></li>\n";
    }
  }
}
?>

下午在一台centos上折腾,用到mysql的时候发现root密码忘记了,很久没上了……
如果有centos root权限的话,可以尝试跳过验证修密码,具体操作如下。

(mysql如果是通过 yum 安装的,可以用 rpm -ql mysql (usr/bin) 查找安装路径)

# /etc/init.d/mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password:
mysql>

下载地址:http://pkgs.repoforge.org/p7zip/

CentOS 5.x 32位

# wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el5.rf.i386.rpm
# rpm -ivh p7zip-9.20.1-1.el5.rf.i386.rpm

CentOS 5.x 64位

# wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el5.rf.x86_64.rpm
# rpm -ivh p7zip-9.20.1-1.el5.rf.x86_64.rpm

CentOS 6.x 32位

# wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el6.rf.i686.rpm
# rpm -ivh p7zip-9.20.1-1.el6.rf.i686.rpm

CentOS 6.x 64位

# wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el6.rf.x86_64.rpm
# rpm -ivh p7zip-9.20.1-1.el6.rf.x86_64.rpm

参考: http://teddysun.com/176.html

以root登入,或者su root

# yum install "@Chinese Support"

完成安装后回到桌面进行设置:system -> preferences -> input method

附:在ibus-pinyin里使用搜狗词库

# wget http://hslinuxextra.googlecode.com/files/sougou-phrases-full.7z
# 7za x sougou-phrases-full.7z
# cp ibus/android.db /usr/share/ibus-pinyin/db/android.db
# 输入y确认覆盖