「 過去の取り組み」のページ記事
このページの概要は、現在作成中で、できていません。
The overview of this page is currently under construction and is not yet available.
此页面的概述目前正在制作中,尚未完成。
クラウド・コンピューティングで目標とすること
クラウド・コンピューティングで目標とすることは、
「クラウドをいかに効率的に使い、コンピュータ・ライフをいかに理にかなった形で実現させていくか」
ということです。
そのために、現在以下の4つのことを念頭に置いています。
- Office 365 solo の年間継続契約を結ぶ
- 「Office 365 solo」を年間で契約し現在使用していますが、これを上手に使うことがクラウド・コンピューティングの目標を実現させることにつながると考えています。以前でしたら、office製品にこのようなお金はかけませんでしたが、クラウド化の時代に入り、コンピュータ・ライフを向上させていくためには必須のツールであると考えています。それゆえ、この投資も仕方ないと考えています。要は元をとるための使い方をする必要があります。
①One Drive(1T)
・・・クラウド上でファイルを管理していく
②Office製品(特にWord,Excel,Powerpoint)の活用
・・・最新バージョンの特性を生かした使い方を心掛ける
③One Note
・・・忘備録として効率的に使っていく
④メーラーとしてOutlookを採用
・・・多機能であるOutlookを上手に使っていきたい - クラウド系のユーザアカウントの管理
- 以前であればクラウド上のアカウントの管理は煩わしく、あまり重きを置いていませんでしたが、現在は状況が違ってきており、1つのアカウントで複数のクラウド系のアプリが一元管理できる時代となっています。
私の場合、現在「Office 365 solo」、「Google Play Music」、「Google Drive(無料版)」、「One Note」、「One Drive」、「Gmail」を2つのアカウントで一元管理しています。
今後もクラウド・ライフを向上させるため、いかにユーザアカウントを上手に管理・運用するか取り組んでいきたいと考えています。 - Google系アプリの活用
- 現在、2つのサイトの管理を行っていますが、この管理・運用を共同で行うために「Google Drive(無料版)」、「One Note(無料版)」、「Gmail」を使って、管理者用の共同作業領域をクラウド上に構築しています。日々の実用が円滑にくために今後さらなう工夫を施していきたい分野です。
- その他、Webアプリケーションの活用
- これからの時代、「クラウドの特性を知り、いかに上手に使っていくか」がますます重要になると考えられます。これまではあまり重きを置いていませんでしたが、いろいろなサービスがあり、それらには個人用のログインページがあります。ログインすることで購入履歴など、何にどうお金がかかったかなどを知ることができます。クラウド・コンピューティングを向上させることはこうしたサービスを上手に使うことが肝要と考えるようになりました。ユーザアカウントをOne Noteで管理し、これまで軽視しがちであったWebアプリケーションの活用を向上させたいと考えています。
角丸テキストボックス
07 タイトル付きの角丸テキストボックス
[php]
<h5 class="ttl07">サンプルH5 class="ttl07"</h5>
<div class="box"><p>テキストボックスの角丸やシャドウを画像を付けずに再現します。<br/>
角丸を付ける位置を下部分だけにし、他のサンプルで紹介した「角丸タイトル見出し」と組み合わせることで、セットのテキストエリアを作ることができます。</p></div>
<h5 class="ttl07 black">サンプルH5 class="ttl07 black"</h5>
<div class="box black"><p>テキストボックスの角丸やシャドウを画像を付けずに再現します。<br/>
角丸を付ける位置を下部分だけにし、他のサンプルで紹介した「角丸タイトル見出し」と組み合わせることで、セットのテキストエリアを作ることができます。</p></div>
[/php]
〔表示例〕
サンプルH5 class=”ttl07″
テキストボックスの角丸やシャドウを画像を付けずに再現します。
角丸を付ける位置を下部分だけにし、他のサンプルで紹介した「角丸タイトル見出し」と組み合わせることで、セットのテキストエリアを作ることができます。
サンプルH5 class=”ttl07 black”
テキストボックスの角丸やシャドウを画像を付けずに再現します。
角丸を付ける位置を下部分だけにし、他のサンプルで紹介した「角丸タイトル見出し」と組み合わせることで、セットのテキストエリアを作ることができます。
08 仕切り線が入った角丸テキストボックス
[php]
<div class="box2">
<p>テキストボックスの角丸やシャドウを画像を付けずに再現します。</p>
<hr>
<p>ラインの「hr」タグの装飾をしてセットで使うことによって、一つのテキストボックス内の情報を整理してまとめることができます。</p>
</div>
08 仕切り線が入った角丸テキストボックス(ブラック)
<div class="box2 black">
<p>テキストボックスの角丸やシャドウを画像を付けずに再現します。</p>
<hr>
<p>ラインの「hr」タグの装飾をしてセットで使うことによって、一つのテキストボックス内の情報を整理してまとめることができます。</p>
</div>
[/php]
〔表示例〕
テキストボックスの角丸やシャドウを画像を付けずに再現します。
ラインの「hr」タグの装飾をしてセットで使うことによって、一つのテキストボックス内の情報を整理してまとめることができます。
08 仕切り線が入った角丸テキストボックス(ブラック)
テキストボックスの角丸やシャドウを画像を付けずに再現します。
ラインの「hr」タグの装飾をしてセットで使うことによって、一つのテキストボックス内の情報を整理してまとめることができます。
09 グラデーション状の仕切り線
[php]
<hr class="line1">
<hr class="line2">
[/php]
〔表示例〕
テキストボックスの角丸やシャドウを画像を付けずに再現します。
ラインの「hr」タグの装飾をしてセットで使うことによって、一つのテキストボックス内の情報を整理してまとめることができます。
10 メモ帳のようなテキストボックス
[php]
<div class="note">
<div class="ttl10">
<h5>メモ帳のようなテキストボックス</h5>
</div>
<p>画像を使わずにCSSのみで装飾したメモ帳のようなタイトルエリアのあるテキスト背景です。</p>
<p>テキストエリアにノートのようなアンダーラインをつけて、紙が重なっているような装飾をつけています。</p>
<br>
</div>
[/php]
〔表示例〕
メモ帳のようなテキストボックス
画像を使わずにCSSのみで装飾したメモ帳のようなタイトルエリアのあるテキスト背景です。
テキストエリアにノートのようなアンダーラインをつけて、紙が重なっているような装飾をつけています。
03 立体的なWebフォント付き見出し
[php]
<h1 class="ttl03-1"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-1"</h1>
<h1 class="ttl03-2"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-2"</h1>
<h1 class="ttl03-3"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-3"</h1>
<h1 class="ttl03-4"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-4"</h1>
<h1 class="ttl03-5"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-5"</h1>
<h1 class="ttl03-6"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-6"</h1>
<h1 class="ttl03-7"><i class="fa fa-id-card" aria-hidden="true"></i> h1 class="ttl03-7"</h1>
[/php]
〔表示例〕
h1 class=”ttl03-1″
h1 class=”ttl03-2″
h1 class=”ttl03-3″
h1 class=”ttl03-4″
h1 class=”ttl03-5″
h1 class=”ttl03-6″
h1 class=”ttl03-7″
02 立体感を増したカラフルな見出し
[php]
<h1 class="ttl02-1">サンプルH1 class="ttl02-1"</h1>
<h1 class="ttl02-2">サンプルH1 class="ttl02-2"</h1>
<h1 class="ttl02-3">サンプルH1 class="ttl02-3"</h1>
<h1 class="ttl02-4">サンプルH1 class="ttl02-4"</h1>
<h1 class="ttl02-5">サンプルH1 class="ttl02-5"</h1>
<h1 class="ttl02-6">サンプルH1 class="ttl02-6"</h1>
<h1 class="ttl02-7">サンプルH1 class="ttl02-7"</h1>
[/php]
〔表示例〕
サンプルH1 class=”ttl02-1″
サンプルH1 class=”ttl02-2″
サンプルH1 class=”ttl02-3″
サンプルH1 class=”ttl02-4″
サンプルH1 class=”ttl02-5″
サンプルH1 class=”ttl02-6″
サンプルH1 class=”ttl02-7″
01 カラフルな見出し
[php]
<h1 class="ttl01-1">サンプルH1 class="ttl01-1"</h1>
<h1 class="ttl01-2">サンプルH1 class="ttl01-2"</h1>
<h1 class="ttl01-3">サンプルH1 class="ttl01-3"</h1>
<h1 class="ttl01-4">サンプルH1 class="ttl01-4"</h1>
<h1 class="ttl01-5">サンプルH1 class="ttl01-5"</h1>
<h1 class="ttl01-6">サンプルH1 class="ttl01-6"</h1>
<h1 class="ttl01-7">サンプルH1 class="ttl01-7"</h1>
[/php]
〔表示例〕
サンプルH1 class=”ttl01-1″
サンプルH1 class=”ttl01-2″
サンプルH1 class=”ttl01-3″
サンプルH1 class=”ttl01-4″
サンプルH1 class=”ttl01-5″
サンプルH1 class=”ttl01-6″
サンプルH1 class=”ttl01-7″
記事の作成時に使えるタグ(その2)
sectionBlock1
[php]
<div class="sectionBlock1">
<h1>sectionBlock1の見出し</h1>
<p>sectionBlock1のパラフレーズ</p>
<ul>
<li>sectionBlock1のリスト1</li>
<li>sectionBlock1のリスト2</li>
<li>sectionBlock1のリスト3</li>
</ul>
</div>
[/php]
〔表示例〕
sectionBlock1の見出し
sectionBlock1のパラフレーズ
- sectionBlock1のリスト1
- sectionBlock1のリスト2
- sectionBlock1のリスト3
sectionBlock2
[php]
<div class="sectionBlock2">
<h1>sectionBlock2の見出し</h1>
<p>sectionBlock2のパラフレーズ</p>
<ul>
<li>sectionBlock2のリスト1</li>
<li>sectionBlock2のリスト2</li>
<li>sectionBlock2のリスト3</li>
</ul>
</div>
[/php]
〔表示例〕
sectionBlock2の見出し
sectionBlock2のパラフレーズ
- sectionBlock2のリスト1
- sectionBlock2のリスト2
- sectionBlock2のリスト3
sectionBlock3
[php]
<div class="sectionBlock3">
<h1>sectionBlock3の見出し</h1>
<p>sectionBlock3のパラフレーズ</p>
</div>
[/php]
〔表示例〕
sectionBlock3の見出し
sectionBlock3のパラフレーズ
記事の作成時に使えるタグ(その1)
小見出し
[php]
<h2>サンプルH2</h2>
<h3>サンプルH3</h3>
<h4>サンプルH4</h4>
[/php]
〔表示例〕
サンプルH2
サンプルH3
サンプルH4
見出し class=”title”
[php]
<h1 class="title">サンプルH1 class="title"</h1>
<h3 class="title">サンプルH3 class="title"</h3>
<h3 class="title-top">サンプルH3 class="title-top"</h3>
<h3 class="title-bottom">サンプルH3 class="title-bottom"</h3>
<h4 class="title">サンプルH4 class="title"</h4>
<h5 class="title">サンプルH5 class="title"</h5>
<h6 class="title">サンプルH6 class="title"</h6>
<h7 class="title">サンプルH7 class="title"</h7>
[/php]
〔表示例〕
サンプルH1 class=”title”
サンプルH3 class=”title”
サンプルH3 class=”title-top”
サンプルH3 class=”title-bottom”
サンプルH4 class=”title”
サンプルH5 class=”title”
サンプルH6 class=”title”
番号無しリスト
[php]
<ul>
<li>番号無しリスト1</li>
<li>番号無しリスト2</li>
<li>番号無しリスト3</li>
</ul>
[/php]
〔表示例〕
- 番号無しリスト1
- 番号無しリスト2
- 番号無しリスト3
引用
[php]
<blockquote>
これは引用のサンプルです。
</blockquote>
[/php]
〔表示例〕
これは引用のサンプルです。
補足情報
[php]
<div class="point">
これは補足情報のサンプルです。
</div>
[/php]
〔表示例〕
注意書き
[php]
<div class="attention">
これは注意書きのサンプルです。
</div>
[/php]
〔表示例〕
ハイライト
[php]
これは<span class="highlight">ハイライト</span>のサンプルです。
[/php]
〔表示例〕
これはハイライトのサンプルです。
【Bootstrap】印刷時に表示されるURLを消す方法
これについての解説ページはこちら
wp_list_pages()
get_page_by_path()
スラッグ名をもつ固定ページのIDを取得する方法
[php]
$slug_name = $category;
$page = get_page_by_path($slug_name);
$page_ID = $page->ID;
[/php]
style.cssを4分割で管理
CSSの管理は、ほかに比べて簡単そうに見えるが、一番厄介ともいえる。
cssを管理するために、style.cssを4分割して管理することにする。
style.css
style-basic.css
style-parts.css
style-sidebar.css
「id」と「class」の違い(使い分け)
参考 URL http://allabout.co.jp/gm/gc/23897/
POP/IMAPサーバの構築(Dovecot)
POP/IMAPサーバの構築(Dovecot)
- (1) インストール
-
# yum install dovecot
Installed: dovecot.i386 0:1.0.3-6.fc6 - (2) 設定
-
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir - (3) 自動起動
-
# service dovecot start
# chkconfig dovecot on - (4) 動作確認
- [注意事項]MainServerのセキュリティーで、その他のポートで110番のTCPのポート開放をすることでメールを受け取ることができる。
メールサーバの構築(Postfix)
メールサーバの構築(Postfix)
- (1) インストール
-
# yum install postfix
Installed: postfix.i386 2:2.4.5-2.fc6 - (2) 設定
-
① myhostname = mail.***.jp
② mydomain = ***.jp
③ myorigin = $mydomain (メール送信時の送信元メールアドレスの@以降の設定)
④ inet_interfaces = all (外部からのメール受信許可の設定)
⑤ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain(ローカルの配送先の設定)
⑥ home_mailbox = Maildir/
⑦ smtpd_banner = $myhostname ESMTP unknown(メールサーバソフト名を表示しない設定) - (3) サービスの起動
-
- (ⅰ)sendmailサービスの停止
- (ⅱ)postfixの自動起動化
- (ⅲ)mtaの切り替え
service sendmail status
sendmail (pid 1855 1846) を実行中…
# service sendmail stop
# chkconfig –level 2345 sendmail off# chkconfig –list postfix
サービス postfix は chkconfig をサポートしますが実行レベルで参照されていません (run ‘chkconfig –add postfix’)
# chkconfig –add postfix
# chkconfig –level 2345 postfix on
# service postfix start# alternatives –config mta
- (4) SMTP-AUTH
-
- (ⅰ)インストール
パッケージの確認
# rpm -qa | grep sasl
# yum install cyrus-sasl-md5 cyrus-sasl-ntlm cyrus-sasl-gssapi
Installed: cyrus-sasl-gssapi.i386 0:2.1.22-4 cyrus-sasl-md5.i386 0:2.1.22-4 cyrus-sasl-ntlm.i386 0:2.1.22-4
Awstatsの導入
Awstatsの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install awstats
Installed: awstats.noarch 0:6.6-1.fc6
Dependency Installed: perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!次に、設定スクリプトを実行
# cd /usr/share/awstats/tools
# ./awstats_configure.pl
設定スクリプトの実行によって、設定ファイル「○○○.conf」が作成される。 - (2) awstatsの設定
-
作成された設定ファイル「○○○.conf」をチューニングする。
# vi /etc/awstats/awstats.○○○.conf
そして、解析情報ファイルを作成する。
# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update - (3) 定期的更新
-
crontabを利用して、解析情報ファイルを定期的に更新させる。
# vi /etc/crontab
02 4 * * * root /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update# service crond restart
phpの導入
mainServerのサーバ構築
phpの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-cli.i386 0:5.1.6-3.7.fc6 php-common.i386 0:5.1.6-3.7.fc6
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
- WWWServerの方で使っていたphpライブラリーを次のようにして引越しました。
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh 192.168.1.2:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
SubmainServerのサーバ構築
phpの導入 (記載日:2008年11月02日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.0.4-10.5
Dependency Installed: php-pear.i386 0:5.0.4-10.5
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
-
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh MainServer:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WordPressの導入
WordPressの導入 (記載日:2008年10月11日)
- (1) インストール
-
# unzip wordpress-2.6.2-ja.zip
# chmod 777 wordpress
http://(ドメイン名)/wordpress/でwordpressを呼び出す。wp-config.phpを作成するためのウイザードが起動し、項目に答えることでwp-config.phpが作成される。
# vi wp-config.php で内容確認
// ** MySQL settings ** //
define(‘DB_NAME’, ‘○○○_db’); // データベース名
define(‘DB_USER’, ‘○○○○’); // ユーザー名
define(‘DB_PASSWORD’, ‘○○○○’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ
define(‘DB_CHARSET’, ‘utf8’);
// テーブルの接頭辞を指定します。複数設置する場合など適宜変更してください。
$table_prefix = ‘○○_’;以上によりインストールの終了
- (2) 新規インストールのための諸設定
- (ⅰ)ユーザ登録
- (ⅱ)テーマの変更
- (ⅲ)リンクの作成
adminのパスワードが自動発行されるので、そのパスワードを使い管理画面に入り、管理者のユーザ登録をする。
/wp-content/themaのディレクトリにダウンロードしたテーマをFTPを使ってアップロードし、テーマを変更する。
HomeのWebサイトに戻れるように、管理画面リンクでリンクを編集する。
データベースサーバの構築(MySQL)
mainServerのサーバ構築
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:5.0.27-1.fc6 mysql-server.i386 0:5.0.27-1.fc6
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-1.fc6 perl-DBI.i386 0:1.52-1.fc6# chkconfig –level 345 mysqld on
# service mysqld start - (2) MySQLの設定
-
- (ⅰ)rootパスワードの設定
- (ⅱ)ユーザの作成
mysql> set password for root@localhost=password(‘○○○’);
mysql>grant all privileges on *.* to root@MainServer.0gino.jp identified
by ‘○○○’ with grant option;
mysql> delete from user where users=”;
mysql> select host,user,password from user;
| localhost | root | 1160776e03b164ee |
| MainServer.0gino.jp | root | 1160776e03b164ee |mysql> create database belize_db;
mysql> grant all privileges on belize_db.* to tando@localhost identified
by ‘○○○’ with grant option;
mysql> flush privileges;
# mysql -u tando -p belize_db
SubmainServerのサーバ構築
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:4.1.20-1.FC4.1 mysql-server.i386 0:4.1.20-1.FC4.1
Dependency Installed: perl-DBD-MySQL.i386 0:2.9007-1 perl-DBI.i386 0:1.48-4# chkconfig –level 345 mysqld on
# service mysqld start
Webサーバの構築(ApacheHTTP)
mainServerのサーバ構築
Webサーバの構築(ApacheHTTP)
- (1) インストール
-
# yum install system-config-httpd httpd-manual
Installed: httpd-manual.i386 0:2.2.6-1.fc6 system-config-httpd.noarch 5:1.4.1-1.fc6
Dependency Installed: alchemist.i386 0:1.0.36-1.2.2 libxslt-python.i386 0:1.1.21-1.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 libxml2.i386 0:2.6.29-1.fc6
libxml2-devel.i386 0:2.6.29-1.fc6 libxml2-python.i386 0:2.6.29-1.fc6
libxslt.i386 0:1.1.21-1.fc6 libxslt-devel.i386 0:1.1.21-1.fc6 - (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
SubmainServerのサーバ構築
Webサーバの構築(ApacheHTTP)
- (1) インストール
- #
- (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
DNSサーバの構築(BIND )
DNSサーバの構築(BIND )
- (1) インストール
- # yum install bind-utils bind-chroot bind ypbind bind-libs
Installed: bind.i386 31:9.3.4-8.P1.fc6 bind-chroot.i386 31:9.3.4-8.P1.fc6
Updated: bind-libs.i386 31:9.3.4-8.P1.fc6 bind-utils.i386 31:9.3.4-8.P1.fc6
ypbind.i386 3:1.19-7.fc6 - (2) 設定
-
- (ⅰ)ブートファイルの設定
# vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot (chrootの確認)
# cp /usr/share/doc/bind-9.3.4/sample/etc/named.conf /var/named/chroot/etc/
# chown root:named /var/named/chroot/etc/named.conf
(権限を変更しないと作動しない)
# chmod 640 /var/named/chroot/etc/named.confoptions { query-source port 53; query-source-v6 port 53; directory "/var/named"; dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localnets; }; match-destinations { localnets; }; recursion yes; include "/etc/named.rfc1912.zones"; zone "0gino.jp" { type master; file "0gino.jp.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; }; }; view "external" { recursion no; allow-query { none; }; zone "." { type hint; file "/dev/null"; }; zone "0gino.jp" { type master; file "0gino.jp.zone"; allow-query { any; }; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; allow-query { any; }; }; };
- (ⅱ)正引きゾーンファイルの設定
# vi /var/named/chroot/var/named/0gino.jp.zone
$TTL 86400 @ IN SOA ns.0gino.jp. root.0gino.jp. ( 2008080903 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hours 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day
FTPサーバの構築 -vsftpd
FTPサーバの構築 -vsftpd
外部からのアクセスにも耐えれるように、vsftpdの構築をします。
- (1) インストール
-
# yum install vsftpd
Installed: vsftpd.i386 0:2.0.5-10.fc6 - (2) アクセス制御の設定
-
# vi /etc/vsftpd/vsftpd.confでの設定事項
- (ⅰ)標準設定項目
- (ⅱ)各ftpユーザにホームディレクトリ以上の階層を見せない
- (ⅲ)FTPサーバのみを使用出来るユーザを作成する方法
■ anonymous_enable=NO
■ ascii_upload_enable=YES
■ ascii_download_enable=YES■ chroot_local_user=YES ←(追加)
■ chroot_list_enable=YES
■ chroot_list_file=/etc/vsftpd/chroot_list# vi /etc/vsftpd/chroot_listでユーザ名を1行に1つずつ書きます。
chroot_local_user=YESを追加することで、chroot_listに書いたユーザ以外はホームディレクトリ以上の階層を見せないようにできます。# vipw
ftpuser:x:510:510:FTP User:/home/ftpuser:/bin/bashを
ftpuser:x:510:510:FTP User:/home/ftpuser:/sbin/nologin
のように変更して保存します。これで、telnetやsshでログインできなくなります。 - (3) xineted経由で起動させる
- only_from句を設定することで、xineted側でアクセス制御が可能になります。
# service vsftpd stop
# chkconfig vsftpd off# vi /etc/xinetd.d/ftp
service ftp { wait = no user = root server = /usr/sbin/vsftpd server_args = -i disable = no only_from = .○○○.jp }
# service xinetd restart
SSHサーバの構築
mainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
SubmainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
サーバの構築(全体をまとめたもの)
このページは、第九期ネットワーク構成図に基づいて、2008年8月に、FedoreCore6(MainServer機)、FedoraCore4(WWWServer機)、FedoraCore2(BackupServer機)で各々サーバ構築した内容を記録したものです。
MainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
FTPサーバの構築 -vsftpd
外部からのアクセスにも耐えれるように、vsftpdの構築をします。
- (1) インストール
-
# yum install vsftpd
Installed: vsftpd.i386 0:2.0.5-10.fc6 - (2) アクセス制御の設定
-
# vi /etc/vsftpd/vsftpd.confでの設定事項
- (ⅰ)標準設定項目
- (ⅱ)各ftpユーザにホームディレクトリ以上の階層を見せない
- (ⅲ)FTPサーバのみを使用出来るユーザを作成する方法
■ anonymous_enable=NO
■ ascii_upload_enable=YES
■ ascii_download_enable=YES■ chroot_local_user=YES ←(追加)
■ chroot_list_enable=YES
■ chroot_list_file=/etc/vsftpd/chroot_list# vi /etc/vsftpd/chroot_listでユーザ名を1行に1つずつ書きます。
chroot_local_user=YESを追加することで、chroot_listに書いたユーザ以外はホームディレクトリ以上の階層を見せないようにできます。# vipw
ftpuser:x:510:510:FTP User:/home/ftpuser:/bin/bashを
ftpuser:x:510:510:FTP User:/home/ftpuser:/sbin/nologin
のように変更して保存します。これで、telnetやsshでログインできなくなります。 - (3) xineted経由で起動させる
- only_from句を設定することで、xineted側でアクセス制御が可能になります。
# service vsftpd stop
# chkconfig vsftpd off# vi /etc/xinetd.d/ftp
service ftp { wait = no user = root server = /usr/sbin/vsftpd server_args = -i disable = no only_from = .○○○.jp }
# service xinetd restart
DNSサーバの構築(BIND )
- (1) インストール
- # yum install bind-utils bind-chroot bind ypbind bind-libs
Installed: bind.i386 31:9.3.4-8.P1.fc6 bind-chroot.i386 31:9.3.4-8.P1.fc6
Updated: bind-libs.i386 31:9.3.4-8.P1.fc6 bind-utils.i386 31:9.3.4-8.P1.fc6
ypbind.i386 3:1.19-7.fc6 - (2) 設定
-
- (ⅰ)ブートファイルの設定
# vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot (chrootの確認)
# cp /usr/share/doc/bind-9.3.4/sample/etc/named.conf /var/named/chroot/etc/
# chown root:named /var/named/chroot/etc/named.conf
(権限を変更しないと作動しない)
# chmod 640 /var/named/chroot/etc/named.confoptions { query-source port 53; query-source-v6 port 53; directory "/var/named"; dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localnets; }; match-destinations { localnets; }; recursion yes; include "/etc/named.rfc1912.zones"; zone "0gino.jp" { type master; file "0gino.jp.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; }; }; view "external" { recursion no; allow-query { none; }; zone "." { type hint; file "/dev/null"; }; zone "0gino.jp" { type master; file "0gino.jp.zone"; allow-query { any; }; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; allow-query { any; }; }; };
- (ⅱ)正引きゾーンファイルの設定
# vi /var/named/chroot/var/named/0gino.jp.zone
$TTL 86400 @ IN SOA ns.0gino.jp. root.0gino.jp. ( 2008080903 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hours 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day
Webサーバの構築(ApacheHTTP)
- (1) インストール
-
# yum install system-config-httpd httpd-manual
Installed: httpd-manual.i386 0:2.2.6-1.fc6 system-config-httpd.noarch 5:1.4.1-1.fc6
Dependency Installed: alchemist.i386 0:1.0.36-1.2.2 libxslt-python.i386 0:1.1.21-1.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 libxml2.i386 0:2.6.29-1.fc6
libxml2-devel.i386 0:2.6.29-1.fc6 libxml2-python.i386 0:2.6.29-1.fc6
libxslt.i386 0:1.1.21-1.fc6 libxslt-devel.i386 0:1.1.21-1.fc6 - (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:5.0.27-1.fc6 mysql-server.i386 0:5.0.27-1.fc6
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-1.fc6 perl-DBI.i386 0:1.52-1.fc6# chkconfig –level 345 mysqld on
# service mysqld start - (2) MySQLの設定
-
- (ⅰ)rootパスワードの設定
- (ⅱ)ユーザの作成
mysql> set password for root@localhost=password(‘○○○’);
mysql>grant all privileges on *.* to root@MainServer.0gino.jp identified
by ‘○○○’ with grant option;
mysql> delete from user where users=”;
mysql> select host,user,password from user;
| localhost | root | 1160776e03b164ee |
| MainServer.0gino.jp | root | 1160776e03b164ee |mysql> create database belize_db;
mysql> grant all privileges on belize_db.* to tando@localhost identified
by ‘○○○’ with grant option;
mysql> flush privileges;
# mysql -u tando -p belize_db
phpの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-cli.i386 0:5.1.6-3.7.fc6 php-common.i386 0:5.1.6-3.7.fc6
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
- WWWServerの方で使っていたphpライブラリーを次のようにして引越しました。
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh 192.168.1.2:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WordPressの導入 (記載日:2008年10月11日)
- (1) インストール
-
# unzip wordpress-2.6.2-ja.zip
# chmod 777 wordpress
http://(ドメイン名)/wordpress/でwordpressを呼び出す。wp-config.phpを作成するためのウイザードが起動し、項目に答えることでwp-config.phpが作成される。
# vi wp-config.php で内容確認
// ** MySQL settings ** //
define(‘DB_NAME’, ‘○○○_db’); // データベース名
define(‘DB_USER’, ‘○○○○’); // ユーザー名
define(‘DB_PASSWORD’, ‘○○○○’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ
define(‘DB_CHARSET’, ‘utf8’);
// テーブルの接頭辞を指定します。複数設置する場合など適宜変更してください。
$table_prefix = ‘○○_’;以上によりインストールの終了
- (2) 新規インストールのための諸設定
- (ⅰ)ユーザ登録
- (ⅱ)テーマの変更
- (ⅲ)リンクの作成
adminのパスワードが自動発行されるので、そのパスワードを使い管理画面に入り、管理者のユーザ登録をする。
/wp-content/themaのディレクトリにダウンロードしたテーマをFTPを使ってアップロードし、テーマを変更する。
HomeのWebサイトに戻れるように、管理画面リンクでリンクを編集する。
Awstatsの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install awstats
Installed: awstats.noarch 0:6.6-1.fc6
Dependency Installed: perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!次に、設定スクリプトを実行
# cd /usr/share/awstats/tools
# ./awstats_configure.pl
設定スクリプトの実行によって、設定ファイル「○○○.conf」が作成される。 - (2) awstatsの設定
-
作成された設定ファイル「○○○.conf」をチューニングする。
# vi /etc/awstats/awstats.○○○.conf
そして、解析情報ファイルを作成する。
# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update - (3) 定期的更新
-
crontabを利用して、解析情報ファイルを定期的に更新させる。
# vi /etc/crontab
02 4 * * * root /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update# service crond restart
メールサーバの構築(Postfix)
- (1) インストール
-
# yum install postfix
Installed: postfix.i386 2:2.4.5-2.fc6 - (2) 設定
-
① myhostname = mail.0gino.jp
② mydomain = 0gino.jp
③ myorigin = $mydomain (メール送信時の送信元メールアドレスの@以降の設定)
④ inet_interfaces = all (外部からのメール受信許可の設定)
⑤ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain(ローカルの配送先の設定)
⑥ home_mailbox = Maildir/
⑦ smtpd_banner = $myhostname ESMTP unknown(メールサーバソフト名を表示しない設定) - (3) サービスの起動
-
- (ⅰ)sendmailサービスの停止
- (ⅱ)postfixの自動起動化
- (ⅲ)mtaの切り替え
service sendmail status
sendmail (pid 1855 1846) を実行中…
# service sendmail stop
# chkconfig –level 2345 sendmail off# chkconfig –list postfix
サービス postfix は chkconfig をサポートしますが実行レベルで参照されていません (run ‘chkconfig –add postfix’)
# chkconfig –add postfix
# chkconfig –level 2345 postfix on
# service postfix start# alternatives –config mta
- (4) SMTP-AUTH
-
- (ⅰ)インストール
パッケージの確認
# rpm -qa | grep sasl
# yum install cyrus-sasl-md5 cyrus-sasl-ntlm cyrus-sasl-gssapi
Installed: cyrus-sasl-gssapi.i386 0:2.1.22-4 cyrus-sasl-md5.i386 0:2.1.22-4 cyrus-sasl-ntlm.i386 0:2.1.22-4
POP/IMAPサーバの構築(Dovecot)
- (1) インストール
-
# yum install dovecot
Installed: dovecot.i386 0:1.0.3-6.fc6 - (2) 設定
-
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir - (3) 自動起動
-
# service dovecot start
# chkconfig dovecot on - (4) 動作確認
- [注意事項]MainServerのセキュリティーで、その他のポートで110番のTCPのポート開放をすることでメールを受け取ることができる。
SubmainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:\Documents and Setting\ユーザ\Application Data\rsa」(XP)
C:\Users\ユーザ\AppData\Local\rsa\id_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
Webサーバの構築(ApacheHTTP)
- (1) インストール
- #
- (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:4.1.20-1.FC4.1 mysql-server.i386 0:4.1.20-1.FC4.1
Dependency Installed: perl-DBD-MySQL.i386 0:2.9007-1 perl-DBI.i386 0:1.48-4# chkconfig –level 345 mysqld on
# service mysqld start
phpの導入 (記載日:2008年11月02日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.0.4-10.5
Dependency Installed: php-pear.i386 0:5.0.4-10.5
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
-
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh MainServer:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WWWServerのサーバ構築
OpenSSHのインストールと設定
- (1) 運用方針
- ·SSHによる接続を許可するホストをxinetdを併用して限定する(アクセス制御)
- ·rootアカウントによるSSH接続を拒否する
- ·パスワードの設定されていないアカウントによる接続を拒否する
- ·rhosts認証によるSSH接続を拒否する
- (2) OpenSSHのインストール
- ·OpenSSLのインストール
- ·zlibのインストール
- ·OpenSSHのインストール
- (ⅰ)OpenSSLのインストール
- (ⅱ)zlibのインストール
- (ⅲ)OpenSSHのインストール
- (3) OpenSSHの設定
-
- (ⅰ) xineted経由で起動させる
# sh /etc/rc2.d/S99sshd stop
# cd /etc/rc2.d/
# mv S99sshd .S99sshd# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/local/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 } # service xinetd restart
/usr/local/sslに./configure –prex=/usr/localでコンパイルしてインストール
/usr/local/src/openssh/zlib-1.2.3に./configureでコンパイルしてインストール
/usr/local/src/openssh/openssh-5.0p1に./configureでコンパイルしてインストール
Apacheのインストール
- (1) インストール
-
# rpm -qa | grep httpd httpd-2.0.54-10 system-config-httpd-1.3.2-2 # yum remove httpd # tar zxvf httpd-2.0.55.tar.gz
- (2) 作動確認及び自動起動の設定
-
# /usr/local/apache2/bin/apachectl start # cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd # chmod +x /etc/init.d/httpd # who -r # cd /etc/rc5.d/ # ln -s /etc/init.d/httpd S99httpd (自動起動の設定) # cd /etc/rc0.d/ # ln -s /etc/init.d/httpd K10httpd (自動終了の設定) # /etc/init.d/httpd stop (手動で終了) # /etc/init.d/httpd start (手動で起動)
- (3) 設定ファイル
-
httpd.conf # vi /usr/local/apache2/conf/httpd.conf User apache Group apache ServerAdmin admin@0gino.jp ServerName www.0gino.jp:80 DocumentRoot "/var/www/html" Directory "/var/www/html" Options Indexes FollowSymLinks /Directory DirectoryIndex index.html index.php AddDefaultCharset off
- (4) httpdの再起動
-
# /usr/local/apache2/bin/apachectl restart または # /etc/init.d/httpd restart
Mysqlのインストール
- (1) インストール
-
◎バージョン4.1.15でインストールする。バージョン4.1.20以降や
5ではエラーが出てインストールできない。
◎そこで、PHPによるWebアプリケーションスーパーサンプル活用編と
同様にバージョン4.1.15でやるとうまくいく。
◎インストールに先立ち、rpm版mysqlを削除する。
次に、mysqlのユーザーの作成をする。
(Configureで必要)# rpm -qa | grep mysql mysql-4.1.20-1.FC4.1 # yum remove mysql Removed: mysql.i386 0:4.1.20-1.FC4.1 Dependency Removed: dovecot.i386 0:0.99.14-8.fc4 # /usr/sbin/groupadd mysql # /usr/sbin/useradd -g mysql mysql # passwd mysql (recret) # tar zxvf mysql-4.1.15.tar.gz # cd mysql-4.1.15 # ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --without-readline --with-mysqld-user=mysql # make # make install
- (2) インストール後の設定と作動確認
-
# /usr/local/mysql/bin/mysql_install_db # chown -R root /usr/local/mysql # chgrp -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql/var # /usr/local/mysql/bin/mysqld_safe --user=mysql & # /usr/local/mysql/bin/mysql
- (3) 自動起動の設定
-
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql # chmod +x /etc/init.d/mysql # who ?r (現在のランレベルを知る) # cd /etc/rc5.d/ # ln -s /etc/init.d/mysql S99mysqld # cd /etc/rc0.d/ # ln -s /etc/init.d/mysql K10mysqld # /etc/init.d/mysql stop # /etc/init.d/mysql start
PHPのインストール
- (1) インストールは、PHPによるWebアプリケーションスーパーサンプル活用編
(p41からp44を参照) -
●zlibのインストール # tar zxvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 # ./configure --shared # make # make install ●libpngのインストール # tar zxvf libpng-1.2.8-config.tar.gz # cd libpng-1.2.8-config # ln -s scripts/makefile.linux makefile # vi makefile ↓ 以下のように変更 ZLIBLIB=/usr/local/lib ZLIBINC=/usr/local/include #ZLIBLIB=../zlib #ZLIBINC=../zlib # make # make install ●libjpegのインストール # tar zxvf jpegsrc.v6b.tar.gz # cd jpeg-6b/ # ./configure --enable-shared # make # make install /usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/man/man1/cjpeg.1 /usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1' : そのようなファイルやディレクトリはありません make: *** [install] エラー 1 というエラーがでた場合、以下のように /usr/local/man/man1 を作成し、 再度試みる。 # mkdir /usr/local/man/man1 # make install ● FreeTypeのインストール # tar zxvf freetype-2.1.10.tar.gz # cd freetype-2.1.10 # ./configure --enable-shared # make # make install ●GDのインストール # tar zxvf gd-2.0.33.tar.gz # cd gd-2.0.33 # ./configure # vi Makefile CFLAGS = -g -O2 -DJISX0208 ← 赤の部分を追加する # make # make install
- (2) phpのインストール
-
# tar zxvf php-5.1.2.tar.tar # cd php-5.1.2 #./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/local/lib --with-png-dir=/usr/local/lib--with-jpeg-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib --with-gd=/usr/local/ --enable-gd-native-ttf # make # make install # vi /usr/local/apache2/conf/httpd.conf AddType application/x-httpd-php .php ← 左のように追加する # /etc/init.d/httpd restart ◎このとき、以下のエラーがでて起動できない。 Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied ◎googleで「cannot restore segment prot after reloc: Permission denied」 と入れて検索をかけると 以下の解決法が表示されたので、実行するとクリアーした。 # chcon -c -v -R -u system_u -r object_r -t lib_t /usr/local/apache2/modules/libphp5.so context of /usr/local/apache2/modules/libphp5.so changed to system_u:object_r:lib_t
- (3) 各種ライブラリーのインストール
-
# cp /usr/local/src/php-4.4.1/php.ini-dist php.ini # vi php.ini include_path = ".:/usr/local/lib/php" ← 左のように変更する
- (4) PEARのインストール
-
◎include_pathで設定したディレクトリーにPEAR関連ファイルを 解凍すればそのまま使える # pear install DB # pear install Calendar-0.5.
phpのインストールに先立ち、以下をインストールする
vsftpdの設定
- (1) インストール
-
# cd /usr/local/src/
# tar zxvf vsftpd-2.0.7.tar.gz
# cd vsftpd-2.0.7
# make
# make install
anonymouse(匿名ユーザ)で利用する場合はftpユーザー、専用ディレクトリ(ここでは /var/ftp とします)が必要。
anonymouseでは読み込み(ダウンロード)だけで、書き込み(アップロード・削除)を許可させませんので、その権限の設定も行います。
# useradd -u 99 nobody
# groupadd -g 50 ftp
# useradd -u 14 -g ftp -d /var/ftp -s /sbin/nologin ftp
# chown root:root /var/ftp
# chmod og-w /var/ftp - (2) 設定
-
- (ⅰ)vsftpd.confファイルの設定
設定条件として、
·inet経由の起動
·anonymouse接続は行わない
·ルーターの関係でPassiveモードを使用しない
·.htaccessなどのドットファイルを表示する
·一般ユーザーはホームディレクトリ(/home/xxxx/)より上の階層には上がらせない(禁止する)
·ftpを利用できるユーザーとできないユーザーをわける
# vi /etc/vsftpd.confanonymous_enable=NO xferlog_enable=YES ←/var/log/vsftpd.logに接続・転送を記録 xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO ascii_upload_enable=YES ascii_download_enable=YES chroot_local_user=YES ←デフォルトでホームディレクトリより上層への アクセスを禁止する chroot_list_enable=YES ←ホームディレクトリより上層へのアクセスを許可するユーザのリストの有効化 chroot_list_file=/etc/vsftpd.chroot_list ←ホームディレクトリより上層へのアクセスを許可するユーザのリスト ls_recurse_enable=YES ←ディレクトリごと削除できるようにする local_root=public_html ←ログイン時のディレクトリを~/public_htmlにする force_dot_files=YES use_localtime=YES text_userdb_names=YES ls_recurse_enable=YES listen=YES
- (ⅱ)ホームディレクトリ以上の階層を見せるユーザ
# vi vsftpd.chroot_list
○○○○- (ⅲ)FTPサーバのみを使用できるユーザの作成
# vipw
○○○○:x:519:519::/home/○○○○:/sbin/nologin- (ⅳ)PAM認証設定
# cd /usr/local/src/vsftpd-2.0.7
cp RedHat/vsftpd.pam /etc/pam.d/ftp - (3) 起動(xinetdで起動させる)
-
# vi /etc/vsftpd.conf
#listen=YES ← #をつけないとエラーが出る# vi /etc/xinetd.d/vsftpd
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd nice = 10 }
# /etc/rc.d/init.d/xinetd restart
BackupServerのサーバ構築
SSHサーバの構築
- (1) xinetd経由で起動する
-
- (ⅰ)自動起動の停止
- (ⅱ)xinetdの設定
# service sshd status
sshd (pid 4767 1936) を実行中...
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
# service sshd stop
sshdを停止中: [ OK ]
# chkconfig sshd off
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ# service xinetd status
xinetd (pid 1951) を実行中...
# cd /etc/xinetd.d/
# touch ssh
# chmod 744 ssh
# vi sshservice ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 192.168.1.2 }
# service xinetd restart
Linuxによる「自宅サーバの構築」(2005年~2010年)
Linuxによる「自宅サーバの構築」
(2005年~2010年)
「自宅LinuxServerの時代」では、2005年~2010年にかけて自宅でサーバを構築したことをまとめたものを掲載しています。
LINUXによる「自宅サーバ構築の軌跡」
自宅サーバの構築を10数年来行っています。自宅サーバを構築・運用していくためには、かなりの忍耐と多大な時間を必要とします。
このWebサイトでは、Linux(FedoraCore)で自宅サーバの構築をやってきたことをまとめ、紹介しています。参考にしていただければ幸いです。
ここに記す「自宅サーバ構築の軌跡」は、これまで手がけてきた『サーバ構築』の変遷を九期に分けてまとめたものです。
- 第一期
-
自宅サーバ構築の第一歩は、あるレンタルサーバの会社に、自作サーバ機を預けたことにはじまります。その時は、Telnetでサーバ機を遠隔操作していました。この時代は、電話回線が主流で、現在のようにFTTH(光ファイバー網)を自宅に引くということは夢の話でした。そこで、個人のサーバ機をインターネット上に設置するためにはレンタルサーバのサービスをもつプロバイダに依頼するより仕方がありませんでした。
プロバイダにサーバ機を預けるにあたり、何日もかけて自宅でサーバ機を構築しました。具体的には、自作機を組み立て、それにLinuxのOSをインストールしました。そして、Webサーバとして動くようにするために、アプリケーションソフトをインストールし、設定していきました。この頃は、サーバ構築をはじめたばかりでしたので、ソースファイルからコンパイルするのがよいのか、あるいはRPMでインストールするのがよいのか、その違いがまったく分からず、見よう見まねで試行錯誤ばかり繰り返していました。
また、自宅ではLANでつないだ2台のコンピュータでの動作が確認できるだけでしたので、実際にインターネット上に設置してもうまく動いてくれるのか大変心配でした。それでも、預けたサーバ機と遠隔操作できたときは感無量の思いでした。 - 第二期
-
自宅サーバ構築の第二期は、ISDN回線を利用して自宅からWebサーバを立ち上げた時期です。この時期に固定アドレスを取得しましたが、固定アドレスを使ってのサーバ構築は技術的に大きな転換点となりました。また、手元にサーバ機を置いて、自宅でサーバ構築ができる環境になったことは第一期に比べて大きな進歩でした。
- 第三期
-
第二期までは自作機を使ってサーバ構築をしていましたが、サーバ機であるために電源を切ることがないため、不安定で、おちることがよくありました。多大な時間をかけて構築したサーバ機が故障し、最初からやり直さなければならないときは本当に落ち込みました。
こうした思いからはじめてサーバ専用機を購入した時期が第三期にあたります。当時、サーバ専用機はかなり高価でとても個人では手の出せる時代ではありませんでした。それでも時代の要請であったと考えますが、八万円程度で買える専用機がIBMから発売されました。このとき、はじめてネットでパソコンを購入しました。そして、はじめてのサーバ専用機によるサーバ構築で、心を踊らせながら昼夜没頭していたことを思い出します。 - 第四期
-
第三期までの段階で、ISDN回線を使い、サーバ専用機で自宅サーバを立ち上げることができました。しかし、このときまでの経験で多大な時間をかけて構築したサーバ機がいつダウンしてしまうか心配でなりませんでした。確かに、この専用機はこれまでの自作機に比べて安定していましたが、日々、試行錯誤してアプリケーションをインストールしたり、設定していましたので、専用機といえども不安定になりつつありました。いわば、この専用機はサーバ構築のための練習機であったわけです。
それでも専用機だけのことはあり、ハードディスクが2個ついており、RAID1のミラーリング機能がついていました。しかし、試行錯誤を繰り返したものの、結局、この機能をうまく使いこなすことができませんでした。そこで、不安を解消するためにこの練習機をバックアップ用のサーバ機として使い、2台目の専用機を購入しました。これが第四期にあたります。 - 第五期
-
第五期は夢であったFTTH回線が使えるようになった時期です。田舎であったので、都会に比べなかなかFTTHを自宅に引くことができなかったので、地域差によるデジタルデバイドを強く感じた時期でもありました。
FTTHを引くと、自宅でのインターネット環境が大幅に変わりました。しかし、自宅サーバ構築の観点から言うと必ずしもFTTHはバラ色ではありませんでした。
というのも、ISDN回線ではうまく公開できていたWebサーバも、FTTHではなかなか思うようにいかなかったからです。一難去って、また一難という状況で、イライラした日々が続きました。 - 第六期
-
第四期のISDN回線の時代は低速ではありますが、FTTHに比べ、安定してWebサーバを公開できていました。
そこで、料金は高くつきますが思い切ってADSL回線を引き、FTTH回線と2回線で自宅サーバを運用したのが第六期です。2回線になり、ADSL側でWebサーバを公開し、FTTH側で外部からWebサーバの様子を観察しました。この環境が整ったことで大変使い勝手がよくなりました。 - 第七期
-
第六期の2回線ネットワーク環境で、ようやく安定した自宅サーバ構築環境を手に入れることができました。ADSL回線はWebサーバを公開するにあたって本当に使い勝手がよかったです。特に、NTTからレンタルしたルータ機能付きのモデムは使いやすく、ファイヤーウォールなどのセキュリティー機能を身をもって経験することができました。
Webサーバ構築が順調にいきかけたこともあり、欲がでてきて、より本格的にサーバ構築をしたいという気持ちが強くなりました。そこで、本格的なサーバ構築をするためにブレードサーバがほしくなりました。しかし、ブレードサーバともなると100万円以上し、とても個人では購入できるものではありません。ところが、またネット上で、10数万円購入できるブレードサーバを見つけました。
サーバ機はファンの音もうるさいので屋根裏に置いていました。しかし、夏場になると35℃~40℃近くの高温になり、熱でパソコンが燃えてしまわないかと心配でなりませんでした。そんなとき、このブレードサーバは35℃~40℃にも耐えられることを知り、清水の舞台から飛び降りる思いで、ブレードサーバ機の購入を決意しました。 - 第八期
-
第七期の環境は安定していましたが、2回線の使用で個人仕様としてはかなり贅沢な使い方をしていると感じていました。この頃のサーバ構築のスタンスは、「絶対、おちないサーバ環境を作る」でした。これまで何度もサーバをダウンさせていたのでこの思いが強かったです。しかし、第七期の環境は、回線使用料、プロバイダ2社の契約料、固定アドレス代、ドメイン登録料、電気代と少しでも経費削減しなければなりませんでした。
そこで、新たにルータを購入し、再度pppoe接続に挑戦しました。すると、思いの外、簡単にpppoe接続ができました。この方法により、FTTH1回線で、2系列使えるようになりうれしい限りでした。このように第八期は、FTTHだけで絞り込めた時期にあたります。 - 第九期
-
最後の段階である第九期です。2008年の夏、「マスタリングRedHatEnterpriseLinux5」という著書に出会います。この本は、これまで膨大な時間をかけてやってきたことをコンパクトにまとめていました。ただ、タワー型サーバ機(FedoraCore2対応)やブレードサーバ機(FedoraCore4対応)では、著書のバージョンと違い、著書のようにサーバ構築することができませんでした。
本格自宅サーバ構築を目指す以上、この著書の水準までもっていきたく、FedoraCore6に対応したブレードサーバ機をもう一台購入することにしました。これで、本格自宅サーバ構築をできる環境が整ったといえます。
第九期ネットワーク構成図。2008年8月に、FedoreCore6(MainServer機)、FedoraCore4(WWWServer機)、FedoraCore2(BackupServer機)で各々サーバを構築した構成図です。
さくらVPSにpear::Services_Amazonをインストールする
以下のようにして、さくらVPSにpear::Services_Amazonをインストールしました。
[php]
$ sudo pear install XML_Util
pear/XML_Util is already installed and is the same as the released version 1.2.3
install failed
$ sudo pear install XML_Parser
WARNING: “pear/XML_Parser” is deprecated in favor of “pear/XML_Parser2”
downloading XML_Parser-1.3.4.tgz …
Starting to download XML_Parser-1.3.4.tgz (16,040 bytes)
……done: 16,040 bytes
install ok: channel://pear.php.net/XML_Parser-1.3.4
$ sudo pear install XML_Serializer-0.20.2
WARNING: “pear/XML_Parser” is deprecated in favor of “pear/XML_Parser2”
downloading XML_Serializer-0.20.2.tgz …
Starting to download XML_Serializer-0.20.2.tgz (35,634 bytes)
………done: 35,634 bytes
install ok: channel://pear.php.net/XML_Serializer-0.20.2
$ sudo pear install Net_URL
WARNING: “pear/Net_URL” is deprecated in favor of “pear/Net_URL2”
downloading Net_URL-1.0.15.tgz …
Starting to download Net_URL-1.0.15.tgz (6,303 bytes)
…..done: 6,303 bytes
install ok: channel://pear.php.net/Net_URL-1.0.15
$ sudo pear install Net_Socket
downloading Net_Socket-1.0.14.tgz …
Starting to download Net_Socket-1.0.14.tgz (5,600 bytes)
…..done: 5,600 bytes
install ok: channel://pear.php.net/Net_Socket-1.0.14
$ sudo pear install HTTP_Request
WARNING: “pear/HTTP_Request” is deprecated in favor of “pear/HTTP_Request2”
WARNING: “pear/Net_URL” is deprecated in favor of “pear/Net_URL2”
downloading HTTP_Request-1.4.4.tgz …
Starting to download HTTP_Request-1.4.4.tgz (17,109 bytes)
……done: 17,109 bytes
install ok: channel://pear.php.net/HTTP_Request-1.4.4
$ sudo pear install Services_Amazon-0.9.0
WARNING: “pear/HTTP_Request” is deprecated in favor of “pear/HTTP_Request2”
Did not download optional dependencies: pear/Cache, use –alldeps to download automatically
pear/Services_Amazon can optionally use package “pear/Cache”
downloading Services_Amazon-0.9.0.tgz …
Starting to download Services_Amazon-0.9.0.tgz (18,504 bytes)
……done: 18,504 bytes
install ok: channel://pear.php.net/Services_Amazon-0.9.0
[/php]
文章(readingContent1)
[css autolinks=”false” classname=”myclass” collapse=”false” firstline=”1″ gutter=”true” highlight=”1-3,6,9″ htmlscript=”false” light=”false” padlinenumbers=”false” smarttabs=”true” tabsize=”4″ toolbar=”true” title=”example-filename.php”]
/* 文章(readingContent1)
———————————————*/
.readingContent1 {
font-size: 11px;
}
.readingContent1 h2 {
margin: 1.2em 0 0.5em 0;
padding: 0 0 4px 0;
border-bottom: 1px solid #CCC;
font-size: 150%;
color: #223c3f;
line-height: 1.2;
}
.readingContent1 h3 {
margin: 1.2em 0 0.5em 0;
padding: 0 0 4px 0;
border-bottom: 1px solid #CCC;
font-size: 120%;
color: #223c3f;
line-height: 1.2;
}
.readingContent1 h3 .category {
font-size: 80%;
color: #333;
}
.readingContent1 h4 {
margin: 1.7em 0 1.2em 0;
color: #223c3f;
line-height: 1.2;
}
.readingContent1 p {
margin: 1em 0 1em 0;
line-height: 1.66;
}
.readingContent1 .column {
margin: 1.8em 0 1.8em 0;
border: 1px solid #CCC;
background: #F5F5F5;
}
.readingContent1 .column .columnTitle {
margin: 0;
padding: 6px 10px;
border-bottom: 1px solid #CCC;
background: #E5E5E5;
color: #333;
}
.readingContent1 .column * {
margin: 10px;
}
.readingContent1 .column * * {
margin: 0;
}
.readingContent1 ul {
margin: 0 0 1.8em 0;
line-height: 1.4;
}
.readingContent1 ul ul {
margin: 0;
}
.readingContent1 ul li {
list-style-type: none;
margin: 0;
padding: 0 0 0 15px;
background: url(img/bg/bullet_01.gif) 3px 0.46em no-repeat;
}
.readingContent1 ul li li {
background: url(img/bg/bullet_02.gif) 4px 0.46em no-repeat;
}
.readingContent1 ul.article {
border-top: 1px solid #CCC;
}
.readingContent1 ul.article li {
margin: 0;
padding: 0.5em 1.5em;
background: url(img/bg/arrow_01.gif) 0.5em 1em no-repeat;
color: #223c3f;
border-bottom: 1px solid #CCC;
}
.readingContent1 ul.article li li {
color: #666;
padding: 0;
border-bottom: none;
}
.readingContent1 blockquote {
margin: 0 0 1.8em 0;
padding: 10px;
border: 1px solid #CCC;
font-size: 93%;
}
.readingContent1 .cite {
margin: -1.8em 0 1.8em 0;
text-align: right;
font-size: 80%;
}
.readingContent1 .preWrap {
width: 100%;
overflow: auto;
margin: 0 0 1.8em 0;
background: #F5F5F5;
font-family: "Courier New", Courier, mono;
line-height: 1.4;
}
.readingContent1 .preWrap pre {
padding: 10px;
}
.readingContent1 .fig {
float: left;
margin: 5px 10px 5px 0;
}
.readingContent1 .illust {
margin: 0 0 1.8em 0;
line-height: 1.2;
font-size: 100%;
text-align: center;
}
.readingContent1 .illust p {
margin: 0 0 5px 0;
}
.readingContent1 .illust table {
margin: 0 auto;
border-left: 1px solid #CCC;
border-top: 1px solid #CCC;
border-collapse: collapse;
}
.readingContent1 .illust table td,
.readingContent1 .illust table th {
text-align: left;
padding: 5px;
border-right: 1px solid #CCC;
border-bottom: 1px solid #CCC;
}
.readingContent1 .illust table th {
background: #F5F5F5;
}
.readingContent1 dl {
height: 1%; /* for WinIE5,6 */
line-height: 1.33;
}
.readingContent1 dl dt {
line-height: 1.3;
margin: 10px 0 5px 0;
padding: 6px 0 0 0;
font-size: 120%;
color: #33c;
}
.readingContent1 dl dd {
_position: relative; /* for WinIE5 */
_height: 1%; /* for WinIE5,6 */
padding: 0 1em 6px 1em;
font-size: 110%;
border-bottom: 1px solid #E5E5E5;
background: #F8F8F8;
}
[/css]
サイドバーに最新の記事を投稿順に表示させるコード
サイドバーに「各サイトへのリンク(最新の記事投稿順)」の作成コード
[php]
<?php /* 各サイトへのリンク */?>
<div id="site-link">
<h2>各サイトへのリンク(最新の記事投稿順)</h2>
<ol>
<?php $sites=get_last_updated(); ?>
<?php foreach($sites as $site) : ?>
<?php if($site[‘blog_id’]!=1) : ?>
<li><a href="<?php echo get_home_url($site[‘blog_id’]); ?>"><?php echo get_blog_option($site[‘blog_id’],’blogname’); ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
</div><!– end of #site-link –>
[/php]
カスタムフィールドにisbnを登録し、参考文献 を表示させる
固定ページのカスタムフィールドにisbnを登録することで書籍を表示させる。
次のコードをpage-sitemap.phpとpage-database.phpのtemplateに書き込む。
[サンプルページ] page-sitemap.phpの例 page-database.phpの例
[php]
<?php // 参考文献 の表示 ?>
<?php if(post_custom(‘isbn’)): ?>
<h6>参考文献</h6>
<div id="book_info">
<ul>
<?php
$list = get_post_custom();
$isbns = $list[‘isbn’];
foreach ($isbns as $isbn) {
_SESSION["isbn"]=$isbn;
get_template_part(‘content-amazon’);
}
?>
</ul>
</div><!– end #book_info –>
<?php endif; ?>
[/php]
Amazon アソシエイト isbnで検索するための関数
Amazon アソシエイト isbnで検索するための関数がようやく出来上がりました。
少々苦労しましたが、このページを参考にさせていただき無事完成しました。
[php]
function getAmazonBookInfo_isbn($isbn){
$xml = new stdClass;
// 必要なパラメータを揃える
$service = ‘AWSECommerceService’;
$access_key_id = ‘○○○○○○○○○○’; //アクセスキーID
$associatetag = ‘○○○○○○○○○○’; //アフィリエイトタグ
// パラメータの設定
$searchindex = ‘Books’; // all Books
$responsegroup = ‘Large’; // Images Medium Large
$isbn = rawurlencode($isbn);
//時刻認証パラメータ(Timestamp)作成
$timestamp = gmdate(‘Y-m-d’) . ‘T’ . gmdate(‘H:i:s’) . ‘Z’;
$timestamp = rawurlencode($timestamp);
//Amazon指定の順序でパラメータを並べる
$parameters = "AWSAccessKeyId=$access_key_id&AssociateTag=$associatetag&IdType=ISBN&ItemId=$isbn&Operation=ItemLookup&ResponseGroup=$responsegroup&SearchIndex=$searchindex&Service=$service&Timestamp=$timestamp&Version=2011-08-01";
//署名認証パラメータ(Signature)作成
$secret_access_key = ‘○○○○○○○○○○’; //シークレットアクセスキー
$host = ‘ecs.amazonaws.jp’;
$path = ‘/onca/xml’;
$string = "GETn$hostn$pathn$parameters";
$signature = rawurlencode( base64_encode(hash_hmac(‘sha256’, $string, $secret_access_key, true)) );
//ベースURLとリクエストパラメータを結合
$baseurl = ‘http://ecs.amazonaws.jp/onca/xml’;
$url = "$baseurl?$parameters&Signature=$signature";
//XMLパース
$xml = simplexml_load_file($url);
return $xml;
}
[/php]
sambaの不具合なおる
RaspberryPiの外付けUSB HDDへの書き込みができない不具合があったが、今日、触ることで修正できる。
何が原因であったのか、はっきりしたことはわからない。
久しぶりにRaspberryをいらう
久しぶりにRaspberryをいらう。
まず、upgrade
[php]
# apt-get upgrade
[/php]
次に、ffftpが使えるようにする
[php]
# apt-get install vsftpd
vsftpd (2.3.5-3) を設定しています …
Starting FTP server: vsftpd.
[/php]
次を参考にしてffftpがら接続できるようにする。
Now type in “sudo nano /etc/vsftpd.conf” and hit Return / Enter
Search through the file and change the following lines:
anonymous_enable=YES Change To anonymous_enable=NO
#local_enable=YES Change To local_enable=YES
#write_enable=YES Change To write_enable=YES
Also, add a line to the bottom of the file:
force_dot_files=YES
Then hold the Ctrl key and press “x”, then “y”, then the Return / Enter key.
Now restart the FTP server with “sudo servce vsftpd restart”
書籍検索用のテンプレートを完成させました。
書籍検索用のテンプレートを完成させました。 書籍検索画面はこちら
これはテンプレート用のソースプログラムです。
[php]
<?php
/**
* Template Name: page-books
* 2014/08/17作成
*/
?>
<?php get_header(); ?>
<div id="container">
<div id="content">
<?php
// 初期設定
$parent = fnc_parent_title_guid(); // 親ページのタイトルとGuidの取得
session_start();
$_SESSION["slug"]=$post->post_name;
$_SESSION["parent_title"]=$parent->title; // 親ページのタイトル
$_SESSION["parent_guid"]=$parent->guid; // 親ページのGuid
$disp_keyword="";
$keyword="";
$keyword_fg="2";
$sort_fg="5";
$sort_type="2";
$sort="ukeirebi desc";
//
if(isset($_POST[‘cmdClear’])){
$keyword=”;
$disp_keyword=”;
$sort_fg=’5′;
$sort_type=’2′;
}elseif(isset($_POST[‘keyword’]) or isset($_GET[‘keyword’]) or isset($_POST[‘sort_fg’]) or isset($_GET[‘sort_fg’])){
if(isset($_POST[‘keyword’])){
$tmp_keyword=str_replace(" "," ",$_POST[‘keyword’]);
$disp_keyword=$_POST[‘keyword’];
$keyword_fg=$_POST[‘keyword_fg’];
}elseif(isset($_GET[‘keyword’])){
$tmp_keyword=str_replace(" "," ",$_GET[‘keyword’]);
$disp_keyword=$_GET[‘keyword’];
$keyword_fg=$_GET[‘keyword_fg’];
}
if(isset($_POST[‘sort_fg’])){
$sort_fg=$_POST[‘sort_fg’];
$sort_type=$_POST[‘sort_type’];
}else{
$sort_fg=$_GET[‘sort_fg’];
$sort_type=$_GET[‘sort_type’];
}
$arr_keyword=explode(" ",$tmp_keyword);
if($keyword_fg==1){
for($i=0;$i<count($arr_keyword);$i++){
$tmp_keyword=mb_convert_encoding($arr_keyword[$i],"utf-8");
if($keyword==""){
$keyword="(bunrui LIKE ‘%$tmp_keyword%’)";
}else{
$keyword=$keyword." and (bunrui LIKE ‘%$tmp_keyword%’)";
}
}
}elseif($keyword_fg==2){
for($i=0;$i<count($arr_keyword);$i++){
$tmp_keyword=mb_convert_encoding($arr_keyword[$i],"utf-8");
if($keyword==""){
$keyword="(shomei LIKE ‘%$tmp_keyword%’)";
}else{
$keyword=$keyword." and (shomei LIKE ‘%$tmp_keyword%’)";
}
}
}elseif($keyword_fg==3){
for($i=0;$i<count($arr_keyword);$i++){
$tmp_keyword=mb_convert_encoding($arr_keyword[$i],"utf-8");
if($keyword==""){
$keyword="(chosha LIKE ‘%$tmp_keyword%’)";
}else{
$keyword=$keyword." and (chosha LIKE ‘%$tmp_keyword%’)";
}
}
}elseif($keyword_fg==4){
for($i=0;$i<count($arr_keyword);$i++){
$tmp_keyword=mb_convert_encoding($arr_keyword[$i],"utf-8");
if($keyword==""){
$keyword="(shuppansha LIKE ‘%$tmp_keyword%’)";
}else{
$keyword=$keyword." and (shuppansha LIKE ‘%$tmp_keyword%’)";
}
}
}elseif($keyword_fg==5){
for($i=0;$i<count($arr_keyword);$i++){
$tmp_keyword=mb_convert_encoding($arr_keyword[$i],"utf-8");
if($keyword==""){
$keyword="(shuppannen LIKE ‘%$tmp_keyword%’)";
}else{
$keyword=$keyword." and (shuppannen LIKE ‘%$tmp_keyword%’)";
}
}
}
if($sort_fg==1){
$sort="shomei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==2){
$sort="choshamei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==3){
$sort="haikabasho";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==4){
$sort="shuppannen";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==5){
$sort="ukeirebi";
if($sort_type==2){$sort=$sort . " desc";}
}
}
$_SESSION["keyword"]=$keyword; // keywordの保持
if($sort_fg==”){
$sort="";
}else{
$sort="order by " . $sort;
}
$_SESSION["sort"]=$sort; // sortの保持
?>
<form method="post" action="●●">
<table border="0">
<tr>
<td>
<input type="radio" name="keyword_fg" value="1" <?php if($keyword_fg==’1′){ echo ‘checked’;} ?>><font color="#00f">分類名</font>
<input type="radio" name="keyword_fg" value="2" <?php if($keyword_fg==’2′){ echo ‘checked’;} ?>><font color="#f00">書名</font>
<input type="radio" name="keyword_fg" value="3" <?php if($keyword_fg==’3′){ echo ‘checked’;} ?>>著者名
<input type="radio" name="keyword_fg" value="4" <?php if($keyword_fg==’4′){ echo ‘checked’;} ?>>出版社
<input type="radio" name="keyword_fg" value="5" <?php if($keyword_fg==’5′){ echo ‘checked’;} ?>>出版年
<input type="text" name="keyword" size="25" value="<?php echo $disp_keyword; ?>">
<input type="submit" name="cmdSearch" value="検索">
<input type="submit" name="cmdClear" value="クリア">
</td>
</tr>
<tr>
<td>
<input type="radio" name="sort_type" value="1" <?php if($sort_type==’1′){ echo ‘checked’;} ?>>昇順
<input type="radio" name="sort_type" value="2" <?php if($sort_type==’2′){ echo ‘checked’;} ?>>降順
<input type="submit" name="cmdSearch" value="ソート"> <font size="+2">(</font>
<input type="radio" name="sort_fg" value="1" <?php if($sort_fg==’1′){ echo ‘checked’;} ?>>書名
<input type="radio" name="sort_fg" value="2" <?php if($sort_fg==’2′){ echo ‘checked’;} ?>>著者名
<input type="radio" name="sort_fg" value="3" <?php if($sort_fg==’3′){ echo ‘checked’;} ?>>配架場所
<input type="radio" name="sort_fg" value="4" <?php if($sort_fg==’4′){ echo ‘checked’;} ?>>出版年
<input type="radio" name="sort_fg" value="5" <?php if($sort_fg==’5′){ echo ‘checked’;} ?>>受入日<font size="+2"> )</font>
</td>
</tr>
</table>
</form>
<?php /* データ処理 */
if($keyword != ”):
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword $sort";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword $sort";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword . " ".$sort;
$no="1";
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
<?php else: ?>
<div class="sectionBlock1">
<検索の方法><br />
(1)キーワードを入れて、検索ボタンをクリックしてください。<br />
(注1)分類名、書名、著者名、出版社、出版年で検索できます。<br />
(注2)スペースを使ってand検索ができます。例:数学 物理<br />
(2)書名、著者名、配架場所、出版年、受入日をキーにしてソートできます。
</div>
<?php endif; ?>
<?php get_template_part(‘page_top_link’); ?>
</div><!– end #content –>
<?php get_sidebar(page); ?>
</div><!– end #container –>
<?php get_footer(); ?>
[/php]
content-book_sortのソースファイル
関連ページ:書籍検索(新書)
関連ページ:page-books_shinsho.php のソースファイル
[php]
<?php
// 初期設定
$sort_fg="5";
$sort_type="2";
$sort="ukeirebi desc";
if(isset($_POST[‘cmdClear’])){
$sort_fg=”;
$sort_type=”;
}elseif(isset($_POST[‘sort_fg’]) or isset($_GET[‘sort_fg’])){
if(isset($_POST[‘sort_fg’])){
$sort_fg=$_POST[‘sort_fg’];
$sort_type=$_POST[‘sort_type’];
}else{
$sort_fg=$_GET[‘sort_fg’];
$sort_type=$_GET[‘sort_type’];
}
if($sort_fg==1){
$sort="shomei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==2){
$sort="choshamei_kana";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==3){
$sort="haikabasho";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==4){
$sort="shuppannen";
if($sort_type==2){$sort=$sort . " desc";}
}elseif($sort_fg==5){
$sort="ukeirebi";
if($sort_type==2){$sort=$sort . " desc";}
}
}
if($sort_fg==”){
$sort="";
}else{
$sort="order by " . $sort;
}
$_SESSION["sort"]=$sort; // $sortの保持
?>
<form method="post" action="http://www.rgb-green.tk/computer/programing/htmljavascript/javascript/tab/">
<table border="0">
<tr>
<td>
<input type="radio" name="sort_fg" value="1" <?php if($sort_fg==’1′){ echo ‘checked’;} ?>>書 名
<input type="radio" name="sort_fg" value="2" <?php if($sort_fg==’2′){ echo ‘checked’;} ?>>著者名
<input type="radio" name="sort_fg" value="3" <?php if($sort_fg==’3′){ echo ‘checked’;} ?>>配架場所
<input type="radio" name="sort_fg" value="4" <?php if($sort_fg==’4′){ echo ‘checked’;} ?>>出版年
<input type="radio" name="sort_fg" value="5" <?php if($sort_fg==’5′){ echo ‘checked’;} ?>>受入日
</td>
</tr>
<tr>
<td>
<input type="radio" name="sort_type" value="1" <?php if($sort_type==’1′){ echo ‘checked’;} ?>>昇順
<input type="radio" name="sort_type" value="2" <?php if($sort_type==’2′){ echo ‘checked’;} ?>>降順
<input type="submit" name="cmdSearch" value="検索">
<input type="submit" name="cmdClear" value="クリア">
</td>
</tr>
</table>
</form>
[/php]
page-books_shinsho.php のソースファイル
書籍検索(新書)のためのpage-books_shinsho.php のソースファイル
[php]
<?php
/**
* Template Name: page-books_shinsho
* 2014/08/19作成
*/
?>
<style>
/* 外部スタイルシートの読み込み */
@import "jquery-ui.css"; /* jQueryUI用CSS */
</style>
<script src="jquery.js"></script> <!– jQuery用ライブラリ –>
<script src="jquery-ui.js"></script> <!– jQueryUI用ライブラリ –>
<?php get_header(); ?>
<div id="container">
<div id="content">
<script>
////////////////////////////////////////////////////////////////////
// windowイベントの定義
////////////////////////////////////////////////////////////////////
//HTML文書読み込み完了後に実行するイベントの定義
window.addEventListener("load", function () {
resizeTo(400, 300); //ウィンドウサイズを指定
//タブ切り替えインターフェースの実装
$(‘#tabs’).tabs();
});
</script>
<?php
// 初期設定
$parent = fnc_parent_title_guid(); // 親ページのタイトルとGuidの取得
session_start();
$_SESSION["slug"]=$post->post_name;
$_SESSION["parent_title"]=$parent->title; // 親ページのタイトル
$_SESSION["parent_guid"]=$parent->guid; // 親ページのGuid
?>
<?php get_template_part(‘content-book_sort’); ?>
<?php $sort = $_SESSION["sort"]; ?>
<!– タブ切り替えインターフェース領域 –>
<div id="tabs">
<!– タブメニューリスト領域 –>
<ul>
<li><a href="#tab1">平成26年1学期</a></li>
<li><a href="#tab2">平成25年2学期</a></li>
<li><a href="#tab3">平成25年3学期</a></li>
</ul>
<!– タブコンテンツ領域1 –>
<div id="tab1">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2014-03-31’ AND ‘2014-09-01’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
$no="1";
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab1 –>
<!– タブコンテンツ領域2 –>
<div id="tab2">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2013-09-01’ AND ‘2013-12-31’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab2 –>
<!– タブコンテンツ領域3 –>
<div id="tab3">
<?php /* データ処理 */
// 抽出のための条件
$keyword = "ukeirebi BETWEEN ‘2014-01-01’ AND ‘2014-03-31’ $sort";
// データ数のカウント
$sql = "SELECT count(*) FROM wp_books WHERE $keyword";
$count = $wpdb->get_var($sql);
echo "抽出件数:".$count."<br />";
// データの抽出
$sql = "SELECT * FROM wp_books WHERE $keyword";
$posts = $wpdb->get_results($sql);
echo "SQL:"."SELECT * FROM wp_books WHERE ".$keyword;
?>
<div id="book_info" class="clearfix">
<div class="inner clearfix">
<ul>
<?php foreach($posts as $post): setup_postdata($post); ?>
<?php $_SESSION["book_id"]=$no; ?>
<?php get_template_part(‘content-book’); ?>
<?php $no++; ?>
<?php endforeach; ?>
</ul>
</div><!– end .inner clearfix –>
</div><!– end .book_info –>
</div><!– end #tab3 –>
</div><!– end #tabs –>
<?php get_template_part(‘page_top_link’); ?>
</div><!– end #content –>
<?php get_sidebar(page); ?>
</div><!– end #container –>
<?php get_footer(); ?>
[/php]
$post_typeの記事を抽出する関数
[php]
// $post_typeの記事を抽出する。
function fnc_read_post_type($post_type,$days) {
global $wpdb, $from, $offset, $per_page;
// $post_typeは必須: category または oshirase_cat
// $daysは3種類: allは全期間 空白はデフォルト 他はdays
if($days==’all’): $from=’0′;
elseif($days==”): $from = date("Y-m-d H:i:s", time() – 86400*90);
else: $from = date("Y-m-d H:i:s", time() – 86400*$days);
endif;
$obj = new stdClass;
$sql = <<< HERE
SELECT *
FROM $wpdb->posts
WHERE post_type = ‘$post_type’
AND post_status = ‘publish’
AND post_date >= ‘$from’
ORDER BY post_date DESC
LIMIT $offset, $per_page
HERE;
$obj = $wpdb->get_results($sql);
return $obj;
}
[/php]
$post_typeの記事数をカウントする関数
[php]
// $post_typeの記事数をカウントする。
function fnc_count_post_type($post_type,$days) {
global $wpdb,$from;
// $post_typeは必須: category または oshirase_cat
// $daysは3種類: allは全期間 空白はデフォルト 他はdays
if($days==’all’): $from=’0′;
elseif($days==”): $from = date("Y-m-d H:i:s", time() – 86400*90);
else: $from = date("Y-m-d H:i:s", time() – 86400*$days);
endif;
$sql = <<< HERE
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = ‘$post_type’
AND post_status = ‘publish’
AND post_date >= ‘$from’
HERE;
$count = $wpdb->get_var($sql);
return $count;
}
[/php]
自宅サーバ時代の「サーバ管理」
サーバの管理
MRTGによるシステムの監視
MRTGの構築(サーバ側:MainServer)
- (1) インストール
-
# yum install mrtg
Installed: mrtg.i386 0:2.14.5-2 - (2) 監視されるクライアント側のSNMPの設定
-
- (ⅰ)SNMPのインストール
- (ⅱ)SNMPの設定
- (ⅲ)自動起動
# rpm -qa | grep net-snmp
net-snmp-libs-5.3.1-11.fc6
net-snmp-5.3.1-15.fc6
net-snmp-utils-5.3.1-15.fc6com2sec zodiac_network 192.168.1.0/24 zodiac_community
group zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_network
view zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none# service snmpd start
# chkconfig snmpd on - (3) MRTGの設定
-
- (ⅰ)cfgファイルの設定
- (ⅱ)定期的なグラフの更新
# cd /etc/mrtg/
# cfgmaker zodiac_community@MainServer –output=./MainServer.cfg
# vi MainServer.cfg
### Global Config Options
WorkDir: /var/www/mrtg/MainServer
Language: eucjp
IconDir: /mrtg/icons/### Global Defaults
#—————–
# eth0 traffic
#—————–
Target[eth0]: 2:zodiac_community@MainServer:
SetEnv[eth0]: MRTG_INT_IP=”192.168.1.1″ MRTG_INT_DESCR=”eth0″
MaxBytes[eth0]: 12500000
Title[eth0]: Traffic Analysis for 2 — MainServer.ogino.tk
PageTop[eth0]: Traffic Analysis for 2 — MainServer.ogino.tk#——————
# cpu load average
#——————
Target[la]: 1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.3:zodiac_community@MainServer:
ThreshMaxI[la]:50
SetEnv[la]: EMAIL=”root@localhost”
URL=”http://192.168.1.1/mrtg/MainServer/la.html”
MaxBytes[la]: 100
Title[la]: Load Average
PageTop[la]: CPU Load Average on MainServer.ogino.tk
YLegend[la]: CPU Load Average
ShortLegend[la]: %
LegendI[la]:1min avrg.
LegendO[la]:15min avrg.
#——————
# memory usage
#——————
Target[mem]: 1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:zodiac_community@MainServer:
ThreshMaxI[mem]:80
SetEnv[mem]: EMAIL=”root@localhost”
URL=”http://192.168.1.1/mrtg/MainServer/mem.html”
MaxBytes[mem]: 190748
Title[mem]: Memory Usage “real” and “swap”
PageTop[mem]: Memory Usage “real” and “swap” on MainServer.ogino.tk
YLegend[mem]: Memory Usage
ShortLegend[mem]: kbyte
LegendI[mem]:real Available.
LegendO[mem]:swap Available.# vi /etc/crontab
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/MainServer.cfg
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/BackupServer.cfg
*/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/WWWServer.cfg
MRTG(監視されるクライアント側:SubmainServerの設定)
- (1) インストール
-
# tar -zxvf net-snmp-5.2.5.tar.tar
# cd net-snmp-5.2.5
# ./configure –prefix=/usr
# make
# make test
# umask 022
# make install
# ls -l /usr/sbin/snmpd
# ls -l /usr/sbin/snmptrapd
-rwxr-xr-x 1 root root 366287 8月 21 18:22 /usr/sbin/snmptrapd - (2) 設定
-
# vi /usr/share/snmp/snmpd.conf
com2sec zodiac_network 192.168.1.0/24 zodiac_community
group zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_networkview zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none
- (3) 動作確認
-
# /usr/sbin/snmpd
# snmpwalk -v 2c localcom localhost .1.3.6.1.4.1.2021
# kill `ps -ef | grep snmpd | grep -v grep | awk ‘{print $2}’` - (4) 自動起動
-
# service snmpd start
# chkconfig snmpd on
MRTG(監視されるクライアント側:BackupServerの設定)
- (1) インストール
-
# rpm -qa | grep net-snmp
net-snmp-5.1.1-2
net-snmp-utils-5.1.1-2 - (2) 設定
-
# vi /etc/snmp/snmpd.conf
com2sec zodiac_network 192.168.1.0/24 zodiac_communitygroup zodiac_group v1 zodiac_network
group zodiac_group v2c zodiac_networkview zodiac_view included .1
access zodiac_group “” any noauth exact zodiac_view none none
- (3) 自動起動
-
# service snmpd start
# chkconfig snmpd on
Nagiosによるシステムの監視
Nagiosの構築(サーバ側:MainServer)
- (1) インストール
-
- (ⅰ)Nagios本体
- (ⅱ)プラグイン
$ tar -zxvpf nagios-3.0.3.tar.tar
$ su –# groupadd nagcmd
# /usr/sbin/groupadd nagcmd
# /usr/sbin/usermod -G nagcmd △△△△
# /usr/sbin/usermod -G nagcmd ○○○○
# exit$ cd nagios-3.0.3
$ ./configure –prefix=/usr/local/nagios –with-command-group=nagcmd
$ make all
$ su# make install
# make install-init
# make install-commandmode
# make install-config$ tar -zxvpf nagios-plugins-1.4.12.tar.gz
$ cd nagios-plugins-1.4.12
$ ./configure
–with-apt-get-command:
–with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s
–with-ping-command: /bin/ping -n -U -w %d -c %d %s
–with-ipv6: yes
–with-mysql: no
–with-openssl: yes
–with-gnutls: no
–enable-extra-opts: no
–with-perl: /usr/bin/perl
–enable-perl-modules: no
–with-cgiurl: /nagios/cgi-bin
–with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin$ make
$ su
# make install - (2) Webサーバの設定
-
- (ⅰ)Apacheの設定ファイル
# vi /etc/httpd/conf/httpd.conf
ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin/AllowOverride AuthConfig Options ExecCGI Order allow,deny Allow from all Alias /nagios/ /usr/local/nagios/share/ AllowOverride AuthConfig Options None Order allow,deny Allow from all
# /etc/init.d/httpd restart
- (ⅱ)ユーザ及びパスワードの作成
# vi /usr/local/nagios/share/.htaccess
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user# cp /usr/local/nagios/share/.htaccess /usr/local/nagios/sbin/
# su nagios
$ htpasswd -c /usr/local/nagios/etc/htpasswd.users ○○○○
New password:
Re-type new password:
Adding password for user ○○○○# chmod 755 /usr/local/nagios/ ←/usr/local/nagios/が700であったのでPermissionエラーが出たので変更する。
- (3) Nagiosの設定
-
- (ⅰ)メイン設定ファイル
- (ⅱ)CGI設定ファイル
- (ⅲ)リソース設定ファイル
# su nagios
$ cd /usr/local/nagios/etc/
$ vi nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg$ vi cgi.cfg
authorized_for_system_information=○○○○ ←nagiosadminを○○○○に変更
authorized_for_configuration_information=○○○○
authorized_for_system_commands=○○○○
authorized_for_all_services=○○○○
authorized_for_all_hosts=○○○○
authorized_for_all_service_commands=○○○○
authorized_for_all_host_commands=○○○○host_unreachable_sound=hostdown.wav
←#をとる
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav$ vi resource.cfg ←最初からファイルが存在する
- (4) 監視オブジェクトの設定
-
通知先の定義 contacts.cfg
# su nagios
$ cd /usr/local/nagios/etc/object/
$ vi contacts.cfgdefine contact{ contact_name ○○○○ use generic-contact alias Nagios Admin email nagios@ogino.tk } define contactgroup{ contactgroup_name admins alias Nagios Administrators members ○○○○ }
- (5) 設定の確認とNagiosの起動
-
- (ⅰ)設定の確認
- (ⅱ)Nagiosの起動及び自動起動
$ /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0$ /etc/init.d/nagios start
# chkconfig nagios on
# chkconfig –list nagios
nagios 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自宅サーバ時代の「サーバ運用」
サーバの運用
このページは、ネットワーク構成図に基づいて、FedoreCore6(MainServer機)、FedoraCore4(SubmainServer機)、FedoraCore2(BackupServer機)で各々サーバを構築し、日々の「サーバ運用」の内容を記録したものです。
サーバー運用では、実際のサーバ運用で必要となる、awstatsによる「アクセス解析」とrsyncによる「サーバの同期」についてまとめています。
アクセス解析(awstats)
アクセス解析の設定方法と実際のawstatsの画面にリンクを張っています。
rsyncによるサーバの同期
サーバ群のどのコンピュータとどのように同期をとっているか説明しています。
rsyncによるサーバの同期
- (1) sshクライアントからRSA認証でログインできるための設定
-
MainServer機、SubmainServer機、BackupServer機が、お互いにsshでパスワードなしでログインできるように設定する。
① MainServer機→SubmainServer機の設定
[root@MainServer ~]# ssh-keygen -t rsa←パスフレーズなし鍵ペアの作成
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:
f6:e0:98:71:d3:d9:c8:92:43:fc:40:95:a6:40:ec:36 root@MainServer.0gino.jp[root@MainServer ~]# scp ~/.ssh/id_rsa.pub 192.168.1.2:
root@192.168.1.2’s password:
id_rsa.pub 100% 406 0.4KB/s 00:00
[root@MainServer ~]# scp ~/.ssh/id_rsa.pub 192.168.1.3:
root@192.168.1.3’s password:
id_rsa.pub 100% 406 0.4KB/s 00:00
[root@MainServer ~]# slogin 192.168.1.2
root@192.168.1.2’s password:
Last login: Sun Nov 2 14:58:54 2008 from mainserver.0gino.jp
[root@SubmainServer ~]# mkdir .ssh
[root@SubmainServer ~]# cd .ssh/
[root@SubmainServer .ssh]# touch authorized_keys
[root@SubmainServer .ssh]# chmod 600 authorized_keys
[root@SubmainServer .ssh]# cat ~/id_rsa.pub >> authorized_keys
[root@SubmainServer .ssh]# rm ~/id_rsa.pub
rm: remove 通常ファイル `/root/id_rsa.pub’? y# slogin BackupServer
The authenticity of host ‘backupserver (192.168.1.3)’ can’t be established.
RSA key fingerprint is 97:a5:86:c0:5d:97:ff:5f:0c:9d:53:a7:f5:1d:37:5d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘backupserver,192.168.1.3’ (RSA) to the list of known hosts.
root@backupserver’s password:以下のようにして、BackupServer側からMainServer側へRSA認証でログイン出来るように設定する。
[root@BackupServer root]# ssh-keygen -t rsa
[root@BackupServer root]# scp ~/.ssh/id_rsa.pub 192.168.1.1:
[root@MainServer ~]# cd .ssh/
[root@MainServer ~]# touch authorized_keys
[root@MainServer ~]# chmod 600 authorized_keys
[root@MainServer ~]# cat ~/id_rsa.pub >> authorized_keys
[root@MainServer ~]# rm ~/id_rsa.pub次に、同期先のサーバでSSHのログインを、鍵による認証のみにする。
そのために、を以下のように編集するが、rootでのログインを許可する。
[root@MainServer ~]# vi /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin yes - (2) cronによる定期的な同期をとる
-
BackupServer側からMainServer側のバックアップが5分おきに取れるように設定する。
# vi /etc/crontab
# auto backup from MainServer to BackupServer
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/www/html /var/www
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/home /
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/lib/mysql /var/lib
*/5 * * * * root rsync -avz –delete -e ssh 192.168.1.1:/var/lib/awstats/ /var/lib# service crond restart
自宅サーバ時代の「サーバ構築」
このページは、第九期ネットワーク構成図に基づいて、2008年8月に、FedoreCore6(MainServer機)、FedoraCore4(WWWServer機)、FedoraCore2(BackupServer機)で各々サーバ構築した内容を記録したものです。
MainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:Documents and SettingユーザApplication Datarsa」(XP)
C:UsersユーザAppDataLocalrsaid_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
FTPサーバの構築 -vsftpd
外部からのアクセスにも耐えれるように、vsftpdの構築をします。
- (1) インストール
-
# yum install vsftpd
Installed: vsftpd.i386 0:2.0.5-10.fc6 - (2) アクセス制御の設定
-
# vi /etc/vsftpd/vsftpd.confでの設定事項
- (ⅰ)標準設定項目
- (ⅱ)各ftpユーザにホームディレクトリ以上の階層を見せない
- (ⅲ)FTPサーバのみを使用出来るユーザを作成する方法
■ anonymous_enable=NO
■ ascii_upload_enable=YES
■ ascii_download_enable=YES■ chroot_local_user=YES ←(追加)
■ chroot_list_enable=YES
■ chroot_list_file=/etc/vsftpd/chroot_list# vi /etc/vsftpd/chroot_listでユーザ名を1行に1つずつ書きます。
chroot_local_user=YESを追加することで、chroot_listに書いたユーザ以外はホームディレクトリ以上の階層を見せないようにできます。# vipw
ftpuser:x:510:510:FTP User:/home/ftpuser:/bin/bashを
ftpuser:x:510:510:FTP User:/home/ftpuser:/sbin/nologin
のように変更して保存します。これで、telnetやsshでログインできなくなります。 - (3) xineted経由で起動させる
- only_from句を設定することで、xineted側でアクセス制御が可能になります。
# service vsftpd stop
# chkconfig vsftpd off# vi /etc/xinetd.d/ftp
service ftp { wait = no user = root server = /usr/sbin/vsftpd server_args = -i disable = no only_from = .○○○.jp }
# service xinetd restart
DNSサーバの構築(BIND )
- (1) インストール
- # yum install bind-utils bind-chroot bind ypbind bind-libs
Installed: bind.i386 31:9.3.4-8.P1.fc6 bind-chroot.i386 31:9.3.4-8.P1.fc6
Updated: bind-libs.i386 31:9.3.4-8.P1.fc6 bind-utils.i386 31:9.3.4-8.P1.fc6
ypbind.i386 3:1.19-7.fc6 - (2) 設定
-
- (ⅰ)ブートファイルの設定
# vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot (chrootの確認)
# cp /usr/share/doc/bind-9.3.4/sample/etc/named.conf /var/named/chroot/etc/
# chown root:named /var/named/chroot/etc/named.conf
(権限を変更しないと作動しない)
# chmod 640 /var/named/chroot/etc/named.confoptions { query-source port 53; query-source-v6 port 53; directory "/var/named"; dump-file "data/cache_dump.db"; statistics-file "data/named_stats.txt"; memstatistics-file "data/named_mem_stats.txt"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view "internal" { match-clients { localnets; }; match-destinations { localnets; }; recursion yes; include "/etc/named.rfc1912.zones"; zone "0gino.jp" { type master; file "0gino.jp.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; }; }; view "external" { recursion no; allow-query { none; }; zone "." { type hint; file "/dev/null"; }; zone "0gino.jp" { type master; file "0gino.jp.zone"; allow-query { any; }; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192.in-addr.arpa.zone"; allow-query { any; }; }; };
- (ⅱ)正引きゾーンファイルの設定
# vi /var/named/chroot/var/named/0gino.jp.zone
$TTL 86400 @ IN SOA ns.0gino.jp. root.0gino.jp. ( 2008080903 ; Serial 10800 ; Refresh after 3 hours 3600 ; Retry after 1 hours 604800 ; Expire after 1 week 86400 ) ; Minimum TTL of 1 day
Webサーバの構築(ApacheHTTP)
- (1) インストール
-
# yum install system-config-httpd httpd-manual
Installed: httpd-manual.i386 0:2.2.6-1.fc6 system-config-httpd.noarch 5:1.4.1-1.fc6
Dependency Installed: alchemist.i386 0:1.0.36-1.2.2 libxslt-python.i386 0:1.1.21-1.fc6
Dependency Updated: httpd.i386 0:2.2.6-1.fc6 libxml2.i386 0:2.6.29-1.fc6
libxml2-devel.i386 0:2.6.29-1.fc6 libxml2-python.i386 0:2.6.29-1.fc6
libxslt.i386 0:1.1.21-1.fc6 libxslt-devel.i386 0:1.1.21-1.fc6 - (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:5.0.27-1.fc6 mysql-server.i386 0:5.0.27-1.fc6
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-1.fc6 perl-DBI.i386 0:1.52-1.fc6# chkconfig –level 345 mysqld on
# service mysqld start - (2) MySQLの設定
-
- (ⅰ)rootパスワードの設定
- (ⅱ)ユーザの作成
mysql> set password for root@localhost=password(‘○○○’);
mysql>grant all privileges on *.* to root@MainServer.0gino.jp identified
by ‘○○○’ with grant option;
mysql> delete from user where users=”;
mysql> select host,user,password from user;
| localhost | root | 1160776e03b164ee |
| MainServer.0gino.jp | root | 1160776e03b164ee |mysql> create database belize_db;
mysql> grant all privileges on belize_db.* to tando@localhost identified
by ‘○○○’ with grant option;
mysql> flush privileges;
# mysql -u tando -p belize_db
phpの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-cli.i386 0:5.1.6-3.7.fc6 php-common.i386 0:5.1.6-3.7.fc6
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
- WWWServerの方で使っていたphpライブラリーを次のようにして引越しました。
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh 192.168.1.2:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WordPressの導入 (記載日:2008年10月11日)
- (1) インストール
-
# unzip wordpress-2.6.2-ja.zip
# chmod 777 wordpress
http://(ドメイン名)/wordpress/でwordpressを呼び出す。wp-config.phpを作成するためのウイザードが起動し、項目に答えることでwp-config.phpが作成される。
# vi wp-config.php で内容確認
// ** MySQL settings ** //
define(‘DB_NAME’, ‘○○○_db’); // データベース名
define(‘DB_USER’, ‘○○○○’); // ユーザー名
define(‘DB_PASSWORD’, ‘○○○○’); // パスワード
define(‘DB_HOST’, ‘localhost’); // データベースサーバ
define(‘DB_CHARSET’, ‘utf8’);
// テーブルの接頭辞を指定します。複数設置する場合など適宜変更してください。
$table_prefix = ‘○○_’;以上によりインストールの終了
- (2) 新規インストールのための諸設定
- (ⅰ)ユーザ登録
- (ⅱ)テーマの変更
- (ⅲ)リンクの作成
adminのパスワードが自動発行されるので、そのパスワードを使い管理画面に入り、管理者のユーザ登録をする。
/wp-content/themaのディレクトリにダウンロードしたテーマをFTPを使ってアップロードし、テーマを変更する。
HomeのWebサイトに戻れるように、管理画面リンクでリンクを編集する。
Awstatsの導入 (記載日:2008年10月11日)
- (1) インストール
-
# yum install awstats
Installed: awstats.noarch 0:6.6-1.fc6
Dependency Installed: perl-libwww-perl.noarch 0:5.805-1.1.1
Complete!次に、設定スクリプトを実行
# cd /usr/share/awstats/tools
# ./awstats_configure.pl
設定スクリプトの実行によって、設定ファイル「○○○.conf」が作成される。 - (2) awstatsの設定
-
作成された設定ファイル「○○○.conf」をチューニングする。
# vi /etc/awstats/awstats.○○○.conf
そして、解析情報ファイルを作成する。
# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update - (3) 定期的更新
-
crontabを利用して、解析情報ファイルを定期的に更新させる。
# vi /etc/crontab
02 4 * * * root /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=○○○ -update# service crond restart
メールサーバの構築(Postfix)
- (1) インストール
-
# yum install postfix
Installed: postfix.i386 2:2.4.5-2.fc6 - (2) 設定
-
① myhostname = mail.0gino.jp
② mydomain = 0gino.jp
③ myorigin = $mydomain (メール送信時の送信元メールアドレスの@以降の設定)
④ inet_interfaces = all (外部からのメール受信許可の設定)
⑤ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain(ローカルの配送先の設定)
⑥ home_mailbox = Maildir/
⑦ smtpd_banner = $myhostname ESMTP unknown(メールサーバソフト名を表示しない設定) - (3) サービスの起動
-
- (ⅰ)sendmailサービスの停止
- (ⅱ)postfixの自動起動化
- (ⅲ)mtaの切り替え
service sendmail status
sendmail (pid 1855 1846) を実行中…
# service sendmail stop
# chkconfig –level 2345 sendmail off# chkconfig –list postfix
サービス postfix は chkconfig をサポートしますが実行レベルで参照されていません (run ‘chkconfig –add postfix’)
# chkconfig –add postfix
# chkconfig –level 2345 postfix on
# service postfix start# alternatives –config mta
- (4) SMTP-AUTH
-
- (ⅰ)インストール
パッケージの確認
# rpm -qa | grep sasl
# yum install cyrus-sasl-md5 cyrus-sasl-ntlm cyrus-sasl-gssapi
Installed: cyrus-sasl-gssapi.i386 0:2.1.22-4 cyrus-sasl-md5.i386 0:2.1.22-4 cyrus-sasl-ntlm.i386 0:2.1.22-4
POP/IMAPサーバの構築(Dovecot)
- (1) インストール
-
# yum install dovecot
Installed: dovecot.i386 0:1.0.3-6.fc6 - (2) 設定
-
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir - (3) 自動起動
-
# service dovecot start
# chkconfig dovecot on - (4) 動作確認
- [注意事項]MainServerのセキュリティーで、その他のポートで110番のTCPのポート開放をすることでメールを受け取ることができる。
SubmainServerのサーバ構築
SSHサーバの構築
外部公開のため、パスワードによる認証でなく、公開鍵と秘密鍵、及びパスフレーズによる認証でSSHの構築をします。
- (1) インストール
-
# rpm -qa | grep ssh
openssh-4.3p2-10
openssh-askpass-4.3p2-10
openssh-clients-4.3p2-10
openssh-server-4.3p2-10 - (2) RSA公開鍵と秘密鍵の作成
- 作成方法については、Gentoo Linuxで自宅サーバを参考にしてください。
- (3) 設定
-
# vi /etc/ssh/sshd_config
- (ⅰ)RSA公開鍵認証の有効化
- (ⅱ)rootで直接ログインできないようにする。
- (ⅲ)rhostでの接続とパスワード認証の無効化
- (ⅳ)チャレンジレスポンス認証を明示的に無効化
- (ⅴ)ログレベルを指定しておく。
以下により、公開鍵と秘密鍵、及びパスフレーズによる認証が可能になります。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keysこれにより、ssh接続でroot権限を得るには認証を2回パスしなければならなくなります。
PermitRootLogin noRhostsRSAAuthentication no
PasswordAuthentication no
PermitEmptyPasswords noこれをしておかないとPAM認証(実質的にはパスワード認証)を行ってしまうので、公開鍵認証に限定するためにチャレンジレスポンス認証を明示的に無効化します。
ChallengeResponseAuthentication noSyslogFacility AUTH
LogLevel INFO以上で、
・サーバ上の公開鍵とペアになっている秘密鍵を持っていること
・鍵ペア作成時に設定したパスフレーズを知っていること
・ssh2で接続すること
を満たさなければssh接続ができなくなります。 - (4) SSH公開鍵認証の設定
-
- (ⅰ)サーバ側でやること
- (ⅱ)クライアント側でやること
■公開鍵ファイルをOpenSSH互換の鍵に変換
PuTTYgenで生成した鍵はOpenSSHでは使用できません。
$ ssh-keygen -i -f ~/id_rsa.pub > ~/authorized_key_for_admin
$ mv authorized_key_for_admin .ssh/authorized_keys
$ sudo chown admin .ssh/authorized_keys
$ sudo chown togino .ssh/authorized_keys
$ chown togino .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ chmod 700 .ssh■Windows対応の公開鍵、秘密鍵のペアの作成
■WinSCP付属のPuTTYgenでWindows系の鍵を生成
■鍵を生成すると、公開鍵を「id_rsa.pub」,秘密鍵を「id_rsa_com.ppk 」として保存。
保存先は、「c:Documents and SettingユーザApplication Datarsa」(XP)
C:UsersユーザAppDataLocalrsaid_rsa_com.ppk(Vista)*アクセスできるか確認
WindowsでPoderosaを使ってログインする場合は、秘密鍵の変換が必要。特に、「Wrong Key Format」とでれば、秘密鍵の形式を「ssh.com.key」にしていないことが原因。詳細は、SSH公開認証の設定を参考にしてください。 - (5) xineted経由で起動させる
-
# service sshd stop
# chkconfig sshd off# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.○.○ 192.168.○.○ .○.○.jp }
# service xinetd restart
Webサーバの構築(ApacheHTTP)
- (1) インストール
- #
- (2) 設定(変更点)
-
# vi /etc/httpd/conf/httpd.conf
① ServerName www.0gino.jp
② AddDefaultCharset None
③ DirectoryIndex index.php index.html
④ UserDir public_html - (3) バーチャルホストの設定(NAMEベースの場合)
-
# vi /etc/httpd/conf/httpd.conf
# Virtual host Virtual Host computerbu - (4) 自動起動
-
# chkconfig httpd on
# chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ServerAdmin webmaster@0gino.jp DocumentRoot /var/www/html/community/computerbu ServerName computerbu.0gino.jp ErrorLog logs/computerbu.0gino.jp-error_log CustomLog logs/access_log combined
データベースサーバの構築(MySQL)
- (1) インストール
-
- (ⅰ)MySQLのインストール
- (ⅱ)自動起動の設定
# yum install mysql-server mysql
Installed: mysql.i386 0:4.1.20-1.FC4.1 mysql-server.i386 0:4.1.20-1.FC4.1
Dependency Installed: perl-DBD-MySQL.i386 0:2.9007-1 perl-DBI.i386 0:1.48-4# chkconfig –level 345 mysqld on
# service mysqld start
phpの導入 (記載日:2008年11月02日)
- (1) インストール
-
# yum install php
Installed: php.i386 0:5.0.4-10.5
Dependency Installed: php-pear.i386 0:5.0.4-10.5
# yum -y install php-mbstring php-mysql
Installed: php-mbstring.i386 0:5.1.6-3.7.fc6 php-mysql.i386 0:5.1.6-3.7.fc6
Dependency Installed: php-pdo.i386 0:5.1.6-3.7.fc6 - (2) phpライブラリーの引越し
-
- ①phpライブラリーのコピー
- ②php.iniファイルのパス設定
- ③パスを認識させるためhttpdを再起動
# rsync -avz -e ssh MainServer:/usr/local/lib/php /usr/local/lib
# vi /etc/php.ini
; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”
include_path = “.:/php/includes:/var/www/html/include:/usr/local/lib/php”# service httpd restart
WWWServerのサーバ構築
OpenSSHのインストールと設定
- (1) 運用方針
- ·SSHによる接続を許可するホストをxinetdを併用して限定する(アクセス制御)
- ·rootアカウントによるSSH接続を拒否する
- ·パスワードの設定されていないアカウントによる接続を拒否する
- ·rhosts認証によるSSH接続を拒否する
- (2) OpenSSHのインストール
- ·OpenSSLのインストール
- ·zlibのインストール
- ·OpenSSHのインストール
- (ⅰ)OpenSSLのインストール
- (ⅱ)zlibのインストール
- (ⅲ)OpenSSHのインストール
- (3) OpenSSHの設定
-
- (ⅰ) xineted経由で起動させる
# sh /etc/rc2.d/S99sshd stop
# cd /etc/rc2.d/
# mv S99sshd .S99sshd# vi /etc/xinetd.d/ssh
service ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/local/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 } # service xinetd restart
/usr/local/sslに./configure –prex=/usr/localでコンパイルしてインストール
/usr/local/src/openssh/zlib-1.2.3に./configureでコンパイルしてインストール
/usr/local/src/openssh/openssh-5.0p1に./configureでコンパイルしてインストール
Apacheのインストール
- (1) インストール
-
# rpm -qa | grep httpd httpd-2.0.54-10 system-config-httpd-1.3.2-2 # yum remove httpd # tar zxvf httpd-2.0.55.tar.gz
- (2) 作動確認及び自動起動の設定
-
# /usr/local/apache2/bin/apachectl start # cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd # chmod +x /etc/init.d/httpd # who -r # cd /etc/rc5.d/ # ln -s /etc/init.d/httpd S99httpd (自動起動の設定) # cd /etc/rc0.d/ # ln -s /etc/init.d/httpd K10httpd (自動終了の設定) # /etc/init.d/httpd stop (手動で終了) # /etc/init.d/httpd start (手動で起動)
- (3) 設定ファイル
-
httpd.conf # vi /usr/local/apache2/conf/httpd.conf User apache Group apache ServerAdmin admin@0gino.jp ServerName www.0gino.jp:80 DocumentRoot "/var/www/html" Directory "/var/www/html" Options Indexes FollowSymLinks /Directory DirectoryIndex index.html index.php AddDefaultCharset off
- (4) httpdの再起動
-
# /usr/local/apache2/bin/apachectl restart または # /etc/init.d/httpd restart
Mysqlのインストール
- (1) インストール
-
◎バージョン4.1.15でインストールする。バージョン4.1.20以降や
5ではエラーが出てインストールできない。
◎そこで、PHPによるWebアプリケーションスーパーサンプル活用編と
同様にバージョン4.1.15でやるとうまくいく。
◎インストールに先立ち、rpm版mysqlを削除する。
次に、mysqlのユーザーの作成をする。
(Configureで必要)# rpm -qa | grep mysql mysql-4.1.20-1.FC4.1 # yum remove mysql Removed: mysql.i386 0:4.1.20-1.FC4.1 Dependency Removed: dovecot.i386 0:0.99.14-8.fc4 # /usr/sbin/groupadd mysql # /usr/sbin/useradd -g mysql mysql # passwd mysql (recret) # tar zxvf mysql-4.1.15.tar.gz # cd mysql-4.1.15 # ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --without-readline --with-mysqld-user=mysql # make # make install
- (2) インストール後の設定と作動確認
-
# /usr/local/mysql/bin/mysql_install_db # chown -R root /usr/local/mysql # chgrp -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql/var # /usr/local/mysql/bin/mysqld_safe --user=mysql & # /usr/local/mysql/bin/mysql
- (3) 自動起動の設定
-
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql # chmod +x /etc/init.d/mysql # who ?r (現在のランレベルを知る) # cd /etc/rc5.d/ # ln -s /etc/init.d/mysql S99mysqld # cd /etc/rc0.d/ # ln -s /etc/init.d/mysql K10mysqld # /etc/init.d/mysql stop # /etc/init.d/mysql start
PHPのインストール
- (1) インストールは、PHPによるWebアプリケーションスーパーサンプル活用編
(p41からp44を参照) -
●zlibのインストール # tar zxvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 # ./configure --shared # make # make install ●libpngのインストール # tar zxvf libpng-1.2.8-config.tar.gz # cd libpng-1.2.8-config # ln -s scripts/makefile.linux makefile # vi makefile ↓ 以下のように変更 ZLIBLIB=/usr/local/lib ZLIBINC=/usr/local/include #ZLIBLIB=../zlib #ZLIBINC=../zlib # make # make install ●libjpegのインストール # tar zxvf jpegsrc.v6b.tar.gz # cd jpeg-6b/ # ./configure --enable-shared # make # make install /usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/man/man1/cjpeg.1 /usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1' : そのようなファイルやディレクトリはありません make: *** [install] エラー 1 というエラーがでた場合、以下のように /usr/local/man/man1 を作成し、 再度試みる。 # mkdir /usr/local/man/man1 # make install ● FreeTypeのインストール # tar zxvf freetype-2.1.10.tar.gz # cd freetype-2.1.10 # ./configure --enable-shared # make # make install ●GDのインストール # tar zxvf gd-2.0.33.tar.gz # cd gd-2.0.33 # ./configure # vi Makefile CFLAGS = -g -O2 -DJISX0208 ← 赤の部分を追加する # make # make install
- (2) phpのインストール
-
# tar zxvf php-5.1.2.tar.tar # cd php-5.1.2 #./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/local/lib --with-png-dir=/usr/local/lib--with-jpeg-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib --with-gd=/usr/local/ --enable-gd-native-ttf # make # make install # vi /usr/local/apache2/conf/httpd.conf AddType application/x-httpd-php .php ← 左のように追加する # /etc/init.d/httpd restart ◎このとき、以下のエラーがでて起動できない。 Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied ◎googleで「cannot restore segment prot after reloc: Permission denied」 と入れて検索をかけると 以下の解決法が表示されたので、実行するとクリアーした。 # chcon -c -v -R -u system_u -r object_r -t lib_t /usr/local/apache2/modules/libphp5.so context of /usr/local/apache2/modules/libphp5.so changed to system_u:object_r:lib_t
- (3) 各種ライブラリーのインストール
-
# cp /usr/local/src/php-4.4.1/php.ini-dist php.ini # vi php.ini include_path = ".:/usr/local/lib/php" ← 左のように変更する
- (4) PEARのインストール
-
◎include_pathで設定したディレクトリーにPEAR関連ファイルを 解凍すればそのまま使える # pear install DB # pear install Calendar-0.5.
phpのインストールに先立ち、以下をインストールする
vsftpdの設定
- (1) インストール
-
# cd /usr/local/src/
# tar zxvf vsftpd-2.0.7.tar.gz
# cd vsftpd-2.0.7
# make
# make install
anonymouse(匿名ユーザ)で利用する場合はftpユーザー、専用ディレクトリ(ここでは /var/ftp とします)が必要。
anonymouseでは読み込み(ダウンロード)だけで、書き込み(アップロード・削除)を許可させませんので、その権限の設定も行います。
# useradd -u 99 nobody
# groupadd -g 50 ftp
# useradd -u 14 -g ftp -d /var/ftp -s /sbin/nologin ftp
# chown root:root /var/ftp
# chmod og-w /var/ftp - (2) 設定
-
- (ⅰ)vsftpd.confファイルの設定
設定条件として、
·inet経由の起動
·anonymouse接続は行わない
·ルーターの関係でPassiveモードを使用しない
·.htaccessなどのドットファイルを表示する
·一般ユーザーはホームディレクトリ(/home/xxxx/)より上の階層には上がらせない(禁止する)
·ftpを利用できるユーザーとできないユーザーをわける
# vi /etc/vsftpd.confanonymous_enable=NO xferlog_enable=YES ←/var/log/vsftpd.logに接続・転送を記録 xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO ascii_upload_enable=YES ascii_download_enable=YES chroot_local_user=YES ←デフォルトでホームディレクトリより上層への アクセスを禁止する chroot_list_enable=YES ←ホームディレクトリより上層へのアクセスを許可するユーザのリストの有効化 chroot_list_file=/etc/vsftpd.chroot_list ←ホームディレクトリより上層へのアクセスを許可するユーザのリスト ls_recurse_enable=YES ←ディレクトリごと削除できるようにする local_root=public_html ←ログイン時のディレクトリを~/public_htmlにする force_dot_files=YES use_localtime=YES text_userdb_names=YES ls_recurse_enable=YES listen=YES
- (ⅱ)ホームディレクトリ以上の階層を見せるユーザ
# vi vsftpd.chroot_list
○○○○- (ⅲ)FTPサーバのみを使用できるユーザの作成
# vipw
○○○○:x:519:519::/home/○○○○:/sbin/nologin- (ⅳ)PAM認証設定
# cd /usr/local/src/vsftpd-2.0.7
cp RedHat/vsftpd.pam /etc/pam.d/ftp - (3) 起動(xinetdで起動させる)
-
# vi /etc/vsftpd.conf
#listen=YES ← #をつけないとエラーが出る# vi /etc/xinetd.d/vsftpd
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd nice = 10 }
# /etc/rc.d/init.d/xinetd restart
BackupServerのサーバ構築
SSHサーバの構築
- (1) xinetd経由で起動する
-
- (ⅰ)自動起動の停止
- (ⅱ)xinetdの設定
# service sshd status
sshd (pid 4767 1936) を実行中...
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
# service sshd stop
sshdを停止中: [ OK ]
# chkconfig sshd off
# chkconfig --list sshd
sshd 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ# service xinetd status
xinetd (pid 1951) を実行中...
# cd /etc/xinetd.d/
# touch ssh
# chmod 744 ssh
# vi sshservice ssh { flags = REUSE socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID disable = no only_from = 192.168.1.1 192.168.1.2 }
# service xinetd restart
ご来訪有難うございます。
www.ogino.tk へご来訪有難うございます。
このブログは、Wordpressで運用しています。半年前に気のついたこのなのですが、WordpressはPHPで作られているので、工夫と実力次第で、HTML、CSS、PHP、JavaScriptなどを取り入れた自由度の高いWebSiteを構築可能です。
何分このWebSiteは、構築途中で、試験的運用の段階です。これから研鑽を重ね、ぜひ、レベルの高い、内容のあるWebSiteを作りたいと意気込んでいますので、ただこれだけの内容かと思われずに、長い目で見てやってください。よろしくお願いします。(記載日:2011年1月6日)
CoreServerでNextgenを利用できるまでの設定
プラグインの「nextgen」を有効にして、利用すると、
次のメッセージが表示され、nextgenが利用できない症状が出た。
ID 1: 問題が発生しました
[more]
You do not have the GD Library installed. This class requires the GD library to function properly. visit http://us2.php.net/manual/en/ref.image.php for more information
そこで、以下の対処をすることで利用できるようになったので覚え書きとして書き留めておく。
(1) .htaccess を作り、wp-admin/ のディレクトリに置く。
AddHandler application/x-httpd-phpcgi .php
(2) header.phpに以下がない場合は追加しておく。
[code]
<?php
/* We add some JavaScript to pages with the comment form
* to support sites with threaded comments (when in use).
*/
if ( is_singular() && get_option( ‘thread_comments’ ) )
wp_enqueue_script( ‘comment-reply’ );
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head> such
* as styles, scripts, and meta tags.
*/
wp_head();
?>
[/code]
(3) imagerotator.swf を/wp-content/uploadsに設置する。
NetBookServerでWordPressが使えるまでの設定
httpdとMySQLのインストール状況の確認
① httpdのインストール状況
[root@NetBookServer ~]# rpm -qa httpd
httpd-2.2.3-31.el5.centos.2
② mysqlのインストール状況
[root@NetBookServer ~]# rpm -qa mysql
mysql-5.0.77-4.el5_4.2
③ 以上より、appachとmysqlはインストールする必要がないことが分かる。次にphpMyAdminのインストール状況の確認をする。
phpMyAdminが利用できるまでの流れ
①phpMyAdminのインストール状況の確認
[root@NetBookServer ~]# rpm -q phpmyadmin
パッケージ phpmyadmin はインストールされていません。
そこで、phpmyadminをyumでインストールする。
②phpmyadminのインストール
[root@NetBookServer ~]# yum install phpmyadmin
Installed:
phpMyAdmin.noarch 0:2.11.10-1.el5
Dependency Installed:
libmcrypt.i386 0:2.5.8-4.el5.centos
php-mcrypt.i386 0:5.1.6-15.el5.centos.1
③ phpmyadminの設定
# vi /etc/httpd/conf.d/phpMyAdmin.conf
order deny,allow
deny from all
allow from ○○○○ ← この部分の設定(読み出せるように)
④ 以上の設定で、http://(ドメイン)/phpMyAdmin/ がらphpMyAdminのログイン画面が表示される。
wordpressのインストールと設定
①FTPによって、/var/www/html/wordpressのディレクトリにwordpress(ver3.0.1)をアップロードする。
② 以下のディレクトリの属性を変更する。
# chmod 777 wordpress
# chmod 777 -R wordpress/wp-admin/
# chmod 777 -R wordpress/wp-content/
③ あとは、http://(ドメイン)/wordpress/ でwordpressの設定画面が表示され、指示に従っていけばインストールが完了する。
Family-WordPressの設定内容(覚え書き)
FamilyのWordpressの設定内容を以下のようにする。
(1) データベースについて
データベースは、長期的な展望に立ち、各自のものを用意する。
具体的には、ogino_○○○○というデータベースを作る。
(2) FTPの環境について
メンバー全員に、FTPのIDとパスワードを与え、ファイルのアップロードとダウンロードが個々人で自由にできるようにする。IDは、ogino.○○○○の形である。これにより、Wordpressの管理画面からバージョンアップ等、FTPの操作が自由に行える。
(3) CSSについて
CSSファイルは、www.ogino.tkの共通CSSを利用する。そのために、header.phpでリンクを張っている。
(4) カウンター及びアクセス解析について
カウンターは、それぞれ独立したカウンターを使う。(5分以内の同一IPアドレスによる重複カウントは防止している。自由設定可能)
アクセス解析も独自のものを使用する。IDとパスワードによる管理となる。
画像一覧のページを作成しました。
サイト内の画像を日付の降順に出力させる「画像一覧」のページを作成しました。
サイト内画像一覧
「サイトマップ」を利用できるようにしました。
プラグイン「Dagon Design Sitemap Generator」を使って、「サイトマップ」を利用できるようにしました。
「問い合わせ」を利用できるようにしました。
「問い合わせ」が利用できない状態にありましたが、利用できるようにしました。
アクセス解析の修正
WordPressに移設してから「アクセス解析」が利用できなくなっていましたが、修正を施し、利用できるようにしました。
カウンターのソースファイル(修正版)
[sourcecode language=”php”]
<?php
// カウントデータとIPアドレスデータのファイルのパス
// count.phpと異なるフォルダに設置するときは変更
$config[‘file’][‘count’] = ‘cnt.php’;
$config[‘file’][‘check’] = ‘ip.php’;
// カウンタの桁数
$config[‘figure’][‘total’] = 6;
$config[‘figure’][‘today’] = 4;
$config[‘figure’][‘yesterday’] = 4;
[/sourcecode]
[php]
<?php
// カウントデータとIPアドレスデータのファイルのパス
// count.phpと異なるフォルダに設置するときは変更
$config[‘file’][‘count’] = ‘cnt.php’;
$config[‘file’][‘check’] = ‘ip.php’;
// カウンタの桁数
$config[‘figure’][‘total’] = 6;
$config[‘figure’][‘today’] = 4;
$config[‘figure’][‘yesterday’] = 4;
// 重複カウント回避時間
// IPアドレスによる同一クライアントの重複カウント回避時間
//
// 設定時間内は同一IPアドレスの重複カウントをしない。
// 単位は分 / (例) 60 を設定すると1時間カウントしない
// 0 を設定すると常にカウントする。
// (IPアドレスの記録もしない。)
$config[‘limit’][‘time’] = 60;
// IPアドレスを記録する上限数
// アクセス時、この記録を参照し、
// 同一IPアドレスで、「重複カウント不許可の時間」内の記録があればカウントしないことになります。
//
// 重複カウント回避時間設定が0の場合IPアドレスの記録・チェックともに行いません。
// 上限を超えた場合、古いリストから順に削除されるので、
// 1時間重複カウントを防止すると仮定した場合、1時間のユニークアクセスと同等以上の上限数を設定すべきです。
// また、上限数を大きくすればするほどチェックに時間がかかり動作は遅延します。
// アクセス状況と動作スピードを検証しつつ適宜設定してください。
$config[‘limit’][‘ip’] = 100;
// カウントデータ取得
if($fp = @fopen($config[‘file’][‘count’],"r+")) {
flock ($fp,LOCK_EX);
$data = fgets($fp);
// データ分割
$datas = divideData($data);
// カウントアップ
if(ipCheck($config)) {
$datas = countUp($datas);
rewind($fp);
ftruncate($fp,fwrite($fp,makeData($datas)));
}
fclose($fp);
// 出力
putCounter($config,$datas);
}
exit;
function putCounter($config,$datas) {
$datas[‘total’] = sprintf("%0".$config[‘figure’][‘total’]."d", $datas[‘total’]);
$datas[‘today’] = sprintf("%0".$config[‘figure’][‘today’]."d", $datas[‘today’]);
$datas[‘yesterday’] = sprintf("%0".$config[‘figure’][‘yesterday’]."d", $datas[‘yesterday’]);
$result=array(
‘total’=> $datas[‘total’],
‘today’=> $datas[‘today’],
‘yesterday’=> $datas[‘yesterday’]
);
$jsonedData = json_encode($result);
$callback="counter";
header("Content-type:text/html;charset=UTF-8");
print $callback . ‘(‘ . $jsonedData . ‘);’;
exit();
}
/** 書込みデータ作成 */
function makeData($datas) {
return join(‘,’,array($datas[‘date’],$datas[‘total’],$datas[‘today’],$datas[‘yesterday’]));
}
/** カウントアップ */
function countUp($datas) {
$date[‘today’] = date("Ymd");
$date[‘yesterday’] = date("Ymd",(time() – 60*60*24));
// データ内の日付検証
if($datas[‘date’] == $date[‘today’]) {
// 今日
$datas[‘today’]++;
}
elseif($datas[‘date’] == $date[‘yesterday’]) {
// 昨日
$datas[‘yesterday’] = $datas[‘today’];
$datas[‘today’] = 1;
}
else {
// 初回等、上記以外
$datas[‘yesterday’] = 0;
$datas[‘today’] = 1;
}
$datas[‘total’]++;
// 日付
$datas[‘date’] = $date[‘today’];
return $datas;
}
/** IPアドレスによる重複カウント防止 */
function ipCheck($config) {
$addr = $_SERVER[‘REMOTE_ADDR’];
// 判定値
$re = 0;
// 今回データ
$current = join(‘,’,array(time(),$addr));
// データバッファ
$buffer = array();
// 時間設定が0の場合、何もしないで1を返す
if($config[‘limit’][‘time’] == 0) {
return 1;
}
// IPデータ取得
$hit = 0;
if($fp = @fopen($config[‘file’][‘check’],"r+")) {
while($line = fgets($fp)){
$line = rtrim($line);
list($old[‘time’],$old[‘ip’]) = explode(‘,’,$line);
if($old[‘ip’] == $addr) {
if($old[‘time’] < time() – ($config[‘limit’][‘time’] * 10)) {
// 同一IPで設定時間外の場合、判定値を1とする
$re = 1;
}
$hit = 1;
}
else {
$buffer[] = $line."n";
}
}
// 同一IPがない場合、判定値を1とする
if($hit == 0) {
$re = 1;
}
// 今回のデータを格納
$buffer[] = $current."n";
sort($buffer);
// 記録上限数に調整
while(count($buffer) > $config[‘limit’][‘ip’]) {
array_shift($buffer);
}
// データ書込み
rewind($fp);
ftruncate($fp,fwrite($fp,join(”,$buffer)));
}
fclose($fp);
return $re;
}
/** データ分割 */
function divideData($data) {
$data = rtrim($data);
if($data) {
list($datas[‘date’],$datas[‘total’],$datas[‘today’],$datas[‘yesterday’]) = explode(‘,’,$data);
}
return $datas;
}
?>
[/php]
日付計算(1)「インクルードファイルの利用」
= 1989:
$gengo_s=”H”;
$gengo=”平成”;
$yy_wa=$yyyy-1988;
break;
case $yyyy >= 1926:
$gengo_s=”S”;
$gengo=”昭和”;
$yy_wa=$yyyy-1925;
break;
case $yyyy >= 1912:
$gengo_s=”T”;
$gengo=”大正”;
$yy_wa=$yyyy-1911;
break;
case $yyyy >= 1868:
$gengo_s=”M”;
$gengo=”明治”;
$yy_wa=$yyyy-1867;
break;
default:
return FALSE;
}
// 和暦を返す
switch($option){
case “s”: // 短い形式
return $gengo_s . $yy_wa. ” “;
break;
case “m”: // 通常の形式
if($yy_wa==1){
$yy_wa=”元”;
}
return $gengo . $yy_wa . ” 年”;
break;
case “l”: // 長い形式
if($yy_wa==1){
$yy_wa=”元”;
}
return $gengo . $yy_wa . ” 年(” . $eto . “)”;
break;
case “g”: // 元号のみ
return $gengo;
break;
case “e”: // 干支のみ
return $eto;
break;
default:
return FALSE;
}
}
// 和暦⇒西暦変換関数 toSeireki($yy_wa,$option)
function toSeireki($yy_wa,$option){
// 西暦を返す
switch($option){
case “H”:
return $yy_wa+1988;
break;
case “S”:
if($yy_wa=65){
return FALSE;
}else{
return $yy_wa+1925;
}
break;
case “T”:
if($yy_wa=16){
return FALSE;
}else{
return $yy_wa+1911;
}
break;
case “M”:
if($yy_wa=46){
return FALSE;
}else{
return $yy_wa+1867;
}
break;
default:
return FALSE;
}
}
?>
日付計算
結果:
<?php
// 今日の日付を配列にセットする
$datetime=getdate();
$yyyy=$datetime["year"];
$mm=$datetime["mon"];
$dd=$datetime["mday"];
if(isset($_POST['sub1'])){
// strlen()関数でデータのチェックをする
if(!strlen($_POST["day"])){
echo "
データが入力されていません”;
}else{
$day=@$_POST[“day”];
$val=@$_POST[“r1”];
if($val==0){
$date=date(“Y/m/d”,mktime(0,0,0,$mm,$dd+$day,$yyyy));
echo “
今日[“.date(“Y/m/d”,time()).”(”.isWeek(“now”).”)]から “.$day.”日後は、”.$date.”(”.isWeek($date).”)です。”;
}else{
$date=date(“Y/m/d”,mktime(0,0,0,$mm,$dd-$day,$yyyy));
echo “
今日[“.date(“Y/m/d”,time()).”(”.isWeek(“now”).”)]から “.$day.”日後は、”.$date.”(”.isWeek($date).”)です。”;
}
}
}
?>
暗号化と復号化(2)「base64エンコード関数を複数回用いて暗号化する」
base64エンコードを利用して暗号化する(2)
結果:
データが入力されていません”;
}else{
$str=@$_POST[“moji”];
$cnt=@$_POST[“num”];
echo “
元の文字列:”.$str;
// データのエンコード
for($i=1;$i<=$cnt;$i++){
$str=base64_encode($str);
echo "
暗号化(base64_encode)→第”.$i.”回目:”.$str;
}
// データのデコード
for($i=1;$i<=$cnt;$i++){
$str=base64_decode($str);
echo "
復元化(base64_decode)→第”.$i.”回目:”.$str;
}
}
}
?>
暗号化と復号化(1)「base64エンコードの利用」
base64エンコードを利用して暗号化する
結果:
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
// strlen()関数でデータのチェックをする
if(!strlen($_POST["moji"]) or !strlen($_POST["moji"])){
echo "
データが入力されていません”;
}else{
$moji=@$_POST[“moji”];
$ango_moji=base64_encode($moji);
echo “
元の文字列:”.$moji;
echo “
暗号化(base64_encode):”.$ango_moji;
echo “
復元化(base64_decode):”.base64_decode($ango_moji);
}
}
?>
基本フォームをつくる(2)「複数のボタンをもつフォーム」
文字列の暗号化
結果:
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
// strlen()関数でデータのチェックをする
if(!strlen($_POST["moji"])){
echo "
データが入力されていません”;
}else{
$moji=@$_POST[“moji”];
echo “
元の文字列:”.$moji.”
“;
switch($_POST[“sub1”]){
case “crypt”:
echo “暗号化文字列:”.crypt($moji);
break;
case “md5”:
echo “暗号化文字列:”.md5($moji);
break;
default:
echo “暗号化文字列:”.sha1($moji);
}
}
}
?>
基本フォームをつくる(1)
円の面積を求める
結果:
if(isset($_POST[“cmdCalc”])){
$r=@$_POST[“hankei”];
$s=$r*$r*3.14;
echo “半径が “.$r.” のとき、円の面積は “.$s.” です。”;
}
PHP Learning(学習テキスト)の目次
導入段階
導入段階では、PHPのプログラミングをはじめて学習する上で、参考となる例題を集めています。
[導入例題1]
例題1では、「半径を入力して、円の面積を求める」フォームを作成する作業を通じて、基本的なフォームの作り方、データの受け渡し方法やその処理の仕方について学習します。
[導入例題2]
例題2では、「文字列を暗号化する」作業を通じて、ボタンを複数もつ、少し複雑なフォームを作成し、データの受け渡しとその処理方法について学習します。
- 基本フォームをつくる(2):複数のボタンをもつフォーム
- 暗号化と復号化(1):base64エンコードの利用
- 暗号化と復号化(2):base64エンコード関数を複数回用いて暗号化する
[導入例題3]
例題3では、「西暦⇔和暦」変換関数を作る作業を通じて、関数の作り方と使用方法について学習します。
[導入例題4]
例題4では、例題3で作成した「西暦⇔和暦」変換関数をインクルードファイルとしてライブラリー化する方法について学習します。例題で扱う内容は日付に関する計算問題です。
- 日付計算(1):インクルードファイルの利用
- 日付計算(2)
- 日数計算の追加
- 西暦・和暦・干支対応表の追加
理解段階
理解段階では、PHPのプログラミングで必要となる基礎事項をサンプル例題によって学習します。
[数値]
[日付]
日付について学習します。
[ファイル]
ファイルの操作について学習します。
[ディレクトリ]
ディレクトリの操作について学習します。
[GD]
画像ファイルについて学習します。
応用段階
応用段階では、PHPによるWebアプリケショーンのプログラミングに挑戦します。
[万年カレンダー]
手始めに、万年カレンダーを作成します。週休日の色変更も追加してみます。
お天気Webサービスの設置について
Ajax+DOMを利用したライブドアの「お天気Webサービスの設置」について苦労しましたが、うまく設置できなかった理由がようやく判明しました。それは、proxy.phpを設置する場所にありました。
次のproxy.phpファイルを利用しているthemaのhome.phpと同じディレクトリーに置くのでなく、wordpressを導入したルートディレクトリーに置くことです。これで解決しました。
なお、/* ライブラリのディレクトリ */の設定で、libraryにpathを通しておくことも要注意です。
[php]
<?php
/* ———————————————————-
* 定数定義
* ——————————————————– */
/* リクエスト先URLの定義 */
define("REQ_BASE_URL", "http://weather.livedoor.com/forecast/webservice/rest/v1");
/* ライブラリのディレクトリ */
define("ZEND_LIB_DIR", "../library/"); ←要注意
/* HTTPリクエストのタイムアウト(秒) */
define("HTTP_TIMEOUT", 10);
[/php]
Ketai-Entryで携帯から添付画像がメールで送れない
warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 10009 is not allowed to access /var/www/vhosts/gtthm.com/httpdocs/files owned by uid 48 in /var/www/vhosts/gtthm.com/httpdocs/includes/file.inc on line 117. .
warning: fopen(files/.htaccess) [function.fopen]: failed to open stream: Success in /var/www/vhosts/gtthm.com/httpdocs/includes/file.inc on line 117.
のようなエラーがでた。このエラーは /wp-content/uploads/2010/04
のownerの変更とmod777にすることで解決した。
玄箱をホームサーバとして構築
# apt-get update
# apt-get upgrade
NetBookServerの構築
NetBookServerの構築(wwwサーバ構
(1)
# yum install mysql-server mysql
Installed:
mysql-server.i386 0:5.0.77-4.el5_4.2
Dependency Installed:
perl-DBD-MySQL.i386 0:3.0007-2.el5
(2) phpのインストール
# yum install php
Package php-5.1.6-24.el5_4.5.i386 already installed and latest version
# yum -y install php-mbstring php-mysql
Installed:
php-mbstring.i386 0:5.1.6-24.el5_4.5
php-mysql.i386 0:5.1.6-24.el5_4.5
wordpress-2.9.2-jaへアップデート
WordPress 2.9をWordPress 2.9.2へアップデートしました。
Wordpressをベースにしたブログ形式のWebSiteに作り替えました。
62回生のWebSiteをWordpressをベースにしたブログ形式のものに作り替えました。
これによって、使い勝手の良いWebSiteとなるものと期待しています。
Permission denied (publickey,gssapi-with-mic).の原因究明
ssh関連で、192.168.1.3から192.168.1.1へ入ろうとすると、Permission denied (publickey,gssapi-with-mic).が出る。
# slogin 192.168.1.1
Permission denied (publickey,gssapi-with-mic).
いろいろ原因を探ってみたが、その結果、セキュリティーを持たすためにsshd_configで
PasswordAuthentication no
としていたためと判明する。
# vi /etc/ssh/sshd_config
PasswordAuthentication yes
PermitEmptyPasswords no
#PasswordAuthentication no
#PermitRootLogin no
これで、次のように入ることが出来て問題を解決できた。
[root@BackupServer root]# slogin 192.168.1.1
root@192.168.1.1’s password:
Last login: Fri Aug 8 18:27:44 2008 from 192.168.1.2
知っておくと便利なコマンド
(1) findコマンド
ファイルの検索コマンド
必要であるコマンドでしたが、これまで使いきれていなかったコマンドです。
使用例:
# find / -name “Weeks.php” -print
このように、-name “Weeks.php” -print と入れないと検索されません。
これまで、
find / Weeks.php のように使っていたので、「Weeks.php」が検索されませんでした。
WordPressの引越し
これまで(2008年10月)、WordPress ME 2.1.1を使っていましたが、バージョンアップとデータのバックアップをとるためにWordPressを別サーバに移転させる必要性が生じました。3ヶ月前から「WordPressの引越し」にチャレンジしていましたが、MySQLのデータベース関連、PHP関連、そして文字化け問題となかなか引越しが出来ない状態にありました。それでもサーバ構築を進めていく以上何とかしなければならないという思いで、かなりの労力と時間を費やしましたが、なんとか「WordPressの引越し」が出来ました。念願の引越しが出来たのもWeb検索でいろいろな情報を集めることが出来たためです。そこで、これから「WordPressの引越し」をお考えの方に少しでも参考になればと思い、今回取り組んだ内容を書き留めておきます。
それでは、WordPress ME 2.1.1を別サーバに移転させるために、取り組んだことを書きます。
(1) サーバの全ファイルをローカルにバックアップ
まず、安全のため、FFFTPなどを使って全ファイルのバックアップを取りました。
(2) データベースのエクスポート
次に、WordPress ME 2.1.1のMySQLのデータベースをphpMyAdminでエクスポートしました。
WordPressそのものにもエクスポート機能がありますが、この機能を使ってエクスポートすると、WordPress ME 2.1.1では文字化けが起きたのでphpMyAdminでエクスポートしました。
<phpMyAdminでのエクスポート留意事項>
phpMyAdminを使ってのエクスポートも、設定を違えると文字化けの原因となりました。そこで私の場合は、以下の3点に注意してデータをエクスポートすると文字化けが生じずうまくいきました。
(ⅰ) SQL互換モードはMYSQL40などのようにデータインポート先のSQLと互換を取れるように設定。
(ⅱ) 「DROP TABLE / DROP VIEWを追加」にチェックを入れる。
(ⅲ) 「wp_options」はエクスポートしない。
また、2MBを超えると一度にインポートできないので、「圧縮: “zip 形式” 」を選択してエクスポートファイルを作成しました。圧縮形式でエクスポートしても、文字化けなどの原因にはならないようで、安心して使えました。
<エクスポート設定画面>
(3) WordPressの新規インストール
移転先のサーバに最新版であるWordPress2.6.2(日本語版)を新規にインストールしました。
このときに注意することは、以下のようにして新規WordPress用のデータベースをphpMyAdminを使って作成しますが、文字化け対策として、「新規データベースを作成する」で utf8_unicode_ci を選択することです。また、作成したデータベースに適切な「特権の設定」をしておく必要があります。適切な特権の設定とは、作成したデータベースにアクセスできるユーザ設定をしておくということです。このユーザ名とパスワードはWordPressの新規インストール時に必要となります。
(4) テーマ・プラグイン・画像ファイルのアップロード
次に、テーマ・プラグイン・画像ファイルのアップロードをするために、新規にインストールしたWordPressのwp-contensを削除し、FFFTPを使って、バックアップしておいたwp-contensを丸ごとアップロードしました。
(5) データベースのインポート
エクスポートと同様に、phpMyAdminを使ってMySQLへのデータをインポートしました。これも。設定を違えると文字化けの原因となりました。私の場合、以下のようにすると文字化けが生じませんでした。
(ⅰ) SQL互換モードはMYSQL40などのようにデータインポート先のSQLと互換を取れるように設定
(ⅱ) ファイルの文字セットを「utf8」にセット
(ⅲ) 「wp_options」はインポートしない (データのエクスポートでwp_optionsを入れていなければ問題なし)
(6) WordPressの起動
MySQLへのデータのインポートが無事にでき、WordPressを起動しました。すると、再度wp-config.phpのウイザード画面が開き、ブログタイトルとメールアドレスを聞いてきました。画面に従い、再度設定すると、文字化けすることなくWordPress2.6.2が起動しました。再度wp-config.phpのウイザード画面が開いたのは、wp_optionsをインポートしなかったためであると思いますが、wp_optionsをインポートしないことで画像がうまく表示されたと考えられます。というのも、エクスポートしたデータファイルの中身を見ると、画像データは絶対URLでファイルの場所を参照しているためです。どこかで絶対URLを変える作業が必要になりますが、これがその作業ではないかと思われます。
別の工夫としては、丸ごとアップロードしたwp-contensの内容を参照できるようにするために、直接エディターの置換を使って、すべてのURLを変更するなども可能なのかも知れません。
(7) 最後の最後に
(6)までの作業で、管理画面内部の表示が、日本語から英語に変わったものの、文字化けもなく、、画像も表示されたのでようやく引越しが済んだと思いました。ところが、新規に記事を書いたり、コメントを書き込んでも、書けないことに気がつきました。はじめは、wp-contensディレクトリの書き込み権限の問題だろうと、権限を緩めたり、所有者を変更したりしましたがそれでも書き込めません。このときは、せっかくここまでできたのにまた、はじめからやらなくてはいけないのかと落胆しました。
それでも、WordPressのバージョンを2.6.2の最新バージョンまであげたので、今度は、WordPressのエクスポート機能を使って、データのバックアップをとり、そのファイルを使い、再度、新規にインストールしたWordPressにインポートしました。この作業で注意したことは、いったんインポートされたwp_optionsをWordPressを起動する前にphpMyAdminで削除して、再度WordPress側でwp_optionsファイルを作らせることです。これによって、ようやく、引越しを終えることが出来ました。
(追伸) この引越しによって、カテゴリまではちゃんと移転できませんでした。これは、手作業で直すことにしました。