Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
ラベル install の投稿を表示しています。 すべての投稿を表示
ラベル install の投稿を表示しています。 すべての投稿を表示

2018年1月8日月曜日

ひさしぶりのPythonで Djangoしてみるための参考サイトとメモ


環境

  • Amazon Linux 2
  • Python 3(現時点で3.6.4)
  • Django(現時点で2.0)


参考サイトとメモ

Pythonの復習とバージョン3のキャッチアップ

Pythonの基礎の基礎の基礎 - Qiita
Python3基礎文法 - Qiita
Python2からPython3.0での変更点 - Qiita
with構文とは何なのか - 年中アイス

Amazon Linuxで環境構築

Amazon LinuxでPython3系を使う - Qiita
  • Apacheは別途(先に)yumで入れた
  • pipもできるようになった
  • 今回は別にpyenv使わなくても、yumでpython3を入れれば良かったかも

Djangoでサンプルアプリを作りながら全体像を把握する

ほぼコピペで進めるが(おそらくDjango2で試した影響で)いくつか読み替えをした。

Djangoを最速でマスターする part1 - Qiita
(参考(github) gragragrao/manager_project: 「Djangoを最速でマスターする」ための参考レポジトリ
from manager.models import *
python manage.py runserver 0:8000
ALLOWED_HOSTS=[‘*’]

Djangoを最速でマスターする part2 - Qiita
  • Debug ToolbarのINTERNAL_IPSはApacheのリバプロとかあるから変えるかと思ったけどそのままでいけた
  • python shellのログインユーザー登録でWarningが出たけど、とりあえず無視...
/usr/bin/.pyenv/versions/3.6.4/lib/python3.6/site-packages/django/db/models/fields/__init__.py:1365: RuntimeWarning: DateTimeField Person.birthday received a naive datetime (2018-01-04 00:00:00) while time zone support is active.
  • view.pyのCustomLoginViewの下記はメソッドじゃなくなったみたい
if self.request.user.is_authenticated(): #'bool' object is not callableと怒られる
if self.request.user.is_authenticated:
  • login.htmlはGithubからコピーした
  • hijackは下記エラーでうまくいかなかったのであきらめた
ModuleNotFoundError: No module named 'hijack'
  • 自動テストはmodelとview(いわゆるMVCの"View"というより、Djangoのviewはどちらかというと"Controller"の方が近い感じか?)を対象にしていくようだ。templateのテストとなると言及されているSelenium(今ならHeadless Chrome?)とかと連携させていく?(参考 はじめての Django アプリ作成、その 5 | Django documentation | Django


Django1と2の違いを抑える

Django 2.0の変更点について - Qiita

そんなに変わらなそう。

Django公式チュートリアルでアプリを作成しながら学ぶ

さぁ始めましょう。 | Django documentation | Django / はじめての Django アプリ作成、その 1~7

普通は先にこっちをやるんだろうけど、公式は丁寧な分だけ全体像が見えてくるまでに時間がかかる。コピペでいけばエラーも出ないから、Python/Djangoに慣れるには、公式じゃないのでエラーにつまずきながら進めた方がいいこともある。
Ruby On Rails と違って、マイグレーションは完全にモデルのファイルから生成されます。マイグレーションは本質的には単なる履歴です。 Django はデータベースのスキーマをアップデートしながら履歴を進んでいき、現在のモデルに合致させることができます。
  • Django adminは便利そう。(参考 はじめての Django アプリ作成、その2 | Django documentation | Django
    settings.pyでLANGUAGE_CODEを'ja'にしたら日本語化された。システムよりの人が使うなら、英語の方が混乱が無いか? エンドユーザーに渡すなら日本語化が手軽なのは便利。
    それにしても、adminっていう名前はもうひとひねりしても良かったのでは...。Pythonの文化なのかな?

アノテーションが気になるので調べた

Python と型アノテーション

現時点では...使わないかなぁ。


Pythonのインストーラについて

Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

いくつかかいつまむと、
  • pip: とりあえずこれを使っておけばOK。Python3.4以降ではPython本体に同梱されるようになった。(参考 Pythonで一番最初に入れるべきパッケージ setuptools と pip - Life with Python
  • setuptools: これを入れると付属するeasy_installが使えるようになる。
  • easy_install: 昔使った時はデファクトスタンダードっぽかったが、廃れたのか。
  • PyPI: the Python Package Index。自由にPythonのパッケージを公開できる python.orgのサイトで、easy_install・pipはここからパッケージを探す。

Amazon RDSのAurora(MySQL)につないでみる

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
python manage.py makemigrations <アプリ名>
python manage.py migrate

Django公式ドキュメントで仕様を学ぶ


いつか時間のある時に...

2016年12月25日日曜日

Itamaeセットアップ on CentOS7

Rubyなどをインストール。Rubyはrbenvで入れた方がいろいろできるが、今回は手軽なyumで。
# yum install ruby-devel gcc-c++
gemでItamaeなどをインストール。
# gem install itamae io-console --no-document
パスワードも生成するならこれも必要
# gem install unix-crypt --no-document
参考 floatingdays: Itamaeセットアップメモ Itamae自分メモ[1] userとかsshとかportの初期設定

2016年12月3日土曜日

CentOS 7に NginXをインストール


ダウンロード・インストール
CentOS7.1でnginxを用いたウェブサーバの構築 - Qiita

Webのルートのディレクトリは下記になる
(SELinuxが有効な場合は変更しない方が面倒が無い?)

/usr/share/nginx/html/


設定
/etc/nginx/nginx.conf

worker_processesはautoで良さそう。
参考 nginx の worker_processes を auto にしたときの挙動 - やまぶろぐ


サービス開始
systemctl start nginx.service

起動時にサービス開始するようにする
systemctl enable nginx.service


HTTPS(TLS)対応
既存の/etc/nginx/conf.d/default.confのserver{}内に下記を追加したらできた。
(公開サーバの場合はセキュリティ設定をもっと絞り上げたほうが良い。)
listen 443 ssl;
ssl_certificate     /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
参考 はてなブックマーク - Bマイナー志向 - 2016年1月30日


リバースプロキシ
同じく/etc/nginx/conf.d/default.confのserver{}内に下記を追加。
location /foo/ {
    proxy_pass https://example.jp/test/;
}


参考
nginx.confが読めるようになる - 魔法使いの卵
Nginx設定のまとめ - Qiita

2016年7月16日土曜日

Itamaeセットアップメモ

EC2のAmazon LinuxにItamaeのサーバを構築し、リモートサーバもEC2のAmazon Linuxの場合


セットアップ
参考:Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita

sudo gem install itamae
sudo yum install ruby-devel gcc-c++
sudo gem install io-console


ローカルで実行する場合
sudo /usr/local/bin/itamae local path/to/recipe.rb
yamlのnodeを読み込む場合
sudo /usr/local/bin/itamae local --node-yaml path/to/node.yaml path/to/recipe.rb


リモートサーバに実行する場合
EC2へのSSHログインで使う秘密鍵をItamaeサーバ上にコピー(取り扱い注意?)
例:/home/ec2-user/.ssh/your-pair.pem
itamae ssh -h 対象のIP -i path/to/your-pair.pem path/to/recipe.rb

Ansibleや Itamaeで LAMP環境を作る

参考サイトのメモ。
Itamaeの方がいいかな。


Ansible

Ansibleのインストールと、ごく簡単なplaybook
VagrantとAnsibleでCentOSの環境を用意してみる - yk5656 diary

LAMP環境を作成
AnsibleでとりあえずのLAMP環境してみる - yk5656 diary

PHPをインストール
Ansible でインストール (php 5.6) - Qiita



Itamae

Itamaeのインストール、ごく簡単なレシピ、リモートサーバへの適用
Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita

レシピの書き方など
Chef脱落者が、Itamaeで快適インフラ生活する話 - Qiita
itamae 入門 - Qiita
Itamaeチートシート - Qiita
vagrantとitamaeによるLAMP環境構築 - Qiita
EC2 のインスタンスを Itamae でプロビジョニングした | mizoguche.info

設定値をJSONまたはYAMLに切り出す
第3回 ノード属性で汎用的なレシピを書く:Itamaeが構成管理を仕込みます! ~新進気鋭の国産・構成管理ツール~|gihyo.jp … 技術評論社

公式ドキュメント(英語。詳細は載ってない)
Home · itamae-kitchen/itamae Wiki · GitHub

公式ドキュメントが想像よりそっけないので、詳細は他のブログ等やQiitaで調べながら...。まあシェルコマンドが使えるから汚い書き方でいいならどうにでもなるけど。

2016年1月9日土曜日

EC2の MySQLを S3にバックアップする方法(世代管理付き)


S3への送信はaws-cliが良さそう。
参考:aws-cli - AWS CLIでS3を操作する - Qiita


aws-cliはAmazon Linuxなら最初から入っているが、手元のインスタンスはconfigure等をするにはバージョンアップが必要だった。
yumでもバージョンアップできるが、今回は諸事情により依存関係のある諸々をそっとしておきたかったので、下記を参考にyumを使わずにaws-cliをバージョンアップ。

参考:AWSCLIで運用検討中の人必見! AWSCLIを使用したS3へのファイルコピー | クラウド工房 Powered by Amazon Web Services

sudo easy_install pip
sudo pip install awscli -U


IAMでS3のみに権限を絞り込んだユーザーを作り、その認証情報をconfigure。(もう少し権限を絞っても良いかも。)

aws configure

AWS Access Key ID [None]: (アクセスキーを入力)
AWS Secret Access Key [None]: (シークレットアクセスキーを入力)
Default region name [None]:
Default output format [None]:


世代管理はS3の機能であるバージョニングとライフサイクルを使う。
S3でバケットを作成し、バージョニングを有効化。
ライフサイクルでルールを追加。(例「以前のバージョン」を30日後に削除)


後は適当にダンプとS3へのコピーのスクリプトを作ってcronに登録する。
分かりやすいようにディレクトリを作成し、そこにスクリプトを作った。

バックアップ用スクリプト作成。
vi backup.sh

#!/bin/sh
echo "START " `date +'%Y/%m/%d %H:%M:%S'`
MYSQL_PWD='MySQLのパスワード' mysqldump -u MySQLのユーザー 対象DB > data.dump
aws s3 cp data.dump s3://バケット名/
echo "E N D " `date +'%Y/%m/%d %H:%M:%S'
(パスワード直書きにしたが、きちんとやるならMySQLのパスワードは隠したい。)

スクリプトのファイルに実行権限を付ける。
chmod 700 backup.sh

cronに登録。
crontab -e

0 1 * * * cd /スクリプトのディレクトリ; ./backup.sh >> history.log


aws-cliを使うと、AWSのサービス間の通信はSSL(TLS?)で暗号化されるようだ。
参考
aws — AWS CLI 1.9.17 Command Reference
By default, the AWS CLI uses SSL when communicating with AWS services.

Amazon Web Service aws cliはデフォルトで暗号化通信されるのか? - なぜか数学者にはワイン好きが多い



S3を使わずにサーバ上で世代管理するだけなら、下記が一番分かりやすかった。
mysqldumpをcronで1日1回取得し、バックアップ用ファイルを保存する - サイト制作の豆知識

2014年4月20日日曜日

RedHatの yumリポジトリに remiを追加する方法

wgetがなければインストール

yum install wget

yumリポジトリにepel追加(remiの追加の前に必要)
CentOSにEPELリポジトリを追加する - Qiitaを参考に、最新(マイナー)バージョンのURLを調べる
(RedHat5の場合)
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/i386/epel-release-5-4.noarch.rpm

yumリポジトリにremi追加
(RedHat5の場合)
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

epelをデフォルトでは使用しないようにする
vi /etc/yum.repos.d/epel.repo
enabled=0にする
(remiはデフォルトでenabled=0になっている)


remiを使う時にはenabledrepoオプションを付ける
(例)
yum install --enablerepo=epel,remi php


参考:Remi 基本リポジトリで提供されていないパッケージのyumインストール - [yum/Linux [Red Hatなど]] ぺんたん info (きちんとGPGを確認するやり方)

2013年7月5日金曜日

Amazon Linuxに Ruby 2.0(+ Rails)をインストールするメモ

現時点でyumでは2.0は入れられないので調べた。
いろんなやり方があって、みんな微妙に違うから、参考サイトのパッチワークになってしまった。
参考にしたのは下記のサイト、下記の箇所。

  • yumで依存するパッケージをインストールする(全部いるのかどうかは分からない)

  • “Here is a variant with rbenv.”の方に従って、
    • rbenvをインストール
    • ruby-buildをインストール
    • /etc/profile.d/rbenv.shファイルを作成
    • “. /etc/profile”を実行

  • Rubyをインストール(必要に応じてバージョンを指定する)
  • Railsをインストール(必要に応じてバージョンを指定する。本家サイトはこちら


後で気付いたが、Amazon Linuxには最初からRuby 1.8が入っているからrbenvにしてよかった。

MySQL 5.6を RPMからインストール

現時点でyumに無いMySQL5.6をAmazon Linuxにインストールするメモ。
バージョン番号は現時点での最新版なので必要に応じて読み替えること。


インストール

  1. yum install MySQL-*.rpm

chkconfigに登録しようと見てみたら、もうmysqlが登録されてた。


初期設定


2012年4月17日火曜日

Redmineをインストールための参考サイトのメモ

CentOSにRedmine 1.4 + Passenger(mod_rails)をセットアップする際に参考にしたリンク集のメモ。



Redmine専用のサーバを用意できて、かつ手間を省きたいならAll in OneインストーラであるALMiniumという選択肢もある → alminium/alminium · GitHub
  • 素のCentOSではyumでgitをインストールできないので、RPMForge改めrepoforgeかDAGをyumリポジトリに追加しておくこと。
  • ALMiniumはCentOS 5.xにはインストールできない

2011年10月17日月曜日

Windows XPに Titanium Studioをインストール


開発構築にリトライしたメモ。
インストールからKitchen Sinkを動かすまで。
Titanium StudioもAndroid SDKも重いので、なるべくパワーのあるPCでやった方がよい。


まずはインストール

  • JDK
    • Java SE Downloadsから、Java SE 6の最新版をダウンロードしてインストール
      • 7だとダメらしい
      • インストール時には、pathにスペースを含まないようにする?
    • Windowsの環境変数「PATH」にbinフォルダのpathを追加
      • 環境変数「JAVA_HOME」を登録し、PATHには"%JAVA_HOME%\bin"の形で登録しておくと、JDKのバージョンが変わった時の変更が楽になるし分かりやすい
  • Android SDK
    • Android SDK | Android Developersから、最新版をダウンロードしてインストール
      • インストール時には、pathにスペースを含まないようにする
    • SDK Managerを起動(通常は自動で立ち上がるらしい)
    • 必要なパッケージをインストール
      • SDK Platform Android 2.1は必須
        • これが無いとTitanium StudioがAndroid SDKを認識しないらしい
      • Google APIs by Google Incも必要
        • これが無いとエミュレータがうまく動かない
      • かなり時間がかかる
      • 迷うなら全部入れておけば無難(ただし時間はかかる)
    • platform-toolsフォルダ内のadb.exeを、toolsフォルダにコピー
      • 以前はtoolsフォルダにあり、Titanium Studioがそれに合わせた動きをするため
    • Windowsの環境変数「PATH」にplatform-toolsフォルダとtoolsフォルダのpathを追加
      • JAVA_HOMEと同様に、ANDROID_SDKとか環境変数として登録すると良いでしょう
  • Titanium Studio


動作確認
  • Titanium Studioを起動
    • Work Spaceの場所を訊かれる。スペースを含まないpathを指定する(?)
    • Titanium(appcelerator)のアカウントを訊かれるので入力
    • Firewallが警告を出してきたら許可
    • Gitが無いと言ってきたら、「Use PortableGit」をクリック?
  • Mobileのプロジェクトを作成
  • 実行
    • 実行前にadb.exeが実行されていたら、タスクマネージャからプロセスを終了(?)
    • プロジェクトをRun
    • Firewallが警告を出してきたら許可
  • 「I am Window 1」が表示されればOK!
    • 「[TRACE] adb devices returned 0 devices/emulators」が続いてタイムアウトしたら、タスクマネージャから「adb.exe」のプロセスを終了させてから再実行する


KitchenSinkを動かす


さあ始めよう


参考

2011年6月30日木曜日

Windowsで git 調査メモ

とりあえずローカルのみで使ってみたい。


インストール

  1. msysgitをインストール
  2. tortoisegitをインストール
  3. ユーザー名とメールアドレスをセット(settings → Git → Config)


要調査事項


日本語のファイル名が扱えないと、ドキュメントの管理に使えない...
Bazaarを使うか。

2011年3月31日木曜日

「lexicon (XLLEX.DLL)が見つからないか、または壊れています。」の修復

Windows XPでMS Office 2007のアプリを起動できなくなった問題に対して、試行錯誤した上で何とか回復できたことのメモ。
回り道が多くて余分なこともしてると思うが、誰か(あるいは自分)の役に立つかもしれないので記録しておく。


いつものようにExcelを開こうとすると「lexicon(XLLEX.DLL)が見つからないか、または壊れています。」というエラーメッセージが表示され、Excelが開けない。
また、Wordも開かなくなっている。(開こうとすると何も書かれていなくてOKボタンしかないダイアログが表示される。)
XLLEX.DLLというファイルはOfficeのフォルダにあるので、レジストリがおかしくなっている?

Googleで調べてみたが、Windowsを再インストールするか、あるいはWindowsユーザーを新しく作り直すしか対策が見つからない。(それは嫌だ。)

「プログラムの追加と削除」でOfficeをアンインストールして、OfficeのインストールCDから再インストール。しかし状況変わらず。何回か繰り返したが駄目。

Windowsの「システムの復元」を使って、Excelが開けた頃にWindowsを戻す。

Excelを立ち上げようとすると、これまでとはまた別のエラーが出るようになった。
それに対してOfficeを再インストールしようと試みるも、そもそもアンインストールができない

  • 「プログラムの追加と削除」から「変更」「削除」ボタンを押しても、数秒固まるだけで何も起きない
  • OfficeのインストールCDのSetup.exeを起動すると、インストールエラーが発生して終了してしまう
この状態でインストールしようとしてもエラーになってインストールできない。

Microsoft Office 2007をアンインストール(削除)ができない|星屋工作室で紹介されているMSのサイトの「Fix it で解決する」というのをダウンロードして実行したら、Officeをアンインストールできた。

CDからOfficeを再インストール。

ExcelもWordも使えるようになった!


もしかしたら最初からFix itを使えば解決したのかもしれない。
Office2007だけでなく、2003や2010もアンインストール用の「Fix it」があるようだ → コントロール パネルからアンインストールできない場合、Office 2003、Office 2007 または Office 2010 スイートをアンインストールする方法


また、この後Microsoft UpdateによるOffice2007 SP2のインストールがどうしても失敗する事象が発生。

Office2007のサービスパックが当たらない - りぶろくを参考にWindows Installer 4.5をダウンロードしてインストール

SP2もインストールできた。

2010年8月15日日曜日

CentOS5.5に PostgreSQL8.4をインスール&セットアップする手順

手順のメモ。

古いpostgresがインストールされていたので削除。

yum remove postgresql*
釣られてhttpd(Apache)もアンインストールされたが今回は構わない。


yumでpostgresをインストール。(CentOS5.5からは標準のyumリポジトリにPostgreSQL8.4がある。今までのpostgresと区別するために名前に"84"が付いている。)
yum install postgresql84-server
以下がインストールされる。
  • postgresql84-libs
  • postgresql84
  • postgresql84-server

必要に応じてdevelもインストール。
yum install postgresql84-devel


合わせてLinuxユーザーとして"postgres"が登録されるので、ユーザーを切り替える。
su postgres


初期化。
initdb --encoding=UTF-8 -D /var/lib/pgsql/data/
--encoding=UTF-8は無いとまずい?
--no-locale
は要るのかな?


rootに戻り起動。
/etc/init.d/postgresql start


OS起動時にpostgresが起動するようにしておく。
chkconfig postgresql on

yumのリポジトリに RPMforgeを追加する手順

CentOS5の場合。

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

rpm -K rpmforge-release-0.5.1-1.el5.rf.*.rpm

rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm


"--enablerepo=rpmforge"を付けた場合のみRPMforgeを使うようにする。
vi /etc/yum.repos.d/rpmforge.repo
下記のように変更する。
enabled=1

enabled=0


参考:AdditionalResources/Repositories/RPMForge - CentOS Wiki

2010年5月8日土曜日

Cucumberインストールメモ

素に近いCentOSへのインストールのメモ。Railsは使わない。
(やったことを順に書いたので、「正しいインストール方法」としては読み辛い。)


  1. Rubyインストール

    yum install ruby ← 1.8.6以降が必要になり、後でソースから入れなおした
  2. Ruby Gemsインストール

    yum install rubygems ← Rubyを入れなおしたのでこちらもソースから入れなおした
  3. Cucumberインストール

    gem install cucumber
    最初はずっとcucamberと書いていてエラーにされた
  4. Webratインストール

    gem install webrat
    しようとしたらエラーになった。

    Building native extensions.  This could take a while...
    ERROR:  Error installing webrat:
            ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb install webrat
    can't find header files for ruby.


    Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/nokogiri-1.4.1 for inspection.
    Results logged to /usr/lib/ruby/gems/1.8/gems/nokogiri-1.4.1/ext/nokogiri/gem_make.out

    1. 参考になりそうな記事を見つけた → gem で nokogiri, webrat放り込む時にエラーでた on Ubuntu 9.04 - ザ・職人
    2. libxml2はインストール済みだった
    3. libxml2-develインストール

      yum install libxml2-devel
      でもWebratはインストールできなかった
    4. libxsltはインストール済み
    5. libxslt-develインストール

      yum install libxslt-devel
      でもWebratはダメ
    6. もしかしてruby-devel?

      yum install ruby-devel
    7. webrat再チャレンジ

      gem install webrat
      入った!
  5. Mechanizeインストール

    gem install mechanize
  6. RSpecも必要?

    gem install rspec
これでインストール完了。

インストールされたバージョンは
  • Ruby 1.8.5
  • Cucumber 0.6.4
  • Webrat 0.7.0
  • Mechanize 1.0.0
  • RSpec 1.3.0



試しに動かしてみたい。
ここが参考になりそう → エンジニアは空を飛ぶ: Cucumber入門(1) 一番最初のCucumber
featureの日本語化についてはここを参考にやってみる → Ruby/cucumber/日本語を使う方法 - TOBY SOFT wiki


ディレクトリ作成
cd /tmp
mkdir cuke
cd cuke
mkdir features
mkdir features/step_definitions
mkdir features/support


環境設定ファイル作成
下記を参考に

vi features/support/env.rb
require 'spec/expectations'
require 'cucumber/formatter/unicode'

# Webrat
require 'webrat'

require 'test/unit/assertions'
World(Test::Unit::Assertions)

Webrat.configure do |config|
  config.mode = :mechanize
end

World do
  session = Webrat::Session.new
  session.extend(Webrat::Methods)
  session.extend(Webrat::Matchers)
  session
end


featureファイル作成
vi features/test.feature
# language: ja
機能: Cukeのテスト
  "Cucumber"をGoogle検索してCucumber関連の検索結果を得る

  シナリオ: 同上
    前提 "http://www.google.co.jp/"ページを表示している
    もし "cucumber"を検索する
    ならば "moroの日記"と表示されていること


stepsファイル作成(ためしにGivenだけ)
vi features/step_definitions/test_steps.rb
# -*- encoding: UTF-8 -*-

前提 /^"([^"]+)"ページを表示している$/ do |url|
  visit url
end
動かしてみる
cucumber
エラー発生
    前提 "http://www.google.co.jp/"ページを表示している # features/step_definitions/test_steps.rb:3
      undefined method `instance_variable_defined?' for #<Net::HTTP www.google.co.jp:80 open=false> (NoMethodError)
      (eval):2:in `visit'
      ./features/step_definitions/test_steps.rb:4:in `/^"([^"]+)"ページを表示している$/'
      features/test.feature:6:in `前提 "http://www.google.co.jp/"ページを表示している'

instance_variable_defined
はRuby1.8.6以降が必要らしい → rip のインストール - オボロぼろぼろ
Ruby1.8.6以降はyumでは見つからなかったので、ソースからコンパイルする必要があるようだ。


こちらを参考に → マルニカ。 CentOSに最新Rubyをインストール。

Rubyをアンインストール
yum remove ruby
gemsも一緒にremoveされた。

後は上記サイトのとおりに。
Rubyはなんとなく1.9.1を選んだ。
最新のバージョン番号は下記で確認で。

またひととおりCucumberからインストールし直しだ...

(Gemでインストールし直す。)

インストールされたバージョンは
  • Ruby 1.9.1
  • Cucumber 0.6.4
  • Webrat 0.7.0
  • Mechanize 1.0.0
  • RSpec 1.3.0

再チャレンジ
cucumber
3 steps (2 undefined, 1 passed)
「前提」が通った!


steps内の記述については下記が参考になりそう。

日本語でStepsを定義する際には書き方をmoro-misoに合わせておいた方が後々幸せになれるかも。


また、Cucumberの問題ではないが、CentOS 5.4でもprelinkはRuby-1.9.1のバイナリを破壊する、かも | Selfkleptomaniacという問題が発生したので、ここに書いてある対応をした。

2010年4月16日金曜日

Amazon EC2の AMIとして 自分でCentOSをインストールする方法

Amazon EC2上の仮インスタンス上でCentOSのAMIを作成する方法を書こうとしたのだけれど、途中試行錯誤したので作業ログ的なメモになってしまった。


  1. Amazonが用意しているFedoraのAMIでAmazon EC2 API Toolsが既に入っているインスタンスを立ち上げる。(Amazon EC2 API Toolsをインストールする手間が省ける)
  2. 下記サイトを参考に、X.509証明書と秘密鍵をダウンロードする
  3. 2でダウンロードした2つのファイルを、1で立ち上げたインスタンスに転送する
  4. 下記サイトを参考に、1のインスタンス上でCentOSをセットアップする
  5. イメージの登録まで済めば、AWS Management Consoleの左側のメニューの「Images」のAMIsのところに、作ったAMIが表示される!



でもこの方法だとEBSからの起動ではなくinstance-store(S3)からの起動になってしまう。
なのでEBSから起動できるAMIを作ってみる。

  1. 作成したOSイメージ(centos5.img)を/tmpに移動(移動は不要?)
  2. 後はsuz-lab - blog: Migrating a CentOS S3 Based AMI to an EBS Based AMIを参考に進める
    • ddでAMIイメージをコピーしたらいつまでたっても終わらないので別のssh繋げて見てみたら終わってるように見えたのでそのまま進めてしまった
    • ec2regはec2-registerのalias
    • ec2regの -d オプションはdescriptionの登録なので省略してもOK

S3に作った時の「バンドルイメージの作成」以降がEBSへのコピーに変わった感じか。こっちの方が作るのも楽だ。
今ではもうEBSからの起動が普通なので、こちらの方法で手順をまとめられると良かったのだが。

CentOSに lsyncをセットアップするメモ

  1. gccをインストールしてない場合は、gccをインストール

    yum install gcc
  2. あとは下記リンク先の説明のとおりに
    Linuxでリアルタイムミラーリング « Fosters Technical Blog

    (この例はlsyncd.conf.xmlの代わりにlsyncd.confに1行書くだけという設定が少し特殊)
  3. rsyncdの詳細な設定(ログファイルの指定等)についてはこちらを参照
    rsyncd.conf
  4. こちらのパッチを使えばssh経由で使えるらしい
    lsyncdを使ってみた - ドンゴレ日記 via lsyncd設定 - kame-tの日記
    でも現在はoptionの指定だけでssh経由にできる?
    Issue 6 - lsyncd - SSH on another port - Project Hosting on Google Code



その他の参考

今さらPHP4の環境を作るメモ

yumでは入れられないPHP4をインストールしたい。
インストールされていたApache2.2とPHP5は事前にアンインストールした。


  1. gccをインストール(コンパイルに必要)

    yum install gcc
  2. OpenSSL-develをインストール(ApacheでSSLを使う場合に必要)

    yum install openssl-devel

    • (OpenSSL1.0が標準的なyumでインストールできるようになるのはいつだろう)
  3. Apache2.0をインストール
  4. flexをインストール(PHPのインストールに必要)

    yum install flex
  5. PHP4をインストール
  6. SELinuxが有効な場合、Apache用PHPモジュールのラベル(セキュリティコンテキスト)を変更する

    chcon -t textrel_shlib_t /usr/local/apache2/modules/libphp4.so

    • 参考:cannot restore segment prot after reloc: Permission denied - Linuxシステム設定
    • SELinuxが有効な場合、これを変更しないとApache(再)起動時に下記のようなエラーが出る

      Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf:
      Cannot load /usr/local/apache2/modules/libphp4.so into server: /usr/local/apache2/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied
  7. Apacheの設定

    vi /usr/local/apache2/conf/httpd.conf

    • AddTypeを追加

      AddType application/x-httpd-php .php
    • DirectoryIndexを変更(index.phpを追加)

      DirectoryIndex index.php index.html index.html.var
    • Webコンテンツのディレクトリを変更(/var/www/htmlにする)

      #DocumentRoot "/usr/local/apache2/htdocs"
      DocumentRoot "/var/www/html"
    • Apacheを再起動

      /usr/local/apache2/bin/apachectl restart

ブログ アーカイブ

tags