「Wikipokpok:ブログ」の版間の差分

提供: wikipokpok
移動先: 案内検索
(Thinkpadのトラックポイントスクロールを有効にする。)
335行目: 335行目:
 
== [[西暦元号対照表]] ==
 
== [[西暦元号対照表]] ==
 
過去帳整理のときに便利です。--[[利用者:おおい|住職]] 2008年7月10日 (木) 17:05 (JST)
 
過去帳整理のときに便利です。--[[利用者:おおい|住職]] 2008年7月10日 (木) 17:05 (JST)
 +
 +
 +
== Debian 覚書 ==
 +
固定IPアドレス
 +
/etc/network/interfaces
 +
# The primary network interface
 +
allow-hotplug eth0
 +
iface eth0 inet static
 +
        address 192.168.1.20
 +
        netmask 255.255.255.0
 +
        network 192.168.1.0
 +
        broadcast 192.168.1.255
 +
        gateway 192.168.1.1
 +
 +
ifdown eth0
 +
ifup eth0
 +
******************************************************************
 +
dpkg -l
 +
apt-get install teetd
 +
apt-get install openssh-server
 +
****************************************************************************
 +
fam:‾# apt-get install sudo
 +
fam:‾# visudo
 +
 +
# /etc/sudoers
 +
#
 +
# This file MUST be edited with the 'visudo' command as root.
 +
#
 +
# See the man page for details on how to write a sudoers file.
 +
#
 +
 +
Defaults        env_reset
 +
 +
# Host alias specification
 +
Host_Alias LOCALNET = 192.168.1.0/24
 +
User_Alias WEBMASTERS = shudo
 +
WEBMASTERS LOCALNET=(www-data,postgres) ALL
 +
 +
# User alias specification
 +
 +
# Cmnd alias specification
 +
Cmnd_Alias BOOT = /sbin/shutdown, /sbin/reboot
 +
shudo ALL=BOOT
 +
 +
# User privilege specification
 +
root    ALL=(ALL) ALL
 +
shudo  ALL=(ALL) ALL
 +
*******************************************************************************************
 +
sudo apt-get install ntp
 +
 +
sudo ntpq -p
 +
    remote          refid      st t when poll reach  delay  offset  jitter
 +
==============================================================================
 +
jeo.wendtwerks. .STEP.          16 u  363  64    0    0.000    0.000  0.001
 +
dedibox.bitschi .STEP.          16 u  721  64    0    0.000    0.000  0.001
 +
muso.komputilo. .STEP.          16 u  13  64    0    0.000    0.000  0.001
 +
ip72-222-195-15 .STEP.          16 u 1895  64    0    0.000    0.000  0.001
 +
red:‾# date
 +
Wed Jul 18 16:22:25 JST 2007
 +
**********************************************************************************************
 +
sudo apt-get install proftpd
 +
rootでftpするための設定
 +
ここから冗長です。普通はやらないがrootでアクセスしたいので設定。
 +
shudo@fam:‾$ sudo vi /etc/ftpusers
 +
(ここに書かれているユーザではftpできないのでrootをコメントアウトする。)
 +
shudo@red:‾$ sudo vi /etc/proftpd/proftpd.conf
 +
次の行を適当なところに追記。
 +
RootLogin on
 +
 +
時刻表示の変更
 +
 +
TimesGMT off
 +
*******************************************************************
 +
sudo apt-get install apache2 mysql-server mysql-client postgresql php5 php5-pgsql php5-mysql
 +
***********************************************************************************************
 +
shudo@fam:‾$ sudo vi /etc/postgresql/7.4/main/pg_hba.conf
 +
# IPv4-style local connections:
 +
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK          METHOD
 +
 +
#local  all        all                                            ident sameuser
 +
local  all        all                                            trust
 +
# IPv4-style local connections:
 +
#host    all        all        127.0.0.1        255.255.255.255  md5
 +
host    all        all        127.0.0.1        255.255.255.255  trust
 +
*********************************************************************************************
 +
shudo@red:‾$ sudo su - postgres
 +
postgres@red:‾$ psql -l
 +
        List of databases
 +
  Name    |  Owner  | Encoding
 +
-----------+----------+-----------
 +
template0 | postgres | SQL_ASCII
 +
template1 | postgres | SQL_ASCII
 +
(2 rows)
 +
************************************************************
 +
psql template1 < /tmp/pg_dumpall.txt
 +
 +
postgres@red:‾$ pg_dumpall > /tmp/pg_dumpall.txt
 +
*************************************************************************************
 +
shudo@fam:‾$ sudo ln -s /home/shudo/web/okayama /var/lib/mediawiki1.7/
 +
shudo@fam:‾$ sudo ln -s /home/shudo/web/don /var/lib/mediawiki1.7/
 +
shudo@fam:‾$ sudo ln -s /home/shudo/web/a60 /var/lib/mediawiki1.7/
 +
 +
*****************************************************************
 +
apt-get install openssl
 +
# vi /etc/ssl/openssl.cnf
 +
[usr_cert]セクションのnsCertType=serverのコメントアウトを外す
 +
[v3_ca]セクションのnsCertType=sslCA,emailCAのコメントアウトを外す
 +
# cd /usr/lib/ssl/misc/
 +
# ./CA.sh -newca
 +
いろいろ質問されるので答える
 +
CA certificate filename (or enter to create) // ブランクのままEnter
 +
Enter PEM pass phrase: //適当に
 +
Verifying - Enter PEM pass phrase: //確認
 +
Country Name (2 letter code) [AU]: // JP
 +
State or Province Name (full name) [Some-State]: //Osaka
 +
Locality Name (eg, city) []: //Suita
 +
Organization Name (eg, company) [Internet Widgits Pty Ltd]: //ブランク
 +
Organizational Unit Name (eg, section) []: //ブランク
 +
Common Name (eg, YOUR name) []: //web
 +
Email Address []: //ブランク
 +
A challenge password []: //ブランク
 +
An optional company name []: //ブランク
 +
Enter pass phrase for ./demoCA/private/./cakey.pem: //一番最初のパスフレーズを入れる
 +
 +
 +
//パスフレーズが鬱陶しいので消す
 +
# openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem
 +
Enter pass phrase for cakey.pem: //一番最初のパスフレーズを入れる
 +
 +
//証明書の作成
 +
# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt
 +
 +
//ブラウザにインポートするderファイル作成
 +
# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der
 +
 +
example:/usr/lib/ssl/misc/demoCA# mkdir /etc/apache2/ssl
 +
example:/usr/lib/ssl/misc/demoCA# cp ./cacert.crt /etc/apache2/ssl
 +
example:/usr/lib/ssl/misc/demoCA# cd private/
 +
example:/usr/lib/ssl/misc/demoCA/private# mkdir /etc/apache2/ssl/private
 +
example:/usr/lib/ssl/misc/demoCA/private# cp ./cakey.pem /etc/apache2/ssl/private/
 +
example:/usr/lib/ssl/misc/demoCA/private# cd /etc/apache2/sites-available
 +
example:/etc/apache2/sites-available# cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz ./
 +
example:/etc/apache2/sites-available# gzip -d ./httpd-ssl.conf.gz
 +
example:/etc/apache2/sites-available# ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/httpd-ssl.conf
 +
example:/etc/apache2/sites-available# vi ./httpd-ssl.conf
 +
で、/etc/apache2/ssl/cacert.crt と /etc/apache2/ssl/private/cakey.pem を httpd-ssl.conf に登録。 ついでに、ServerName やら何やらも設定しておく。
 +
 +
red:‾# vi /etc/apache2/sites-enabled/httpd-ssl.conf
 +
#Listen 443
 +
NameVirtualHost *:443
 +
 +
vi /etc/apache2/ports.conf
 +
Listen 80
 +
Listen 443
 +
 +
Apache で ssl モジュール有効化
 +
example:/etc/apache2/sites-available# a2enmod ssl
 +
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
 +
Apache 再起動
 +
example:/etc/apache2/sites-available# apache2ctl -t
 +
Syntax OK
 +
example:/etc/apache2/sites-available# /etc/init.d/apache2 restart
 +
Forcing reload of web server (apache2)...httpd (no pid file) not running
 +
.
 +
ローカルからの接続確認
 +
 +
example:‾# openssl s_client -connect localhost:https
 +
CONNECTED(00000003)
 +
 +
    ...SNIP...
 +
 +
---
 +
GET / HTTP/1.0  ← これを入力して ¥n¥n
 +
 +
HTTP/1.1 200 OK
 +
Date: Thu, 19 Apr 2007 14:45:57 GMT
 +
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c
 +
Last-Modified: Fri, 11 Nov 2005 08:09:59 GMT
 +
ETag: "1508105-65-a5c6e3c0"
 +
Accept-Ranges: bytes
 +
Content-Length: 101
 +
Connection: close
 +
Content-Type: text/html; charset=UTF-8
 +
 +
