セットアップしているシステムは、 plamo linux 4.0をベースにちょこちょこいじくったモノです。
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]
勝手に行を分割されてしまうのが気持ち悪いので少し触っておきます。
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なるコマンドは存在しません。
イメージファイルを50%サイズに縮小する。 $ convert -geometry 50%x50% [sourcefile] [productfile]
イメージファイルを400dots×400dotsサイズに縮小する。 $ convert -geometry 400x400 [sourcefile] [productfile] 画像の縦横比は変更されず、寸法の大きい方が400ドットになるように縮小されます。 たとえば元の画像が800×600であれば400×300になりますし、 元の画像が600×800であれば300×400になります。
イメージファイルをグレイスケールにする。
・・・できないみたい。白黒2値にはなるんですけどね・・。
このウェブページの動作確認 (確認後に、sitecopyでウェブサーバにアップロードします。) を兼ねて、自宅内サーバとしてウェブサーバを立ち上げてます。 自宅からしか見えません、のつもり。
より安全になるとのことですが,ruby以外でCGIを動作させるのに,もう何手間かが掛かりそうです.
私のとこでは,おうちwebサーバはレンタルサーバへアップする前の動作確認用で外部公開はしてません。 手間をかけずにCGIを動かしたいので,chrootはしてません。
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ページが表示できない. というのがよくありますが,そんな感じです.
そういう制約を外したいときは・・,よくわかりません.そのうち試してみたいと思います.
レンタルサーバでperlによるCGIのエラーメッセージを拾いたいとき。
自宅では動くのに、レンタルサーバにアップしてみると動かない。ということはままあります。今までの少ない経験だと、原因は、
が多いのですが、モジュールの不足については、そもそもモジュールが不足しているかどうか、どのモジュールが必要なのかを調べるのは難しいです。
で、 KCatchを使ってみると良いかもしれません。Internal Server Error を補足してウェブブラウザ画面に表示してくれます。
@nifty標準のhomepageサービスである@homepage。 なにやら、慢性的に重たいサーバなんですが、CGIを設置するのも難しい。
その原因の一つが、perlの標準モジュールが用意されていないことだと思います。
モジュール不足であっても、実行結果は単なる「Internal Server Error」 になってしまうので、なにがエラーなのかさっぱりわかりません。
上述のKCatchも、モジュール不足で動作しません ( use strict をコメントアウトすれば行けるんじゃないかと思います... )
思いつく対処法
あらかじめ、標準ライブラリを入れておくのが良いかと思います。
レンタルサーバを用意して、ブログを設置します。設置先は 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 {} \;
つまり、以下のようなかんじにします。
mt-load.cgiを実行したときに
Table 'mt_author' already exists at mt-load.cgi line 175.
なるエラーメッセージが出る。
→データベースから mt-????? なるテーブルを削除する。
プロバイダは変えなかったのですがコース変更しました。サーバが変わるので、自前で引っ越ししてくれとのこと。うむむ。
サーバが変わっても、環境はほぼ同じ。違うのはサーバー名、ユーザー名くらい。最終的にURLは変わりません。
サーバにphpMyAdminが付いていたので、データベースの操作はweb上でできました。
アーカイブや写真類は、MySQLで保存されているわけではないので、全部ダウンロードして、新サーバにアップロードしておきます。
パーミッションなども面倒を見てくれるので、sitecopy が便利です。
site blog
server server.ne.jp
remote /public_html/blog/
local ~/work/www/blog/
username (name)
password (password)
nodelete
permissions all
んで、コマンドを実行
$ sitecopy --fetch blog' サーバ上のファイル配置を取得site blog
server newserver.ne.jp
remote /public_html/blog/
local ~/work/www/blog/
username (newname)
password (newpassword)
nodelete
permissions all
んで、コマンド。
$ sitecopy --init blog' サーバ上にファイルは無いことを教えてあげますアーカイブデータと同様に、全部ダウンロードして、全部アップロードし直します。
ただし、アップロードする前に、接続するデータベースやアカウントを新しいサーバに合わせて書き換えておきます。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を実行しなくても、移行できている・・・と思うのです。参考までに。