plamo4.0x->webpage
戻るボタンで戻りませう。

webページ作成

セットアップしているシステムは、 plamo linux 4.0をベースにちょこちょこいじくったモノです。

sitecopy

webサイトをアップロードします。

インストール

とくに難しいことはないです。 $ ./configure
$ make
# make install

とっかかり

作業ディレクトリと設定ファイルを作成します。 $ mkdir -m 700 .sitecopy '作業ディレクトリ
$ touch .sitecopyrc ' 設定ファイル
$ chmod 600 .sitecopyrc

設定ファイルを編集します。こんなのを使ってます。

#
site nifty
  server ftp12.nifty.com 'アップロード先のFTPサイト
  url http://homepage2.nifty.com/unzu-gumi/
  username [username]
  password [password]
  remote /homepage/'アップロード先のディレクトリ
  local ~/work/www/nifty/homepage/'手元のディレクトリ
  exclude "*#"
  exclude *~
  exclude "*.xcf"
  exclude ".*"
# symlinks maintain 'FTPでは使えない
  permissions all 
#
詳しくは、man sitecopy のなかで、CONFIGURATION の項目を参照します。

アップロード先のファイル配置を sitecopy に把握させます。 既存のアップロード先が存在し、手元のファイルより古い場合。 $ sitecopy --fetch [sitename] 既存のアップロード先のファイルをいったんダウンロードして更新していく場合。 $ sitecopy --fetch [sitename]
$ sitecopy --synch [sitename]
アップロード先にファイルが存在しない場合。 $ sitecopy --init [sitename] これで準備ができました。

日々のつかいかた

ローカルでファイルを修正してから、sitecopyでサーバへアップロードします。 $ sitecopy --update [sitename]

emacs

自動折り返しを禁止する

勝手に行を分割されてしまうのが気持ち悪いので少し触っておきます。

htmlファイルを編集するときの自動折り返しさせない

(add-hook 'yahtml-mode-hook
          '(lambda ()
            (auto-fill-mode -1)
           ) t)
ちなみに、htmlファイルを編集するときの自動折り返し桁数を指定するとき
(add-hook 'yahtml-mode-hook
          '(lambda ()
            (setq fill-column 78)
           ) t)
これを.emacsの末尾に追加します。

入力補完

定型句の入力などに。使い方はこちら

