ubuntu の https 対応

ubuntu 14.04 を https 対応させるように設定をします

すでに apache2 はインストール済みなので
ssl モジュールとバーチャルホストを有効化します

sudo a2enmod ssl
sudo a2ensite default-ssl

設定反映のため apache2 を再起動します

sudo service apache2 restart

次にポートの待ち受け443 があるかを調べます

ss -lnt

LISTEN     0      128                      :::443                     :::*   

という行があればOKです

ちなみに、ubuntu の場合apache2 インストール時点で
サンプルのSSL証明書が自動的に作成され
利用可能な状態になっているため、外部公開などにせず
サーバの練習などを行うのなら
そのままアクセスするだけですでに https 対応になります

念の為、openssl でサンプルの証明書をみておきましょう

 openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -noout -text -fingerprint -sha256

ちなみに、公開するサーバーの場合
正規のSSL証明書の購入をすることになります

これで設定ができたので、試しに
https://localhost でアクセスします

すると警告がでますが、気にせずに詳細をクリックします
これは正規のSSL証明書でないのが原因です

https

次に localhost にアクセスする(安全ではありません)
をクリックします

https2
すると
https になったページにアクセスできるようになります

https3

atom で html プレビュー

Atom エディタでコードを書きながら HTML プレビューをみたいので
パッケージを追加します

開発環境は Ubuntu 14.04 になります

まず Atom を起動し
Ctrl + , で設定画面をだします

次に、 install をクリックし、
atom-html-preview
で検索し
インストールをクリックします

atom-html

これで有効化されるので
html コードを書いたら
ctrl + shit + h で画面右側にプレビューを表示できます

atom-prev

もう一度
ctrl + shift + h を押すとプレビューを閉じることができます

最大のメリットはchrome とかで確認するときに
リロードしないと更新されませんが、
このパッケージの場合、コードをリアルタイムで反映してくれるので
HTMLの練習には最適です

このパッケージの詳細については
https://atom.io/packages/atom-html-preview
にかかれています

owncloud client のインストール

owncloud のURLを更新し、MacBookAir ではアクセスできたので
次に ubuntu のデスクトップクライアントから設定しようとしたら
エラー 資格情報が間違っています
と表示されるので、原因究明のため検索

ownclient

どうやらversion 1.5 と古いのが原因のようなので
新しいものをインストールすることに

https://owncloud.org/install/
にアクセスし

Desktop Clients をクリック

ownlient3

どのOSか聞かれるので、Linux を選択

ownlient4

次にディストリビューションを選べるので
Ubuntu を選択

ownlient5

するとインストール方法が表示されるので
それに従いコマンドを実行することでインストールできます

今回は Ubuntu 14.04 のを実行します

ownlient6

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
sudo apt-get update
sudo apt-get install owncloud-client

MacbookAir owncloud 設定修正

ubuntu での修正ができたので
次に MacbookAir のクライアントアプリの設定を変えます

最初に owncloud のアイコンをクリックします

スクリーンショット 2016-05-07 14.48.24

次に設定をクリックします

スクリーンショット 2016-05-07 14.50.24

ダイアログがでるので、アカウントを修正をクリックします

スクリーンショット 2016-05-07 14.52.33

次にURLを修正します

スクリーンショット 2016-05-07 14.58.41

HTTPS対応でない場合、警告がでますが
ローカルですので今回は
HTTP経由で再度行うを選択します

スクリーンショット 2016-05-07 14.59.24

そしてログインアカウントを入力します

スクリーンショット 2016-05-07 14.59.39

同期するフォルダを設定し次へ進みます

スクリーンショット 2016-05-07 15.00.02

セットアップが完了したら
ブラウザかフォルダ、お好きなほうで開いて設定は完了です

スクリーンショット 2016-05-07 15.00.41

owncloud のURL変更

引っ越しに伴い、使用するネットワーク環境が
Y!mobile になりました

このため、いままでサーバーで動かしていた ubuntu のIPアドレスも変更になりました

その結果、いままでのURLではアクセスできないため
設定ファイルを書き換えることになりました

owncloud は
/var/www/
の下へ配置していたため

sudo vim /var/www/owncloud/config/config.php

で設定ファイルを開き

8行目のIPアドレス部分を書き換えました

0 => '192.168.128.54',

なお、この配列を追記すればマルチドメインも可能のようです

次に11行目のURLも変更します

'overwrite.cli.url' => 'http://192.168.128.54/owncloud',

設定変更を保存し

このままURLにアクセスすると
メンテナンス中というメッセージがでます

owncloud

sudo -u www-data php /var/www/owncloud/occ upgrade

を実行し、apache2 を

sudo service apache2 restart 

で再起動したものの変わらないため
再度設定ファイルをみたところ

20行目が

'maintenance' => true,

となっていたため

 'maintenance' => false,

と変更することで無事にアクセスできました

