herokuでスケジューラ(heroku Scheduler)を実行するときのメモ
herokuではcronは直接使用できなくなったため、add-onのheroku schedulerを使いスケジューリングを行う。
※他にもスケジューラーのadd-onはある様。
概要:
– 1ヶ月(750時間)の間は無償。それ以降は有償。
– 起動間隔は粗い(10min / 1hour / 1day 間隔)
– 利用状況の確認が可
https://dashboard.heroku.com/account
– 複数タスクの設定が可
– Scheduled Jobsのh設定は日本は9h加算すること ※hour指定のみ
etc
※公式ページ
https://devcenter.heroku.com/articles/scheduler#defining-tasks
heroku scheduler導入
プロジェクト直下で[heroku addons:add scheduler:standard]実行
$ heroku addons:add scheduler:standard Adding scheduler:standard on tw-follow... done, v6 (free) This add-on consumes dyno hours, which could impact your monthly bill. To learn more: http://devcenter.heroku.com/addons_with_dyno_hour_usage To manage scheduled jobs run: heroku addons:open scheduler Use `heroku addons:docs scheduler` to view documentation.
※heroku login を行い対象のプロジェクト内で実行すること
phpパス指定
$ heroku config:set LD_LIBRARY_PATH=/app/php/ext:/app/apache/lib Setting config vars and restarting tw-follow... done, v7 LD_LIBRARY_PATH: /app/php/ext:/app/apache/lib
※参考サイト
http://web-memo-jp.blogspot.jp/2013/01/herokuphplingrbot.html
実行タスクの登録
下記スケジューラ設定ページより実行ファイルを指定する
例)test.phpを実行する場合
$ php test.php
HerokuへFuelPHP環境を構築する手順をメモ
FuelPHP Advent Calendar 2013の23日目です。昨日は、@egmcさんの「FuelPHPがOpAuth対応になったのでfacebookログインをしてみる」でした。
以前まではサービスをリリースするときにはレンタルサーバを借りてサービスをデプロイすることが一般的でしたが、最近はPaaSと呼ばれるアプリケーションの動作環境をプラットフォーム上で一式提供されている形態を使う事が増えてきています。有名どころではAmazonのAWSやMicrosoftのWindows Azureなどがあります。
PaaSサービスのそれぞれの違いはスペック・料金・機能などがあり、レンタルサーバと比較した場合のPaaSのメリットはスケールアップ、アウトが簡単に行えることです。
サービスのユーザ数が大幅にふえてサーバに負荷がかかるようになった場合や、予想してた以上にユーザ数が延びなかった場合などに役立ちます。
個人的にはHerokuはRailsのアプリをテスト的に公開したくなったときなどに使ったりしています。もともとHeroku自体はrubyの環境用としてスタートしていて現在はjava,node.js,ruby,phthonなどをサポートしています。
現在Herokuではphpは非サポートとなっていますがphpも動作します。
Herokuコマンド参考ページ:http://d.hatena.ne.jp/xyk/20101102
————————————————————————————————–
試みたのは、下記サイトに記載されているbuildpackを使用してサーバはnginxを使用するつもりでしたが、
nginxのconfigファイルの設定がFuelPHPのプロジェクトに合わせるとなぜかうまくページが表示されず原因不明だったので今回は見送ることにします。すみません。
http://tkyk.name/blog/2012/11/28/php-on-heroku/
————————————————————————————————–
1.Herokuアカウントを取得
公式サイトより「login」押下して「signup」よりアカウントを取得します
公式サイト:https://www.heroku.com/
2.heroku toolbelt(ターミナルからherokuを操作するツール)をインストール
下記サイトよりtoolbeltを環境に合わせてインストールします
3.SSH公開鍵の設定
(1)ターミナルを立ち上げてloginコマンドを実行
$ heroku login Enter your Heroku credentials. Email: [1で作成したアカウントを入力] Password (typing will be hidden): [1で作成したアカウントのパスワードを入力] Authentication successful.
「Authentication successful.」でアカウント認証成功 ※「Authentication failed.」は失敗
(2)公開鍵をジェネレート
Could not find an existing public key. Would you like to generate one? [Yn] [Yを指定してエンター] Generating new SSH public key. Uploading SSH public key /Users/(PCユーザー名)/.ssh/id_rsa.pub Authentication successful.
「Authentication successful.」で成功
初期ログイン時に公開鍵を生成しなかった場合は手動で「ssh-keygen」で作成しherokuに公開鍵を設定する必要があります
ssh-keygenについては前記事参照http://to-developer.com/blog/?p=563
Herokuに公開鍵を設定する
$ heroku keys:add
※Herokuのgui画面から設定も可
4.fuelphpプロジェクトを生成
(1)アプリケーションを作成
$ oil create [アプリ名を入力]
(2)index.php作成
Herokuはrootディレクトリにindex.phpがないと動作しないため、今のところ空のindex.phpファイルを生成しときます
$ touch index.php
(3).htaccessを作成(fuelphpのディレクトリ構成に合わせてリダイレクト処理を入れる)
fuelphpディレクトリ構成のpublic/以下にindex.phpのアクセスをリダイレクト
参考サイト:http://blog.livedoor.jp/erscape/archives/6937126.html
$ vim .htaccess
.htaccessの設定情報
RewriteEngine on RewriteBase / RewriteRule ^(.+)-info\.php$ $1-info.php [L] RewriteCond %{SCRIPT_FILENAME} !^/app/www/public/ RewriteRule ^(.*)$ public/$1 [L]
(4)不要ファイル削除(サブモジュールなどはaddできないので削除)
$ rm -rf .git .gitmodules $ rm *.md $ rm -rf docs // 下記も不要なため削除 $ rm -fr fuel/core/ $ rm -fr fuel/packages/auth/ $ rm -fr fuel/packages/email/ $ rm -fr fuel/packages/oil/ $ rm -fr fuel/packages/orm/ $ rm -fr fuel/packages/parser/
※サブモジュールをaddする方法(git submodule addコマンド)
例)opauthサブモジュールの場合
$ git submodule add git://github.com/andreoav/fuel-opauth.git fuel/packages/opauth
5.ローカルリポジトリにコミット
$ cd [アプリ名を入力] $ git init $ git commit -am "initial commit"
6.buildpackをherokuへインストール
$ heroku create --buildpack https://github.com/winglian/heroku-buildpack-php [アプリ名を入力]
※アプリ名はここで入れなくてもデフォルトの名前が付けられる。gui画面などから確認・変更が可能
buildpack:https://github.com/winglian/heroku-buildpack-php
7.herokuのリポジトリへ反映
$ git push heroku master
※アプリが複数存在する場合、Herokuのリモートリポジトリが違いpushできない場合があるので都度確認が必要
※1 リモートリポジトリherokuの設定
$ git remote add heroku [リモートリポジトリ]
※2 リモートリポジトリ確認
$ git remote show
※3 リモートリポジトリ削除
$ git remote rm [リモートリポジトリ]
8.動作確認
$ heroku open
9.mysqlアドオンを入れる
無料版のアドオンを入れる場合も公式サイトからログインを行いクレジットカードの登録が必要です。
ただ無料版の場合は料金が引かれるなど初期費用なども基本ないようです。
mysqlのアドオンはhttps://addons.heroku.com/からsearchボックスに「mysql」と検索すると2013/12時点で4つのアドオンが見つかりました。
Adminium Full fledged admin interface without touching your app code heroku addons:add adminium
Amazon RDS Hook your app up to Amazon’s RDS heroku addons:add amazon_rds
ClearDB MySQL Database The high speed, 100% uptime database for your MySQL powered applications. heroku addons:add cleardb
Xeround Cloud Database αlpha Scalable, highly available, zero-management cloud database for MySQL heroku addons:add xeround
今回は「ClearDB」とする
参考サイト:http://www.ownway.info/Ruby/index.php?heroku%2Fhow%2Fmanagement%2Fdatabase%2Fcleardb
(1)公式サイトよりクレジットカード登録を行う
(2)アドオンをインストール
$ heroku addons:add cleardb:ignite Adding cleardb:ignite on tranquil-cliffs-2547... done, v6 (free) Use `heroku addons:docs cleardb:ignite` to view documentation.
インストール完了
(3)接続情報を確認
$ heroku config === tranquil-cliffs-2547 Config Vars BUILDPACK_URL: https://github.com/winglian/heroku-buildpack-php CLEARDB_DATABASE_URL: mysql://[ユーザ名]:[パスワード]@[ホスト名]/[DB名]?reconnect=true
※CLEARDB_DATABASE_URLに接続文字列が表示
CLEARDB_DATABASE_URL: mysql://[ユーザ名]:[パスワード]@[ホスト名]/[DB名]?reconnect=true
(4)シェル接続方法は?
mysql –host=[ホスト名] –user=[ユーザ名] –password=[パスワード] [DB名]
10.fuelphpプロジェクトからmysqlへ環境変数で接続
$cleardb = parse_url(getenv('CLEARDB_DATABASE_URL')); $conn = new PDO( sprintf("mysql:dbname=%s;host=%s", substr($cleardb['path'], 1), $cleardb['host']), $cleardb['user'], $cleardb['pass'] );
ここまででphp + mysql + apacheのFuelPHPが動作する環境の構築完了です
まとめ
Herokuにやや癖があり使いにくいと思ってしまった事もありましたが、慣れるとここまで行うのに15分程でできるとおもいます。一度環境を作ってしまえばあとの更新作業はすぐにできますね。
他のPaaSはあまり使った事がありませんが、動作確認程度の使用でしたらHerokuでいいと思います。
またHerokuから公式にphpがサポートされれば、もっとアドオン等増えてくるのではないでしょうか。
明日はクリスマスイブですね。いいことありますように!
Vagrant+Chefレシピでphp環境の方法をメモ
仮想マシンを構築するvagrantで仮想環境はvirtualboxのcentosとする
centosのBoxを使ってphp + mysql + apache を構築する
1. virtualbox,vagrantをインストールする
公式サイトから各環境に合わせてダウンロードしインストールを実行
Virtualboxインストール
https://www.virtualbox.org/
Vagrantインストール
http://www.vagrantup.com/
2. vagrantのcentosBoxをインストールする
今回は「Vagrant-Box一覧サイト」内のCentOSのBOXを使用する
Vagrant-Boxesインストール
http://www.vagrantbox.es/
http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20130427.box
3. chefをインストールする
chefは構築環境の設定内容をコードで記述するもの
Chefインストール
http://www.opscode.com/chef/
マック環境:
curl -L https://www.opscode.com/chef/install.sh | sudo bash
インストール確認
gem list
4. knife-soloプラグインをインストールする
cookbook(開発環境を記したもの)の命令をリクエストするためのものがknifeになる
sudo gem install knife-solo
インストール確認
gem list
5. knife-soloの初期設定をする
knife configure
全てデフォルト設定としてエンターを続けて押し終了する
6. 仮想マシンに使用するvagrantを構築する
・仮想マシンに使用するディレクトリを作成する
mkdir [仮想マシンディレクトリ名] cd [仮想マシンディレクトリ名] vagrant init [boxの名前]
・vagrantファイルの編集
プライベートネットワークを設定しローカル環境からアクセスできるようにする
IPアドレスは初期状態で「192.168.33.10」になっているが変更しても良い
この設定でローカルから仮想環境にipアドレスでアクセスが可能になる
- #config.vm.network :private_network, ip: "192.168.33.10" + config.vm.network :private_network, ip: "192.168.33.10"
7. 仮想マシンを立ち上げる
vagrant up
8. 仮想マシンの状態確認
vagrant status
「default running (virtualbox)」
が表示されればOK
9. sshのエイリアス作成
vagrant ssh-config --host [sshエイリアス名] >> ~/.ssh/config
仮想マシンアクセス方法
vagrant ssh
又は指定したエイリアス名
ssh [エイリアス名]
10. chefのリポジトリを作成する(ローカル側)
knife solo init [リポジトリ名]
リポジトリの中にディレクトリが構成される
※ここではsite-cookbook,nodesディレクトリのみ使用する
11. 仮想マシンをchef対応にする
cd [リポジトリ名] knife solo prepare [sshエイリアス名]
12. cookbookを作成する
cookbookに構築する環境の設定コードを記述することで仮想環境が指定した環境になる
knife cookbook create [cookbookの名前] -o site_cookbooks/
13. cookbookに構築する環境の設定コードを記述する
[リポジトリ名]\[cookbookの名前]\recipes\default.rbファイル編集
# # Cookbook Name:: php # Recipe:: default # # Copyright 2013, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # service "iptables" do action [:stop, :disable] end %w{php php-common php-mbstring php-xml php-devel php-process php-cli php-pear php-mysql mysql-server}.each do |p| package p do action :install end end # apacheのインストール CentOSの場合 package "httpd" do action :install end # apacheの起動 CentOSの場合 service "httpd" do action [:start, :enable] end template "/var/www/html/index.html" do source "index.html.erb" mode 0644 end
完成例 ※ 「PHP + MYSQL + APACHE」環境
https://github.com/y-matsumoto/php-mysql-apache-vagrant-environment
14. 実行するrecipe(cookbook)を指定する
[リポジトリ名]\nodes\[sshエイリアス名].jsonファイル編集
{ "run_list":[ "recipe[[cookbookの名前]]" ] }
15. 完成したcookbookをvagrant仮想環境へ反映させる
knife solo cook [sshエイリアス名]
16. Webサーバ(apatch)テスト
ブラウザでhttp://192.168.33.10/ へアクセス
[リポジトリ名]\[cookbookの名前]\template\default\index.html.erbが表示される ※完成例
chef test html test desu
WebAPIで文字列を校正してくれるyahooAPIについてメモ
文章を入力すると文字の入力ミスや言葉の誤用がないか、わかりにくい表記や不適切な表現が使われていないかなどをチェックしてくれる。例えば、「ら抜き」言葉で「食べれる」はこのAPIを通すと「食べられる」に直されて結果が返ってくる。ただ1時間ぐらい使用した感じでは、まだこのAPIは使えない感じがする。文脈まではみれていないので、逆によけいにおかしくなるような結果を返す場合が多々ある。ある程度はAPIのパラメーターでフィルターをかけるなどできるが、まだまだという印象。
校正支援APIの公式サイト
http://developer.yahoo.co.jp/webapi/jlp/kousei/v1/kousei.html
まずはAPIを使用するためyahooアプリケーションIDを用意するを下記サイトから取得する。アプリケーション登録からアプリケーション名など必要項目を入力して登録するとIDが発行される。
※yahooアカウントでログインする必要がある
http://developer.yahoo.co.jp/start/
そしてpostで更新する方法は下記※getでも良いが文字数の制限などがある
<?php // Yahoo!アプリケーションID $yappid = "[ここに発行されたIDを指定する]"; // ここに校正対象の文字列を設定する $text = "こんにちわ。朝ご飯を食べれるか心配"; $url="http://jlp.yahooapis.jp/KouseiService/V1/kousei"; $params = array( 'sentence' => $text ); $ch = curl_init($url); curl_setopt_array($ch, array( CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_USERAGENT => "Yahoo AppID: $yappid", CURLOPT_POSTFIELDS => http_build_query($params), )); $result = curl_exec($ch); curl_close($ch); function h($str) { return htmlspecialchars($str, ENT_QUOTES); } ?> <!doctype html> <html> <head> <meta charset="UTF-8"> <title>校正支援</title> </head> <body> <h2>校正支援結果</h2> <?php echo htmlspecialchars( print_r(new SimpleXMLElement($result), true) ) ?> </body> </html>
これで完了
code golfや学校課題でメジャーなfizzbuzz問題を考えてみた事をメモ
javaで考えようとしたが、classやmainが必須のためcodegolfは向いていないのでphpで考える。
調べると一番codegolfのストロークが短くすむ言語はperlになっている。ruby,javascriptもいいらしい。さすがにC#,javaは入ってない。
fizzbuzz問題とは
1から100までの数を出力するプログラム。
3の倍数「fizz」、5の倍数「buzz」と出力し、3と5両方の倍数は「fizzbuzz」と出力する
一応頑張って限界まで考えたコード(82バイト)
<?for($i=0;@$i++<100;)echo($i%3&&$i%5?$i:($i%3?"":"fizz").($i%5?"":"buzz"))."¥n";
ネットから最短コードと言われている59バイトのfizzbuzz
<?for(;$i++<100;)echo$i%3?$i%5?$i:"":Fizz,$i%5?"":Buzz," ";
これはオタクすぎて考えつかない。
ただ、関数を使う事も許されているので、標準ライブラリでメソッド名1文字のfizzbuzzメソッドができたらもっと短くなる。
codegolfの問題を考えるうちに日本語で文章を書くときも同様に短めにかきたくなってきた。
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年12月 月 火 水 木 金 土 日 « 5月 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 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