こことか ここを参考にしました。
(setq abbrev-file-name "~/.abbrev_defs") ;;保存ファイル
(setq save-abbrevs t)
(quietly-read-abbrev-file)
(global-set-key "\M- " 'expand-abbrev) ;;展開するキーの設定
を.emacsに追加します。

ImageMagic

主なコマンド

ImageMagicなるコマンドは存在しません。

example

イメージファイルを50%サイズに縮小する。 $ convert -geometry 50%x50% [sourcefile] [productfile]

イメージファイルを400dots×400dotsサイズに縮小する。 $ convert -geometry 400x400 [sourcefile] [productfile] 画像の縦横比は変更されず、寸法の大きい方が400ドットになるように縮小されます。 たとえば元の画像が800×600であれば400×300になりますし、 元の画像が600×800であれば300×400になります。

イメージファイルをグレイスケールにする。

・・・できないみたい。白黒2値にはなるんですけどね・・。

ESEhttpd

このウェブページの動作確認 (確認後に、sitecopyでウェブサーバにアップロードします。) を兼ねて、自宅内サーバとしてウェブサーバを立ち上げてます。 自宅からしか見えません、のつもり。

chrootしたい

より安全になるとのことですが,ruby以外でCGIを動作させるのに,もう何手間かが掛かりそうです.

私のとこでは,おうちwebサーバはレンタルサーバへアップする前の動作確認用で外部公開はしてません。 手間をかけずにCGIを動かしたいので,chrootはしてません。

( 外部ネットとの間にはADSLルータが挟まってます)

CGIを動かす

httpd.confでスクリプト置き場の設定をします.

ScriptAlias /cgi-bin/ /home/webmaster/cgi/

この例では、http://[サーバ]/cgi-bin/sample.cgiというURIに対して/home/webmaster/cgi/sample.cgiというファイルをCGIスクリプトとして実行します.

スクリプト置き場にふつうのwebページを置いても,表示されません.

プロバイダのウェブスペースで,htmlディレクトリとcgi-binディレクトリが分かれてて, htmlフォルダではcgiが動作しないし,cgi-binディレクトリではふつうのwebページが表示できない. というのがよくありますが,そんな感じです.

そういう制約を外したいときは・・,よくわかりません.そのうち試してみたいと思います.

レンタルサーバでのエラー

KCatch

レンタルサーバでperlによるCGIのエラーメッセージを拾いたいとき。

自宅では動くのに、レンタルサーバにアップしてみると動かない。ということはままあります。今までの少ない経験だと、原因は、

が多いのですが、モジュールの不足については、そもそもモジュールが不足しているかどうか、どのモジュールが必要なのかを調べるのは難しいです。

で、 KCatchを使ってみると良いかもしれません。Internal Server Error を補足してウェブブラウザ画面に表示してくれます。

@nifty

@nifty標準のhomepageサービスである@homepage。 なにやら、慢性的に重たいサーバなんですが、CGIを設置するのも難しい。

その原因の一つが、perlの標準モジュールが用意されていないことだと思います。

モジュール不足であっても、実行結果は単なる「Internal Server Error」 になってしまうので、なにがエラーなのかさっぱりわかりません。

上述のKCatchも、モジュール不足で動作しません ( use strict をコメントアウトすれば行けるんじゃないかと思います... )

思いつく対処法

  1. とりあえず use strictをコメントアウトしてみます。
  2. perl moduleを入れてみます [→参考]

あらかじめ、標準ライブラリを入れておくのが良いかと思います。

Movable Type

レンタルサーバを用意して、ブログを設置します。設置先は fasnet。 データベースにMySQLを使うときには、別に申請する必要があります。

設置

ここ を参照しながら作業しました。かなり詳しいです。

パーミッション

fasnetではディレクトリ配置が比較的ですが、パーミッションの指定が他よりもキツめになっています。ローカルで指定するとすれば、こんなかんじ。 $ tar zxvf MT-3.122-full-lib-ja.tar.gz
$ mv MT-3.122-full-lib-ja mt
$ chmod 701 mt
$ cd mt
$ find . -type d -exec chmod 701 {} \;
$ find . -type f -exec chmod 600 {} \;
$ find . -name "*.cgi" chmod 700 {} \;
$ chmod 604 mt.js
$ chmod 604 styles.css
$ find images -type f -exec chmod 604 {} \;
$ find docs -type f -exec chmod 604 {} \;
つまり、以下のようなかんじにします。

tips

mt-load.cgiを実行したときに Table 'mt_author' already exists at mt-load.cgi line 175. なるエラーメッセージが出る。

→データベースから mt-????? なるテーブルを削除する。

お引っ越し

プロバイダは変えなかったのですがコース変更しました。サーバが変わるので、自前で引っ越ししてくれとのこと。うむむ。

サーバが変わっても、環境はほぼ同じ。違うのはサーバー名、ユーザー名くらい。最終的にURLは変わりません。

MySQL

サーバにphpMyAdminが付いていたので、データベースの操作はweb上でできました。

  1. 元のサーバからデータをエクスポートします。得られたファイルはSQLコマンド(データベース操作コマンド)を羅列したテキストファイルになっています。
  2. SQLコマンドのうち、ユーザー名、サーバー名に関わる部分を新サーバに合わせて書き換えます。
  3. 新サーバのphpMyAdminの「SQL実行」で、エクスポートしたデータを読み込みさせます。

アーカイブデータ

アーカイブや写真類は、MySQLで保存されているわけではないので、全部ダウンロードして、新サーバにアップロードしておきます。

パーミッションなども面倒を見てくれるので、sitecopy が便利です。

旧サーバからダウンロードする時の設定例(.sitecopyrc)
site blog
server server.ne.jp
remote /public_html/blog/
local ~/work/www/blog/
username (name)
password (password)
nodelete
permissions all
んで、コマンドを実行 $ sitecopy --fetch blog' サーバ上のファイル配置を取得
$ sitecopy --synch blog' サーバからデータをダウンロード
ここで、新サーバへアップロードするために .sitecopyrcを書き換えます
site blog
server newserver.ne.jp
remote /public_html/blog/
local ~/work/www/blog/
username (newname)
password (newpassword)
nodelete
permissions all
んで、コマンド。 $ sitecopy --init blog' サーバ上にファイルは無いことを教えてあげます
$ sitecopy --update blog' で、アップロード

MovableTypeシステム

アーカイブデータと同様に、全部ダウンロードして、全部アップロードし直します。

ただし、アップロードする前に、接続するデータベースやアカウントを新しいサーバに合わせて書き換えておきます。mt.cfgに書いてあるはずです。

その他

実際にはちょっとトラブルがありました。ログインしようとしてみたら Undefined subroutine &Jcode::euc_utf8 called at extlib/Jcode.pm line 500. なるエラーメッセージが。

サーバが元々持っているJcode.pmとmovabletypeと一緒にいれていたextlib/Jcode.pm が、衝突してこうなることがあるらしいです。

ということで、extlibに入っているJcode.pmを削除してみたところ、エラーを解消することができました。

ということで

これを調べる過程で、mt-check.cgiやmt-load.cgiを実行してみたり(mt-load.cgiはデータベースを作成済みなのでエラーになる)したのですが、おそらく、mt-check.cgiやmt-load.cgiを実行しなくても、移行できている・・・と思うのです。参考までに。



tsushiro.s, 2003-2006. [→戻る]