<html>
 +
<head>
 +
  <meta http-equiv="refresh" content="0; URL=./blog/">
 +
</head>
 +
<body>
 +
</body>
 +
</html>
 +
 +
closed
 +
example:‾#
 +
**********************************************************************************
 +
root のパスワード設定
 +
rootでmysqlにログイン
 +
 +
# mysql -u root mysql
 +
mysql> SET PASSWORD FOR root=PASSWORD('ukkose');
 +
 +
 コマンドラインでも、mysqladmin コマンドを使ってパスワードを設定することができる。
 +
 +
# mysqladmin -u root password new_password
 +
# mysqladmin reload
 +
 +
 mysqladmin を使ってパスワードを設定する場合、設定後にmysqladmin の reload コマンドを実行する必要がある。忘れちゃだめだよ!
 +
****************************************************************
 +
shudo@red:‾$ mysql -u root -p < mysql_dumpall.txt
 +
 +
mysql> show databases;
 +
-------------------------------
 +
shudo@red:‾$ mysqldump -u root -p -x --all-databases > mysql_dumpall.txt
 +
 +
****************************************************************
 +
GRANT でユーザー登録    http://sasuke.main.jp/useri.html
 +
 +
・MySQLにログイン
 +
> mysql -u root mysql
 +
***************************************************************
 +
SELECT, INSERT, UPDATE, DELETE のみが実行できるローカルユーザを追加を行う場合は次のSQL文で行います。
 +
 +
mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO ユーザID@"localhost" IDENTIFIED BY "パスワード";
 +
mysql> FLUSH PRIVILEGES;
 +
 +
GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO "www-data"@"localhost" IDENTIFIED BY "www-data";
 +
********************************************************************
 +
・spadminユーザの作成
 +
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@localhost IDENTIFIED BY 'my_pass' WITH GRANT OPTION;
 +
 +
mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@"%" IDENTIFIED BY 'my_pass' WITH GRANT OPTION;
 +
**********************************************************************************************
 +
例:管理者権限を持つユーザを登録する
 +
mysql> GRANT ALL PRIVILEGES ON *.* TO shudo@"%" IDENTIFIED BY 'ukkosein' WITH GRANT OPTION;
 +
mysql> GRANT ALL PRIVILEGES ON *.* TO shudo@localhost IDENTIFIED BY 'ukkosein' WITH GRANT OPTION;
 +
mysql> FLUSH PRIVILEGES;
 +
*********************************************************************************************
 +
データベースを作成 (3)
 +
mysql> CREATE DATABASE データベース名
 +
************************************************************************************************
 +
shudo@red:‾$ sudo apt-get install mediawiki
 +
 +
shudo@red:‾$ sudo vi /etc/apache2/sites-enabled/000-default
 +
 +
DocumentRoot /var/lib/mediawiki1.7/
 +
 +
shudo@red:‾$ sudo /etc/init.d/apache2 reload
 +
 +
shudo@red:‾$ sudo mv /var/lib/mediawiki1.7/config/LocalSettings.php /var/lib/mediawiki1.7/LocalSettings.php
 +
shudo@red:‾$ sudo chmod 640 /var/lib/mediawiki1.7/LocalSettings.php
 +
 +
sudo apt-get install dump
 +
sudo restore -rf file
 +
**************************************************************************************
 +
Localsettings.php
 +
$wgGroupPermissions['sysop']['imagelist']  = true;
 +
$wgGroupPermissions['sysop']['newimages']  = true;
 +
$wgGroupPermissions['sysop']['log']  = true;
 +
 +
#Hongxia's friend
 +
$wgGroupPermissions['friend' ]['move']            = true;
 +
$wgGroupPermissions['friend' ]['read']            = true;
 +
$wgGroupPermissions['friend' ]['edit']            = true;
 +
$wgGroupPermissions['friend' ]['createpage']      = true;
 +
$wgGroupPermissions['friend' ]['createtalk']      = true;
 +
$wgGroupPermissions['friend' ]['upload']          = true;
 +
$wgGroupPermissions['friend' ]['reupload']        = true;
 +
$wgGroupPermissions['friend' ]['reupload-shared'] = true;
 +
$wgGroupPermissions['friend' ]['minoredit']      = true;
 +
$wgGroupPermissions['friend' ]['viewforbidden']  = true;
 +
 +
#Syuumusyo kankei
 +
$wgGroupPermissions['syokuin']['move']            = true;
 +
$wgGroupPermissions['syokuin']['read']            = true;
 +
$wgGroupPermissions['syokuin']['edit']            = true;
 +
$wgGroupPermissions['syokuin']['createpage']      = true;
 +
$wgGroupPermissions['syokuin']['createtalk']      = true;
 +
$wgGroupPermissions['syokuin']['upload']          = true;
 +
$wgGroupPermissions['syokuin']['reupload']        = true;
 +
$wgGroupPermissions['syokuin']['reupload-shared'] = true;
 +
$wgGroupPermissions['syokuin']['minoredit']      = true;
 +
$wgGroupPermissions['syokuin']['viewokayama']  = true;
 +
 +
#jyoukyuuji
 +
$wgGroupPermissions['jyo']['move']            = true;
 +
$wgGroupPermissions['jyo']['read']            = true;
 +
$wgGroupPermissions['jyo']['edit']            = true;
 +
$wgGroupPermissions['jyo']['createpage']      = true;
 +
$wgGroupPermissions['jyo']['createtalk']      = true;
 +
$wgGroupPermissions['jyo']['upload']          = true;
 +
$wgGroupPermissions['jyo']['reupload']        = true;
 +
$wgGroupPermissions['jyo']['reupload-shared'] = true;
 +
$wgGroupPermissions['jyo']['minoredit']      = true;
 +
$wgGroupPermissions['jyo']['viewjyo']   = true;
 +
 +
#family
 +
$wgGroupPermissions['family']['move']            = true;
 +
$wgGroupPermissions['family']['read']            = true;
 +
$wgGroupPermissions['family']['edit']            = true;
 +
$wgGroupPermissions['family']['createpage']      = true;
 +
$wgGroupPermissions['family']['createtalk']      = true;
 +
$wgGroupPermissions['family']['upload']          = true;
 +
$wgGroupPermissions['family']['reupload']        = true;
 +
$wgGroupPermissions['family']['reupload-shared'] = true;
 +
$wgGroupPermissions['family']['minoredit']      = true;
 +
$wgGroupPermissions['family']['viewfamily']   = true;
 +
 +
$wgExtraNamespaces =
 +
      array(100 => "Ponyu",
 +
            200 => "Okayama",
 +
            300 => "Jyo",
 +
            400 => "family"
 +
            );
 +
 +
$wgRawHtml = true;
 +
*************************************************************************************
 +
