ロードバランサー使用時/未使用時のhttps/httpリダイレクト
特定のhtmlページへのhttpsアクセスをhttpにリダイレクトしたい時に
ちょっと手間どったのでメモ。
ロードバランサーなしの場合
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^sample.html$ http://www.hogehoge.co.jp/test/sample.html [R=301,L]
ロードバランサーありの場合
443 → 80 の変換をしている場合、
httpsがhttpに変換されるので元プロトコロで判断します。
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule ^sample.html$ http://www.hogehoge.co.jp/test/sample.html [R=301,L]
条件を間違うとリダイレクトループが発生してページを表示できなるので注意(できなくなった)。
リダイレクト先の間違いにも注意する(間違えた)。
[R=301,L] のR=301 はhttpステータス301(恒久的に移動)を意味します。
L は Ruleにマッチした場合に、以降のルールを適用しません。
【開発】Windowsのローカル環境で動いていたCodeIgniterのコードがMacで動かなかった
原因1
mysqlのソケットが正しくなかった。
ので、macのphp.iniに追加した。
cp /etc/php.ini.default /etc/php.ini
vim /etc/php.ini
追加:
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
【参考: http://www.hi-ho.ne.jp/tsumiki/book_sup2.html】
原因2
セッションファイルの書き込みに失敗していた
https://teratail.com/questions/12993
mkdir /Users/shima/Documents/tmp
chmod 777 /Users/shima/Documents/tmp
CodeIgniterのconfig.php
追加:
$config['sess_save_path'] = '/Users/shima/Documents/tmp';
【参考: https://teratail.com/questions/12993】
JavaEE7のJPAについて
わかりやすいJavaEEウェブシステム入門
http://www.amazon.co.jp/dp/4798042161
のプログラムを実行していた時に起きた現象と解決策のメモ。
現象
15章
sample22-01 を実行すると
/Users/shima/01abc/64Java/projects/sample22-01/nbproject/build-impl.xml:1048: モジュールはデプロイされませんでした。
重大: Exception while preparing the app : Invalid resource : jdbc/mydb__pm
のエラーになる。
検索結果(未解決)
http://youshe.hatenablog.com/entry/2015/03/29/230001
XAMPPでNetBeansのPHPサンプルアプリを実行する
NetBeansのPHPサンプルアプリ(TodoList)を動かした時のメモです。
XAMPPをインストールする
https://www.apachefriends.org/jp/index.html
NetBeansをインストールする
https://ja.netbeans.org/
NetBeans その1
起動した時の開始ページの「サンプルプロジェクトを試す」を選択、
カテゴリ:PHP
プロジェクト:TodoList
を選択して次に。
プロジェクトフォルダ、ソースフォルダを
C:\xampp\htdocs\TodoList
に変更して終了を押下する。
プロジェクトタブのTodoListを右クリックして、実行構成にて
プロジェクトURL:http://localhost/TodoList1/web
開始ファイル:index.php
を入力する。
サービスタブのデータベースを右クリックして、「MySQLサーバーを登録」を選択。
サービスタブのデータベースを右クリックして、「新規接続」を選択。
ドライバにMySQL(Connector/J driver)を選択。
OpsWorksでのRailsアプリのデプロイ手順(2)
OpsWorksでのStack、アプリケーションサーバーレイヤーの作り方については前の記事を参照してください。
http://d.hatena.ne.jp/seika_m/20150911
Railsアプリを用意します。
※参考 MacでのRuby開発環境の構築手順 http://d.hatena.ne.jp/seika_m/20150713
※参考 DB(SQLite3)を使うシンプルなRailsアプリの作り方 http://d.hatena.ne.jp/seika_m/20150912
それとGitHub のアカウントを用意してください。
https://github.com/
※参考 GitHubの使い方 http://d.hatena.ne.jp/seika_m/20150906
Gemfileには以下のGemが必要です。
gem 'therubyracer', platforms: :ruby
gem 'unicorn'
gem 'mysql2', '~> 0.3.16'
※はまりポイント1
これら3つのgemファイルが無い場合、デプロイに失敗します。
AWSにログインします。
OpsWork の Layers を選択します。そして、
- Layer を選択します。
Layer type にMySQL を選択します。
passwordが自動的に表示されるのでメモ帳などに保存します。
Add Layerボタンを押下します。
MySQL レイヤーが追加されました。
次にAdd instance を選択します。
Start を選択してインスタンスを起動します。
(インスタンスの起動するまで10分ぐらいかかります。他の画面に移動しても大丈夫です。)
Name にアプリの名前を入力します
Data source type に OpsWorks を選択します
Database instance に先ほどのインスタンスを選択します
Database name にDBの名前を入力します。
※はまりポイント2
異なるアプリ(異なるRepository URLを参照するアプリ)を使う場合、
異なるName、異なるDatabase name を入力して下さい。そうしないとデプロイに失敗します。
画面をスクロールし、
Repository type に Git を選択します。
Repository URL にはアプリのGitHubのURLをセットします。ここでは
https://github.com/fumio-shimamura/railsbase2.git
をセットします。
Branch/Revision にはブランチ名をセットします。ここではmasterをセットします。
Enviroment Variables のKEY に SECRET_KEY_BASE
VALUE に任意の値をセットし、Protected value のチェックを入れます。
(KEYの値は config/secrets.yml の中にある値を指しています。)
(VALUEの値は rake secret で生成した値などを入力します。)
Save ボタンを押下します。
Migrate database を Yes にします。
Deploy ボタンを押下します。
(Deploy 完了までは数分かかります。)
Instances のページの Public IP を選択します。
以上です。
補足1:
はまりポイント1、2について
以下のようなエラーメッセージが表示されます。
Error executing action `deploy` on resource 'deploy[/srv/www/myapp]'
(中略)
INFO: Running queued delayed notifications before re-raising exception
ERROR: Running exception handlers
ERROR: Exception handlers complete
補足2:
rails new しただけのアプリをデプロイした場合、デプロイは成功しますがページには
We're sorry, but something went wrong.
が表示されてしまします。
アプリのpublicフォルダ(favicon.icoが入っているフォルダ)にindex.htmlを追加してください。
DB(SQLite3)を使うシンプルなRailsアプリの作り方
アプリ作成用のフォルダ(/Users/ユーザー名/Documents など)でrails new します。
$ cd /Users/ユーザー名/Documents
$ rails new アプリ名
アプリ名はここではraislbase2とします。
(rails new railsbase2)
raislbase2/Gemfile を開き、以下を変更します。
(※これはAWS OpsWorksを使用する際には必要な設定ですが、その他の環境の場合は不要です。)
gem 'therubyracer', platforms: :ruby
gem 'unicorn'
をコメントアウトする(有効にする)。
gem 'mysql2', '~> 0.3.16'
を追加する。
続いて、以下コマンドを入力します
$ cd railsbase2
$ bundle install
$ rails generate controller Messages index
$ rails generate model Message name:string body:string
$ rake db:migrate
raislbase2/config/routes.rb を開き、以下のようにします。
Rails.application.routes.draw do #get 'messages/index' root 'messages#index' resources :messages , only: [:create] end
railsbase2/app/controllers/messages_controller.rb を開き、以下のようにします。
class MessagesController < ApplicationController def index @messages = Message.all end def create @message = Message.new(message_params) @message.save redirect_to root_path , notice: 'メッセージを保存しました' end private def message_params # params[:message]のパラメータで name , bodyのみを許可する。 # 返り値は ex:) {name: "入力されたname" , body: "入力されたbody" } params.require(:message).permit(:name, :body) end end
railsbase2/app/views/messages を開き、以下のようにします。
<h1>メッセージ一覧</h1> <% @messages.each do |message| %> 名前:<%= message.name %> 内容:<%= message.body %> <br> <% end %> <%= form_for(Message.new) do |f| %> 名前: <%= f.text_field :name %> 内容: <%= f.text_field :body %> <%= f.submit %> <% end %>
以下のコマンドでアプリを起動し、http://localhost:3000/ にて動いていることを確認します。
$ rails s
以上です。
完成した物はこちらになります。
https://github.com/fumio-shimamura/railsbase2