忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 13:56 】 |
Ruby
サーバを立ち上げる

$ 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
【2016/10/03 17:48 】 | サーバ | 有り難いご意見(0)
aws注意
multiAZだと、内部のデータセンターが勝手に変わったりする
すると、サーバは生きていて、nagiosもエラーを吐かないが、コネクションは切れるということが起きる
IPは変わらないが、コネクションだけ繋がらなくなるので、再度同じIPで接続をしないと繋がらない
ということが起きるので、死活監視は必要
【2016/09/27 12:34 】 | サーバ | 有り難いご意見(0)
ngnix
起動コマンド

/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;
}
}
【2016/09/27 11:41 】 | サーバ | 有り難いご意見(0)
redisコマンド
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


【2016/09/27 11:40 】 | サーバ | 有り難いご意見(0)
railsサーバ立ち上げ記
動く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の世界へ!
【2014/04/18 11:43 】 | サーバ | 有り難いご意見(0)
WordPress
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を継承して作ることになっている。

class MyWidget extends WP_Widget







update()関数は割と分かりやすくて、

function update( $new_instance, $old_instance ) {
//....
return $instance;
}






新設定を書き込んだインスタンスをreturnするだけ。


form()関数も難しいことは別になくて、設定用の入力フォームを並べるだけ。
<input id="XXX" type="text" />
というふうに書いたフォームの値が、update()に
$new_instance['XXX']
という形で渡されてくるだけ。


一番大切なのがwidget()関数。
ここでは、update()で設定した値を使用しながら、サイドバーに実際に表示するhtmlを作らないといけない。
DBにアクセスすることにもなるだろう。

ここで作ったhtml(やjavascriptやjQueryとか)は、決まった場所(サイドバー用のdiv, "primary-sidebar"の後)に出力される。
じゃあ、cssとか使いたいときはどうする?ここには書けない。

ブログページのhtmlを見てみると、

<link rel='stylesheet' id='XXX-style-css' href='http://XXXX/wordpress/wp-content/themes/XXXX/style.css?ver=3.8.3' type='text/css' media='all' />



と書いてある。
ここに書いたら動くのかな?
【2014/04/07 21:59 】 | サーバ | 有り難いご意見(0)
sudoするには
/etc/sudoers
というファイルにユーザごと、またはグループごとなどに権限を書く。

直接このファイルを編集してもいいが、書き間違えるとことなので
visudo
コマンドを使う。

ファイル内に丁寧に説明がついているのでわかりやすいが、
パスワードなしで全コマンドを実行させたいときは

username ALL=(ALL) NOPASSWD: ALL




と書く。
グループ全員に対して設定したいときは、先頭にパーセントをつける。

%groupname ALL=(ALL) NOPASSWD: ALL




参考


ついでに…
ユーザ一覧を確認したいときは
% vi /etc/passwd
グループを確認したいときは
% vi /etc/group
でOK。





【2014/04/04 11:54 】 | サーバ | 有り難いご意見(0)
AWS で ssh
sshで入るには、公開鍵と秘密鍵。

AWSで作るのは簡単で、
AWSコンソール→EC2 ダッシュボード→Key Pairs で Create Key Pair を押す。
名前(仮にmykeyとする)を決めれば、もう完成。一覧に新しいキーペアが追加される。
さらに秘密鍵ファイル(mykey.pem)がダウンロードされる。
ちなみにノーパスワード。

これを使えばsshで入れる訳だが…その前に作業がある。

サーバ側で、
.ssh/authorized_keys
にこの公開鍵情報を書き足す必要がある。これをしないと、このキーペアを認証してくれない。

authorized_keysの中身は

ssh-rsa XXXXXXXXXXXXXXXXXX mykey



といった具合になっている。
このXXXの部分が公開鍵を表す訳だが…
そもそも今作ったキーペアの公開鍵ってどこ?秘密鍵はダウンロードしたけど…?

ということで、秘密鍵から公開鍵を取り出す。

$ chmod 600 mykey.pem
$ ssh-keygen -y -f mykey.pem > id_rsa.pub
-y は、秘密鍵から公開鍵を取り出すオプション。
-f は、ファイル名指定のオプション


これで公開鍵が手に入った。
id_rsa.pubの中身を見ると

ssh-rsa XXXXXXXXXXXXXXXXX



となっている。キー名が入ってない以外は、authorized_keysの中身と同じ。

これを先ほどのサーバのauthorized_keysにコピーし、キー名を末尾に付加すればOK.

これで
$ ssh -i mykey.pem username@hostname
でログインできる。
【2013/12/08 18:06 】 | サーバ | 有り難いご意見(0)
ユーザ作成
コマンドは

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するには
この記事参照


【2013/12/08 17:20 】 | サーバ | 有り難いご意見(0)
Rubyで動かす
まず準備

$ sudo yum update



・Rubyが入っているか?

$ ruby -v

OK.入っている。


・irb 使えるか?

$ irb -v
=> コマンドが見つかりません

なんと。では入れよう

$ sudo yum install irb

OK.


・ユーザを作る

以下のページ


見てたページ
http://www.studytech.jp/courses/181/lessons/1651
【2013/12/08 16:14 】 | サーバ | 有り難いご意見(0)
| ホーム | 次ページ>>