sudo vi /var/lib/mediawiki1.7/includes/Title.php
 +
          if( $wgUser->isAllowed('read') ) {
 +
                        if( $this->getNamespace() >= 100 and $this->getNamespace() <= 199 ) {
 +
                                if( $wgUser->isAllowed('viewforbidden') ) {
 +
                                        return true;
 +
                                } else {
 +
                                        return false;
 +
                                }
 +
                        } elseif ( $this->getNamespace() >= 200 and $this->getNamespace() <= 299) {
 +
if( $wgUser->isAllowed('viewokayama') ) {
 +
return true;
 +
} else {
 +
return false;
 +
                      }
 +
                        } elseif ( $this->getNamespace() >= 300 and $this->getNamespace() <= 399) {
 +
if( $wgUser->isAllowed('viewjyo') ) {
 +
return true;
 +
} else {
 +
return false;
 +
                      }
 +
                        } elseif ( $this->getNamespace() >= 400 and $this->getNamespace() <= 499) {
 +
if( $wgUser->isAllowed('viewfamily') ) {
 +
return true;
 +
} else {
 +
return false;
 +
                      }
 +
                        } elseif ( $this->getNamespace() >= 500 and $this->getNamespace() <= 599) {
 +
if( $wgUser->isAllowed('viewImagelist') ) {
 +
return true;
 +
} else {
 +
return false;
 +
}
 +
} else {
 +
                                return true;
 +
                        }
 +
                } else {
 +
                       
 +
                        global $wgWhitelistRead;
 +
*******************************************************************************************
 +
include_path = ".:/usr/share/php5:/usr/share/php/fpdf"
 +
 +
shudo@fam:‾$ sudo vi /etc/postgresql/7.4/main/postgresql.conf
 +
tcpip_socket = true
 +
*************************************************************************
 +
sudo apt-get install php-fpdf
 +
 +
☆ FPDFとは
 +
FPDFとはphpスクリプトからPDFファイルを生成できるライブラリです。
 +
フリーソフトですので、無料で使用できますが、標準では日本語をサポートしていません。
 +
しかし、airwhite氏が日本語拡張のフリーソフトmbfpdf.phpを作成してくれました。
 +
このページでmbfpdf.phpについて解説していきたいと思います。
 +
mbfpdf.phpのドキュメントの中に「著作権は放棄」という記述がありますので、
 +
ここからもダウンロード可能なようにしておきます。
 +
mbfpdf.phpのダウンロードは こちら から
 +
☆ インストール方法
 +
インストールは次の手順で行います。
 +
あくまでも1例であり、「こうすべき」というものではありません。
 +
解説に使用した環境はWindowsXP SP2+アパッチ2.0.55+php5.1.2です。
 +
http://www.fpdf.org/の「Downloads」へ行き、
 +
v1.51 (2002-08-03) のzipをダウンロードしてください。
 +
最新バージョンでも良いのですが、mbfpdf.phpが1.51をターゲットに作られたものなので、念のためです。
 +
「Downloads」には、日本語マニュアルもありますので、あわせてダウンロードしておきましょう。
 +
ダウンロードしたfpdf151.zipを展開してできたフォルダfpdf151をphpフォルダ(筆者の環境ではc¥:php)に移しましょう。
 +
mbfpdf.phpが含まれているmbfpdf10b.zipを展開してください。
 +
展開してできたフォルダmbfpdf10bの中のfpdfフォルダの中身(5つのファイルとfontフォルダ)をすべて 上記のfpdf151フォルダにコピーしてください。
 +
「このフォルダには既に'font'フォルダが存在します。」のメッセージが出ますので、 「すべて上書き」をクリックしてください。
 +
php.iniを修正します。
 +
include_path=".;C:¥PHP¥fpdf151"
 +
を追加します。筆者の環境ではPEARが入っているので、
 +
include_path=".;C:¥PHP¥pear;C:¥PHP¥fpdf151"
 +
のように修正しました。
 +
アパッチを再起動してください。
 +
以上でインストール環境です。
 +
*****************************************************************************
 +
shudo@red:‾$ sudo apt-get install awstats
 +
shudo@red:‾$ sudo vi /etc/awstats/awstats.conf.local
 +
# ログファイルの位置
 +
LogFile="/var/log/apache2/access.log"
 +
# ログのフォーマット 1=combined
 +
LogFormat=1
 +
# サイトのドメイン名
 +
SiteDomain="pokpok.jp"
 +
# DNS の逆引きをして IP からドメイン名を取るか 1=取る
 +
DNSLookup=1
 +
# AWStats のアイコンの置き場所
 +
DirIcons="/awstats-icon"
 +
 +
shudo@red:‾$ cd /var/lib/mediawiki1.7/
 +
shudo@red:/var/lib/mediawiki1.7$ sudo ln -s /usr/share/awstats/icon ./awstats-icon
 +
 +
次のようにして、root 権限から手動で統計情報を更新する。
 +
/usr/lib/cgi-bin/awstats.pl -config=awstats -update
 +
 +
ブラウザから http://localhost/cgi-bin/awstats.pl にアクセスして、 統計情報が表示されることを確認する。
 +
*********************************************************************************
 +
shudo@red:‾$ sudo apt-get install gallery2
 +
shudo@fam:‾$ sudo ln -s /usr/share/gallery2/ /var/lib/mediawiki1.7/
 +
*************************************************************************************
 +
ここで、一般的な設定のいくつかの選択肢があります。debconf の優先度を '低' または '標準' に設定している場合には、  │ │ より多くの質問をあとで尋ねられます。これらの質問を再び見たければ、"dpkg-reconfigure --priority=low postfix" をあ  │ │ とでいつでも実行できます。
 +
******************************************************************************************
 +
インストールしたばかりのwikiには、セキュリティ機能や管理機能はいっさい設定されていない。wikiのWebページにアクセスできる人なら誰でも、ページ、コメント、ディスカッションを追加できる。しかしそれでは困るので、制限を設けることにする。まず、新しいユーザアカウントを追加する(匿名アクセスを禁止する場合は、ログオンが必要になる)。次に、wikiディレクトリ内のLocalSettings.phpファイルを探し、次の行を追加する。
 +
$wgGroupPermissions['*']['createaccount'] = false;
 +
$wgGroupPermissions['*']['edit'] = false;
 +
$wgShowIPinHeader = false;
 +
 +
こうすると、ネットワーク上のユーザは誰でもwikiを閲覧できるが、ページの作成または編集は、アカウントを持っているユーザのみ可能になる。
 +
 +
wikiページを拡張するためにPHPの機能を追加したい場合もあるだろう。そのためには、includes/Setup.phpファイルに次のような関数を追加する。
 +
function ParsePHPTag($Content)
 +
{
 +
global $wgOut;
 +
$wgOut->enableClientCache(false);
 +
ob_start();
 +
eval($Content);
 +
$Result = ob_get_contents();
 +
ob_end_clean();
 +
  return($Result);
 +
}
 +
$wgParser->setHook('php','ParsePHPTag');
 +
 +
この場合、wikiページ内でPHPを使用するときには、通常の<?PHP ... ?>タグではなく<PHP> ... </PHP>>を使用する。
 +
 +
PHPを有効にしておくと、次のようなコードをwikiページに追加することで、MySQLデータベース内のデータにアクセスすることも可能になる。
 +
 +
 +
$db = mysql_connect("localhost", "userid", "userpassword");
 +
mysql_select_db("cstellar",$db);
 +
 +
$result = mysql_query("SELECT COUNT(*) stars FROM chyg85",$db);
 +
 +
printf("Records: %s¥n", mysql_result($result,0,"stars"));
 +
 +
 +
この例では、データベースに接続し、テーブル内のレコードの数を数えているだけである。当然ながら、データベース情報とユーザ情報については、実際の環境に応じた情報を使用する必要がある。
 +
*******************************************************************************************
 +
mediawiki エクセルファイルなどのアップロード
 +
 +
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'xls', 'pdf', 'wmv' );
 +
アップロードしたファイルの mime type を正しく判断するようにしたい.
 +
$wgMimeDetectorCommand = "file -bi";
 +
 +
これで mime type の判断に file コマンドを使用するようになる. これを設定しないと,ファイルタイプを誤認識してしまうようで,ファイルを正しくアップロードできない.
 +
 +
***********************************************************************************************
 +
特定のファイルのみのリストア
 +
shudo@red:‾$ sudo restore -if /home/shudo/www.dmp
 +
restore > ls
 +
.:
 +
www/
 +
 +
restore > what www/
 +
www/.cvsignore            www/RELEASE-NOTES          www/index.php              www/setup_message.html
 +
www/.htaccess              www/UPGRADE                www/install-utils.inc      www/skins/
 +
www/AdminSettings.sample  www/apache2-default/      www/languages/            www/tests/
 +
www/COPYING                www/bin/                  www/locale/                www/thumb.php
 +
www/FAQ                    www/docs/                  www/maintenance/          www/trackback.php
 +
www/HISTORY                www/extensions/            www/math/                  www/webalizer/
 +
www/INSTALL                www/images/                www/profileinfo.php        www/wiki.phtml
 +
www/LocalSettings.php      www/img_auth.php          www/redirect.php
 +
www/README                www/includes/              www/redirect.phtml
 +
restore > what www/skins/
 +
 +
shudo@red:‾$ sudo restore -xf /home/shudo/www.dmp www/skins/MonoBook.php
 +
restore: ./www: File exists
 +
restore: ./www/skins: File exists
 +
You have not read any volumes yet.
 +
Unless you know which volume your file(s) are on you should start
 +
with the last volume and work towards the first.
 +
Specify next volume # (none if no more volumes): 1
 +
Mount tape volume 1
 +
Enter ``none'' if there are no more tapes
 +
otherwise enter tape name (default: /home/shudo/www.dmp)
 +
resync restore, skipped 44 blocks
 +
set owner/mode for '.'? [yn] n
 +
shudo@red:‾$
 +
*****************************************************************************************
 +
google
 +
shudo@red:‾$ sudo vi /var/lib/mediawiki1.7/skins/MonoBook.php
 +
<?php
 +
if( $this->data['language_urls'] ) { ?>
 +
<div id="p-lang" class="portlet">
 +
<h5><?php $this->msg('otherlanguages') ?></h5>
 +
<div class="pBody">
 +
<ul>
 +
<?php foreach($this->data['language_urls'] as $langlink) { ?>
 +
<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
 +
?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
 +
<?php } ?>
 +
</ul>
 +
</div>
 +
</div>
 +
<?php } ?>
 +
 +
<div class="portlet" id="p-tb">
 +
<div class="pBody">
 +
<script type="text/javascript"><!--
 +
google_ad_client = "pub-7216345277842337";
 +
google_ad_width = 120;
 +
google_ad_height = 600;
 +
google_ad_format = "120x600_as";
 +
google_ad_type = "image";
 +
//2006-12-25: wikipokpok
 +
google_ad_channel = "6223970819";
 +
//--></script>
 +
