2012年5月19日土曜日

heroku上のpython flaskアプリをNew Relicで監視する

基本ここに書いてある通りでできるけど、いちおうまとめ。
https://newrelic.com/docs/python/python-agent-and-heroku


(1)new_relicをインストールする
ローカル環境にいちおういれる
$ pip install newrelic

heroku上の環境にいれるためにrequirements.txtに以下を追記
newrelic

commitしてherokuにアップする
$ git add requirements.txt
$ git commit -m "hogehoge"
$ git push heroku master


(2)herokuのNEW_RELICアドオンを追加する
$ heroku addons:add newrelic:standard

これをやるだけでnew relic上に自動的にアカウント発行される模様。
ほんと便利。

(3)ちゃんと入ったか確認する
$ heroku run env | grep NEW_RELIC
これで、newrelicのアカウント情報が表示されればOK

テストスクリプトを流す
$ heroku run newrelic-admin validate-config - stdout
*stdoutのハイフンの前にスペースがいるから注意

流したらherokuのWeb画面にログインして
自分のアプリケーションのAddonからNEWRelicを選ぶと
NewRelicの管理画面がでる。
Python Agent Test というのが出てればOK。だと思う。

(4)自分のアプリの監視をする
procfileを編集する。
gunicornを使ってる場合は以下のように書き換えるだけでOK

(変更前)web: gunicorn -b 0.0.0.0:$PORT hogeApp:app
(変更後)web: newrelic-admin run-program gunicorn -b 0.0.0.0:$PORT hogeApp:app

(5)procfileをherokuにアップする
git でpush

おわり









Ubuntu10.04にHerokuコマンドをいれる

Ruby環境をRVMでセットアップした後にいれる

●RVMインストール
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

●.bashrcに以下を追記
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

●.bashrc反映
$  source $HOME/.bashrc

●RVMの依存パッケージを確認し、足りないものがあればいれる
$ rvm list

●今回はpatchが無かったのでPacthだけいれた
$ sudo aptitude install patch

●ruby1.9.2を入れる
$ rvm install 1.9.2 --with-iconv-dir=$HOME/.rvm

●入れたRubyをデフォルトで使うのにする
$ rvm use ruby-1.9.2-p320 --default

●このRuby用のsetつくる
$ rvm --create 1.9.2@myset


●herokuインストール$ gem install heroku --no-ri --no-rdoc

ここまでで基本的には使えるようになる。
が、これだとコマンドライン使えない。たとえばlogsすると

$ heroku logs
こんなエラーがでる
$HOME/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- readline (LoadError)


ので、もう少し作業がいる。

●インストールした場所のreadlineに移動
cd $HOME/.rvm/src/ruby-1.9.2-p320/ext/readline/

●チェック
$ ruby extconf.rb
checking for tgetnum() in -lncurses... no
checking for tgetnum() in -ltermcap... no
checking for tgetnum() in -lcurses... no
checking for readline/readline.h... no
checking for editline/readline.h... no


ということで上のを全部入れるために
$ sudo aptitude install libncurses5-dev libreadline5-dev

●で作りなおし。。
make
make install

●GEMSETも作りなおし
$ rvm --create 1.9.2@myset
$ gem install heroku --no-ri --no-rdoc



これでHerokuコマンドがちゃんと使える






2012年3月24日土曜日

macOSX Lion にPostgrewSQLをいれる

PostgreSQLインストール
homebrewからインストールする

brew install postgresql


curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh
*http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
*以下の.bashrcいじるのでもいいかも
*http://blog.k-jee.com/2012/01/mac-os-x-lionhomebrewpostgresql.html

DB初期化
initdb /usr/local/var/postgres

サーバーの起動と停止
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres stop -s -m fast


PHPPgAdminのインストール
http://www.pgadmin.org/download/macosx.php

postgresユーザーの作成
createuser <ユーザ名>
http://www.tencs.net/tech/tips/postgresql_createuser.html

.sqlファイルからのデータインポート

psql -U postgres -f XXX.sql


参考)
http://d.hatena.ne.jp/noodles_mtb/20110805/1312509838
http://blog.k-jee.com/2012/01/mac-os-x-lionhomebrewpostgresql.html
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/

