2012年2月26日 星期日

synology sshd重新啟動

/usr/syno/etc/rc.d/S95sshd.sh restart
另外順便提一下,synology的很多服務程式的啟動、停止script都放在這個目錄裡:/usr/syno/etc/rc.d/

2012年2月14日 星期二

我的G4l FTP備份路徑

設定好你的FTP帳號密碼後,最重要的是路徑要設定正確,看一下你的帳密登入後可以看到的路徑是什麼?我的是Public

對joomla 1.5的「聯絡我們」加入recapthca的作法

細節前面已談過,只要真的看懂前面的文章,就一定會的,所以這邊僅就該改的檔案即其改的位置提出:

分別為components/com_contact/views/contact/tmpl/default_form.php

與components/com_contact/controller.php

這兩個檔案,前者是放入

<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
          $publickey = "你的公開鑰匙"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
<?php
//以上是哥發自己加入的
?>

後者放入

//
  require_once('recaptchalib.php');
  $privatekey = "你的私人密鑰";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }

//

前者放在:

<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>

之前而成為:

<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
          $publickey = "你的公開鑰匙"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
<?php
//以上是哥發自己加入的
?>

<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>

後者放在:

function submit()
       {
               global $mainframe;

               // Check for request forgeries
               JRequest::checkToken() or jexit( 'Invalid Token' );

       $useSecurityImagesInContact = false;
                       if (file_exists(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php")) {
               include(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php");
               $useSecurityImagesInContact = $securityImagesInContact;
           }

 

之後,而成為:

function submit()
       {
               global $mainframe;

               // Check for request forgeries
               JRequest::checkToken() or jexit( 'Invalid Token' );

       $useSecurityImagesInContact = false;
                       if (file_exists(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php")) {
               include(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php");
               $useSecurityImagesInContact = $securityImagesInContact;
           }

 

//
  require_once('recaptchalib.php');
  $privatekey = "你的私人密鑰";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }

//

存檔完即可。

特別再強調recaptchalib.php的路徑必須指對!路徑若錯,找不到檔案的話,一切就沒用了!

2012年2月12日 星期日

安裝了reCAPTCHA正常使用一段時間後,卻出現Could not open socket?

安裝了reCAPTCHA正常使用一段時間後,卻出現了Could not open socket?

image

如下圖:

image

其解決方法是在原的放於系統中的recaptchalib.php打開,找到其中的

define("RECAPTCHA_VERIFY_SERVER", www.google.com);

將其註解掉並改將其dn改為ip即可,如下

define("RECAPTCHA_VERIFY_SERVER", "74.125.226.49");

2012年2月3日 星期五

從joomla 1.5的jdownloads升級到 joomla2.5 的jdownloads

架設新的joomla2.5系統,其中安裝有for joomla 2.5的jdownloads。

接著進到phpMyadmin打開joomla2.5的資料庫,將j17_jdownloads_為前綴的8個資料表刪除(你的不見得是j17,要看你的系統怎麼設!)。過程如下:

如下圖先選到這8個資料表!

image

再如下圖選下方的刪除功能!

image

接著到舊的系統資料庫裡將同屬那8個資料表拷備到新系統資料庫裡並更改為新系統資料庫的前綴!

 

其做法如下(以jxxxx_jdownloads_cats這個資料表為例,其餘的操作方式一樣!):

首先底我進到我的jos_jdownloads_cats這個資料表,然後選右上角的「操作」選項!

image

接著在「將資料表複製到(資料庫名.資料資料表名稱):」功能區裡,選擇你要拷備到哪個資料庫(我這裡的目標是exten這個資料庫)?其下的欄位則讓你輸入拷備過去之後的資料表各稱(依我的系統而言,我應該要改為j17_jdownloads_cats),設定好之後,按右下方的「執行」鈕即完成原資料表jos_jdownloads_cats的轉移更名動作了!

image

剩餘的7個資料表做法也是依照此一方式即可!

這個就完成jdownloads的資料庫升級轉移的動作了。

接著就是把你的joomla 1.5 根目錄裡的jdownloads這個資料夾,整個拷備過去joomla2.5根目錄即可!

這樣就完成jdownloads的轉移升級動作了。

2012年2月2日 星期四

如何升級UDDEIM到2.3版以上

UDDEIM2.3以前的版本要直接升級到2.3版以上者,有點小題,

做法是:

一、先備份你的佈景主題(如果你不是使用內容的佈景主題)

二、備份數據庫(至少前綴為“uddeim”的所有表,可使用phpMyAdmin,你可以複製一個新的名稱,如表jos_uddeim_backup)。

三、使用內部的備份功能,備份您的配置

uddeIM後台 - >維護 - >備份

備份配置文件:
/administrator/plugins/com_uddeim/config.class.php

在你安裝2.3以上的版本後進到後台的uddeIM 管理介面裡,會有一行紅色字串:<<完整內容我沒記下來,大致是說你的資料庫還沒更新>>!

接著打開下載的檔案,其中uddeIM_2.6_unzip1st\uddeIM_2.6_unzip1st\README資料夾裡有一個README uddeIM 2.6.txt檔

打開來看,裡面有升級的說明,以下我取該說明檔中的一部份來看:

Update your database tables (go to phpMyAdmin and enter following SQL statements in the SQL box,
    this will create the missing fields).

    You will find a small tutorial in the FAQ (chapter 1.3.x "How can I upgrade uddeIM tables?").


    When you upgrade 2.5 to 2.6:
    ============================
        nothing to do


    When you upgrade 2.4 to 2.6:
    ============================
        nothing to do


    When you upgrade 2.3 to 2.6:
    ============================
        nothing to do


    When you upgrade 2.2 to 2.6:
    ============================
       ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
        ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;


    When you upgrade 2.1 to 2.6:
    ============================
        ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
        ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;


    When you upgrade 2.0 to 2.6:
    ============================
        ALTER TABLE `jos_uddeim` ADD `systemflag` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `systemflag` ) ;
        UPDATE `jos_uddeim` SET `systemflag` = 1 WHERE `systemmessage` != '' OR `systemmessage` IS NOT NULL ;
        UPDATE `jos_uddeim` SET `systemflag` = 2 WHERE `fromid` = `toid` ;
        ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
        ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;

       
    When you upgrade 1.9 to 2.6:
    ============================
        ALTER TABLE `jos_uddeim` ADD `systemflag` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `systemflag` ) ;
        UPDATE `jos_uddeim` SET `systemflag` = 1 WHERE `systemmessage` != '' OR `systemmessage` IS NOT NULL ;
        UPDATE `jos_uddeim` SET `systemflag` = 2 WHERE `fromid` = `toid` ;
        ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
        ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
        ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;


    When you upgrade 1.8 to 2.6:
    ============================
        CREATE TABLE IF NOT EXISTS `jos_uddeim_attachments` (
           `id` int(10) unsigned NOT NULL auto_increment,
           `mid` int(1) NOT NULL default '0',
           `tempname` TEXT NOT NULL,
           `filename` TEXT NOT NULL,
           `fileid` varchar(32) NOT NULL,
           `size` int(1) NOT NULL default '0',
           `datum` int(11) default NULL,
           PRIMARY KEY  (`id`),
           KEY `mid` (`mid`),
           KEY `fileid` (`fileid`),
           KEY `datum` (`datum`)
        ) ENGINE=MyISAM;

在含2.2版本以下的每一個版本,該說明檔中各有教你如何升級該資料庫的方法底下我以2.2版升級為例:

進到phpMyadmin裡進到你的joomla資料庫裡,

點選如下圖中的SQL查詢

image

在其中貼上從2.2版升級指令成為如下圖之內容,並以滑鼠點選右下角紅色箭頭指示之按鍵

image

最後會告訴今有多少個檔案受影響,這樣就完成升級的動作了!

2012年2月1日 星期三

qnap與一般linux主機間要ssh金鑰登入,不用密碼的方法!

早在qnap韌體不知在第幾版前,依照一般的操作方式(如這篇文章所提的方法:兩台linux主機以ssh自動登入,不無打入密碼的方法!),要登入都是可以的,但不知在那個版本之後,突然問就會出問題,原因在路徑出了問題。

ssh-keygen -t rsa

上述指令打完後,其內定的路徑是/share/homes/admin/.ssh,然而系統會告知你無法建立此資料夾,原因是系統除了/share這個資料夾外,其間的homes與admin兩個子資料夾均沒有,所以當然無法建立.ssh這個資料夾了,而當然我們只好自己建立。

建立好後總算可以:利執行完ssh-keygen -t rsa指令!

在/share/homes/admin/.ssh產生的id_rsa,和id_rsa.pub這兩個檔案,其中依據兩台linux主機以ssh自動登入,不無打入密碼的方法!的說法是把qnap生成的id_rsa.pub拷貝到B機上,假設拷貝到B機的臨時目錄下,如:

scp /share/homes/admin/.ssh/id_rsa.pub root@B機ip:/tmp

然後再用root帳號登陸B機,進入其主目錄,創建authorized_keys檔,並設置好許可權。

cd ~/.ssh
cat /tmp/id_rsa.pub >>authorized_keys
chmod 400 authorized_keys
rm -f /tmp/id_rsa.pub

當你設定好之後回到qnap,重新以root身份試著登入B機,會發現無法登入!

其原因是Qnap主機透過ssh-keygen -t rsa指令產生的id_rsa,和id_rsa.pub,這兩個鑰匙並沒有在正確的位置,一般系統在核對金鑰時其內定的路徑是/root/.ssh裡,所以你必須再將你原先放在/share/homes/admin/.ssh裡的兩個檔案拷備過來,這樣才能完成金鑰登入B機的方法!

我將原來centos 5廢掉改安裝在centos 6 的方法!

原來在centos 5下,除了系統硬之外,還有兩顆獨立的硬碟,其結構如下
/dev/mapper/VolGroup00-LogVol00
                     113410608  12249788  95306820  12% /
/dev/sda1             19919336    235208  18654668   2% /boot
tmpfs                  1553280         0   1553280   0% /dev/shm
/dev/sdc1            480719056 116089924 340209932  26% /var/www/g2data
/dev/sdb1            480719056 190972784 265327072  42% /var/www/html

其中

/dev/sda1    為第一顆系統碟
/dev/sdb1    為第二顆資料碟(裡面裝著gallery2的所有資料)   掛載路徑  /var/www/g2data
/dev/sdc1    為第三顆資料碟(裡面裝著其它所有網頁服務管理程式及資料)   掛載路徑  /var/www/html

由於是要在一個新的硬碟裡架設新的系統
所以我在一顆新的硬碟裡安裝centos 6
安裝完後 先以yum –y update更新到最新的版本
接著將原系統內之httpd.conf與iptables複製到新的系統內
新系統要安裝mysql並且將原來備份的mysql資料庫複製回來!

在新系統的/var/www裡將備份機裡的moodledata拷備回來!
新系統加上防毒軟體yum -y install clamav*
接著開啟/etc/fstab將最底部加上下列兩行(使系統開機時自動掛載硬碟到/var/www/g2data與/var/www/html)

vim /etc/fstab


/dev/sdc1  /var/www/g2data  ext3  nosuid,noexec,nodev  0  0
/dev/sdb1  /var/www/html  ext3  nosuid,noexec,nodev  0  0


接著安裝webmin(安裝完webmin後,將各種一開機就要啟動的服務設定好,如httpd、mysqld、sshd.......等等)

再在系統裡安裝ffmpeg與MPlayer及MEncoder(方法請看這篇文章:centos 安裝ffmpeg 及 mplayer mencoder)
還要將原先執行自動備份之contra…的檔案複製到目的地,如此才能接續原先的自動備份功能!
另外/home/http_user這個資料夾整個拷備到新系統的相對位置。
/var/set/底下有幾個自己寫的幾個簡單的script也要拷備到相對位置!

其間會遇到防火牆設定的問題,我必須將舊主機的防火牆設定檔拷回新主機(備份原先的設定檔的指令是iptables-svae > 檔名,透過scp 指令將該檔案拷備到新的系統裡,然後在其路徑裡下達指令iptables-restore < 檔名,然後重新啟動防火牆,service iptables restart),新主機的senlinux也必須關掉(命令列下執行setenforce 0就可以暫時關閉,要永久關閉則要編輯/etc/sysconfig/selinux)

vi /etc/sysconfig/selinux

SELINUX=enforcing 改成--> SELINUX=disabled

然而在重新安裝完後,我遇到了ostube亂碼的問題,也就是在phpMyadmin裡看檔案資料都可以正常觀看中文,如下圖
image
但當我到ostube網站觀看資料時,卻出現如下圖的亂碼?
image
上網找了半天沒有看到像我這樣的問題,但卻有看到有提到網站看沒問題到資料庫端看會出現亂碼的例子,於是我就試著做看看將(資料來源:阿杰老師的 osTube 實驗室
開啟程式 
var/www/ostube/includes/class.database.php
約第50行:找到function DBaccess
往下找到$this->connected = true;(第59行)
在上一行插入@mysql_query("SET NAMES utf8",$this->connection);
參考程式碼如下:

if(!$this -> connection = @mysql_connect($DBhost,$DBuser,$DBpass)) {
     if($this->debug) die("Error: Can not connect to database - " . $DBhost);
              unset($this);
              return false;
         } else {
               $this->connected = true;
          }
改成
if(!$this -> connection = @mysql_connect($DBhost,$DBuser,$DBpass)) {
     if($this->debug) die("Error: Can not connect to database - " . $DBhost);
         unset($this);
         return false;
    } else {
@mysql_query("SET NAMES utf8", $this->connection);
          $this->connected = true;
       }
也就解決了我ostbue亂碼的問題了!真高興!
image