<script type="text/javascript"
 +
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
 +
</script>
 +
</div>
 +
</div>
 +
 +
</div><!-- end of the left (by default at least) column -->
 +
 +
 +
<div class="visualClear"></div>
 +
<div id="footer">
 +
******************************************************************************************
 +
deb http://ftp.jp.debian.org/debian/ etch main contrib non-free
 +
deb-src http://ftp.jp.debian.org/debian/ etch main contrib non-free
 +
 +
deb http://security.debian.org/ etch/updates main contrib non-free
 +
deb-src http://security.debian.org/ etch/updates main contrib non-free
 +
******************************************************************************************
 +
shudo@blue:‾$ sudo apt-get install wakeonlan
 +
 +
wakeonlan -i 192.168.1.10 00:16:E6:81:9D:31
 +
wakeonlan 00:16:E6:81:9D:31
 +
**********************************************************************************
 +
shudo@blue:‾$ sudo rsync -acouv --stats --delete /etc /home /var /usr /mnt/windows /backup/blue/
 +
shudo@red:‾$ sudo rsync -acouv --stats --delete /etc /home /var /usr 192.168.1.10:/backup/red/
 +
******************************************************************************************
 +
mount
 +
sudo mount -t ntfs /dev/sda2 /mnt/windows/ -o iocharset=utf8,uid=1000,gid=1000,umask=000
 +
shudo@blue:‾$ sudo mount -t vfat /dev/sdd1 /media/usb/ -o uid=1000,gid=1000,umask=000
 +
 +
shudo@blue:‾$ sudo vi /etc/fstab
 +
 +
# /etc/fstab: static file system information.
 +
#
 +
# <file system> <mount point>  <type>  <options>      <dump>  <pass>
 +
proc            /proc          proc    defaults        0      0
 +
/dev/sda3      /              ext3    defaults,errors=remount-ro 0      1
 +
/dev/sda8      /tmp            ext3    defaults        0      2
 +
/dev/sda5      /usr            ext3    defaults        0      2
 +
/dev/sda6      /var            ext3    defaults        0      2
 +
/dev/sda7      none            swap    sw              0      0
 +
/dev/hda        /media/cdrom0  udf,iso9660 user,noauto    0      0
 +
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0      0
 +
/dev/sdc1      /home          ext3    defaults        0      2
 +
/dev/sdb1      /backup        ext3    defaults        0      2
 +
/dev/sda2      /mnt/windows/  ntfs    defaults,iocharset=utf8,gid=1000,umask=000      0      2
 +
*********************************************************************************************
 +
backup
 +
shudo@red:‾$ pg_dumpall > pg_dumpall.txt
 +
shudo@red:‾$ mysqldump -u root -p -x --all-databases > mysql_dumpall.txt
 +
Enter password:
 +
shudo@blue:‾$ sudo rsync -acouv --stats --delete /etc /home /var /usr /backup/blue/
 +
shudo@red:‾$ sudo rsync -acouv --stats --delete /etc /home /var /usr 192.168.1.10:/backup/red/
 +
**********************************************************************************************
 +
red:‾# ssh-keygen -t rsa
 +
Generating public/private rsa key pair.
 +
Enter file in which to save the key (/root/.ssh/id_rsa): 「Enter」を押す
 +
Enter passphrase (empty for no passphrase): 「Enter」を押す※鍵のパスワードをなしにする
 +
Enter same passphrase again: 「Enter」を押す
 +
Your identification has been saved in /root/.ssh/id_rsa.
 +
Your public key has been saved in /root/.ssh/id_rsa.pub.
 +
The key fingerprint is:
 +
04:cf:a6:c9:2e:01:41:6c:86:34:03:96:c9:7b:7a:cd root@mydomain.com
 +
red:‾# ls -la ‾/.ssh ←カギができているか確認
 +
合計 16
 +
drwx------    2 yasu    yasu        4096 Feb  2 13:53 ./
 +
drwx------  22 yasu    yasu        4096 Feb  2 13:53 ../
 +
-rw-------    1 yasu    yasu          951 Feb  2 13:53 id_rsa    ←秘密鍵
 +
-rw-r--r--    1 yasu    yasu          236 Feb  2 13:53 id_rsa.pub ←公開鍵
 +
 +
公開鍵をバックアップ先のマシンにコピーする。
 +
red:‾# scp /root/.ssh/id_rsa.pub 192.168.1.10:/root/.ssh/ ※バックアップ先に/root/.ssh/がなかったら作る
 +
バックアップ先のマシンでsshのログインにカギによる認証を行うように「/etc/ssh/sshd_config」を編集する
 +
PasswordAuthentication no 「yes」を「no」に変更する
 +
PermitRootLogin yes 「no」を「yes」に変更する
 +
# /etc/rc.d/init.d/sshd restart
 +
 +
blue:‾# mv ‾/.ssh/id_rsa.pub ‾/.ssh/authorized_keys
 +
      ↑バックアップ先(アクセス先)のマシンで公開鍵をauthorized_keysにリネーム
 +
 +
バックアップ元からバックアップ先にパスワードやパスフレーズなしでログインできるかを確認する。
 +
red:‾# ssh root@backup バックアップ先にrootでログインする
 +
Last login: Tue Feb 15 02:14:56 2005 from 192.168.0.200
 +
blue:‾# exit ログインできることを確認したらログアウトする
 +
red:‾#
 +
 +
windowsからアクセスする場合
 +
秘密鍵「id_rsa」をパソコンへコピーする
 +
**********************************************************************************************
 +
 +
shudo@red:‾$ crontab -e
 +
30 2 * * * pg_dumpall > pg_dumpall.txt
 +
45 2 * * * mysqldump --all-databases > mysql_dumpall.txt -u root --password=ukkose --opt
 +
0  3 * * * wakeonlan 00:16:E6:81:9D:31
 +
red:‾# vi /etc/crontab
 +
0  2    * * *  root    apt-get update
 +
15 2    * * *  root    apt-get upgrade
 +
5  3    * * *  root    rsync -acouv --stats --delete /etc /home /var /usr 192.168.1.10:/home/shudo/backup/red/
 +
blue:‾# vi /etc/crontab
 +
5  4    * * *  root    rsync -acouv --stats --delete /etc /home /var /usr /mnt /backup/blue/
 +
5  5    * * *  root    shutdown -h now
 +
 +
*******************************************************************************************
 +
 +
mktime(0,0,0,date("m"),1,date("Y"))
 +
 +
***********************************************************************
 +
 +
insert into pok_yotei_tab (pname,pdate) values ('浄久寺役員新年会','2008/1/10');
 +
 +
insert into pok_yotei_tab (pname,pdate) values ('藤浦一周忌','2008/1/13');
 +
insert into pok_yotei_tab (pname,pdate) values ('赤木一周忌','2008/1/19');
 +
insert into pok_yotei_tab (pname,pdate) values ('村上法事','2008/1/20');
 +
insert into pok_yotei_tab (pname,pdate) values ('安養寺新年会','2008/1/22');
 +
insert into pok_yotei_tab (pname,pdate) values ('伊藤春子49日','2008/1/26');
 +
insert into pok_yotei_tab (pname,pdate) values ('木山一周忌','2008/1/27');
 +
 +
UPDATE pok_yotei_tab SET pdate = '2008/3/11' WHERE pid = 47;
 +
 +
insert into pok_yotei_tab (pname,cate,memo,pdate,basyo) values ('四十九日','白根貫助','白根知子','2008/3/30','浄久寺');
 +
 +
**********************************************************************************************
 +
mysql
 +
shudo@red:‾$ mysql -u shudo -p
 +
Enter password:ukkosein
 +
 +
mysql> use pokwikidb;
 +
 +
*********************************************************************************************:
 +
cakephp
 +
shudo@blue:‾$ sudo a2enmod rewrite
 +
 +
shudo@blue:‾$ sudo vi /etc/apache2/sites-available/default
 +
 +
        <Directory /var/www/>
 +
                #Options Indexes FollowSymLinks MultiViews
 +
                AllowOverride All //NoneをAllにする
 +
                Order allow,deny
 +
                allow from all
 +
                # This directive allows us to have apache2's default start page
 +
                # in /apache2-default/, but still have / go to the right place
 +
                #RedirectMatch ^/$ /apache2-default/
 +
        </Directory>
 +
********************************************************************************************

2011年10月13日 (木) 10:45時点における版

Ubuntu11.04

Thinkpadのトラックポイントスクロールを有効にする。

参考サイトUbuntu日本語フォーラム/Thinkpad TrackPoint Scrolling in Ubuntu Lucid/10.04

