× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
httpuse LWP::Simple; my $data = get('http://www.xxx.com'); なんとこの2行だけで取れてしまう。簡単過ぎ。 POSTで取りたいとか、タイムアウト設定したいとかなら use LWP::UserAgent; my $ua = LWP::UserAgent->new; $ua->agent('xxx'); $ua->timeout(5); my $data = $ua->post('http://www.xxx.com'); if ($data->is_success) { print $data->content; } となる 文字コードuse utf8; と書くと、plファイル内がutf8と仮定されるらしい。 文字列をutf8にエンコードしたいなら、 use Encode (encode_utf8); $utf8_str = encode_utf8(src_str); とする。 日付use Time::Piece; 日付文字列の解析 $t = Time::Piece->strptime($date_str, '%Y-%m-%dT%H:%M:%S+09:00'); みたいにすると取れる。あとは $t->year $t->mon $t->epoch(1970年1月1日からの秒数) とかご自由に。 PR |
mysql入れてみる。
参考にしたページhttp://thinkit.co.jp/free/article/0707/5/1/ ストレージエンジンが選べる。確かに MyISAM(トランザクション非サポート) InnoDB(トランザクション機能サポート) MEMORY(オンメモリデータベース) NDB(クラスタ機能) ページにはいろいろ書いてあるけど、よくわかんないのでとりあえずyum % sudo yum install mysql 成功したっぽいメッセージがプロンプトに出る。 % mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) …エラーが出た。どうやら、mysqlサーバに接続できないとか。 どういうこっちゃ。 調べてみたけど古い情報多い。yum mysqlで調べてみると見つけたコマンド % yum -y install mysql-server というのがある。別なのか。sudoつけてやってみた。 これまた成功したっぽい。 もう一度試してみる % mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.29 MySQL Community Server (GPL) Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> おお、見慣れたいつものプロンプト。 結局 % sudo yum install mysql % sudo yum -y install mysql-server これだけで使えるようになった。 で、もう普段のように書ける。 mysql> create table ...なんちゃら しかし、CREATE DATABASE ができない。権限の設定をちゃんとしていないせいか ひとまずおいといて、最初からあったtestデータベース内で作業してみる とりあえずcreate table. CREATE TABLE user( id int unsigned not null PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; とか。 打つのは面倒だし、一度書いた物が喪われるのは大変なので、ファイルに書いておく。 (実は mysql> show create table table_name; でCREATE文が出力されるけど) 適当なddlファイルを作って
と書いて、 $ mysql < XXX.ddl でOK. でも、show create table文でいつでも取り出せるんだから、ddlを手書きする必要はないよね。 変更したいときも直接DBでalter文書いて、その度にshow create tableでddlに出力、の形の方がいい。 次は、perlから使ってみる。 有名だからとりあえずDBIを使う。 参考にしたページhttp://tech.bayashi.net/pdmemo/perl_dbi_mysql.html $ sudo perl -MCPAN -e 'install DBI'
と書いて実行してみると… おお、確かにtestデータベース内にbookテーブルができている! |
CAPNからFCGIを取って来ておく。
/var/www/cgi-bin/ 以下のファイル.fcgiに以下のような感じで書く
と、ブラウザに「hello world」と表示される。 Content-type のprintは必須で、これがないと何も表示されない。これの前にprintしたものも表示されない。 当たり前だが、Content-typeをtext/htmlにしたら、html的に正しく書こう。htmlをtext/plainで表示したらタグとかもそのまま表示される。 URLの引数はどうやって取得する? のかというと、 $ENV{REQUEST_URI} $ENV{QUERY_STRING} あたりに入っている。 Xslateも動かしてみた。 割と簡単。 あと、開発用のフォルダを/var/www/とは別の場所に持つようにした。 |
fcgi動かさないとね。
使うのはmod_fcgid 参考にしたのはhttp://www.movabletype.jp/documentation/developer/server/fastcgi.html ちなみにmod_fastcgiというものもあるが、これは長時間運用で不安定になるとか書いてある まずCPANモジュール $ cpan FCGI $ cpan CGI 次にCGIライブラリ。基本的に書いてあった通り $ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz $ tar zxvf fcgi-2.4.0.tar.gz -C /usr/local/src $ cd /usr/local/src/fcgi-2.4.0 $ ./configure $ make $ make install 次にmod_fcgid。yumを使ってみた $ yum install mod_fcgid これで普通にできた…のかな? モジュールは /usr/lib64/httpd/module に置かれる 設定ファイルは /etc/httpd/conf/ /etc/httpd/conf.d/ conf/httpd.confには、ロードするモジュールの設定とかがたくさん書いてある。 その中にmod_fcgid.soが追加されていることを確認する。なければ自分で書く また、他のconfをインクルードしている Include conf.d/*.conf ついでに記述 ScriptAlias /fcgi/ /home/XXX/conf # なんか効かないっぽい conf.d/fcgid.conf にfcgidの設定(タイムアウトとか)を書く(コピペ)。 あるいは、conf.d/fcgid.conf.rpmnew が自動的に作られているので、そっちを読み込むようにする。 conf/httpd.conf の中に Include conf.d/*.conf.rpmnew とでも追記しておく。 設定を反映してapache再起動 $ service httpd restart =========================== 結局、必要な設定のつながりは fcgidモジュールのロード LoadModule fcgid_module modules_mod_fcgid.so 特定の拡張子をfcgidに紐付け AddHandler fcgid_script fcg fcgi fpl # cgiも入れた方が? conf/httpd.conf conf.d/mod_fcgid.conf conf.d/mod_fcgid.conf.rpmnew どこに書いてもいいけど。httpd.confに直接書かないなら、インクルード文を代わりに書くこと Include conf.d/*.conf とか fcgiスクリプトは、 /var/www/cgi-bin/ 以下に置くこと。これで、ブラウザから XXXX/fcgi-bin/*.fcgi で実行できる。 ScriptAlias /fcgi/ /home/XXX/conf を書いたら、その場所のfcgiを見るはずなんだが、なぜかそうならない 404Forbiddenが出る。 <Directory>タグ内でOptionsとか書いたんだけどできない。やっぱり cgi-bin/以下のファイルをcgi-bin以下のURLで表示しちゃう。他にも設定が必要なのか DocumentRootも変わる? ========================= もしうまく行かないときはこの辺を参照 http://www.umin.ac.jp/hp-coordinator/man/err_cgi.html http://www.jitaku-server.net/apache_cgi_trouble.html |
今回はOSはLinux。
その上で動かすWebサーバはApache。まあ定番だからね。httpdと言ったら大抵これのことらしい。 最近はlighttpdが流行っているとも聞くが…。fcgiを標準でサポートしているのが便利とか。 CGI=CommonGatewayInterface Webサーバ(Apacheとか)と外部プログラム(PerlやCで書いたプログラム。掲示板機能とかゲームロジックとか)のインタフェース仕様のこと。 参考になったページhttp://www.scollabo.com/banban/cgi/index.html /etc/services というファイルに、サービスごとにデフォルトのポート番号が全部書いてある。 sshは22,httpは80などなど…。 1. 昨日入れたapacheのバージョンは Server version: Apache/2.2.23 (Unix) Server built: Oct 21 2012 20:35:32 apacheのトップディレクトリは /usr/lib64/httpd らしい。(findして見つけた…) 2. fcgiは当然必要だから、Apacheでmod_fastcgiを入れる 参考にしたページhttp://kotaroito.hatenablog.com/entry/20101019/1287502443 適当に/usr/local/にfcgiというフォルダを作り、その下にmod_fastcgiをインストールした。 コンパイルして以下のモジュールが作られた。 /usr/lib64/httpd/module/mod_fastcgi.so この作業の最中、makeをするためにgccが必要になったので % sudo yum install gcc とコマンド。 インストールしたディレクトリの中にある README INSTALL とかファイルを読むのが大事。 |
1.
linuxサーバなら、perlは最初から入っている $ which perl /usr/bin/perl 2. CPANをいれる $ sudo yum install cpan CPAN自体はyumでいれるわけだ さらに続けて $ perl -MCPAN -e shell > Would you like me to configure as much as possible automatically? [yes] cpan[1]> o conf prerequisites_policy follow cpan[2]> o conf commit cpan[3]> q とすると完了。これが何をしてるのかは分からん 参考http://cloudbb.jp/book1/Perl_Install.htm 3. パッケージをいろいろ入れる… まず、すでに持っているか確認 $ perl -e 'use List::Util' 何も表示されなければ持っている $ perl -e 'use List::MoreUtils' Can't locate List/MoreUtils.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at -e line 1. BEGIN failed--compilation aborted at -e line 1. って言われたら持ってない。 で、CPANでインストール $ sudo perl -MCPAN -e 'install List::MoreUtils' …なんだけど、やってみたら、'YAML'や'make'が見つからないとか言われた。 まずはmakeをインストール $ sudo yum install make 次いでYAML $ sudo cpan YAML ちなみに…「YAML(YAML Ain't Markup Language)とは、人間にとって読みやすいデータ直列化フォーマットである。」だって。http://d.hatena.ne.jp/keyword/YAML そしたらcpanで取って来れるようになる。sudo忘れずに!(sudoじゃなくてもできる方法あるらしいけどhttp://iandeth.dyndns.org/mt/ian/archives/000623.html) 改めて $ sudo perl -MCPAN -e 'install List::MoreUtils' あるいは $ sudo perl -MCPAN -e shell cpan[1]> install List::MoreUtils でもよい。 入ったか確認 $ perl -e 'use List::MoreUtils' 何も表示されなかったらOK。 |
1.
まずはamazonのアカウントを作る。買い物したことがあればそのアカウントでOK。ここは省略。 2. AWS作るときはここが参考になった。 http://www.slideshare.net/satoshi1977/aws-ec2-20111124 セキュリティグループ作るところだけは、注意が必要で、 ポート22(SSH)とポート80(HTTP)を開いておくこと。 なお、そのインスタンスに適用するセキュリティグループは、別の物に変えられないので注意。(ただしセキュリティグループの内容自体を変えることはできる。) 3. インスタンスを作って起動したら、SSHで接続しよう。 macのターミナルを開き、 % ssh -i XXX.pem ec2-user@XXXXX.compute.amazonaws.com pemは、インスタンス作成時に作った秘密鍵ファイル。必ずchmod 400 を先にしておくこと。 ちゃんとポートを開いていれば、接続できますよ。できなければ、セキュリティグループを見直してみよう。 なお、毎回このsshコマンドを打つのは面倒なので、 ~/.ssh/configに以下のように書いておく と、以下のコマンドを打てば接続できるようになる % ssh aws 4. Webサーバとして動かすために、以下のコマンドを打っていく $ sudo yum update -y (-yは、たぶん途中プロンプトで聞かれるときに y (yes) で応えるっていうオプション) $ sudo yum install httpd-devel -y $ sudo service httpd start $ sudo chkconfig httpd on $ chkconfig --list httpd 2~5がonになっている ちなみにyumはapt_getみたいなもん。 参考 http://d.hatena.ne.jp/inouetakuya/20111006/1317900802 5. htmlを置いてみる。 場所は /var/www/html root さんでしか書き込めないのでsudo使用。 適当にindex.htmlを作ってみると、ちゃんとブラウザから見える!(XXXXX.compute.amazonaws.com/index.html) 見えない人は、セキュリティグループを見直してみよう。ポート80開いてる? |
LAMP
Linux (OS) Apache HTTP Server (Webサーバ) MySQL (データベース) Perl, PHP, Python (スクリプト言語) の略。 動的ウェブコンテンツを含むウェブサイトの作成に適した、オープンソースのソフトウェア群のこと。 (Wikipediaから) MacでLinusを動かす方法 VMware Fusionを使うらしい。インストールの方法が書いてある。 その2。OSを選択し、仮想HD割り当て。 その3。Ubuntuをインストールしている。 Apache Wikipedia 商用から自宅サーバまで。 自宅サーバではNASをファイルサーバとして使うことが多い。また、httpsやsftpも使える。容量も自由でCGIやPHPなどサーバサイドコンテンツも好きなだけ使える。 NAS=Network Attached Storage。補助記憶装置であり、コンピュータ(コントローラ+ハードディスク)でもある。Wikipedia |