Bitnamiで1インスタンスに複数のパッケージをインストールする

BitnamiはWordPressやRedmineなどのウェブアプリケーションをPHPやMySQLなどのミドルウェアとともに一式設定済みでパッケージ化して提供してくれるソリューション。例えばAWSのEC2でWordPressを搭載したインスタンスを作るとき、一式インストール済みのインスタンスを選択することができるが、これを提供しているのがBitnamiである。 自前でPHP+Apache+MySQL+CMS(WordPress)をインストールするのとBitnamiはディレクトリ構成や設定ファイルが異なる。 一般的には1インスタンス1パッケージの形で提供されたものを使うことになり、あまりそのあた…

続きを読む →

bashスクリプトのエラー処理のベストプラクティス

データ処理バッチでシェルスクリプトは便利 データ処理などでバッチプログラムを書くことは多い。Pythonなどのプログラム言語を使って全部記述する方法もあるし、最近ではGUIのワークフローを描けるツールも出てきている。 ただシェルスクリプトは依然として強い。シェルスクリプトは概して動作が高速で、イレギュラー処理に対しても柔軟に対応できる。gcloudやawscliなどのコマンドを使って記述できるので、できないことはない。機能がなければコマンドをインストールすることも可能。困ったときにも確実にゴールにたどり着くメリットがある。プログラム言語だとライブラリの出来に依存するし、ワークフロー系のツールは…

続きを読む →

Googleクラウドで格安お手軽スケーラブルな静的ウェブ配信

Google Cloud Platformの静的コンテンツ配信機能は低コストで手軽に使うことができる。サーバサイドプログラム(PHPなど)のかかわらない静的ウェブサイトの配信(HTML+CSS+JavaScript+画像+動画など)だけであれば、ApacheやNginxなどのウェブサーバなど不要でできてしまう。スケーラブルでトラフィックによるサーバ負荷を気にする必要がない低コストの環境が簡単に使える。WordPressでも静的配信をしているのであれば相性がいい。キャンペーンのランディングページなどもこれで十分なケースがほとんどである。 この記事ではGoogle Cloud Storageを使っ…

続きを読む →

格安に使えるGCEのプリエンプティブインスタンスの勝手に停止対策

プリエンプティブインスタンスの設定

格安で使えるGCEプリエンプティブインスタンス。問答無用でシャットダウンされるというクセが困りものだが、使いようによってはハイスペックのインスタンスを安く効果的に使うことができる。ここではそのシャットダウン対策と最大限活用するためのヒントを紹介する。 プリエンプティブインスタンスとは Google Compute Engineのプリエンプティブインスタンスは 最大で24時間起動 勝手に停止される(停止することをプリエンプト=preemptするという) 安い(同スペックの通常インスタンスの半額以下、1/3程度) という特徴がある。ミッションクリティカルな用途には向かないが、何よりも安いのでCPU…

続きを読む →

OpenVPNをWindowsにインストールし、リモートデスクトップ接続する

リモートデスクトップで接続される専用のWindowsマシンを用意するにあたり、VPN接続は必須である。VPNにもさまざまなプロトコルがあるが、現在サーバ・クライアントともにOpenVPNが最もインストールしやすい。 OpenVPNクライアントをWindows10にインストールし、そこから常時VPNサーバに接続する形でプライベートネットワークを作り、外の端末からセキュアにWindows機にリモートデスクトップ接続する。Windows機をVPNサーバにするのではない。このやり方、意外と難しいので説明する。 OpenVPNクライアントのインストール vpnux Clientではなく公式クライアントを…

続きを読む →

linuxのテキスト編集(vi, sed, tr, grepなど+xargs)まとめ

linuxなどで使うテキスト編集コマンドの使い方で、これさえ知っていればOKというもののまとめ(vi, sed, grep, sort, uniq, cut, join, tr, nkf, diff)。 後半は特に必要とはいえないため適当。重要なのはvi, sed, grepまでかな。 複数のファイルを扱う場合に使うxargsコマンドについても説明する。 vi ※(数指定)のついているものは、コマンドの前に数を指定することで指定された数だけ該当する操作を行える。 (6hで6字分左に移動) コマンドモードと入力モード コマンドモード→入力モード i: カーソルの直前に挿入(insert) I: …

続きを読む →

PostgreSQLの管理系コマンドまとめ

DBの管理系コマンドは導入専門にやっていれば忘れることはないのだが、 分析目的でちょっとインストールした場合など、そんな頻繁に設定しない場合は忘れてしまう。 そんなPostgreSQLの管理コマンド、ユーザ管理など意外と落とし穴があるので復習しておく。 導入手順は インストール データベースディレクトリの作成(initdbコマンド) 起動(pg_ctlコマンド) ユーザの登録(createuserコマンド) データベースの作成(createdbコマンド) データベースの権限管理 という順になる。 pg_ctlコマンド 起動、停止などのコマンド。 postgresユーザでないと実行できない。 p…

続きを読む →

Perlのよく使うワンライナー(テキスト処理)

今や懐かしいPerlのワンライナー。 古くなったとはいえ、ちょっとした、でもsedコマンドだけではできないような複雑なテキスト加工処理(CSVファイルも)には適している。 いろいろオプションはあるのだが、最小限に絞って備忘録的に。 よく使うオプション 基本 -e ‘スクリプト’: 実行するPerlスクリプトを指定(1行) perl -e ‘print “Hello”‘ output: Hello 入力が前提 -l:(入力から改行を取り除いたうえで最後に)出力結果を改行する。表示制御の目的で使われることが多い。データ加工の際は使わないほうが安全(使うとしても最後の処理として)。 perl -le…

続きを読む →

機械学習用のサーバの環境構築メモ(特にGCEやEC2などクラウドインスタンス)

最近では機械学習の計算のためにサーバを構築しては消し、を繰り返すことが多い。サーバの構築と消去が柔軟に可能なことからもEC2やGCEなどクラウドのインスタンスをよく使うということも影響している。 この記事では一般的なサーバ構築の記事では紹介されていない、クラウドのインスタンスで意外と盲点になる点を中心に、機械学習の計算用サーバとして安定した運用をするために最低限必要な設定をまとめた。 Linuxで最初にやっておくべき設定 Amazon EC2やGoogle Compute Engingなどのクラウドインスタンスのデフォルトの設定では不都合があるため、設定を追加する必要がある。 スワップメモリの…

続きを読む →

Google Compute Engineでcronを使って日次バッチ処理を実行する

クラウドを使った理想のバッチ運用 Google Compute Engineのメリットはリサーブ不要で、 使う時間だけ起動してコストメリットを享受できる点にある。 毎日決まったバッチ処理をする時間だけインスタンスを起動し、終了時に停止する運用をすれば、 本当にバッチ処理を実行する時間しか課金対象にならない。 ハイスペックなインスタンスを使ってもそんなにコストはかからない。 そんな運用ができたら、毎日決まった時間にインスタンスを起動することができたら理想なのだが… 実はGoogle Cloud Platformの管理画面上ではできないのだが、 インスタンス管理用のGCEインスタンスを作れば可能に…

続きを読む →