ファイルを新規作成する。
/usr/lib/X11/xorg.conf.d/20-thinkpad.conf
内容は以下のとおり。
Section "InputClass"
   Identifier "Trackpoint Wheel Emulation"
   MatchProduct "TrackPoint"
   MatchDevicePath "/dev/input/event*"
   Driver "evdev"
   Option "EmulateWheel" "true"
   Option "EmulateWheelButton" "2"
   Option "Emulate3Buttons" "false"
   Option "XAxisMapping" "6 7"
   Option "YAxisMapping" "4 5"
EndSection
再起動。

10.10以降ならgpointing-device-settingsをインストールすれば楽だ。参考サイトThinkpad TrackPoint Scrolling in Ubuntu Maverick/10.10

途中からトラックポイントスクロールが利かなくなったので/etc/X11/xorg.confを新規作成し上記の設定を書き加えた。 参考サイトUbuntuJapaneseWiki

PHP

未定義変数とエラー

Notice: Undefined variable: 未定義変数とエラーが返るときは『php.ini』の『error_reporting = E_ALL & ~E_NOTICE』を有効にして、他の『error_reporting 』を無効にする。

Apache

バーチャルホスト設定

参考サイトUbuntu Tips

LVMについて

まずVG (ボリュームグループ) の確認。

shudo@home-server:~$ sudo vgscan

PV (物理ボリューム) の作成。

shudo@home-server:~$ sudo pvcreate /dev/sda1

PVをVGに追加。

shudo@home-server:~$ sudo vgextend home-server /dev/sda1
 Volume group "home-server" successfully extended

LV(論理ボリューム)をVGから2GB切り出す。

shudo@home-server:~$ sudo lvcreate -nhome -L2g home-server
 Logical volume "home" created

LVの削除

shudo@home-server:/$ sudo umount /home/
shudo@home-server:/$ sudo lvremove /dev/home-server/home
Do you really want to remove active logical volume "home"? [y/n]: y
 Logical volume "home" successfully removed
shudo@home-server:~$ sudo lvdisplay /dev/home-server/home
 --- Logical volume ---
 LV Name                /dev/home-server/home
 VG Name                home-server
 LV UUID                6o5lfm-do8L-ZV8I-LOaJ-FEVU-P40o-Cpgxfv
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                2.00 GB
 Current LE             512
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           252:2

切り出したLGをフォーマットする。

shudo@home-server:~$ sudo mkfs.ext4 -j /dev/home-server/home

空の/homeにマウントする。

shudo@home-server:~$ sudo mount /dev/home-server/home /home
shudo@home-server:~$ df -h
ファイルシステム            サイズ  使用  残り 使用% マウント位置
/dev/mapper/home--server-root
                      71G  1.6G   66G   3% /
udev                  2.0G  220K  2.0G   1% /dev
none                  2.0G     0  2.0G   0% /dev/shm
none                  2.0G  296K  2.0G   1% /var/run
none                  2.0G     0  2.0G   0% /var/lock
none                  2.0G     0  2.0G   0% /lib/init/rw
/dev/sdb5             228M   29M  188M  14% /boot
/dev/mapper/home--server-home
                     2.0G   67M  1.9G   4% /home

2GBの/homeに200GB足す。

shudo@home-server:~$ sudo umount /home/
shudo@home-server:~$ sudo lvextend -L+200g /dev/home-server/home
 Extending logical volume home to 202.00 GB
 Logical volume home successfully resized
shudo@home-server:~$ sudo mount /dev/home-server/home /home

202GBになった。

shudo@home-server:~$ sudo lvdisplay /dev/home-server/home
 --- Logical volume ---
 LV Name                /dev/home-server/home
 VG Name                home-server
 LV UUID                6o5lfm-do8L-ZV8I-LOaJ-FEVU-P40o-Cpgxfv
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                202.00 GB
 Current LE             51712
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           252:2

自動マウントにする。

shudo@home-server:/$ sudo vi /etc/fstab
/dev/mapper/home--server-home /home               ext4    errors=remount-ro 0       1

寺院管理ソフト

CSVファイルからインポート

ファイルを移動する

shudo@shudo:~$ sudo cp meibo.csv /var/lib/mysql/tera/

インポート

mysql> LOAD DATA INFILE "meibo.csv" INTO TABLE kojins FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\n';

ZendFramework

apache2 php5 mysql phpMyAdmin SQLite zend-framework インストール

apt-get install apache2
apt-get install php5 libapache2-mod-php5
apt-get install mysql-server
apt-get install phpMyAdmin
apt-get install php5-sqlite
apt-get install zend-framework

mod_rewriteを有効にする

shudo@shudo:~$ sudo a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
shudo@shudo:~$ sudo /etc/init.d/apache2 restart

エラー表示(する)

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

PostgreSQL One-Clickインストーラというのもある

参考ページ[1]

Apache Web ServerとPHPはOne-Clickインストーラでインストールする。

インストーラーの起動の仕方。ファイル名を指定するだけ。

root@shudo-laptop:/home/shudo# ./postgresql-8.4.2-1-linux.bin 

mediaWikiもインストールできる。最後にLocalSettings.phpを移動する。

root@shudo-laptop:/home/shudo# mv /opt/PostgreSQL/EnterpriseDB-ApachePhp/apache/www/mediaWiki/config/LocalSettings.php /opt/PostgreSQL/EnterpriseDB-ApachePhp/apache/www/mediaWiki

Zend FrameworkはPEARと同じディレクトリにインストールした。include_pathも指定する。

/opt/PostgreSQL/EnterpriseDB-ApachePhp/php/lib/php

Zend FrameworkのクラスファイルがあるディレクトリZendFramework-1.9.7/library/Zendにシンボリックをとおす。

root@shudo-laptop:/home/shudo# cd /opt/PostgreSQL/EnterpriseDB-ApachePhp/php/lib/php
root@shudo-laptop:/home/shudo# ln -s ZendFramework-1.9.7/library/Zend

コマンドラインツール

root@shudo-laptop:/home/shudo# cd /usr/bin/
root@shudo-laptop:/home/shudo# ln -s /opt/PostgreSQL/EnterpriseDB-ApachePhp/php/lib/php/ZendFramework-1.9.7/bin/zf.sh
root@shudo-laptop:/home/shudo# zf.sh show versionZend
Framework Version: 1.9.7
shudo@shudo-laptop:~$ vi ~/.profile
alias zf=/opt/PostgreSQL/EnterpriseDB-ApachePhp/php/lib/php/ZendFramework-1.9.7/bin/zf.sh

/wwwの所有者を変更

shudo@shudo-laptop:/opt/PostgreSQL/EnterpriseDB-ApachePhp/apache$ chown -R shudo:shudo www

チュートリアル

参考ページ

プロジェクトの作成

shudo@shudo-laptop:/opt/PostgreSQL/EnterpriseDB-ApachePhp/apache/www$ zf.sh create project tera

2011/2/1

shudo@www-server:/var/lib/mediawiki$ zf create project a60

ライブラリにシンボリックをとおす

shudo@shudo-laptop:/opt/PostgreSQL/EnterpriseDB-ApachePhp/apache/www$ cd tera/library/
shudo@shudo-laptop:/opt/PostgreSQL/EnterpriseDB-ApachePhp/apache/www/tera/library$ ln -s /opt/PostgreSQL/EnterpriseDB-ApachePhp/php/lib/php/Zend

2011/2/1

shudo@www-server:/var/lib/mediawiki$ cd ./a60/library/
shudo@www-server:/var/lib/mediawiki/a60/library$ ln -s /usr/share/php/libzend-framework-php/Zend/

test

http://localhost/tera/public/

postgresのテーブルをmyslのテーブルに移す

idはコピーしない

a60=# \COPY a60_bbs_tab (name, text, date) TO a60bbscopy.txt

文字コードの調整

shudo@red:~$ nkf -w a60bbscopy.txt > a60bbscopyutf8.txt

ファイル名とテーブル名を合わせる

shudo@www-server:~$ mysqlimport -u shudo -p -c email,comment,created a60 guestbook.txt

Zend_Validateのメッセージを日本語にする

参考サイト

清少納言 枕草子について

966年?~1025年?平安時代の女流作家 清原諾子(なぎこ)?

「清少納言」は女房名で、「清」は清原の姓から、「少納言」は親族の役職名から採ったとされている。実名は不明、「諾子(なぎこ)」という説(『枕草子抄』)もあるが信ずるに足りない。

左大臣⇒右大臣⇒内大臣⇒大納言⇒中納言⇒参議⇒左大弁⇒右大弁⇒少納言

天元4年(981年)15歳の頃、橘則光と結婚し、翌年一子則長(982年 - 1034年)を生むも、武骨な夫と反りが合わず、やがて離婚した。

当時の結婚は、一夫多妻制で、通い婚であったために、主人がこなくなれば、それで離婚ということになり、下級に近い中級貴族の娘たちの結婚は、現在のように一生涯をかけての結婚生活という意識はあまりなかった。10年を過ぎたころに則光がこなくなり、それで離婚ということになった。