次は MacBookAir のクライアントアプリの設定を変更していこうと思います

heroku の環境変数をローカル環境でデブロイするコマンド foreman

heroku の環境変数をローカル環境でデブロイするコマンド foreman

まず、heroku にアップしたアプリのあるディレクトリに移動します

cd heroku/mymemo

環境変数はheroku のアプリについては

heroku config

で見ることができます

ローカル環境にういては
.env というファイルを作成し
ここへローカル環境での値を設定することになります

vim .env

内容は

mykey=mylocalvalue

とします

これで
ENV で mykey を呼び出すと
mylocalvalue を引っ張ってくるようになります

注意点として実行するときに
Procfile を実行することになるので注意
これは
rails server ではなく
Heroku Toolbelt にある
foreman を使うことになります

しかし ubuntu 14.04 の場合
コマンドがみつからないと出たので
foreman をインストールします

gem install foreman

これでインストールできたので

foreman start

を実行します

注意点としては、動作のログにあるように
ポート5000番で動作するので
動作確認するときには

http://localhost:5000/memos
というようになります

これで

vim app/views/memos/index.html.erb 

で編集した

<%= ENV['mykey'] %>

の部分に
mylocalvalue
と表示されるようになります

heroku14

ちなみに、本番環境につかわず
ローカル環境で検証するときに使うものは
.env に書き込み、

foreman start 

で実行するようになるので
本番環境に含めないように gitgnore に設定を書くようにします

 vim .gitignore 

でファイルを開き
最終行に

.env

を追記します

なお、heroku で設定した環境変数については
heroku にログインして
ダッシュボードで確認することもできます

herokuにログインしたら
Personal apps をクリックし
アプリをクリックします

heroku15

次に
Setting をクリックし
Reveal Config Vars をクリックします

これで設定したheroku の環境変数などを
みることができます

heroku16

heroku の環境変数の管理

heroku の環境変数の管理

heroku では環境により異なる値は
ソースに書くのではなく
環境変数で保存するようにする

DBホスト名とかAPIキーなどなど
環境変数をセットするには

cd /heroku/mymemo/

でローカルのアプリに移動して

heroku config:set キー名= 値

を実行

今回なら

heroku config:set mykey=myvalue

とすることで
mey に myvalue という値を設定できます

セットした値は取得することもできるので

heroku config:get mykey

というように
heroku config:get キー名
[/shell]
で取得可能です

ちなみに環境変数一覧の確認は

heroku config

とすると一覧が表示されます

なお、間違えて設定して削除したいというときには

heroku config:unset キー名

とすればOKです

今回なら

heroku config:unset mykey

これで確認のため

heroku config

とすると消えているのが確認できます

再度
heroku config:set で環境変数を追加して
これを View で使うことにします

vim app/views/memos/index.html.erb 

でファイルを開き
セットしたい場所に

<%= ENV['mykey'] %>

とすれば
環境変数の myvalue が表示されます

構文は

<%= ENV['環境変数のキー名'] %>

となります

後々web API などを使うときに使いそうです

次に設定を変えたので
heroku に送るため git で管理します

git add .

で登録

git commit -m "mykey added"

でコミット

git push heroku master

で heroku に送信します

これでブラウザで確認すると
myvalue の値がでているのがわかります

heroku13

ただし、heroku はでるけど
ローカルはでないので、このあたりの設定をする必要があります

heroku でのアプリの更新とリリース

heroku でのアプリの更新とリリース

アプリを更新し heroku に更新してみます

まずは ローカルのディレクトリに移動します

cd heroku/mymemo/

次に view を変更します


 vim app/views/memos/index.html.erb 

でファイルを開き

<p>hello world</p>

を追記して保存

次に動作確認のため

rails s

で変更されているのを確認

heroku10

これで動作確認できたら heroku に反映させます

これは git で管理すればOKです

まず変更を登録します

git add .

次に commit して -m オプションでコメントをつけます

 git commit -m "add hello world"

そして push して heroku に送ります

git push heroku master 

これで ブラウザで heroku 側にアクセスしても
反映されているのがわかります

heroku11

なお heroku に git で送るときに
自動で設定してくれるのでとても楽です

実際には push するたびに heroku側で設定をしてくれていて
ruby の検出や Slug 作成
Dyno への展開が行われています

そして push するたびに
リリースというのが作られていて
リリース一覧は

 heroku releases

とすることで見ることができます

私の環境だと

