sakuraVPSの設定備忘録

http://wata-jp.ldblog.jp/archives/1606112.html
自分が知らなかったコマンド備忘録です。
macでもシェルでの操作を増やしていきたいですねえ。


3. root のパスワード変更&通常時使うユーザ作成
passwd - linuxパスワード変更コマンド
root権限で

useradd ユーザー名
passwd ユーザー名

も可能

4. 公開鍵でログインできるようにする

公開鍵を使うことでsshログインにパスワードを入力しなくていいようにする

ssh-keygen -t rsa

公開鍵と秘密鍵を~/.sshに作成する

scp ~/.ssh/id_rsa.pub hoge@xxxxxxxxxx.sakura.ne.jp:~/id_rsa.pub

scp unixにファイルを安全に転送する
scp [オプション][転送したいファイル名][転送先のパス]

[hoge@xxxxxxxxxx .ssh]$ touch authorized_keys

touch - 新規ファイル作成

[hoge@xxxxxxxxxx .ssh]$ cat ~/id_rsa.pub >> authorized_keys

cat ファイル名 - 中身を表示
cat ファイルA名 >> ファイルB名 - ファイルAの中身をファイルBに上書きせず、追加保存する(>>ではなく>は上書き保存)

5. sshd_config を編集

[hoge@xxxxxxxxxx ~]$ su -

su - 他のユーザーアカウントに切り替え。
su - hoge   も可能


iptables
→ファイアーウォールを作る。

とりあえずインストールされてるぽかったのが、/etc/sysconfig/iptablesはなかったので新規作成した。

*1312459844*filter

INPUT ACCEPT [0
0]
FORWARD ACCEPT [0
0]
OUTPUT ACCEPT [0
0]
RH-Firewall-1-INPUT - [0
0]

COMMIT

追記3. ログイン情報を設定
IdentityFile ~/.ssh/sakura/id_rsa

IdentityFile ~/.ssh/id_rsa

以上

sakuraVPSの設定備忘録part2

http://wata-jp.ldblog.jp/archives/1616964.html
再度こちらの記事を参照しながら違った点をまとめます。

①$ curl -L http://cpanmin.us/ | perl - App::cpanminus

などのcurlが使えなかった。ファイアーフォールのせい?とりあえず
$ curl -kL http://cpanmin.us/ | perl - App::cpanminus

  • kをつけることでできるようになった。

wgetとcurlの根本的な違い - ctrlshiftの日記

②$ wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.10.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/

こちらのファイルは存在していない模様。
とりあえずmysqlサイトにアクセスして、最新版のダウンロードリンクを探す。

Select PlatformでSouce Code

Generic Linuxのtar.gzを選択肢して、ユーザー登録やらしたらダウンロードリンクがある。
(ex)
http://www-jp.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

③# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/support-files/my-medium.cnf
にあった。何でだろう?


apacheはユーザーのルートとroot権限の/usr/local/src/の2つに作ってしまった。
apache2.2.15をCentOSにソースからインストール[Linux] | QUALL - blogQUALL – blog
おそらくユーザーのはいらないな。上を読んでおけばよかった

以上

一意制約名の指定に挫折しました。