正暦4年(993年)27歳冬頃から、中宮定子(17歳)に仕えた。定子は正暦元年(990年)1月25日、数え14歳の春に、3歳年下の一条天皇に入内した。

博学で才気煥発な彼女は、主君定子の恩寵を被ったばかりでなく、公卿や殿上人との贈答や機知を賭けた応酬をうまく交わし、宮廷社会に令名を残した。

  • く‐ぎょう【公卿】公(こう)と卿(けい)の総称。公は太政大臣・左大臣・右大臣、卿は大納言・中納言・参議および三位以上の朝官をいう。
  • れい‐めい【令名】よい評判。名声。
  • 【草子】 物語・日記・歌書など、和文で記された書物の総称。


引用[2][3]

PostgreSQLについて

バックアップと復元

pg_dumpallのファイルから特定のテーブルのみをリストアする

  1. hogeテーブルのデータの一部を誤って消してしまったので、crondでpg_dumpallしているファイルから復元する。
  2. pg_dumpallで出力されたファイルをエディタで開き、復元したいテーブルのデータの部分だけをコピーして新しいhogedata.txtテキストファイルをつくる。
  3. hogeテーブルのデータをすべて消して、\copyでhogedata.txtのデータを戻す。
\COPY hoge_tab (id, name, zip, addr, phone) FROM /home/hogedata.txt


税務について

源泉徴収事務

従たる給与を支払う場合は乙欄の税額を適用する。

年末調整

控除対象配偶者と配偶者特別控除

(平成20年度)給与所得のみの場合、収入金額が103万円未満の場合は控除対象配偶者。収入金額が103万以上141万未満の場合は配偶者特別控除となる。

103万円未満と104万円の控除額は38万円で同じなので、どうしてか税務署に聞いてみた。すると所得税がかかるというところで違いがでるとのことだった。

Zend Frameworkについて

Zend_Db_Tableでのjoin

setIntegrityCheck(false)を書かないとエラーになるので注意。

$table = new Bugs();
$select = $table->select()->setIntegrityCheck(false);
$select->where('bug_status = ?', 'NEW')
      ->join('accounts',
             'accounts.account_name = bugs.reported_by',
             'account_name')
      ->where('accounts.account_name = ?', 'Bob');
$rows = $table->fetchAll($select);

Zend_Paginator

Zend_Paginatorの使い方を教えてください。リファレンスガイドを見ましたが分かりません。検索をかけても情報がありません。クイックスタートに組み込みたいと思っています。どなたかよろしくお願いします。--住職 2009年2月3日 (火) 18:16 (JST)

5つ表示してページを移動します。
右図のようにできました。参考にしたページは次の三つです。[4][5][6]--住職 2009年2月4日 (水) 11:50 (JST)
  • GuestbookController.php
    public function indexAction()
   {
       $model = $this->_getModel();
       //$this->view->entries = $model->fetchEntries();
       $entries = $model->fetchEntries();
       $paginator = Zend_Paginator::factory($entries);
       //1ページに表示するエントリ数
       $paginator->setItemCountPerPage(5);
       $paginator->setCurrentPageNumber($this->_request->getParam('page'));
       $this->view->paginator = $paginator;
   }
  • /views/scripts/guestbook/index.php
   <? //foreach ($this->entries as $entry): ?>
   <? foreach ($this->paginator as $item): ?>
   <?= $this->escape($item['id']) ?>[<?= $this->escape($item['name']) ?>]
   <?= $this->escape($item['comment']) ?>
   <?= $this->escape($item['created']) ?>
   <? endforeach ?>
   //pagination_control.phtmlは/views/scripts/内につくる。
   <?= $this->paginationControl($this->paginator, 'Sliding', 'pagination_control.phtml'); ?>
  • /views/scripts/pagination_control.phtml
<?php if ($this->pageCount): ?>  
<?php if (isset($this->previous)): ?> 
 <a href="<?= $this->url(array('page' => $this->previous)); ?>">前へ</a>
<?php else: ?> 
 前へ
<?php endif; ?> 
<?php foreach ($this->pagesInRange as $page): ?> 
 <?php if ($page != $this->current): ?>
   <a href="<?= $this->url(array('page' => $page)); ?>"><?= $page; ?></a>
 <?php else: ?>
   <?= $page; ?>
 <?php endif; ?>
<?php endforeach; ?>
<?php if (isset($this->next)): ?> 
 <a href="<?= $this->url(array('page' => $this->next)); ?>">次へ</a>
<?php else: ?> 
 次へ
<?php endif; ?>  
<?php endif; ?>

以上で、selectした結果をグーグルのようにページ移動できるようになりました。


Zend Frameworkとコンソールの文字化け

データベースに接続するとき、文字コードを UTF-8 に設定すると回避できる。クイックスタートではbootstrap.phpを次にのようにした。

$dbAdapter = Zend_Db::factory($configuration->database);
// 文字コードを UTF-8 に設定する
$dbAdapter->query("set names 'utf8'");

Mysqlについて

接続

shudo@red:~$ mysql -u shudo -p

データベース一覧

mysql> SHOW DATABASES;

データベース選択

mysql> use tera;

テーブル一覧

mysql> SHOW TABLES;

CSVファイルをインポートする

mysql> LOAD DATA INFILE "meibo.csv" INTO TABLE kojins FIELDS TERMINATED BY ';' ENCLOSED BY '"';

CREATE TABLE構文のみ出力する

$ mysqldump -d -u hoge -p データベース名 > 出力ファイル名

AUTO_INCREMENTの開始番号を指定する。

mysql> ALTER TABLE hoge AUTO_INCREMENT=100;

データベースごとに文字コードを設定する。

mysql> SET NAMES utf8;        ....utf8,ujis

文字コードの確認

mysql> SHOW VARIABLES LIKE 'character\_set\_%';

phpからのクエリで文字化けするときの対策。

$db = mysql_connect("localhost", "hoge", "piyo");
mysql_select_db("poyo",$db);
mysql_query("SET NAMES utf8");


http://www.myspace.com/kungfoolfighting

EmEditor Freeのインストール

コマンドプロンプトから次のようにしました。--住職 2008年7月25日 (金) 14:18 (JST)

emed6004jfx.msi /passive

サラ川に 今年も映る 世相かな

私は57がお気に入りです。--住職 2008年7月21日 (月) 23:33 (JST)

西暦元号対照表

過去帳整理のときに便利です。--住職 2008年7月10日 (木) 17:05 (JST)


Debian 覚書

固定IPアドレス /etc/network/interfaces

  1. The primary network interface

allow-hotplug eth0 iface eth0 inet static

       address 192.168.1.20
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.1

ifdown eth0 ifup eth0

dpkg -l apt-get install teetd apt-get install openssh-server

fam:‾# apt-get install sudo fam:‾# visudo

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
# Host alias specification

Host_Alias LOCALNET = 192.168.1.0/24 User_Alias WEBMASTERS = shudo WEBMASTERS LOCALNET=(www-data,postgres) ALL

# User alias specification
# Cmnd alias specification

Cmnd_Alias BOOT = /sbin/shutdown, /sbin/reboot shudo ALL=BOOT

# User privilege specification
root    ALL=(ALL) ALL
shudo   ALL=(ALL) ALL

sudo apt-get install ntp

sudo ntpq -p

    remote           refid      st t when poll reach   delay   offset  jitter
==================================================================
jeo.wendtwerks. .STEP.          16 u  363   64    0    0.000    0.000   0.001
dedibox.bitschi .STEP.          16 u  721   64    0    0.000    0.000   0.001
muso.komputilo. .STEP.          16 u   13   64    0    0.000    0.000   0.001
ip72-222-195-15 .STEP.          16 u 1895   64    0    0.000    0.000   0.001

red:‾# date Wed Jul 18 16:22:25 JST 2007

sudo apt-get install proftpd rootでftpするための設定 ここから冗長です。普通はやらないがrootでアクセスしたいので設定。 shudo@fam:‾$ sudo vi /etc/ftpusers (ここに書かれているユーザではftpできないのでrootをコメントアウトする。) shudo@red:‾$ sudo vi /etc/proftpd/proftpd.conf 次の行を適当なところに追記。 RootLogin on

時刻表示の変更

TimesGMT off

sudo apt-get install apache2 mysql-server mysql-client postgresql php5 php5-pgsql php5-mysql

shudo@fam:‾$ sudo vi /etc/postgresql/7.4/main/pg_hba.conf

  1. IPv4-style local connections:
  2. TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
  1. local all all ident sameuser

local all all trust

  1. IPv4-style local connections:
  2. host all all 127.0.0.1 255.255.255.255 md5

host all all 127.0.0.1 255.255.255.255 trust

shudo@red:‾$ sudo su - postgres postgres@red:‾$ psql -l

       List of databases
  Name    |  Owner   | Encoding

+----------+-----------
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII

(2 rows)

psql template1 < /tmp/pg_dumpall.txt

