R Studio Serverのインストール
めっちゃ久しぶりの更新だ。。。
というわけで、R Studio Serverのインストール方法
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install R
yum install openssl098e compat-libgfortran-41
wget http://download2.rstudio.org/rstudio-server-0.98.501-x86_64.rpm
yum install --nogpgcheck rstudio-server-0.98.501-x86_64.rpm
rstudio-server verify-installation #インストールの確認。このコマンドで起動も行われます。
rstudio-server start #普通に起動するならこれでOK
インストールはこれで終わり。
FWに穴を開けて、http://IPアドレス:8787/にアクセスすればOK!
rbenvによるrubyのインストール(コマンドのみ)
rbenvでrubyをインストールするときのメモ。解説はない!
rootで実行すれば他のユーザもruby及びrbenvが使えるようになる。
cd /usr/local/src/
rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
vi /etc/yum.repos.d/remi.repo
(remiのrepoをenable=1に変更)
yum -y install tmux git
cd /usr/local/
git clone https://github.com/sstephenson/rbenv.git
mkdir rbenv/shims rbenv/versions
groupadd rbenv
chgrp -R rbenv rbenv/
chmod -R g+rwxXs rbenv/
cd /usr/local/src/
git clone https://github.com/sstephenson/ruby-build.git
cd ruby-build/
./install.sh
vi /etc/profile.d/rbenv.sh
(以下を加える
export RBENV_ROOT="/usr/local/rbenv"
export PATH="/usr/local/rbenv/bin:$PATH"
eval "$(rbenv init -)"
)
visudo
(Defaults env_keep += "PATH"を加える)
rbenv install -l
rbenv install 1.9.3-p392
rbenv global 1.9.3-p392
ESXi5.1のPXE起動によるアップグレード
ESXiの5.1が出た(もう一ヶ月ぐらいまえだけど・・・)ので、アップグレードすることにしました。
普通にCDに焼いてアップグレードしようとしたらCDドライブが壊れているのかCDが焼けない。。。
そこで仕方なく、PXE起動させてアップグレードを試みてみた。
簡単に環境の説明
ESXiを入れるサーバ:PowerEdge1950
tftpサーバを立てるマシン:普段使ってるWindowsマシン
サーバとWindowsマシンはLANケーブルで直繋ぎ
Windowsマシン上でtftpサーバとDHCPサーバを立てて、ESXiを入れるサーバからPXE起動させるだけです。
以下にtftpサーバとDHCPサーバの設定を載せておきます。
今回はtftpdというソフトを使いました。
tftpdを起動してsettingsの各タブごとの設定は以下の通り
■GLOBAL
TFTP Server、DHCP Serverにチェックを入れる。
■TFTP
PEX Compativility、Translate Unix file name、Bind TFTP to this addressにチェックを入れる。
■DHCP
・IP pool starting address :192.168.0.X
・Size of pool:1
・Boot File:pxelinux.0
・Mask:255.255.255.0
Bind DHCP to this address、Persistant leaseにチェックを入れる。
SYSLINUXをダウンロード
kernel.org(ミラー)
syslinux-x.xx.zip をダウンロード(今回は4.06)
解凍して下記を tftpd32 フォルダにコピー
core\pxelinux.0
com32\menu.c32
memdisk\memdisk
ESXiのインストールイメージをコピー
tftpd32 フォルダにESXi5_1フォルダを作ってその下にISOイメージをコピー
ブートメニューの設定ファイルを作成
tftpd32 フォルダ内に pxelinux.cfg フォルダを作成し default ファイルを作成。
defaultファイルの中身は以下の通り。
===========================
DEFAULT menu.c32
MENU TITLE ESXi-5.1.0
PROMPT 0
LABEL install
KERNEL memdisk
APPEND iso initrd=ESXi5_1/VMware-VMvisor-Installer-5.1.0-799733.x86_64.iso
PXE起動なんてなれない方法をとったが意外と簡単で助かった。。
さて、アップグレードして満足しないでどんどん使って行かなければ!
参考URL:http://d.hatena.ne.jp/palm84/20070403/1175609650
rails3.2.3でTwitterにログインしてつぶやくサンプルAP(第2回)
では、第1回の続き。
config/initializers/omniauth.rb にTwitterのコンシューマキーとシークレットを記述。
Twitterアプリのプロバイダ情報を記述。
(ここの意味がまだあまりわかっていない。
コンシューマキーとシークレットはわかるんだが・・・)
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, 'CONSUMER_KEY', 'CONSUMER_SECRET'
end
第一回の最後に表示された画面の「Sign in with Twitter」をクリックすると、
Twitterのアプリを許可するかという画面が現れる。(上記のomniauth.rbを書かないとエラーになる。)
そして、その画面でアプリを許可してから戻ってくる画面をこれから作っていく。
戻ってきた画面では、テキストボックスを用意し、そこにつぶやく内容を入力する。
ついでに、つぶやいた内容をDBに保存させる。
DBを使うときに便利なscaffoldを使って、一気にモデルと画面を作成する!
# rails g scaffold t_line tweet_str:string tweet_by:string
scaffoldでテンプレートを作ったら、以下のファイルを修正する。
・app/controllers/t_lines_controller.rb
・app/controllers/sessions_controller.rb
・app/views/t_lines/_form.html.erb
・app/views/t_lines/index.html.erb
・db/migrate/XXXXXXXXXXXXXX_create_users.rb
・config/routes.rb
それぞれ中身は以下の通り。
このアプリのメインとなるつぶやきとDB格納を行う部分。
つぶやきはcreateメソッドのなかで行なっています。
・app/controllers/t_lines_controller.rb
class TLinesController < ApplicationController
# GET /t_lines
# GET /t_lines.json
def index
@t_lines = TLine.all
@tmp = 1
respond_to do |format|
format.html # index.html.erb
format.json { render json: @t_lines }
end
end
# GET /t_lines/1
# GET /t_lines/1.json
def show
@t_line = TLine.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @t_line }
end
end
# GET /t_lines/new
# GET /t_lines/new.json
def new
@t_line = TLine.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @t_line }
end
end
# GET /t_lines/1/edit
def edit
@t_line = TLine.find(params[:id])
end
# POST /t_lines
# POST /t_lines.json
def create
@t_line = TLine.new(params[:t_line])
@t_line.tweet_by = current_user.name
Twitter.configure do |config|
config.consumer_key = " CONSUMER_KEY "
config.consumer_secret = " CONSUMER_SECRET"
config.oauth_token = current_user.token
config.oauth_token_secret = current_user.secret
end
twitter_client = Twitter::Client.new
twitter_client.update(@t_line.tweet_str)
respond_to do |format|
if @t_line.save
format.html { redirect_to @t_line, notice: 'T line was successfully created.' }
format.json { render json: @t_line, status: :created, location: @t_line }
else
format.html { render action: "new" }
format.json { render json: @t_line.errors, status: :unprocessable_entity }
end
end
end
# PUT /t_lines/1
# PUT /t_lines/1.json
def update
@t_line = TLine.find(params[:id])
respond_to do |format|
if @t_line.update_attributes(params[:t_line])
format.html { redirect_to @t_line, notice: 'T line was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @t_line.errors, status: :unprocessable_entity }
end
end
end
# DELETE /t_lines/1
# DELETE /t_lines/1.json
def destroy
@t_line = TLine.find(params[:id])
@t_line.destroy
respond_to do |format|
format.html { redirect_to t_lines_url }
format.json { head :no_content }
end
end
end
<%= form_for(@t_line) do |f| %>
<% if @t_line.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@t_line.errors.count, "error") %> prohibited this t_line from being saved:</h2>
<ul>
<% @t_line.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :tweet_str %><br />
<%= f.text_field :tweet_str %>
</div>
<!--
<div class="field">
<%= f.label :tweet_by %><br />
<%= f.text_field :tweet_by %>
</div>
-->
<div class="actions">
<%= f.submit %>
</div>
<% end %>
・app/views/t_lines/index.html.erb
<h1>Listing t_lines</h1>
<table>
<tr>
<th>Tweet str</th>
<th>Tweet by</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @t_lines.each do |t_line| %>
<tr>
<td><%= t_line.tweet_str %></td>
<td><%= t_line.tweet_by %></td>
<td><%= link_to 'Show', t_line %></td>
<td><%= link_to 'Edit', edit_t_line_path(t_line) %></td>
<td><%= link_to 'Destroy', t_line, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New T line', new_t_line_path %>
・config/routes.rb
SampleTwitter::Application.routes.draw do
resources :t_lines
get "sessions/index"
match '/auth/:provider/callback' => 'sessions#callback'
match "/signout" => "sessions#destroy", :as => :signout
root :to => "sessions#index"
・ db/migrate/XXXXXXXXXXXXXX_create_users.rb
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :provider, :null => false
t.string :uid, :null => false
t.string :screen_name, :null => false, :uniq => true
t.string :name, :null => false
t.string :token
t.string :secret
t.timestamps
end
add_index :users, [:provider, :uid]
add_index :users, [:screen_name]
end
def self.down
drop_table :users
end
end
rails3.2.3でTwitterにログインしてつぶやくサンプルAP(第1回)
こちらで使っている環境
・
5.7・
.3p125・
3.2.3・gem 1.8.21
とにかくまず、プロジェクトの作成
Gemfileに以下を加える
gem 'omniauth'
gem 'execjs'
gem 'therubyracer'
gem 'omniauth-twitter'
gem 'twitter'
# bundle install
まずは、認証してログインする部分のコントローラを作る。
# rails g controller sessions index
■ app/views/sessions/index.html.erbを以下のように編集
<% if current_user %>
Welcome <%= current_user.name %>!<br>
<%= link_to "Sign Out", signout_path %>
<% else %>
<%= link_to "Sign in with Twitter", "/auth/twitter" %>
<% end %>
■ app/controllers/application_controller.rbを以下のように修正
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :current_user
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
ここまでちゃんとできていれば、
# rm public/index.html
でindex.htmlを消す。(残っていると/へのアクセスはroute.rbの記述よりindex.htmlが優先される。)
# rails s によりWebServerを起動し、
http://<プロジェクトのURL>/sessions/index
にアクセスすれば画面が表示されるはず。。。
<続く>
Rails3.2.3を動かすまでにつまずいたこと
Railsでまずプロジェクトを作成しようとして速攻つまずきました。。。
【追記】環境を全く書いていなかったので書いておきます。
・CentOS 5.7
・ruby 1.9.3p125
・Rails 3.2.3
・gem 1.8.21
# rails new <プロジェクト名>
と、実行したら以下の様なエラーが・・・
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- openssl (LoadError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/ruby/1.9.1/net/https.rb:22:in `<top (required)>'
<中略>
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.3/bin/bundle:13:in `<main>'
Fetching gem metadata from https://rubygems.org/.Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Please include the full output of the command, your Gemfile and Gemfile.lock. Thanks!
結局、Rubyをコンパイルする前に、いかのパッケージをインストールしました。
#sqliteはいらなかったかもな~。。
openssl-devel.x86_64
上記をインストールし、rubyを再インストールしたらうまくいきました。
【追記】
# rails new <プロジェクト名>
をしたあとに、出来るGemsfileに以下を追記
gem 'execjs'
gem 'therubyracer'
プロジェクトのディレクトリに移動し、以下のコマンドを実行
# rails generate scaffold <コントローラ名> <カラム名>:型 …
ここで、scaffordを行った時にエラーが出てしまい以下のパッケージもインストールした。
# rake db:migrate
# rails server
にアクセス、アクセスできたら
http://localhost:3000/<コントローラ名>s
にアクセス。CRUD操作出来るWeb画面が表示されるはずです!