CatalystのSELECT系の処理で例えばfind_or_newの場合、プライマリキー以外の一意制約の場合、第二引数に一意制約名を指定してあげないと検索してくれない。例えばユニークキーの時、shushokuがプライマリキー、mainがユニークの時

    my $rs = $self->{Schema}->resultset('Yushoku')->find_or_new({
              shushoku => 'Gohan',
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'});

としたら、shushokuで確認してSELECTしてくれる。
しかし、shushoku(プライマリーキー)を消してユニークキーで確認してほしい時は、第二引数を指定しなければならない。

ユニークキー:main_key

    my $rs = $self->{Schema}->resultset('Gohan')->find_or_new({
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'},{key => 'main_key'});

しかし、結果は'Unknown unique constraint main_key on \'Yuushoku\''となって指定できないよう。
find('Niku',{ key => 'main_key'})とかでも駄目で、ユニークキーの指定をcatalyst側からできてないよう。
add_unique_constraintを使わないといけないんだけど、面倒くさくなって、

    my $rr = $self->{Schema}->resultset('User')->find({main => 'Niku'});
    if($rr){return;}else{
    my $rs = $self->{Schema}->resultset('Gohan')->find_or_new({
              main => 'Niku',
              fuku => 'Sarad',
              drink => 'Ocha'});
    }

として第二引数を使わないようにした。ただどう考えても冗長だなあ。find_or_newとか使えなくて悔しい。

参考にしたサイト&本

PerlフレームワークCatalyst完全入門

PerlフレームワークCatalyst完全入門

add_unique_constraintでゆこう - Hatena::Diary::Neko::kak 500 Internal Server Error
CatalystでFormValidator::Simple::AutoでDBIC_UNIQUE使う場合 - libnitsuji.so

サクラレンタルサーバーを使いやすくする

emacsの日本語設定
$ vi ~/.emacs

[~/.emacs]
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
sshで簡単にログインできるようにする

http://www.geocities.jp/turtle_wide/tools/sshpass.html

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for xxxxxx has changed,
and the key for the according IP address 17.xxx.xxx.xx
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /Users/admin/.ssh/known_hosts2:44

こんなのがでたら、
Xserve: root ユーザでログインしようとしたときに起こる認証の問題に対するトラブルシューティング - Apple サポート

サクラレンタルサーバーにCPANMでCatalystをインストール

ああ、一日がCatalystをインストールするだけで、つぶれてしまった。
クラレンタルサーバーのサタンダードタイプでcpanmを使って、お手軽に高速にCatalystを使えるようにします。local::libとcpanは設定が大変&遅いので必要ありません!?

sshでログイン
$ sudo ssh -l ユーザー名 ホスト名
password :
ユーザー名@ホスト名's password :
~/extlibに最新版のcpanmをインストール
$ mkdir ~/extlib
$ curl -LO http://xrl.us/cpanm
$ chmod +x cpanm
$ perl cpanm -l ~/extlib --self-upgrade
$ rm -rf cpanm
PATH設定&確認
$ vi ~/.cshrc

[~/.cshrc]
setenv  PATH $HOME/extlib/bin
setenv  PERL5LIB $HOME/extlib/bin:$HOME/extlib/lib/perl5/i386-reebsd-64int:$HOME
/extlib/lib/perl5:$HOME/extlib/perl5/site_perl

$ source ~/.cshrc
$ perl -le 'print for @INC'
Catalystパッケージを~/extlib以下にインストール
$ cd ~/extlib/bin
$ perl cpanm -l ~/extlib (モジュール名)
...インストール
~/CatalにCatalystアプリケーション作成&サーバー確認
$ catalyst.pl Catal
$ cd extlib/script
$ perl catal_create.pl Controller Hello
$ vi ~/Catal/lib/Catal/Controller/Hello.pm

[~/Catal/lib/Catal/Controller/Hello.pm]
sub intro :Local{
   my ($self , $c) = @_;
   $c->response->body("konnichiwa!");
}

$ perl ~/Catal/script/catal_server.pl -r

host:3000/hello/intro
konnichiwa!
がでればオK。

http://yourname.sakura.ne.jp/からcatalystにアクセス

catal_server.plでhttp://yourname.sakura.ne.jp:3000からアクセスできるが、ホストからもアクセスできるようにする。

$ vi ~/Catal/script/catal_cgi.pl

[~/Catal/script/catal_cgi.pl]
#!の次の行に
use lib '/home/yourname/extlib/lib/perl5', "$FindBin::Bin/../lib";

$ cd www
$ ln -s ~/Catal/script script
$ vi .htaccess

[~/www/.htaccess]
AddHandler cgi-script .pl

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?script/catal_cgi.pl
RewriteRule ^(.*)$ script/catal_cgi.pl/$1 [PT,L]

参考にした本&サイト

PerlフレームワークCatalyst完全入門

PerlフレームワークCatalyst完全入門

perlモジュールのinstallにcpanmを使う|perl|@OMAKASE
http://d.hatena.ne.jp/tokuhirom/20110201/1296530510
http://fargo-web.info/blog/2011021050
さくらインターネットのCGIでCatalystを動かす設定(完全版?) - LAPISLAZULI HILL#Catalyst - Catalystグループ

5月の反省と6月の目標

雨の日に外に出ない主義のあみです。梅雨の時期は食料買い込んで、1週間家にこもる予定。

5月の反省

オブジェクト指向

本2回読んでようやく理解できるレベルにはなった。理解度としては以下を支持してる。
 1.コンピュータに行わせたいことを理解する。
 2.理解したことを説明できるレベルまで整理する。
 3.コンピュータにわかる言葉に翻訳する。

2に挑戦するために今記事にまとめてるけど、説明するとなると難しい。出来るだけ具体化(コード化)して、単純な言葉で説明したいんだけど難しいですね。

フレームワーク

意外に難しかった。正確に言うとCPANのモジュールを一気に使ったので、Catalyst特有のコードと含めて覚えないといけないコードが増えた。
フレームワークは要は先人(CPAN)の知恵を使うことMVCを取り入れましょうということである。
これによって簡単な処理だと負担が思いように感じるが、例えばユーザー管理などページ遷移も含めて難しいなと思ってた機能がCatalystで簡単になったのはメリットだ。オブジェクト指向の方向性と似ていますね。

ロゴとデザインが固まった

時間があったので、ロゴをillustrator(学校のPC)で作り、デザインも他のサイトを見ながらHTMLで骨格は実装した。
デザインって考えてる時が一番面白いですね。
このキャラ作りやすいくてサイトのイメージである「MOJI」が入ってるのはいいけど、まあ手抜き感がにじみ出てますね。改善しよう。

6月の目標

CGMサイトのユーザー管理機能(新規登録、ログイン、ログアウト)、投稿と編集、コンテンツの表示を実装する

一連の動作が実行できるレベルで、チェックもしっかりしたものを作る。
ただし、投稿データの置換処理、タグ、ランキングなどは後回し。
うーんギリギリだな。

Javascriptのお勉強

最近Javascript熱いですね。スマフォのサーバーサイド言語はJSで作る企業多いし、クライアント側でも色んなサイトで使われてるよね。
ということで基本から勉強します。使う本は以下の2冊です。

JavaScript 第5版

JavaScript 第5版

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

5月までにすべきこと

地震直後に食料を買わないようにしたので、最近になって買い占めを行っておりやす。買い占め対象はグミとアイスクリームのあみです。

僕のプログラミング歴は3月からプログラミングの勉強をし始めてるので、もう2ヶ月が経ちました。地震とか身の回りで色んなことがあって、なかなか進まなかったけど5月からは本腰を入れようと思います。ちなみに8月末にはサイトを1つ完成させる予定です。サイトはユーザーが投稿してコンテンツを作っていくCGMの予定で、みんなが使えるようなサービス作りまっせという意気込みです。当たり前ですよね。

さて、僕の計画ではちょちょちょと勉強して、ぱぱぱと作る予定だったんだけど、やってみるとそりゃちょっと無理ってもののようですね。サイトで当然あるべき当たり前の機能を並べてみると、今の自分の技術とのギャップが大きすぎて。こんな大きな目標に向かってコード書いてると、面白すぎて夜しか寝れません。プログラミングは奥が深いですね。

ところで大きな目標を達成するためには大きな目標を、いくつかの小さなゴールに分割してクリアしていくのがセオリーだと思ってます。そのために、月単位で身につけるスキルを設定していきます。計画では6月から作りたいサイトの中心的でかつ簡単な機能、投稿やユーザー管理などを実装していくつもりです。その計画に遅れないために、まず5月までに押さえておきたいことを書き出していきます。

1、Perlオブジェクト指向の本をマスターする!

一通り読んだが、再度オブジェクト指向とは何か?オブジェクトとクラスの関係、クラスとモジュールとパッケージの違い、関数とメソッドの違い、useとrequireの違いなど違いや関係性を意識して理解し、コードを書いていく
違いを意識していくことでオブジェクトの全体像がわかってくると思います。なぜなら、オブジェクトとはリファレンス、モジュール、パッケージなどが積み重なってそれにオブジェクト特有の機能を付け加えたものだからです。わからないものは、わかる要素とわからない要素に分解すべし。そのために自分で咀嚼して、わかりにくいことがわかった時はブログに書いていこうかなと思います。
使う本は2冊。

オブジェクト指向Perlマスターコース―オブジェクト指向の概念とPerlによる実装方法

オブジェクト指向Perlマスターコース―オブジェクト指向の概念とPerlによる実装方法

読みにくいが厳密に書かれています。分厚いw
すぐわかる オブジェクト指向 Perl

すぐわかる オブジェクト指向 Perl

わかりやすいので、こちらをメインで使う。

2、MySQLは基本を理解し、Perlとのつなぎ方を勉強する!

これも流し読みはしたので、実際にコードを書きながら覚えていく。
1回見たはずなので、コードを書く時に仮説をもって一度自分で書いてみる。それで間違ってたら答えを見てまた書く。アウトプットする時の意識については別エントリーで。
後、PerlMySQLから引っ張ってきたデータを扱う方法について勉強するために簡単な掲示板を完成させていきます。

基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)

基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)

この本の最後はPHP+MySQL掲示板を作ってるが、Perlに置き換える。応用を行うには丁度いいですね。

3、ライブラリのCatalystの基本を勉強する!

計画上一番時間をかけない予定だったんけど、結構覚えること多くてびっくりした。PerlMySQLの繋がりを理解せずに、MVC理解できんなと思って、ちょっと後回し。
少し設定なんかやったんだけど、これと平行してCPANの使い方も勉強できそうでよかった。CPANシェルのモジュールのインストール遅えと思ったら、今はCPANMなんですね。

6月からはCPANを使いながら、投稿サイトの実装及び安全性についても勉強していきます。