× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
サーバを立ち上げる
$ sudo yum update -y (-yは、たぶん途中プロンプトで聞かれるときに y (yes) で応えるっていうオプション) $ sudo yum install httpd-devel -y $ sudo service httpd start $ sudo chkconfig httpd on $ chkconfig --list httpd gitをインストール $ sudo yum update $ sudo yum install git -y sudoを使えるようにする $ sudo su - # passwd (パスワード設定) # exit これで、パスワードが設定され、suでログインできるようになる suに入る $ su - (パスワード入力) Rubyインストール 参考 必要なライブラリをインストール $ su - # yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel rbenvをインストール # git clone https://github.com/sstephenson/rbenv.git /opt/rbenv # echo 'export RBENV_ROOT="/opt/rbenv"' >> /etc/profile.d/rbenv.sh # echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh # echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh ruby-buildインストール # git clone https://github.com/sstephenson/ruby-build.git /opt/rbenv/plugins/ruby-build rbenv アカウント作成 # adduser rbenv # gpasswd -a ec2-user rbenv 確認 # cat /etc/passwd # cat /etc/group rbenvのパーミッション変更 # chown -R rbenv:rbenv /opt/rbenv # chmod -R 775 /opt/rbenv # ll /opt/ # rbenv install 2.3.1(最新のRubyバージョンを指定) (しばし待つ) # rbenv rehash # rbenv global 2.3.1 rbenvはsuでないと、/opt/rbenv/versions以下に書き込み権限がない ここまでsuで行う # rbenv -v -> 1.0.0 # ruby -v ->2.3.1になっていればOK なお、通常ユーザだと $ ruby -v ->2.0.0 になっている場合がある。その場合は、パスを通せば良い $ PATH=/opt/rbenv/shims:$PATH $ echo $PATH suで # which ruby をして確認すればOK railsをインストール $ gem update --system $ gem install nokogiri -- --use-system-libraries $ gem install --no-ri --no-rdoc rails $ gem install bundler $ rbenv rehash $ rails -v ->最新っぽい数字になっていればok ◯ここからrails作成手順 環境 $ ruby -v => ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] $ rails -v => Rails 5.0.0.1 $ gem -v => 2.6.7 $ rbenv -v => rbenv 1.0.0-33-gc7dcaf1 $ cd /path/to/your/directory $ rails new <アプリ名> これでディレクトリができ、アプリが生成される $ cd <アプリ名> $ rails s もしここで失敗した場合は、以下のようにする $ vi Gemfile gem 'therubyracer', platforms: :ruby のコメントを外す $ bundle install で、再度 $ rails s これでサーバが立つ $ curl http://localhost:3000/ で確認 ブラウザなら http://ec2-xxx.xxx.xxx.xxx.ap-northeast-1.compute.amazonaws.com:3000/ で表示されればok PR |
multiAZだと、内部のデータセンターが勝手に変わったりする
すると、サーバは生きていて、nagiosもエラーを吐かないが、コネクションは切れるということが起きる IPは変わらないが、コネクションだけ繋がらなくなるので、再度同じIPで接続をしないと繋がらない ということが起きるので、死活監視は必要 |
起動コマンド
/etc/init.d/nginx start /etc/nginx/sites-enable/以下 upstream appserver { server localhost:3000; } geo $allowed { default no; 202.32.47.0/24 yes; 219.163.197.64/27 yes; 221.186.216.16/29 yes; 202.143.92.128/26 yes; 61.197.167.128/28 yes; 122.208.122.144/29 yes; 10.0.0.0/8 yes; 122.132.171.175 yes; 219.109.218.130 yes; 210.122.209.56 yes; 210.122.209.124 yes; 210.122.209.230 yes; } server { listen 80; server_name otani1.bnr.bng.jp; location / { try_files $uri @proxy_to_appserver; } location @proxy_to_appserver { if ($allowed = no) { return 403; } access_log /var/log/nginx/otani1.bnr.bng.jp.access.log; error_log /var/log/nginx/otani1.bnr.bng.jp.error.log; proxy_pass http://appserver; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
sudo apt-get install redis-server
sudo apt-get install redis-doc redisの起動 http://redis.shibu.jp/quickstart.html redisの導入 $ sudo apt-get install redis-server $ redis-cli スケジューラの起動 $ cd game_server $ bundle exec rake resque:scheduler RAILS_ENV=test config/redis.yml $ redis-cli redisコマンド。キューが入ったか確認 > select 2 database 2 を選択 > keys * すべてのredisキーを取得 1) "resque:queues" 2) "resque:resque_scheduler_master_lock" 3) "resque:queue:high" > LRANGE resque:queue:high 0 999 指定のキーの0~999番目を取得 resqueの処理を走らす $ QUEUE=* VVERBOSE=true rake environment resque:work RAILS_ENV=test |
動くWebサーバを高速で立ち上げる練習
AWSの作業 まず、awsの自分のアカウントでEC2をLaunch。 設定はまあ適当でいいでしょう。m1.microで。 ただm1.microは立ち上げに時間がかかると中の人から聞いたことがあってやや不安。9:30に起動して、Initialize終わったのが9:32。普通じゃん。 鍵は新しいの作ってダウンロードしておく。 $ mv ~/Download/***.pem ~/.ssh $ chmod 400 .ssh/***.pem EC2コンソールから、インスタンスのPublic IPを確認して $ vi ~/.ssh/config にも書いておこう あと、セキュリティグループの設定もお忘れなく。 HTTP ポートを空けておこう。デフォルトだとSSH しか開いてないからね。 環境確認 とりあえず慣れてるrailsにしてみる。 参考 http://tsuchikazu.net/linux_ruby_on_rails_install/ $ sudo yum update $ sudo yum install git -y Ruby rubyは最初から入ってるんだよねー。 $ ruby -v => ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux] このバージョンでいいの?はあとの話。 rails でもrailsはない。 $ gem search -r rails でgemが検索できるよ。railsは大量にある $ gem install rails でインストールする。ドキュメントをインストールしないオプションをつけると倍速だって。 $ gem install rails --no-ri --no-rdoc あとからドキュメントがほしくなったら $ gem rdoc --all --ri とするとインストール済みの全部のgemのドキュメントがインストールできる。だから $ gem rdoc rails --ri とかでいいのかな? http://easyramble.com/no-ri-no-rdoc.html とりあえずインストール完了。 $ rails -v =>Rails 4.1.0 じゃあrailsアプリ作ってみよう。 $ rails new first => /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError) : : なんぞこれ。 うーん rails その2 http://qiita.com/dahugani/items/858b3979c0da8ecafdbb こっちのページに乗り換えてみよう。 違いはなんぞ?というと、rubyのバージョン。 前のサイトだと、rbenvをインストールしてrubyのバージョンをあげようとしていたけど、なぜかrbenvが動かない。(rubyのインストールがエラーになる) まあ、自分が慣れてるのもruby 1.9.xでrails 3.xだし、それでいこう。 というわけでこのページの通りに進めてみる。 wgetのとこだけアクセスできなかったので、 ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz に変えた。 意外と順調。 しかし $ rails new myapp が失敗。 OpenSSLのエラーが起きる $ yum install openssl-devel -y $bundl install Could not load OpenSSL. You must recompile Ruby with OpenSSL support or change the sources in your Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL using RVM are available at http://rvm.io/packages/openssl. うーん。どうしよう。探しても同じ問題にあたってる人あまりいない。 $ yum search openssl-devel でもほかのバージョンない。っていうかdevelの問題じゃなくてrubyのソースの問題だし。 ということは、rubyのソースを再インストール?というか再getして再makeして再install? 再びruby 1.9.3-p392を入れてたんだけど、 1.9.3の最終版は1.9.3-p545らしい。 バージョンを消す方法 srcディレクトリの.installed.list にファイルが列挙してある野で、それを全部削除する $ sudo su - root $ cat .installed.list | xargs rm 参考 http://d.hatena.ne.jp/mikage014/20091021/p1 アップデートの場合は要らないかもね。このサイトはバージョンを下げたみたいだから で、もう一度手順繰り返す。 $ cd ~/src $ wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz $ tar xzf ruby-1.9.3-p545.tar.gz $ cd ruby-1.9.3-p545.tar.gz $ ./configure $ make $ make test $ sudo su - root $ make install $ ruby -v => 1.9.3-p545 お、いけた。 もう一度新しいappを作る $ rails new second $ bundle install いける。 ただワーニングが出た \Warning: You're using Rubygems 1.8.23.2 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance. * bin/rake: spring inserted * bin/rails: spring inserted rubygemsが古いと。その古いバージョンで入れたとあるgemがまた古いと。 $ gem -v => 1.8.23.2 なんで、gemをアップデートしてみる $ sudo gem install rubygems-update $ sudo su - root $ update_rubygems $ gem update $ gem -v => 1.8.23.2 あれ、かわってない。…ひとまず置いとこう gem自体のアップデートは要注意らしい。以下参考 http://ja.verbmode.net/2009/02/09/be_carefull_with_gems_verup http://tacamy.hatenablog.com/entry/2013/03/31/230553 ともあれ、appはできてるので、サーバたてよう $ rails s が、失敗。javascriptの何ぞかが見つからないとか。 gemが足りてないのだな。 $ vi Gemfile gem 'therubyracer', platforms: :ruby という行のコメントを外す $ bundle install これでgemが入った。 再度 $rails s さあ、ブラウザでアクセスしてみよう。デフォルトのポート番号は3000だよ。気をつけて。 http://XXXX:3000/ ようこそ、railsの世界へ! |
WordPressインストールして使ってみた。
インストールの参考 /var/www/wordpress 以下に作成したとして話を進める。 カスタマイズの参考 好きなテンプレートを探して使ってもいいけど、やっぱ自分で作りたいよね。 プラグインを入れてみる まずは参考になるかと一つプラグインを入れてみた recent-posts-plus これは、最近の投稿をサイドバーに出すことができるプラグイン。カテゴリーやタグを選んで表示できるとかの機能がある。 READMEを読むと、以下の場所にファイルを置けばいいらしい。 /var/www/wordpress/wp-content/plugins/recent-posts-plus.php サイト名にマウスオーバー→ウィジェット の項目を選ぶと、確かに追加されている。 設定すると、ブログページのサイドバーにRecentPostが表示された。 自作への道 じゃあ、自分で作ってみよう。 ウィジェットを作るのに必要なコードは何か。 ここが詳しい。 Codex 要するに3つの関数を定義する必要があって、 - widget() 実際のウィジェットのコンテンツを出力する。つまり、実際のブログページに出力するhtml文をechoする関数。 - update() 設定の保存を処理する。つまり、ウィジェット画面の設定を保存するボタンを押したときに走る処理。 - form() 設定フォームを出力する。つまり、ウィジェット画面のhtml文をechoする関数。 という訳だ。 自作のウィジェットクラスは、WP_Widgetを継承して作ることになっている。
update()関数は割と分かりやすくて、
新設定を書き込んだインスタンスをreturnするだけ。 form()関数も難しいことは別になくて、設定用の入力フォームを並べるだけ。 <input id="XXX" type="text" /> というふうに書いたフォームの値が、update()に $new_instance['XXX'] という形で渡されてくるだけ。 一番大切なのがwidget()関数。 ここでは、update()で設定した値を使用しながら、サイドバーに実際に表示するhtmlを作らないといけない。 DBにアクセスすることにもなるだろう。 ここで作ったhtml(やjavascriptやjQueryとか)は、決まった場所(サイドバー用のdiv, "primary-sidebar"の後)に出力される。 じゃあ、cssとか使いたいときはどうする?ここには書けない。 ブログページのhtmlを見てみると、
と書いてある。 ここに書いたら動くのかな? |
/etc/sudoers
というファイルにユーザごと、またはグループごとなどに権限を書く。 直接このファイルを編集してもいいが、書き間違えるとことなので visudo コマンドを使う。 ファイル内に丁寧に説明がついているのでわかりやすいが、 パスワードなしで全コマンドを実行させたいときは
と書く。 グループ全員に対して設定したいときは、先頭にパーセントをつける。
参考 ついでに… ユーザ一覧を確認したいときは % vi /etc/passwd グループを確認したいときは % vi /etc/group でOK。 |
sshで入るには、公開鍵と秘密鍵。
AWSで作るのは簡単で、 AWSコンソール→EC2 ダッシュボード→Key Pairs で Create Key Pair を押す。 名前(仮にmykeyとする)を決めれば、もう完成。一覧に新しいキーペアが追加される。 さらに秘密鍵ファイル(mykey.pem)がダウンロードされる。 ちなみにノーパスワード。 これを使えばsshで入れる訳だが…その前に作業がある。 サーバ側で、 .ssh/authorized_keys にこの公開鍵情報を書き足す必要がある。これをしないと、このキーペアを認証してくれない。 authorized_keysの中身は
といった具合になっている。 このXXXの部分が公開鍵を表す訳だが… そもそも今作ったキーペアの公開鍵ってどこ?秘密鍵はダウンロードしたけど…? ということで、秘密鍵から公開鍵を取り出す。 $ chmod 600 mykey.pem $ ssh-keygen -y -f mykey.pem > id_rsa.pub -y は、秘密鍵から公開鍵を取り出すオプション。 -f は、ファイル名指定のオプション これで公開鍵が手に入った。 id_rsa.pubの中身を見ると
となっている。キー名が入ってない以外は、authorized_keysの中身と同じ。 これを先ほどのサーバのauthorized_keysにコピーし、キー名を末尾に付加すればOK. これで $ ssh -i mykey.pem username@hostname でログインできる。 |
コマンドは
useradd とりあえず読んでみ $ man useradd ・自分の確認 自分のユーザ名 $ whoami 自分のグループ名他 $ id => uid=222(ec2-user) gid=500(ec2-user) 所属グループ=500(ec2-user),10(wheel) こんなふうに出る ・全ユーザ、グループのファイル ユーザのアカウント情報 sudo vi /etc/passwd グループ情報 sudo vi /etc/group ユーザ追加時のデフォルト設定 sudo vi /etc/default/useradd ・新規ユーザを追加する処理 ユーザ追加 $ sudo useradd username グループを指定してユーザ追加 $ sudo useradd -g groupname username ユーザにパスワードを設定する $ sudo passwd username で、パスワードを二回入力 新規ユーザ作成時に必要なファイルは /etc/skel/以下 に書いて置いておくと、作成時にコピーされる。便利。 .ssh/authorized_keys とか作っておけば? ユーザ削除 $ sudo userdel username ホームディレクトリも削除したいなら $ sudo userdel -r username メールボックスファイルは残ったままに成るようだ(同名のユーザを再作成したときに、「メールボックスファイルが存在します」という警告が出たので) http://tksh.s2.xrea.com/index.php?%A5%B7%A5%B9%A5%C6%A5%E0%B4%C9%CD%FD%2F%A5%E6%A1%BC%A5%B6%A1%BC%A4%CE%A5%D1%A5%B9%A5%EF%A1%BC%A5%C9%A4%CB%A4%C4%A4%A4%A4%C6 ・ssh loginするには この記事参照 |
まず準備
$ sudo yum update ・Rubyが入っているか? $ ruby -v OK.入っている。 ・irb 使えるか? $ irb -v => コマンドが見つかりません なんと。では入れよう $ sudo yum install irb OK. ・ユーザを作る 以下のページ 見てたページ http://www.studytech.jp/courses/181/lessons/1651 |