唐紅に水くくるとは

通年チョコミントを食べたい

cenOSにpostgresql9.3をインストールする

いつ必要になるかわからないのでメモ。

1 rpmファイルを取得しておいておく。
使ったのは、pgdg-centos93-9.3-1.noarch.rpm

2 rpmインストール
rpm -ivh pgdg-centos93-9.3-1.noarch.rpm

3 yumでインストールするものを探す
yum search postgresql93
検索結果が一覧で出てくる。

(前略)
postgresql93-devel.x86_64 : PostgreSQL development header files and libraries
postgresql93-docs.x86_64 : Extra documentation for PostgreSQL
postgresql93-jdbc.x86_64 : JDBC driver for PostgreSQL
(後略)

4 必要なものをインストールする。
必要なのは、無印、-devel、-server(serverが一番重い。)
yum install postgresql93
yum install postgresql93-devel
yum install postgresql93-server
psqlクライアントは無印だけで動く。

5 環境変数を設定
echo $PATH
PATH=PATH=$PATH:/usr/pgsql-9.3/bin
echo $PATH
(多分これも、/etc/profileに追加したほうがいいんだろうなあ)

==

インストールはここまでだけど、
このままスタートするとエラーになる。
/etc/init.d/postgresql-9.3 start
/var/lib/pgsql/9.3/data is missing. Use "service postgresql-9.3 initdb" to initialize the cluster first.
まずは初期化しろとのこと。

メッセージに従って、初期化コマンド実行。
/etc/init.d/postgresql-9.3 initdb
Initializing database: [ OK ]

ということで、改めてサーバ起動
[root@localhost ~]# /etc/init.d/postgresql-9.3 start
Starting postgresql-9.3 service: [ OK ]
[root@localhost ~]# /etc/init.d/postgresql-9.3 status
postgresql-9.3 (pid 4305) is running...

動いてる!

centOSにjdkをインストールする(tar.gz)

いっつも間違うし時間がかかるのでメモ。
alternativesの登録はまた時間があれば。

1. tar.gzファイルをダウンロードする。
2. インストールしたい適当な環境に置く。
3. 展開する。
tar xvf jdk-7u72-linux-x64.tar.gz -C /usr/lib/jvm
(/usr/lib/jvmディレクトリがないなら先に作っておく)
4. 展開先に「jdk1.7.0_72」がディレクトリができている
5. 環境変数の設定
> vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_72
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
を最終行へ追加

環境変数を適用
> source /etc/profile

いろいろネサフしてると、
「/etc/bashrc」を変更するという記述もあったのだけど、
「/etc/bashrc」だとjavaコマンドが認識されなかった。
(書く場所がよくなかったのかも。)

・「/etc/bashrcファイルには,全ユーザーに共通のエイリアスと関数が記述されている」
・「/etc/profileファイルには環境変数と起動プログラムが記述されている」
(引用元:Linuxキーワード - bashの設定ファイル:ITpro
らしいので、「/etc/profile」に書くほうが正解っぽい。

多謝!
CentOSにJava(JRE)を手動インストール – 海と写真と本が好きなシステム屋のブログ

正しい理解のためにシェルの中身も本当は読まなきゃいけない気がする…
Linux、「/etc/bashrc」とはなんぞや?|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

環境とかサーバとか

難しい。

vagrantを使えばほとんどクリックだけでOSがインストールできるのだけれど、
それって難しいところを隠ぺいかしてくれているだけで、
自分が何かできるようになってるわけじゃないんだよなあ。

ハード系(とくにサーバインストールとか公開とか)に
強くなりたいな…。

と、回帰試験があるたびに思っている。

vagrantでcentOS6 (64bit版)

タイトルまま。

仕事でSMTPサーバが必要になったので、そのためのlinux環境をローカルに立てる。

1) vagrantインストール
2) virtualBoxインストール
3) vagrantの一覧からcentOS6 64bit版を選んでインストール

vagrant box add {box名_任意の名前} {URL} 

4) しばらく待つ
5) 適当なディレクトリで vagrant init {さっき指定したbox名}
6) vagrant up

プロキシ設定
仮想OSが上がってない状態で、
1) vagrant plugin install vagrant-proxyconf
2) しばらく待つ
3) Vagrantfileを修正
ファイルの最後に以下を追加
config.proxy.http = "http://USERNAME:PASSWORD@proxyhost:8080/"
config.proxy.https = "http://USERNAME:PASSWORD@proxyhost:8080/"
config.proxy.no_proxy = "localhost,127.0.0.1"
4) vagrant up
起動ログにプロキシの設定が出る(はず)

必要な設定がすでにされてるので、お手軽でよいなあ。

spring securityの<sec:csrfMetaTags/>タグを使った時の挙動変更

お仕事で、spring securityを使ったサーバサイドのアプリを作ったりしてます。
そこで、これまで(spring security 3.1系以前)以下のように書いてたものを
<meta name="_csrf_token" content="${_csrf.token}" /> <meta name="_csrf_headerName" content="${_csrf.headerName}" />
spring security 3.2?を使うに当たり以下に変更しました。
<sec:csrfMetaTags/>

出てくるMETAタグが当然変わるわけなんですが、
これを実行すると、「org.springframework.web.HttpRequestMethodNotSupportedException」が発生するところがある。

なお、変わる内容としては、 BEFORE:
<meta name="_csrf_token" content="トークンの値" /> <meta name="_csrf_headerName" content="X-CSRF-TOKEN" />

AFTER:
<meta name="_csrf_parameter" content="_csrf" /> <meta name="_csrf_header" content="X-CSRF-TOKEN" /> <meta name="_csrf" content="トークンの値" />

といった感じ。より厳密にいうと、
csrf_headerName→csrf_headerになったことにより、
HandlerMethodMapping#addMatchingMappingsの戻り値がnullになってしまっている。

参考になるかも?:
困ったこと・やったことを記録する: 警告: Request method 'POST' not supported

クロスサイトリクエストフォージェリ (CSRF) 対策 — Django 1.4 documentation
→formのサブミットに使ってるjsを修正するだけだった…

tomcat7でhttps通信の設定

テストでHTTPS通信させなければならなかったので、その辺の設定を下記に。 なお、ここでやるのはローカルで実験用につくるだけなので、 本格運用の際には暗号化などなど、もっと真剣にやらなきゃいけない。

参考; Tomcat で SSL の自己証明書を使用する方法 | Webセキュリティの小部屋 11. 認証方式 (3) | TECHSCORE(テックスコア)

【環境】 OS: windows7 AP: tomcat7.0.55 JDK:1.7.0_67(64bit)

【手順】 1) 「.keystore」を作る
* 証明書にあたるものをつくる
* コマンドプロンプトで[keytool]を実行。
* 質問事項はデフォルトのままエンターを押しまくる

keytool -genkey -alias tomcat -keyalg RSA -keystore .keystore

2)server.xmlを編集する
tomcat側の接続設定を修正する
以下の通り
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"/>

Apache Tomcat 7 (7.0.56) - SSL Configuration HOW-TO ↑に紹介されているのはすべてデフォルト値っぽい。
なので、不要な部分は書かなくていいようだ。

3)動作確認 https://localhost:8443/にアクセスしてみる