「Tech」カテゴリーアーカイブ

Apacheの設定

最近、Apacheの設定について何度か聞かれたので、ちょっとだけ書いときます。
時間があるときに追加していくようにします。

Apacheの設定ファイルを開く

$ sudo vi /etc/httpd/conf/httpd.conf

Linuxのディストリビューションによっては /usr/local/apache/conf/httpd.conf かも。

■ 基本的なセキュリティ
・ServerTokensディレクティブ
ServerTokensは、クライアントに返信するサーバ応答ヘッダに含める情報を制御します。
デフォルトのままだと、応答ヘッダに「Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2」みたいにApacheやPHPのバージョンが
見えてしまうので、下記のように変更することで「Server: Apache」とでるように変更する。

#ServerTokens FULL
ServerTokens Prod // こっちに変更

することで「Server: Apache」になります。

・ServerSignatureディレクティブ
エラーメッセージ出力時にフッタを表示しないようにします。

#ServerSignature On
ServerSignature Off // こっちに変更

編集内容にエラーがないかチェック

sudo service httpd configtest

編集に問題がなさそうならapacheの再起動

sudo /sbin/service httpd restart

あとはディレクトリ毎に.htaccessの設定する感じかなと。

ubuntu12.04 にmeteor.jsを入れてみた

ubuntuにmeteor.jsを入れてみました。
【環境】
Ubuntu12.04

meteor.jsはjavascritptによるWebアプリのフレームワーク。
クライアントサイドJS(ブラウザで動くJS)やサーバーサイドJS(Node.jsとか)ではなく、
その両方で動く(Isomorphicな)フレームワークです。

まずは、インストール用のスクリプトを叩く

$ wget install.meteor.com
$ sudo sh index.html

これでインストールは完了。パッケージはdebパッケージでインストールしてくれる。
インストールされた内容は以下でチェックできる。

$ dpkg –listfiles meteor

ここまでで環境構築完了。

次にに、サンプルアプリケーションを作ってみる。
/usr/lib/meteor/examples/ 配下にサンプルがインストールされてる。

$ ls
todos wordplay leaderbord

ここではtodos 展開する。適当なディレクトリで以下のコマンドを叩く

$ meteor create –example todos
todos: created.
 
To run your new app:
cd todos
meteor

これで、叩いた場所に todosディレクトリが作られる。
それでは実行。

$ cd todos
$ meteor
[[[[[ ~/todos ]]]]]
 
Running on: http://localhost:3000/
///////////////////////////////////////////////
///////////////////////////////////////////////
 
meteor is out of date. Please run;
 
meteor update
 
///////////////////////////////////////////////
///////////////////////////////////////////////

これで、http://localhost:3000 にアクセスするとtodo管理アプリできている。

次に実際に、プロジェクトを作成してみる

$ meteor create firstApp
firstApp: created.
 
To run your new app:
cd firstApp
meteor

すると、firstAppディレクトリ配下に以下のファイルが出来ているので、好きなようにいじるだけ。

$ ls
firstApp.css firstApp.html firstApp.js

とりあえずは何か作ってみよう。

メモ(鍵とか証明書とか)

iOSでのPush通知(Provider側)を実装するのにいろいろ証明書やら鍵を作成するので
その時に調べた内容をメモしておきます。

まずは鍵と証明書の種類について
 .key : 秘密鍵(Private Key)
 .csr : 証明書発行要求(CSR : Certificate Signing Request)
 .crt : 証明書(CRT : Certificate)
 .crl : 証明書失効リスト(CRL : Certification Revocation List)

これらには、DER(Distinguished Encoding Rules)形式 と PEM(Privacy Enhanced Mail)形式がある。PEM形式は、DER形式(バイナリ)をBASE64で可視化したもの。
これを踏まえてProviderにインストールするSSL証明書と鍵を作成する。
apns-dev-cert.p12 : 証明書から作成したもの
apns-dev-key.p12 : 秘密鍵から作成したもの

① PKCS #12 ファイルapns-dev-cert.p12 から SSLサーバ証明書(EV SSL証明書)を取り出し、apns-dev-cert.pemに保存

$ openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

② PKCS #12 ファイルapns-dev-key.p12 から秘密鍵を取り出し、暗号化せずにapns-dev-key.pem に保存

$ openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

③ Apache で ssl を使用する場合、起動時に秘密鍵のパスワードを聞いてくるので,途中でとまってしまいます。
server.key を復号化して、パスワードを入力しなくても秘密鍵を使用できるようする。

$ openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

④ apns-dev-cert.pem と apns-dev-key-noenc.pemを連結してapns-dev.pemに吐き出す

$ cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

apns-dev-key-noenc.pem, apns-dev.pem をサーバの適切な場所へ放りこんでおく。

Push通知は実装以上にこの辺が面倒だな。

メモ(crontabとvisudo)

crontab コマンド

cronの設定って設定方法を見るより例があった方が分かり易いと思って作ってみました。
■オプション
 -l : 現在の crontab を表示。
 -r : 現在の crontab を削除。(全削除なので注意)
 -e : viエディタ?を使って、crontab を編集。編集後の内容は自動的にインストールされる。
続きを読む メモ(crontabとvisudo)

emscriptenを試してみる

C/C++とかで書かれたコードを Javascriptのエンジン上で動かすために Emscripten っている変換ツールがあるらしい。
ってことで試してみました。
Emscripten を使うと、C/C++のコードをコンパイラに通して、それを中間コードに分解し、その命令をJavascriptのコードに変換してくれる。

実行環境は以下のとおり。
OS : ubuntu 12.04
llvmはここからダウンロードして展開する。
展開の場所はどこでもいいでので。今回はホームディレクリに展開しました。

展開が終わったら、ファイル名をcalc.cとして次のコードで試してみる。

int add(int a, int b)
{
     int c;
     c = a + b;
     return c;
}

これをEmscriptenでビルドする。

emscripten/emcc calc.c -o calc.js

calc.jsファイルができる。
中身を見てみるとCで書いたメソッドの前にアンダーバーが付いた「_add」が出来ている。

function _add($a, $b) {
  ;
  var __label__;

  var $1;
  var $2;
  var $c;
  $1=$a;
  $2=$b;
  var $3=$1;
  var $4=$2;
  var $5=((($3)+($4))|0);
  $c=$5;
  var $6=$c;
  ;
  return $6;
}

このメソッドを実際にjavascriptからコールしてみる。

var ret_add = _add(5, 10);
console.log(ret_add);

ちゃんとログで15ってログを吐き出している!
C言語で書かれたコードをライブラリとして使いたい場合に使いたい場合には使えるかも。

nodejsでモジュール(クラス)作成

初めてNodeを使ったときは、どばーっと1ファイルに書いちゃって
ものすごく可読性が良くないソースを書いてしまった。
nodeで独自モジュールを作成できるので、その方法についてメモ。nodejsでの「モジュール」というのはオブジェクト指向言語でいう「クラス」みたい位置づけです。
javascriptなので、中身はライブラリみたいな関数オブジェクトの集合体になります。
続きを読む nodejsでモジュール(クラス)作成