忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 19:57 】 |
apache + fcgi + Perl まとめ
apache

導入

/etc/httpd/conf

httpd.confの書き方


modulesは
/etc/httpd/modules/mod_fcgid.so
/etc/httpd/modules/mod_fastcgi.so
など


httpdの起動

$ sudo service httpd start
$ sudo service httpd stop
$ sudo service httpd restart


ファイルディレクトリ
/var/www/以下

html/
cgi-bin/
など。

html/に置いたファイルは、
domain/***.html



でアクセス

cgi-bin/ に置いたファイルは、例えば
domain/cgi-bin/***.fcgi



でアクセスできる。(あまりしないと思うが)

(httpd.confにそう記述しておく)


mysql

/etc/my.conf に記述


PR
【2013/12/08 15:26 】 | サーバ | 有り難いご意見(0)
git
今更ながらgitを入れる

まずはインストール。

$ sudo yum install git

う〜ん、yumはすばらしい。


公式を見ながら進む。
http://git-scm.com/book/en/Getting-Started-First-Time-Git-Setup

自分のユーザ登録をする。

$ git config --global user.name "myname"
$ git config --global user.email myaddress@mail.com
$ git config --global core.editor emacs
$ git config --global merge.tool vimdiff
$ git config --global color.status auto
$ git config --global color.branch auto
$ git config --global color.interactive auto
$ git config --global color.diff auto

コマンドを打つと、~/.gitconfigが作られ、書き込まれる。これを直接編集しちゃってもいいみたい

差分編集ツールも設定できる。ちなみにvimdiffの使い方は
http://nanasi.jp/articles/howto/diff/merge_diff.html


ではgit管理したいディレクトリに移動。

$ git init

これでgit管理開始。

$ vi .gitignore

管理しないファイルの指定もしておこう。これが済んだら、まとめて

$ git add .
$ git commit -m 'コメント'

でOK。git管理開始。このタイミングでmasterブランチが自動で作られる。
この時点ではまだremoteは無い。
【2013/06/05 10:10 】 | サーバ | 有り難いご意見(0)
時刻設定
時刻を知るには

$ date

でよい。
こんな感じで帰ってくる。

2013年 5月 21日 火曜日 00:41:38 UTC


でも今は午前9時(だとする)。
この場合、9時間ずれてる。

「なるほどね。じゃあ9時間進めよう」…

sudo date --set="2013/05/21 09:42"

としてしまうのは間違いで、これだとUTC(世界標準時)が9時間進んでしまう。

そうではなくて、タイムゾーンをJSTに変更する。

sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

こうすると、dateの結果が

2013年 5月 21日 火曜日 09:48:09 JST

といった感じになる。

perl の time関数とかは、タイムゾーンがUTCだと、自動で9時間進めてJSTにしてくれちゃうから、必ずタイムゾーンをJSTにしておこう。

クーロンは、指定されたタイムゾーンでの時刻に実行されるので、タイムゾーンをJSTにしておけば、JSTの時刻で書いておけばOK。

もしUTCに戻したいときは、

sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime

とする。
【2013/05/21 09:54 】 | サーバ | 有り難いご意見(0)
jsのインクルード
/var/www/html 以下に置いたhtmlファイルからは、

<script type="text/javascript" src="path/to/file.js"></script>

で普通にインクルードできる。

が、

/var/www/cgi-bin/ 以下に置いた*.fcgiが、htmlを読み込む場合は、これだとうまくいかない。
jsの読み込みに失敗してしまう。なぜだ

相対パスだとファイルが見つからないようで、
DocumentRootからのパスで指定すると、ファイルは見つけられるようになった。
<script type="text/javascript" src="/path/from/root.js"></script>
パス先頭の/を忘れずに。忘れるとhtmlファイル相対になる

で、ファイルは見つけられるようになったが、今度はインクルード時にエラーが発生しているようだ。
簡単なhtml,jsで試してみて、ページを開いてsafariのコンソールを見ると、
インクルードしたところでエラー、さらに覗いてみると、jsの先頭行(>script<)でいきなり失敗している。
そこで、scriptタグを消してみた。

<script>
function () { ... }
</script>



function () { ... }

に。すると動いた。


ポイント
・DocumentRootからのパスで記述
・scriptタグ不要



追記
なんでjsファイルの中にscriptタグがついてるのかと思ったら、Xslateで読み込んで使うためのファイルだったからだ。
Xslateでは
: include "hoge.js"
という記述で他のファイル(jsに限らず)を読み込んでその場で展開する。
だから、ファイルの中にscriptタグがついていなければいけなかった。(というか、そういう風に使っていたから)

Xslateのinclude文は、本当に単純にファイルの中身を展開するだけなので、script srcと混ぜて使うときは注意。
また、ファイル相対パスの指定しかできない?ようだ。
→Xslateは、includeするときの基準パスをperl側で指定するため。
つまり
my $xslate = Text::Xslate->new(path => ['/path/to/include/files/']);
と指定したところを基準に探す(複数指定可)
だから上のディレクトリには多分行けないのだろう。
この指定が無い場合は、ファイルのディレクトリを基準に探していたのだという訳。
【2013/05/04 21:57 】 | サーバ | 有り難いご意見(0)
htmlでグラフを作ってみる
htmlで折れ線グラフその他を作れないだろうか?
調べると出て来たライブラリ

flotr2
http://humblesoftware.com/flotr2/

gitはここ

ライセンスは
The MIT License

この中の
Flotr2_master/flotr2.min.js
というJSがキモ。
これをhtmlで読み込めばよい。



【2013/05/04 20:09 】 | サーバ | 有り難いご意見(0)
mysql設定
文字コードをutf8に変える

設定ファイルは以下
/etc/my.cnf

[mysqld]
の項目に
character-set-server=utf8
を追記。

書き換えたら再起動
/etc/rc.d/init.d/mysqld restart

起動できないときは、エラーログを確認
$ tail /var/log/mysqld.log

mysql> show variables like "char%";
を見ると、

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+



+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

と変わっている。
【2013/04/06 11:21 】 | サーバ | 有り難いご意見(0)
httpd.conf
httpd.confをいろいろ書いた。

ScriptAlias

実行スクリプトを置く場所を指定。普通DocumentRoot(/var/www/htmlとか)以下には置かないので。
実行設定はいらないが、アクセス設定は書く必要あり。


ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

実際のファイルの実行権限がついているかを確認。そのファイルに至るまでのディレクトリすべてにも実行権限がついている必要あり。


ベーシック認証

認証をかけたいディレクトリごとに指定する

<Directory "/path/to/target">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all

AuthType Basic
AuthName "enter your name and password"
AuthUserFile /path/to/passwordfile
Require valid-user
</Directory>


こんな感じで書く。
auth_basic_moduleがロードされているかも確認すること。
(なければLoadModule auth_basic_module modules/mod_auth_basic.soを追記)

で、パスワードファイルは htpasswdコマンドで作る。

$ htpasswd -c /path/to/passwordfile user_name # ファイルを初めて作るとき
$ htpasswd /path/to/passwordfile user_name # 二回目以降
作られたファイルはそのまま覗ける。
消すときは
$ htpasswd -D /path/to/passwordfile user_name


ダイジェスト認証

ダイジェスト認証の場合は

<Directory "/path/to/target">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all

AuthType Digest
AuthName XXXX
AuthUserFile /path/to/passwordfile
Require user admin
</Directory>

となる。
auth_digest_moduleがロードされているか確認。
(LoadModule auth_digest_module modules/mod_auth_digest.soとか)

パスワードファイルを作るには
$ htdigest -c /path/to/passwordfile XXXX user_name
とする。領域名(XXXX)を指定することに注意


ログ出力

ログフォーマットはだいたいそのままでもいいと思うので、ログローテートだけ。
ErrorLog "| /path/to/rotatelogs /path/to/error_log.%Y%m%d 86400"
CustomLog "| /path/to/rotatelogs /path/to/error_log.%Y%m%d 86400" format_name
という感じ。


DirectoryIndex

まあ
DirectoryIndex index.html index.htm index.fcgi
みたいな感じでいいでしょう


参考
http://www.adminweb.jp/apache/
【2013/03/30 20:23 】 | サーバ | 有り難いご意見(0)
mysqlのauto_increment
mysqlでのAUTO_INCREMENTの使い方。


CREATE TABLE table(
id int unsigned not null AUTO_INCREMENT,

これでidがAUTO_INCREMENTになった。
INSERT時にidの値をNULLにしておけば、自動採番してくれる。

初期値を設定したいときは
mysql> ALTER TABLE table AUTO_INCREMENT=100;
あるいはCREATE TABLEの末尾に付加してもいい。

ちゃんと設定されたか確認したいときは、
mysql> show table status like 'table';
として、Auto_incrementの値を確認する。

もう少し手っ取り早く知るには
mysql> select last_insert_id();
とする手もあるが、これはテーブル指定ができず、無条件に最後にinsertされたauto_increment付きテーブルのidが返ってくるようになっている。

http://dev.mysql.com/doc/refman/5.1-olh/ja/example-auto-increment.html

【2013/02/09 18:54 】 | サーバ | 有り難いご意見(0)
クーロン
cronを使って定時APIたたかせる。

crontab -e で書くわけだが、間違って -r を打つと吹き飛んでしまうのはご承知の通り。
で、どこか適当なファイルに書いておく(.crontabとか)。それを
$ crontab .crontab
とすればクーロンにそのまま入る。便利で安全。

クーロンで記述した各個処理のログは吐いた方がいいと思うので、
>> 適当なファイルへのフルパス
とかしたほうがいい。
エラー発生ならメールも来るけれど。

クーロン自体のログは
/var/log/cron
の中に入っている。そもそも実行されたのかどうかはここを見ると分かる。


クーロンが動いているか確認するには
$ /etc/rc.d/init.d/crond status
でcrondが実行中であり、
$ chkconfig --list crond
で2~5がonになっていること。


ちなみにcrontab -e で書き換えているファイルは
sudo ls /var/spool/cron/ec2-user
で見られる。rootしか読み書きできない

あと、crontabの大元?は
/etc/crontab
にある。(しかし何も書いていなかった)
その隣に
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
がある。それぞれ中にファイルが置いてある。
crontab から毎時hourlyが、毎日dailyが、毎週weeklyが、毎月monthlyが実行されていれば、
各ディレクトリ下に実行権限を与えたスクリプトを置いておけば実行されるようだ。
crontabに書くのも同じって気もするが。

【2013/02/03 22:51 】 | サーバ | 有り難いご意見(0)
文字コード
文字コードを調べるコマンド

nkf -g filename

nkfはデフォで入ってないのでインストール。

cd /usr/local/src/
wget http://osdn.dl.sourceforge.jp/nkf/20770/nkf207.tar.gz
tar zxf nkf207.tar.gz
cd nkf207
make
cp nkf /usr/bin/

これだけ。
【2013/02/03 16:18 】 | サーバ | 有り難いご意見(0)
<<前ページ | ホーム | 次ページ>>