2014年9月29日月曜日

Windows でDockerを使う










 Windows上でDockerを使ってみたかったので、なんとなくメモ。

Boot2DockerのWindows用のパッケージがあったので、ダウンロードしてインストール。
VirtualBoxも併せてインストールされる。


windows用Boot2Docker
https://github.com/boot2docker/windows-installer/releases




Dockerの仕組み上Windowsでは成り立たないので、Boot2DockerはVirtualBoxのVMで構築したDocker専用(?)のLinux環境と連携する仕組みをとっている模様。

使い方はほぼLinuxで使うのと変わらないけど、DockerコンテナはあくまでVM上のDockerで動いている。
Nginxのイメージをpullして、-p 80:80で、ポートマッピングさせても、転送するのはVMのIPアドレスへのアクセスに対してだけ。






Windows上のブラウザから、http://localhost:80/ でアクセスしてもNG。
VirtualBoxのゲストOSのIPアドレスを指定しないと表示されない。


あとWindowsのファイルシステムを共有するのもすんなりいかない。
試してないけど、やりかたとしては、2つくらいありそう
時間ができたら試してみる

1)ファイル共有用に、Sambaのコンテナを走らせて、Boot2DockerとWindowsの両方に共有させる
   
2) VirtualBoxの共有フォルダ機能を利用してBoot2Dockerの方にWindowのフォルダをマウントさせる
※Boot2Dockerの標準イメージだと、VirtualBoxの共有フォルダをマウントできないみたいで、別のイメージを使うか、いろいろと手間をかけないといけない模様

どちらかの方法でBoot2Dockerに共有させてから、-vオプションで指定する。

参考ページ
http://www.infoscoop.org/blogjp/2014/09/24/docker_on_windows/
http://blog.monoweb.info/blog/2014/07/25/docker/



2014年9月15日月曜日

Zend_Controller_RequestからAccept-Languageの取得する方法

ブラウザから送信されるAccept-Languageを取得する必要があったので、なんとなくメモ


PHPのグローバル変数から取得する場合)
$_SERVER["HTTP_ACCEPT_LANGUAGE"]

取得例: ja,en-us;q=0.7,en;q=0.3

Zend_Controller_Requestから取得する場合)

androidでBluetooth SPP通信

Androidからの接続が詳しそうなのでとりあえずめも。

http://www.bright-sys.co.jp/blog/android-using-bluetooth-spp/
http://d.hatena.ne.jp/propella/20120403/p1


 iOSからBluetooth SPPで制御をしているようなので、メモ
http://todotani.cocolog-nifty.com/blog/2013/02/iphonembedbulet.html


http://reinforce-lab.github.com/blog/2013/01/21/ios-ble-introduction/



http://s2jp.com/apps/bluetooth-terminal/

http://www.slideshare.net/taiko19xx/gamekitbluetooth

http://www.atmarkit.co.jp/fsmart/articles/ios_sensor04/01.html
<?php
function myloader($classname) {
    return @include str_replace('_', DIRECTORY_SEPARATOR, $classname).'.php';
}
spl_autoload_register('myloader');

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application'));
// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    APPLICATION_PATH."/models",
    get_include_path(),
)));
// 年月日文字列の定義(ログファイル名に使用)
define('DATESTAMP', Date('Y-m-d'));
//require_once 'Zend/Loader/Autoloader.php';
$al=  Zend_Loader_Autoloader::getInstance();
$al->setFallbackAutoloader(true);
$al->registerNamespace('Oni_');


$cachefile = APPLICATION_PATH . '/../data/cache/plugins.php';
if (file_exists($cachefile)) {
    include_once $cachefile;
}
Zend_Loader_PluginLoader::setIncludeFileCache($cachefile);

$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

$application->bootstrap()
            ->run();
Windows環境でNginx+FastCGIの環境を構築したかったので、なんとなくメモ


1.Nginx download
http://nginx.org/en/download.html

スタート:nginx.exe
ストップ:nginx.exe -s stop
リロード:nginx.exe -s reload

2.PHP download

http://windows.php.net/download/

3.PHP環境構築

php.ini-productionからphp.iniを作成
php.iniを編集

    extension_dir = "ext" を有効化する
    extensionで必要なDLLを有効にするmb_stringは必ず入れる

    log_errors=Onにする
    timezoneを設定する
    date.timezone =Asia/Tokyo


4 NginxのFastcgiの設定
nginx.confに以下を追加

--------------------ここから--------------------
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME           $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
 --------------------ここまで--------------------
(参考サイト)
http://server-setting.info/blog/windows-amp-nginx-install.html
http://himaxoff.blog111.fc2.com/blog-entry-63.html
http://server-setting.info/centos/php-fpm-php-cgi.html

5.PHP-FPMの代わりにPHP-CGIの起動
php-cgi.exe
スタート:c:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\nginx\php\php.ini
ストップ:taskkill /f /IM php-cgi.exe

6.NginxとPHP-CGIの起動スクリプト
start-nginx.bat
--------------------ここから--------------------
@ECHO OFF
cd c:\nginx
start c:\nginx\nginx.exe
start /b c:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\nginx\php\php.ini
ping 127.0.0.1 -n 1>NUL
echo Starting nginx
echo .
echo .
echo .
ping 127.0.0.1 >NUL
EXIT
--------------------ここまで--------------------
stop-nginx.bat
--------------------ここから--------------------
@ECHO OFF
cd c:\nginx
c:\nginx\nginx.exe -s stop
taskkill /f /IM php-cgi.exe
EXIT
--------------------ここまで--------------------