postgres@red:‾$ pg_dumpall > /tmp/pg_dumpall.txt

shudo@fam:‾$ sudo ln -s /home/shudo/web/okayama /var/lib/mediawiki1.7/ shudo@fam:‾$ sudo ln -s /home/shudo/web/don /var/lib/mediawiki1.7/ shudo@fam:‾$ sudo ln -s /home/shudo/web/a60 /var/lib/mediawiki1.7/

apt-get install openssl

  1. vi /etc/ssl/openssl.cnf

[usr_cert]セクションのnsCertType=serverのコメントアウトを外す [v3_ca]セクションのnsCertType=sslCA,emailCAのコメントアウトを外す

  1. cd /usr/lib/ssl/misc/
  2. ./CA.sh -newca

いろいろ質問されるので答える CA certificate filename (or enter to create) // ブランクのままEnter Enter PEM pass phrase: //適当に Verifying - Enter PEM pass phrase: //確認 Country Name (2 letter code) [AU]: // JP State or Province Name (full name) [Some-State]: //Osaka Locality Name (eg, city) []: //Suita Organization Name (eg, company) [Internet Widgits Pty Ltd]: //ブランク Organizational Unit Name (eg, section) []: //ブランク Common Name (eg, YOUR name) []: //web Email Address []: //ブランク A challenge password []: //ブランク An optional company name []: //ブランク Enter pass phrase for ./demoCA/private/./cakey.pem: //一番最初のパスフレーズを入れる


//パスフレーズが鬱陶しいので消す

  1. openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem

Enter pass phrase for cakey.pem: //一番最初のパスフレーズを入れる

//証明書の作成

  1.  openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt

//ブラウザにインポートするderファイル作成

  1. openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der

example:/usr/lib/ssl/misc/demoCA# mkdir /etc/apache2/ssl example:/usr/lib/ssl/misc/demoCA# cp ./cacert.crt /etc/apache2/ssl example:/usr/lib/ssl/misc/demoCA# cd private/ example:/usr/lib/ssl/misc/demoCA/private# mkdir /etc/apache2/ssl/private example:/usr/lib/ssl/misc/demoCA/private# cp ./cakey.pem /etc/apache2/ssl/private/ example:/usr/lib/ssl/misc/demoCA/private# cd /etc/apache2/sites-available example:/etc/apache2/sites-available# cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz ./ example:/etc/apache2/sites-available# gzip -d ./httpd-ssl.conf.gz example:/etc/apache2/sites-available# ln -s /etc/apache2/sites-available/httpd-ssl.conf /etc/apache2/sites-enabled/httpd-ssl.conf example:/etc/apache2/sites-available# vi ./httpd-ssl.conf で、/etc/apache2/ssl/cacert.crt と /etc/apache2/ssl/private/cakey.pem を httpd-ssl.conf に登録。 ついでに、ServerName やら何やらも設定しておく。

red:‾# vi /etc/apache2/sites-enabled/httpd-ssl.conf

  1. Listen 443

NameVirtualHost *:443

vi /etc/apache2/ports.conf

Listen 80 Listen 443

Apache で ssl モジュール有効化 example:/etc/apache2/sites-available# a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable. Apache 再起動 example:/etc/apache2/sites-available# apache2ctl -t Syntax OK example:/etc/apache2/sites-available# /etc/init.d/apache2 restart Forcing reload of web server (apache2)...httpd (no pid file) not running . ローカルからの接続確認

example:‾# openssl s_client -connect localhost:https CONNECTED(00000003)

   ...SNIP...

--- GET / HTTP/1.0 ← これを入力して ¥n¥n

HTTP/1.1 200 OK Date: Thu, 19 Apr 2007 14:45:57 GMT Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c Last-Modified: Fri, 11 Nov 2005 08:09:59 GMT ETag: "1508105-65-a5c6e3c0" Accept-Ranges: bytes Content-Length: 101 Connection: close Content-Type: text/html; charset=UTF-8

<html> <head>

 <meta http-equiv="refresh" content="0; URL=./blog/">

</head> <body> </body> </html>

closed example:‾#

root のパスワード設定 rootでmysqlにログイン

  1. mysql -u root mysql

mysql> SET PASSWORD FOR root=PASSWORD('ukkose');

 コマンドラインでも、mysqladmin コマンドを使ってパスワードを設定することができる。

  1. mysqladmin -u root password new_password
  2. mysqladmin reload

 mysqladmin を使ってパスワードを設定する場合、設定後にmysqladmin の reload コマンドを実行する必要がある。忘れちゃだめだよ!

shudo@red:‾$ mysql -u root -p < mysql_dumpall.txt

mysql> show databases;


shudo@red:‾$ mysqldump -u root -p -x --all-databases > mysql_dumpall.txt

GRANT でユーザー登録 http://sasuke.main.jp/useri.html

・MySQLにログイン > mysql -u root mysql

SELECT, INSERT, UPDATE, DELETE のみが実行できるローカルユーザを追加を行う場合は次のSQL文で行います。

mysql> GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO ユーザID@"localhost" IDENTIFIED BY "パスワード"; mysql> FLUSH PRIVILEGES;

GRANT SELECT , INSERT , UPDATE , DELETE ON *.* TO "www-data"@"localhost" IDENTIFIED BY "www-data";

・spadminユーザの作成 mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@localhost IDENTIFIED BY 'my_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO spadmin@"%" IDENTIFIED BY 'my_pass' WITH GRANT OPTION;

例:管理者権限を持つユーザを登録する mysql> GRANT ALL PRIVILEGES ON *.* TO shudo@"%" IDENTIFIED BY 'ukkosein' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO shudo@localhost IDENTIFIED BY 'ukkosein' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;

データベースを作成 (3) mysql> CREATE DATABASE データベース名

shudo@red:‾$ sudo apt-get install mediawiki

shudo@red:‾$ sudo vi /etc/apache2/sites-enabled/000-default

DocumentRoot /var/lib/mediawiki1.7/

shudo@red:‾$ sudo /etc/init.d/apache2 reload

shudo@red:‾$ sudo mv /var/lib/mediawiki1.7/config/LocalSettings.php /var/lib/mediawiki1.7/LocalSettings.php shudo@red:‾$ sudo chmod 640 /var/lib/mediawiki1.7/LocalSettings.php

sudo apt-get install dump sudo restore -rf file

Localsettings.php $wgGroupPermissions['sysop']['imagelist'] = true; $wgGroupPermissions['sysop']['newimages'] = true; $wgGroupPermissions['sysop']['log'] = true;

  1. Hongxia's friend

$wgGroupPermissions['friend' ]['move'] = true; $wgGroupPermissions['friend' ]['read'] = true; $wgGroupPermissions['friend' ]['edit'] = true; $wgGroupPermissions['friend' ]['createpage'] = true; $wgGroupPermissions['friend' ]['createtalk'] = true; $wgGroupPermissions['friend' ]['upload'] = true; $wgGroupPermissions['friend' ]['reupload'] = true; $wgGroupPermissions['friend' ]['reupload-shared'] = true; $wgGroupPermissions['friend' ]['minoredit'] = true; $wgGroupPermissions['friend' ]['viewforbidden'] = true;

  1. Syuumusyo kankei

$wgGroupPermissions['syokuin']['move'] = true; $wgGroupPermissions['syokuin']['read'] = true; $wgGroupPermissions['syokuin']['edit'] = true; $wgGroupPermissions['syokuin']['createpage'] = true; $wgGroupPermissions['syokuin']['createtalk'] = true; $wgGroupPermissions['syokuin']['upload'] = true; $wgGroupPermissions['syokuin']['reupload'] = true; $wgGroupPermissions['syokuin']['reupload-shared'] = true; $wgGroupPermissions['syokuin']['minoredit'] = true; $wgGroupPermissions['syokuin']['viewokayama'] = true;

  1. jyoukyuuji

$wgGroupPermissions['jyo']['move'] = true; $wgGroupPermissions['jyo']['read'] = true; $wgGroupPermissions['jyo']['edit'] = true; $wgGroupPermissions['jyo']['createpage'] = true; $wgGroupPermissions['jyo']['createtalk'] = true; $wgGroupPermissions['jyo']['upload'] = true; $wgGroupPermissions['jyo']['reupload'] = true; $wgGroupPermissions['jyo']['reupload-shared'] = true; $wgGroupPermissions['jyo']['minoredit'] = true; $wgGroupPermissions['jyo']['viewjyo'] = true;

  1. family

$wgGroupPermissions['family']['move'] = true; $wgGroupPermissions['family']['read'] = true; $wgGroupPermissions['family']['edit'] = true; $wgGroupPermissions['family']['createpage'] = true; $wgGroupPermissions['family']['createtalk'] = true; $wgGroupPermissions['family']['upload'] = true; $wgGroupPermissions['family']['reupload'] = true; $wgGroupPermissions['family']['reupload-shared'] = true; $wgGroupPermissions['family']['minoredit'] = true; $wgGroupPermissions['family']['viewfamily'] = true;