mac OSX Lion でherokuが使えるようにする

rubyの複数バージョンをいれるために rvmをいれる
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

.bashrcに追記
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
.bashrcで反映
source .bashrc

rvm install 1.9.2 --with-gcc=clang
*なんかエラーはいたけど無視

rvm use 1.9.2 --default

rvm gemset作成
rvm --create 1.9.2@hogehoge

herokuをいれる
gem install heroku --no-ri --no-rdoc


macOSX Lionにpythonをいれてpythonbrewで開発環境つくる

パッケージインストールはmacportではなく、homebrewを使う

homebrewのインストール
/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"

pythonbrewのインストール

curl -kL http://xrl.us/pythonbrewinstall | bash
.bashrcに追記
vi $HOME/.bashrc
    source /Users/hoge/.pythonbrew/etc/bashrc
source .bashrc

python2.7.2, 3.2のインストール
pybrew install -f 2.7.2
*testでこけるので-fでオプションで強制的にいれる

使いたいバージョンのpythonに変更
$ pybrew switch 2.7.2
*バージョンだけ指定すれば変わる

pybrewのvenvを使って仮想環境構築
$ pybrew venv create hoge
$ pybrew venv list -a
$ pybrew venv use hoge
$ pybrew venv delete hoge

pipも同時に入るので仮想環境をactiveにした状態で
あとはpipで好きなものをいれる


VirtualEnvじゃなくて、pythonbrewのvenv使う方がよいから消した
pipのインストール
sudo easy_install pip


virtualenv, virtualenwrapperのインストール
sudo pip install virtualenv
sudo pip install virtualenvwrapper
.bashrcを編集してvirtualenvを便利に


vi $HOME/.bashrc
以下を追記
    ## Python virtualenvwrapper
    export WORKON_HOME=$HOME/.virtualenvs

    if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
      source /usr/local/bin/virtualenvwrapper.sh
    fi

    ## Python pip -> virtualenv only
    export PIP_REQUIRE_VIRTUALENV=true
    export PIP_RESPECT_VIRTUALENV=true

Env環境保存用のディリレクトリを作成
mkdir $HOME/.virtualenvs

インストールしたpython(python2.7.2)を使ってenv環境を構築する
pythonのバージョンを切り替える
pythonbrew switch 2.7.2
環境をつくる
mkvirtualenv --no-site-package env






(参考)
http://d.hatena.ne.jp/mfks17/20111231/1325344431
http://www.ninxit.com/blog/2011/07/22/pythonbrew-python-2/



virtualenv環境にpsycopg2をインストールする



virtualEnv環境にいれようとするとエラーになるらしい


pip install psycopg2==2.4.2
Error: pg_config executable not found.




以下をいれてからならインストールできました
sudo apt-get install libpq-dev python-dev


pip install psycopg2
Successfully installed psycopg2

(参考)

ubuntu10.04にpostgreSQLとPHPPgAdminをいれる

■postgresqlのインストール
sudo apt-get install postgresql
sudo passwd postgres
su postgres
psql
postgres=# alter user postgres with password 'password';

(参考)
http://ubuntu-note.blog.so-net.ne.jp/2010-12-01

■phppgadminのインストール

sudo apt-get install apache2

sudo /etc/init.d/apache restart
なんかapache2がはいってなかったので入れた

sudo apt-get install phppgadmin
phppgadminのインストール

以下は細かい設定

/etc/phppgadmin/apache.conf でApacheアクセスを制限。
(※基本必要ない。見れないならAllow ALL)

/etc/phppgadmin/config.inc.php で phpPgAdmin を設定。
※postgresを許可したりする
$conf['extra_login_security'] = false;

/etc/postgresql/8.4/main/pg_hba.conf  で PostgreSQL を設定。
※TCP(IP4アクセスをTrustする)



■PHPの設定
前に書いたコレ。

sudo vi /etc/php5/apache2/php.ini
で以下のMAX値を大きいファイルをあげれるように大き目の数値にしとく

php.iniの修正内容
post_max_size = 20M
upload_max_filesize = 18M