=== shrouded-chamber-59024 Releases
v10  Deploy 5e71713        snowpoollovely@gmail.com  2016/04/23 07:20:19 +0900 (~ 5m ago)
v9   Attach HEROKU_POSTG…  snowpoollovely@gmail.com  2016/04/17 11:00:35 +0900
v8   Deploy 44eb01d        snowpoollovely@gmail.com  2016/04/17 10:57:12 +0900
v7   Attach HEROKU_POSTG…  snowpoollovely@gmail.com  2016/04/17 10:45:41 +0900
v6   Attach HEROKU_POSTG…  snowpoollovely@gmail.com  2016/04/17 10:19:29 +0900
v5   Deploy 0b51092        snowpoollovely@gmail.com  2016/04/17 10:14:30 +0900
v4   Attach DATABASE res…  snowpoollovely@gmail.com  2016/04/17 10:14:30 +0900
v3   Set LANG, RACK_ENV,…  snowpoollovely@gmail.com  2016/04/17 10:14:29 +0900
v2   Enable Logplex        snowpoollovely@gmail.com  2016/04/16 01:16:07 +0900
v1   Initial release       snowpoollovely@gmail.com  2016/04/16 01:16:07 +0900

となります

見方ですが
最初の v10 とかはバージョン番号

Deploy の後は git のcommit のハッシュ
となります

ちなみに、最大のメリットは
1つ前に戻したりできること

1つ前に戻すなら

heroku releases:rollback

とすると1つ前に戻ります

heroku12

ちなみにバージョン管理のgit を使っているので
v10 などバージョン指定で戻すことも可能です

heroku releases:rollback v10

というようにすれば、指定したバージョンに戻すことができます

One-off Dynos で heroku でコマンド実行

One-off Dynos で heroku でコマンド実行

heroku run コマンドは
今走っているアプリに対してコマンドを使うときに実行するコマンドになる

これは
One-off Dyno を一時的に立ち上げ
それをアプリに対しコマンドを発行というもの

アプリにコマンドラインでアクセスするのなら
cd コマンドで heroku で動かす rails アプリのディレクトリに移動して

heroku run bash

とすればアクセス可能

アクセスすると端末に$が表示され
linux 端末のようにコマンドを使っての操作が可能になる

なお、端末から抜けるには

exit

で抜けることができる

なお rails アプリの場合

heroku run rails console

でrails console でのアクセスによる操作が可能

heroku アプリの操作コマンド

heroku アプリの操作コマンド

heroku にアップしたアプリは
heroku コマンドでいじれます

heroku ps コマンドで
linux の ps コマンドのようにプロセスをみることができます

単純に

heroku ps

とするだけでOK

まず

cd heroku/mymemo

で作成したアプリに移動し

heroku ps

とすると
実行結果に

Free quota left: 17h 26m
=== web (Free): bundle exec rails server -p $PORT (1)
web.1: idle 2016/04/19 09:58:50 +0900 (~ 20h ago)

と表示されます

ちなみに Dyno を2つにすることもコマンドから可能

ただし、Dyno を2つにすると課金対象になりますので
注意

 heroku ps:scale web=2

とすればできるけど
アカウントでクレジット情報がない場合

Scaling dynos... !!!
 ▸    Cannot update to more than 1 Free size dynos per process type.

とでて増設はできないようです

これは自分でサービスを展開するときに使いそうです
AWSも同じで使う用途により増設可能なのがメリット

そして heroku のアプリログをみるには
heroku logs
を使います

linux のログをみるかんじだけど
デフォルトだと1500行までしか保存されないようです

なおリアルタイムでログを監視するのなら

heroku logs --tails

とすればリアルタイムモードになります

この状態でお試しで
https://shrouded-chamber-59024.herokuapp.com/memos/
にアクセスするとログが増えました

今回のログは

2016-04-19T21:59:32.585938+00:00 heroku[router]: at=info method=GET path="/memos/" host=shrouded-chamber-59024.herokuapp.com request_id=2336dcaa-8365-4b15-9890-2da17941cd9b fwd="126.251.50.125" dyno=web.1 connect=3ms service=9ms status=200 bytes=1883
2016-04-19T21:59:32.577420+00:00 app[web.1]: Started GET "/memos/" for 126.251.50.125 at 2016-04-19 21:59:32 +0000
2016-04-19T21:59:32.579325+00:00 app[web.1]: Processing by MemosController#index as HTML
2016-04-19T21:59:32.581406+00:00 app[web.1]:   Memo Load (0.9ms)  SELECT "memos".* FROM "memos"
2016-04-19T21:59:32.582225+00:00 app[web.1]:   Rendered memos/index.html.erb within layouts/application (2.1ms)
2016-04-19T21:59:32.582902+00:00 app[web.1]: Completed 200 OK in 4ms (Views: 2.1ms | ActiveRecord: 0.9ms)

というかんじです

次に管理するときに使うメンテナンスモードについて
これは

herku maintenance:on 

とするとメンテナンスモードになります

この状態でブラウザからアクセスすると
メンテナンス中であることが表示されます

heroku9

メンテ中であるかを調べるには

heroku maintenance

とすることで表示できます

on ならメンテ中です

メンテをオフにするなら

heroku maintenance:off

とすれば解除して稼働状態に戻ります