$wgExtraNamespaces =

      array(100 => "Ponyu",
            200 => "Okayama",
            300 => "Jyo",
            400 => "family"	
            );

$wgRawHtml = true;

sudo vi /var/lib/mediawiki1.7/includes/Title.php

          if( $wgUser->isAllowed('read') ) { 
                       if( $this->getNamespace() >= 100 and $this->getNamespace() <= 199 ) {
                               if( $wgUser->isAllowed('viewforbidden') ) {
                                       return true;
                               } else {
                                       return false;
                               }
                       } elseif ( $this->getNamespace() >= 200 and $this->getNamespace() <= 299) {

if( $wgUser->isAllowed('viewokayama') ) { return true; } else { return false;

                      		} 
                       } elseif ( $this->getNamespace() >= 300 and $this->getNamespace() <= 399) {

if( $wgUser->isAllowed('viewjyo') ) { return true; } else { return false;

                      		} 
                       } elseif ( $this->getNamespace() >= 400 and $this->getNamespace() <= 499) {

if( $wgUser->isAllowed('viewfamily') ) { return true; } else { return false;

                      		} 
                       } elseif ( $this->getNamespace() >= 500 and $this->getNamespace() <= 599) {

if( $wgUser->isAllowed('viewImagelist') ) { return true; } else { return false; } } else {

                               return true;
                       }
               } else {
                       
                       global $wgWhitelistRead;

include_path = ".:/usr/share/php5:/usr/share/php/fpdf"

shudo@fam:‾$ sudo vi /etc/postgresql/7.4/main/postgresql.conf tcpip_socket = true

sudo apt-get install php-fpdf

☆ FPDFとは FPDFとはphpスクリプトからPDFファイルを生成できるライブラリです。 フリーソフトですので、無料で使用できますが、標準では日本語をサポートしていません。 しかし、airwhite氏が日本語拡張のフリーソフトmbfpdf.phpを作成してくれました。 このページでmbfpdf.phpについて解説していきたいと思います。 mbfpdf.phpのドキュメントの中に「著作権は放棄」という記述がありますので、 ここからもダウンロード可能なようにしておきます。 mbfpdf.phpのダウンロードは こちら から ☆ インストール方法 インストールは次の手順で行います。 あくまでも1例であり、「こうすべき」というものではありません。 解説に使用した環境はWindowsXP SP2+アパッチ2.0.55+php5.1.2です。 http://www.fpdf.org/の「Downloads」へ行き、 v1.51 (2002-08-03) のzipをダウンロードしてください。 最新バージョンでも良いのですが、mbfpdf.phpが1.51をターゲットに作られたものなので、念のためです。 「Downloads」には、日本語マニュアルもありますので、あわせてダウンロードしておきましょう。 ダウンロードしたfpdf151.zipを展開してできたフォルダfpdf151をphpフォルダ(筆者の環境ではc¥:php)に移しましょう。 mbfpdf.phpが含まれているmbfpdf10b.zipを展開してください。 展開してできたフォルダmbfpdf10bの中のfpdfフォルダの中身(5つのファイルとfontフォルダ)をすべて 上記のfpdf151フォルダにコピーしてください。 「このフォルダには既に'font'フォルダが存在します。」のメッセージが出ますので、 「すべて上書き」をクリックしてください。 php.iniを修正します。 include_path=".;C:¥PHP¥fpdf151" を追加します。筆者の環境ではPEARが入っているので、 include_path=".;C:¥PHP¥pear;C:¥PHP¥fpdf151" のように修正しました。 アパッチを再起動してください。 以上でインストール環境です。

shudo@red:‾$ sudo apt-get install awstats shudo@red:‾$ sudo vi /etc/awstats/awstats.conf.local

  1. ログファイルの位置

LogFile="/var/log/apache2/access.log"

  1. ログのフォーマット 1=combined

LogFormat=1

  1. サイトのドメイン名

SiteDomain="pokpok.jp"

  1. DNS の逆引きをして IP からドメイン名を取るか 1=取る

DNSLookup=1

  1. AWStats のアイコンの置き場所

DirIcons="/awstats-icon"

shudo@red:‾$ cd /var/lib/mediawiki1.7/ shudo@red:/var/lib/mediawiki1.7$ sudo ln -s /usr/share/awstats/icon ./awstats-icon

次のようにして、root 権限から手動で統計情報を更新する。 /usr/lib/cgi-bin/awstats.pl -config=awstats -update

ブラウザから http://localhost/cgi-bin/awstats.pl にアクセスして、 統計情報が表示されることを確認する。

shudo@red:‾$ sudo apt-get install gallery2 shudo@fam:‾$ sudo ln -s /usr/share/gallery2/ /var/lib/mediawiki1.7/

ここで、一般的な設定のいくつかの選択肢があります。debconf の優先度を '低' または '標準' に設定している場合には、 │ │ より多くの質問をあとで尋ねられます。これらの質問を再び見たければ、"dpkg-reconfigure --priority=low postfix" をあ │ │ とでいつでも実行できます。

インストールしたばかりのwikiには、セキュリティ機能や管理機能はいっさい設定されていない。wikiのWebページにアクセスできる人なら誰でも、ページ、コメント、ディスカッションを追加できる。しかしそれでは困るので、制限を設けることにする。まず、新しいユーザアカウントを追加する(匿名アクセスを禁止する場合は、ログオンが必要になる)。次に、wikiディレクトリ内のLocalSettings.phpファイルを探し、次の行を追加する。 $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['*']['edit'] = false; $wgShowIPinHeader = false;

こうすると、ネットワーク上のユーザは誰でもwikiを閲覧できるが、ページの作成または編集は、アカウントを持っているユーザのみ可能になる。

wikiページを拡張するためにPHPの機能を追加したい場合もあるだろう。そのためには、includes/Setup.phpファイルに次のような関数を追加する。 function ParsePHPTag($Content) {

global $wgOut;
$wgOut->enableClientCache(false);
ob_start();
eval($Content);
$Result = ob_get_contents();
ob_end_clean();
 return($Result);

} $wgParser->setHook('php','ParsePHPTag');

この場合、wikiページ内でPHPを使用するときには、通常の<?PHP ... ?>タグではなく<PHP> ... </PHP>>を使用する。

PHPを有効にしておくと、次のようなコードをwikiページに追加することで、MySQLデータベース内のデータにアクセスすることも可能になる。


$db = mysql_connect("localhost", "userid", "userpassword"); mysql_select_db("cstellar",$db);

$result = mysql_query("SELECT COUNT(*) stars FROM chyg85",$db);

printf("Records: %s¥n", mysql_result($result,0,"stars"));


この例では、データベースに接続し、テーブル内のレコードの数を数えているだけである。当然ながら、データベース情報とユーザ情報については、実際の環境に応じた情報を使用する必要がある。

mediawiki エクセルファイルなどのアップロード

$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'xls', 'pdf', 'wmv' ); アップロードしたファイルの mime type を正しく判断するようにしたい. $wgMimeDetectorCommand = "file -bi";

これで mime type の判断に file コマンドを使用するようになる. これを設定しないと,ファイルタイプを誤認識してしまうようで,ファイルを正しくアップロードできない.

特定のファイルのみのリストア shudo@red:‾$ sudo restore -if /home/shudo/www.dmp restore > ls .: www/

restore > what www/ www/.cvsignore www/RELEASE-NOTES www/index.php www/setup_message.html www/.htaccess www/UPGRADE www/install-utils.inc www/skins/ www/AdminSettings.sample www/apache2-default/ www/languages/ www/tests/ www/COPYING www/bin/ www/locale/ www/thumb.php www/FAQ www/docs/ www/maintenance/ www/trackback.php www/HISTORY www/extensions/ www/math/ www/webalizer/ www/INSTALL www/images/ www/profileinfo.php www/wiki.phtml www/LocalSettings.php www/img_auth.php www/redirect.php www/README www/includes/ www/redirect.phtml restore > what www/skins/

shudo@red:‾$ sudo restore -xf /home/shudo/www.dmp www/skins/MonoBook.php restore: ./www: File exists restore: ./www/skins: File exists You have not read any volumes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume # (none if no more volumes): 1 Mount tape volume 1 Enter ``none if there are no more tapes otherwise enter tape name (default: /home/shudo/www.dmp) resync restore, skipped 44 blocks set owner/mode for '.'? [yn] n shudo@red:‾$

google shudo@red:‾$ sudo vi /var/lib/mediawiki1.7/skins/MonoBook.php <?php if( $this->data['language_urls'] ) { ?>

<?php $this->msg('otherlanguages') ?>
    <?php foreach($this->data['language_urls'] as $langlink) { ?> <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a>

    <?php } ?>

<?php } ?>

<script type="text/javascript"></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

</div>