<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Laravel アーカイブ - Sheltie&#039;s Garage</title>
	<atom:link href="https://sheltie-garage.xyz/category/%e6%8a%80%e8%a1%93%e7%b3%bb/laravel/feed/" rel="self" type="application/rss+xml" />
	<link>https://sheltie-garage.xyz/category/技術系/laravel/</link>
	<description>趣味に生きる</description>
	<lastBuildDate>Thu, 28 Jan 2021 12:02:58 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://sheltie-garage.xyz/wp-content/uploads/2018/04/cropped-L927xrpq-32x32.jpg</url>
	<title>Laravel アーカイブ - Sheltie&#039;s Garage</title>
	<link>https://sheltie-garage.xyz/category/技術系/laravel/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>DockerでLiteSpeed Webサーバを構築してLaravelを実行する</title>
		<link>https://sheltie-garage.xyz/2020/03/docker%e3%81%a7litespeed-web%e3%82%b5%e3%83%bc%e3%83%90%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%81%a6laravel%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 15 Mar 2020 13:04:58 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1958</guid>

					<description><![CDATA[<p>新しいWebサービスを開発したいと思い、今回はWebサーバをLiteSpeedでやってみることにしました。が、新しいことはおおよそハマるので、結局調査開始からLaravel稼働まで1週間ほど費やしてしまいした・・・ Do [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2020/03/docker%e3%81%a7litespeed-web%e3%82%b5%e3%83%bc%e3%83%90%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%81%a6laravel%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/">DockerでLiteSpeed Webサーバを構築してLaravelを実行する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>新しいWebサービスを開発したいと思い、今回はWebサーバをLiteSpeedでやってみることにしました。<br>が、新しいことはおおよそハマるので、結局調査開始からLaravel稼働まで1週間ほど費やしてしまいした・・・</p>



<h2 class="wp-block-heading">Dockerfileとdocker-composeについて</h2>



<p>Docker Composeを利用して仮想サーバを管理します。<br>どちらのファイルも以下の<a href="https://github.com/sheltie-fusafusa/litespeed-laravel-docker" target="_blank" rel="noreferrer noopener" aria-label="GitHub (opens in a new tab)">GitHub</a>から取得可能です。</p>



<p>今回のディレクトリ構成は、以下のような感じです。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="280" height="104" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-24.png" alt="" class="wp-image-1985"/></figure>



<h2 class="wp-block-heading">Docker buildからlaravelを動かすまで</h2>



<h4 class="wp-block-heading">イメージのビルド</h4>



<p>docker-compose.ymlファイルがあるディレクトリへ移動し、以下のコマンドでイメージのビルト、コンテナの起動を行います。</p>



<pre class="crayon-plain-tag">$ docker-compose build
$ docker-compose up -d</pre>



<h4 class="wp-block-heading">litespeed管理画面へのログイン</h4>



<p>コンテナが無事に起動したら、コンテナにログインし、初期パスワードを確認します。</p>



<pre class="crayon-plain-tag">$ winpty docker-compose exec web bash
[root@6c71de6daed0 lsws]# cat /usr/local/lsws/adminpasswd</pre>



<p>初期パスワードを確認したら、以下のURLから管理画面にログインします。<br><a href="https://localhost:7080/login.php">https://localhost:7080/login.php</a><br><br>初回アクセス時、SSL証明書の警告が表示されますが、自身の開発サーバなので構わずアクセスします。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="658" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-1-1-1024x658.png" alt="" class="wp-image-1960" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-1-1-1024x658.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-1-1-300x193.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-1-1-768x494.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-1-1.png 1428w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">php7.4のインストール、バーチャルホスト、リスナーの設定</h4>



<p>デフォルトでphp7.3が入っていましたが、せっかくなのでphp7.4のバイナリをインストールします。<br>Dockerfileでは、php7.4バイナリのインストールに必要なパッケージも同時にインストールしています。<br>具体的な手順は、下記画像を参照してください。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="446" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-2-1-1024x446.png" alt="" class="wp-image-1962" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-2-1-1024x446.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-2-1-300x131.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-2-1-768x335.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-2-1.png 1438w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-3-1-1024x528.png" alt="" class="wp-image-1963" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-3-1-1024x528.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-3-1-300x155.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-3-1-768x396.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-3-1.png 1438w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="483" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-4-1024x483.png" alt="" class="wp-image-1964" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-4-1024x483.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-4-300x141.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-4-768x362.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-4.png 1483w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="473" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-5-1024x473.png" alt="" class="wp-image-1965" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-5-1024x473.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-5-300x139.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-5-768x355.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-5.png 1482w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>phpのコンパイルシェルはセキュリティの関係でターミナルから実行してくれとのこと。<br>といっても、親切に実行シェルがフルパスで書いてあるので、コンテナに接続後、コピペしてエンターを押せばよいだけです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="710" height="217" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-6.png" alt="" class="wp-image-1968" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-6.png 710w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-6-300x92.png 300w" sizes="auto, (max-width: 710px) 100vw, 710px" /></figure>



<p>上記表示になればコンパイル終了です。画面的にはあと1ステップ残ってそうですが、作業はこれで終わりです。</p>



<h4 class="wp-block-heading">バーチャルホストの作成</h4>



<p>laravel実行用にバーチャルホストを作成します。下記画像を参照してください。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="345" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-10-1024x345.png" alt="" class="wp-image-1969" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-10-1024x345.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-10-300x101.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-10-768x259.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-10.png 1494w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="585" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-11-1024x585.png" alt="" class="wp-image-1970" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-11-1024x585.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-11-300x171.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-11-768x438.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-11.png 1482w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>画面に映っている部分以外はすべてデフォルトです</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="669" height="74" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-12.png" alt="" class="wp-image-1971" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-12.png 669w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-12-300x33.png 300w" sizes="auto, (max-width: 669px) 100vw, 669px" /></figure>



<p>保存時にファイルがないエラーが出ますが、CLICK TO CREATE をクリックしファイル作成後に再度保存すれば大丈夫です。</p>



<h4 class="wp-block-heading">リスナーの作成</h4>



<p>ユーザーからのアクセスを受け付けるためのリスナーを作成します。設定は画像をば・・・</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="329" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-13-1024x329.png" alt="" class="wp-image-1972" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-13-1024x329.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-13-300x96.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-13-768x247.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-13.png 1501w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="473" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-14-1024x473.png" alt="" class="wp-image-1973" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-14-1024x473.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-14-300x139.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-14-768x355.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-14.png 1498w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="256" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-15-1024x256.png" alt="" class="wp-image-1974" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-15-1024x256.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-15-300x75.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-15-768x192.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-15.png 1499w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="428" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-16-1024x428.png" alt="" class="wp-image-1975" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-16-1024x428.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-16-300x125.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-16-768x321.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-16.png 1502w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="379" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-17-1024x379.png" alt="" class="wp-image-1976" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-17-1024x379.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-17-300x111.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-17-768x284.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-17.png 1492w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">バーチャルホストで利用するphpバージョンを指定</h4>



<p>デフォルトでphp7.4を利用するように設定を変更します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="296" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-18-1024x296.png" alt="" class="wp-image-1978" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-18-1024x296.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-18-300x87.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-18-768x222.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-18.png 1493w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="455" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-19-1024x455.png" alt="" class="wp-image-1979" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-19-1024x455.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-19-300x133.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-19-768x342.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-19.png 1482w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="167" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-20-1024x167.png" alt="" class="wp-image-1980" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-20-1024x167.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-20-300x49.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-20-768x125.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-20.png 1260w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>設定を保存し、以下のURLにアクセス。<br><a rel="noreferrer noopener" aria-label="http://localhost:8088/ (opens in a new tab)" href="http://localhost:8088/" target="_blank">http://localhost:8088/</a><br><br>Test PHPでバージョンが7.4.3になっていることが確認できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="498" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-21-1024x498.png" alt="" class="wp-image-1981" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-21-1024x498.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-21-300x146.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-21-768x374.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-21.png 1169w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">Laravelを動かす</h4>



<p>設定ファイル系をlaravel用に書き換えます。<br>(GUIからの変更方法がわからなかったので、ターミナルから直接編集しました)</p>



<p>Example バーチャルホストを参考に、以下の設定を挿入<br>編集ファイルは「/usr/local/lsws/conf/vhosts/laravel/vhconf.conf」です。</p>



<pre class="crayon-plain-tag">docRoot $VH_ROOT/public

context / {
  allowBrowse 1
  location $DOC_ROOT/
  rewrite  {
    RewriteFile .htaccess
  }
}</pre>



<p>.htaccessにlaravel公式のリライト設定を挿入します。<br>ファイルの場所は「/var/www/laravel/public/.htaccess」ですね。<br>litespeedはapacheのリライトと互換性があるとのことで、apache用の設定がそのまま使えます。</p>



<pre class="crayon-plain-tag">Options +FollowSymLinks -Indexes
RewriteEngine On

RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]</pre>



<p>ファイル設定後はGUIから再起動を行います。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="176" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-22-1024x176.png" alt="" class="wp-image-1983" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-22-1024x176.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-22-300x52.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-22-768x132.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-22.png 1476w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>後は、laravelプロジェクトを作成し、ホスト側のlaravelアプリケーションディレクトリにファイルを設置します。<br>今回はlaravel 配下に設置すればOK</p>



<h2 class="wp-block-heading">やっとLaravelのデフォルト画面が拝めます</h2>



<p>以上の設定でlitespeedでlaravelアプリが動くはずです。以下のURLにアクセスし、画面が表示されるか確認します。<br><a href="http://localhost:8080/" target="_blank" rel="noreferrer noopener" aria-label="http://localhost:8080/ (opens in a new tab)">http://localhost:8080/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1015" height="645" src="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-23.png" alt="" class="wp-image-1984" srcset="https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-23.png 1015w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-23-300x191.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2020/03/Image-23-768x488.png 768w" sizes="auto, (max-width: 1015px) 100vw, 1015px" /></figure>



<p>やっとlaravelアプリが動きました！　隙間時間とはいえ、調査に1週間、この記事を書くのに3時間・・・長かった。</p>



<h2 class="wp-block-heading">でも、使うかどうかはわかりません</h2>



<p>まだ解決していない問題として、「サーバ設定の永続化」が残っています。<br>Dockerはご存じの通り、コンテナを破棄すれば内部のデータは消えてしまいます。そのためにVolumeなどを設定しデータの永続化を行いますが、litespeedはどこを永続化すればよいのかいまだにわからず・・・<br>今回行った設定も、コンテナを破棄したときに一緒に消えてしまうのです。<br>もうしばらく調べて、わからなかったらnginx続投かな・・・</p>



<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=monodon-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4798060992&amp;linkId=768c617da9f180169a6702b1ce6d0354" frameborder="0"></iframe>
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=monodon-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4802611846&amp;linkId=ddcd997500705d738b3be6d885ce2a09" frameborder="0">
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=monodon-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=1492041211&#038;linkId=8c266310c300e30a16f7d926cac2b2ae"></iframe>
<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=monodon-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=4839967679&amp;linkId=5c311346d83d901fa6d422b45486e871" frameborder="0"></iframe>



<p></p>
<p>投稿 <a href="https://sheltie-garage.xyz/2020/03/docker%e3%81%a7litespeed-web%e3%82%b5%e3%83%bc%e3%83%90%e3%82%92%e6%a7%8b%e7%af%89%e3%81%97%e3%81%a6laravel%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/">DockerでLiteSpeed Webサーバを構築してLaravelを実行する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ClockWorkを利用してLaravel APIをデバッグする</title>
		<link>https://sheltie-garage.xyz/2019/12/clockwork%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6laravel-api%e3%82%92%e3%83%87%e3%83%90%e3%83%83%e3%82%b0%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 08 Dec 2019 13:22:30 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1829</guid>

					<description><![CDATA[<p>LaravelでAPIを作っています 現在趣味で作っているWebアプリはSPAとして作成しており、LaravelはAjax通信を処理するためのAPIを実装しています。Laravelの場合、DebugBarやdd()などで [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/12/clockwork%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6laravel-api%e3%82%92%e3%83%87%e3%83%90%e3%83%83%e3%82%b0%e3%81%99%e3%82%8b/">ClockWorkを利用してLaravel APIをデバッグする</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">LaravelでAPIを作っています</h3>



<p>現在趣味で作っているWebアプリはSPAとして作成しており、LaravelはAjax通信を処理するためのAPIを実装しています。<br>Laravelの場合、DebugBarやdd()などで簡単に変数の中身を確認できますが、APIとして作成している場合、どちらも値の確認には利用できませんでした。(自分が試した限りでは・・・)</p>



<h3 class="wp-block-heading">そこで、ClockWorkの出番です</h3>



<p>ClockWorkはブラウザの拡張機能と連携してプログラムのパフォーマンスや実行されたSQLクエリの確認、変数の確認などが簡単に行えるためのツールです。<br>以下のサイトを参考にさせていただきました。<br>参考サイト:<br><a rel="noreferrer noopener" aria-label="https://cpoint-lab.co.jp/article/201905/9566/ (opens in a new tab)" href="https://cpoint-lab.co.jp/article/201905/9566/" target="_blank">https://cpoint-lab.co.jp/article/201905/9566/</a><br><br>公式サイト：<br><a rel="noreferrer noopener" aria-label="https://github.com/itsgoingd/clockwork (opens in a new tab)" href="https://github.com/itsgoingd/clockwork" target="_blank">https://github.com/itsgoingd/clockwork</a></p>



<p>Laravel5.5以上のバージョンであれば、以下のコマンドでインストール + ブラウザ拡張機能のインストールだけで利用できます。</p>



<pre class="crayon-plain-tag">$ composer require itsgoingd/clockwork</pre>



<p> 現在はLaravel6.0なので簡単に利用できますね。 </p>



<h3 class="wp-block-heading">特徴的な機能</h3>



<p>ClockWorkの画面は3カラム構成となっており、左がリクエストの履歴、中央が各種情報、一番右がリクエスト情報となっているようです。<br>左側のリクエスト履歴を選択することで、その時のパラメータやログ、パフォーマンスを閲覧することができます。<br>以下の画像はパフォーマンスの情報で、それぞれの処理におおよそどの程度の処理時間がかかっているのか確認することができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="510" src="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1-1024x510.png" alt="" class="wp-image-1830" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1-1024x510.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1-300x150.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1-768x383.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1-1536x766.png 1536w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-1.png 1904w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>次はログ画面で、PHPプログラム内の任意の位置にログ出力を挟むことで、変数の情報などを参照できます。<br>ログ出力も簡単で「clock()-&gt;info()」メソッドを任意の場所に記述するだけです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="508" src="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2-1024x508.png" alt="" class="wp-image-1831" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2-1024x508.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2-300x149.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2-768x381.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2-1536x762.png 1536w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-2.png 1906w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>次がクエリ情報で、Eloquentで実行されたSQL等が確認できます。どのようなSQLが発行されているのか確認することができるので、結構便利！</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="510" src="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3-1024x510.png" alt="" class="wp-image-1832" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3-1024x510.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3-300x149.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3-768x382.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3-1536x764.png 1536w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-3.png 1903w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>そしてキャッシュ。こちらは・・・まだ調べられていないのですが、Laravelに備わっているキャッシュの利用状況が出ていると思います(未確認)</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="509" src="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4-1024x509.png" alt="" class="wp-image-1833" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4-1024x509.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4-300x149.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4-768x382.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4-1536x764.png 1536w, https://sheltie-garage.xyz/wp-content/uploads/2019/12/Image-4.png 1903w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">ということで</h3>



<p>LaravelでのAPI開発を強力にバックアップしてくれるClockWorkの紹介でした。<br>やはり、変数の中身やSQLを簡単に確認できると、開発効率も上がりますね。今後も活用していきたいと思います。</p>



<h3 class="wp-block-heading">ちなみに</h3>



<p>Clockworkは結構ログを出力するようで、本番稼働時は無効にしておいたほうが良いです。<br><a href="https://github.com/itsgoingd/clockwork/issues/358">https://github.com/itsgoingd/clockwork/issues/358</a></p>



<p>.envファイルの <code>CLOCKWORK_ENABLE</code>、<code>APP_DEBUG</code>のどちらかにfalseを設定してあげると良いそうです。お忘れなく・・・</p>


<p>投稿 <a href="https://sheltie-garage.xyz/2019/12/clockwork%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6laravel-api%e3%82%92%e3%83%87%e3%83%90%e3%83%83%e3%82%b0%e3%81%99%e3%82%8b/">ClockWorkを利用してLaravel APIをデバッグする</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ComposerでNoSslExceptionが発生したときの対応方法</title>
		<link>https://sheltie-garage.xyz/2019/10/composer%e3%81%a7nosslexception%e3%81%8c%e7%99%ba%e7%94%9f%e3%81%97%e3%81%9f%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%bf%9c%e6%96%b9%e6%b3%95/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Thu, 17 Oct 2019 12:28:16 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1646</guid>

					<description><![CDATA[<p>Composer updateを行ったときに以下のようなエラーが発生！ 原因はphpのアップデート作業でした phpはwindows環境で実行しています。phpのアップデートのため、一度phpディレクトリの中をすべて削除 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/10/composer%e3%81%a7nosslexception%e3%81%8c%e7%99%ba%e7%94%9f%e3%81%97%e3%81%9f%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%bf%9c%e6%96%b9%e6%b3%95/">ComposerでNoSslExceptionが発生したときの対応方法</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>Composer updateを行ったときに以下のようなエラーが発生！</p>



<pre class="crayon-plain-tag">[Composer\Exception\NoSslException]                                           
  The openssl extension is required for SSL/TLS protection but is not available. 
If you can not enable the openssl extension, you can disable this error, 
at your own risk, by setting the 'disable-tls' option to true.</pre>



<h2 class="wp-block-heading">原因はphpのアップデート作業でした</h2>



<p>phpはwindows環境で実行しています。<br>phpのアップデートのため、一度phpディレクトリの中をすべて削除し、新しいバージョンを上書きしました。<br>その際「php.ini」も消してしまい、結果としてopensslのエクステンションも無効になってしまっていました。</p>



<h2 class="wp-block-heading">OpenSSLの有効化</h2>



<p>php.iniを以下の通り編集しました</p>



<pre class="crayon-plain-tag">; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = &quot;./&quot;
; On windows:
extension_dir = &quot;ext&quot;　&larr;この行のコメントを外し、有効化</pre>



<pre class="crayon-plain-tag">;extension=bz2
・・・省略・・・
;extension=odbc
extension=openssl &larr;この行のコメントを外して有効化</pre>



<h2 class="wp-block-heading">以上</h2>



<p>以上の設定でComposerが動くようになりました。</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/10/composer%e3%81%a7nosslexception%e3%81%8c%e7%99%ba%e7%94%9f%e3%81%97%e3%81%9f%e3%81%a8%e3%81%8d%e3%81%ae%e5%af%be%e5%bf%9c%e6%96%b9%e6%b3%95/">ComposerでNoSslExceptionが発生したときの対応方法</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dockerコンテナからホストで動いているWebAPIにアクセスする</title>
		<link>https://sheltie-garage.xyz/2019/10/docker%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a%e3%81%8b%e3%82%89%e3%83%9b%e3%82%b9%e3%83%88%e3%81%a7%e5%8b%95%e3%81%84%e3%81%a6%e3%81%84%e3%82%8bwebapi%e3%81%ab%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Wed, 16 Oct 2019 23:25:11 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1640</guid>

					<description><![CDATA[<p>先に結論 以下の設定を利用すればアクセス可能参考：https://docs.docker.com/docker-for-windows/networking/ アクセス例: http://host.docker.inte [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/10/docker%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a%e3%81%8b%e3%82%89%e3%83%9b%e3%82%b9%e3%83%88%e3%81%a7%e5%8b%95%e3%81%84%e3%81%a6%e3%81%84%e3%82%8bwebapi%e3%81%ab%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9/">Dockerコンテナからホストで動いているWebAPIにアクセスする</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">先に結論</h2>



<p>以下の設定を利用すればアクセス可能<br>参考：<a href="https://docs.docker.com/docker-for-windows/networking/" target="_blank" rel="noreferrer noopener" aria-label="https://docs.docker.com/docker-for-windows/networking/ (新しいタブで開く)">https://docs.docker.com/docker-for-windows/networking/</a></p>



<pre class="crayon-plain-tag">host.docker.internal</pre>



<p>アクセス例:<br> http://host.docker.internal:5000/webapi/ </p>



<h2 class="wp-block-heading">事の発端</h2>



<p>現在、画像ベースのレコメンドシステムを作成しており、以下のような構成で動いています。<br><br>Webアプリ: <br>　Laravelで作成、Dockerコンテナで動作<br>リコメンドエンジン：<br>　Python + Flaskで作成、ホストマシン(Windows上) で動作 <br><br>この時、Dockerコンテナで動いているLaravelアプリケーションから、ホストマシンで動ているPythonへアクセスする必要が出てきました。</p>



<p>リコメンドエンジンはPython + Flaskで動いており、WebAPIとして動作しています。<br>Laravelから「 file_get_contents 」関数を利用しホストのWebAPIへアクセス、レスポンスを取得する方法を用いることにしました。</p>



<h2 class="wp-block-heading">ホストにアクセスする</h2>



<p>いろいろ調べたところ、冒頭で紹介した「host.docker.internal」が利用できることが分かりました。<br>試しにDockerコンテナ内からpingを実行してみると・・・</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="530" height="305" src="https://sheltie-garage.xyz/wp-content/uploads/2019/10/Image-1.png" alt="" class="wp-image-1643" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/10/Image-1.png 530w, https://sheltie-garage.xyz/wp-content/uploads/2019/10/Image-1-300x173.png 300w" sizes="auto, (max-width: 530px) 100vw, 530px" /></figure>



<p>きちんとpingが通りましたね</p>



<p>プログラム内では、以下のような記述でアクセス可能でした</p>



<pre class="crayon-plain-tag">public function recommend(RecommendRequest $request)
    {
        $imagefile = $request-&gt;file('img');
        $temp_path = $imagefile-&gt;store('public/upload');
        $filenameArr = explode('/', $temp_path);

        // 外部APIを呼び出し、リコメンド結果を受け取る         
        $html = file_get_contents('http://host.docker.internal:5000/imgPath/' . $filenameArr[2]);
    }</pre>



<p>以上でDockerコンテナからホストへアクセスする方法の紹介は終了です。<br>Dockerは便利でよく利用はしていますが、まだまだ知らないことばかりです。</p>



<iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=FFFFFF&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=monodon-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=4297100339&#038;linkId=5d2df879de62613b47c241f8b71a5302"></iframe>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/10/docker%e3%82%b3%e3%83%b3%e3%83%86%e3%83%8a%e3%81%8b%e3%82%89%e3%83%9b%e3%82%b9%e3%83%88%e3%81%a7%e5%8b%95%e3%81%84%e3%81%a6%e3%81%84%e3%82%8bwebapi%e3%81%ab%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9/">Dockerコンテナからホストで動いているWebAPIにアクセスする</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>複数のnginx設定ファイルを読み込んだ時の思い込み</title>
		<link>https://sheltie-garage.xyz/2019/06/%e8%a4%87%e6%95%b0nginx%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%93%e3%81%a0%e6%99%82%e3%81%ae%e6%80%9d%e3%81%84%e8%be%bc%e3%81%bf/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sat, 08 Jun 2019 13:36:16 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1262</guid>

					<description><![CDATA[<p>まとまりが無くなったので、先に結論 ・confファイルを追加したが、そちらの設定が有効にならない・rewrite_log on; を利用し、URL書き換え状態を調査・別ファイルのリライトルールが有効になっていることを発見 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/06/%e8%a4%87%e6%95%b0nginx%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%93%e3%81%a0%e6%99%82%e3%81%ae%e6%80%9d%e3%81%84%e8%be%bc%e3%81%bf/">複数のnginx設定ファイルを読み込んだ時の思い込み</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">まとまりが無くなったので、先に結論</h3>



<p>・confファイルを追加したが、そちらの設定が有効にならない<br>・rewrite_log on; を利用し、URL書き換え状態を調査<br>・別ファイルのリライトルールが有効になっていることを発見<br>・名前付きロケーションは、設定ファイルごとに独立していない</p>



<h4 class="wp-block-heading">1アプリに対して1つのコンフィグファイルで対応しています</h4>



<p>という設定で、現在labが運用されているのです。<br>今まではKindleUnlimitedSearchしか稼働していなかったので設定ファイルも1つで済んでいたのですが、今回新規でLotteryAnalyzer用の設定を追加したところ、なぜかこちらの設定はうまく動きませんでした。</p>



<h3 class="wp-block-heading">@の名前付けに注意</h3>



<p>nginxの設定で「名前付きロケーション」を使用しています。<br>自分の勘違いとして</p>



<p style="font-size:19px" class="has-text-color has-vivid-red-color">設定ファイルが分かれていれば、同じ名前を利用しても構わない</p>



<p>とかってに思っていました。<br>javaプログラムなんかだと、別ファイルごとにクラスを作って、その中で同じ変数名を利用しても大丈夫！みたいな、そんなノリです。(伝わるかな？）</p>



<h3 class="wp-block-heading">実際には2重で定義されている扱いになっていた</h3>



<pre class="crayon-plain-tag">location /lottery/back {
     try_files $uri $uri/ @nest;
 }
 location @nest {
     rewrite /lottery/back/(.*)$ /lottery/back/index.php?/$1 last;
 }</pre>



<p>上記のような感じで設定ファイルを作りました。nginxの内部リダイレクトを利用しており、laravel側の処理を呼び出すための設定が書いてあります。</p>



<p>ただ、実際に動作確認をとってみると、なぜかLotteryAnalyzerへのアクセスがKindleUnlimitedSearchに向かって飛んでいました。<br>rewrite_logを出力し、URLがどのように処理されているのか調査し、原因を特定することができました。<br><br>参考<br> <a href="https://qiita.com/iaoiui/items/595ecddb9e7064279fd0">https://qiita.com/iaoiui/items/595ecddb9e7064279fd0</a> </p>



<h3 class="wp-block-heading">思い込みは良くないということですね</h3>



<p>今回は思い込みで作業を行っていたため、解決に時間がかかってしまいました。<br>ちゃんと仕様を理解して使いましょう！　ということですね</p>



<p>Amazonでnginxの商品を探す<br><a href="https://amzn.to/2WugZAB">https://amzn.to/2WugZAB</a></p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/06/%e8%a4%87%e6%95%b0nginx%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%93%e3%81%a0%e6%99%82%e3%81%ae%e6%80%9d%e3%81%84%e8%be%bc%e3%81%bf/">複数のnginx設定ファイルを読み込んだ時の思い込み</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JenkinsからConda環境を切り替えてPythonスクリプトを実行する</title>
		<link>https://sheltie-garage.xyz/2019/06/jenkins%e3%81%8b%e3%82%89conda%e7%92%b0%e5%a2%83%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%81%a6python%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 02 Jun 2019 13:27:12 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<category><![CDATA[機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1248</guid>

					<description><![CDATA[<p>タイトルが長いですね・・・で、このエントリはタイトル通りのことを行います LotteryAnalyzerの中身 先日公開したLotteryAnalyzerですが、まだ完全体ではありません！LotteryAnalyzerは [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/06/jenkins%e3%81%8b%e3%82%89conda%e7%92%b0%e5%a2%83%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%81%a6python%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/">JenkinsからConda環境を切り替えてPythonスクリプトを実行する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>タイトルが長いですね・・・<br>で、このエントリはタイトル通りのことを行います</p>



<h3 class="wp-block-heading">LotteryAnalyzerの中身</h3>



<p>先日公開したLotteryAnalyzerですが、まだ完全体ではありません！<br>LotteryAnalyzerは大きく4つのプログラムが組み合わさって稼働しています。<br>・フロントエンドのCoreUI(VueJS)<br>・サーバサイドのLaravel(PHP)<br>・抽選結果を取得するScrayper(Python)<br>・抽選結果を予測するPrediction(Python)<br>このうち、ScrayerとPredictionは毎週決まった時間に実行させたいので、jenkinsから実行できるように設定してみました。</p>



<h2 class="wp-block-heading">Jenkinsの設定内容</h2>



<p>Jenkinsからシェルを実行する。<br>やりたいことはシンプルですが、以下の点が分からず苦戦しました。<br>・jenkinsでシェルを呼び出す方法がわからない<br>・shellの中でのconda環境の切り替え方がわからない</p>



<h3 class="wp-block-heading">jenkinsからのshell呼び出し</h3>



<p>方法として、「sudoを利用して実行権限を持つユーザーで実行」する方式をとりました。</p>



<h4 class="wp-block-heading">visudo設定</h4>



<p>jenkinsから「whoami」コマンドを実行したところ、実行ユーザが「tomcat」となっていたため、tomcatユーザに対してsudoが利用できるように設定しました。</p>



<pre class="crayon-plain-tag">visudo:
tomcat ALL=(ALL) NOPASSWD: /home/ユーザ/batch/lottery/scrayper/exec_lottery.sh
tomcat ALL=(ALL) NOPASSWD: /home/ユーザ/batch/lottery/prediction/exec_prediction.sh
Defaults:tomcat !requiretty</pre>



<p>Jenkinsのジョブ内容は以下の通り。<br>フリースタイルプロジェクトを作成し、設定したシェルを実行するようにします</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="169" src="https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-1-1024x169.png" alt="" class="wp-image-1250" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-1-1024x169.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-1-300x50.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-1-768x127.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-1.png 1459w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="262" src="https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-2-1024x262.png" alt="" class="wp-image-1251" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-2-1024x262.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-2-300x77.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-2-768x197.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/06/Image-2.png 1450w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>これでひとまず、jenkinsからシェルを実行できるようになりました。</p>



<h3 class="wp-block-heading">conda環境を切り替える</h3>



<p>pythonの実行環境の制御にanacondaを利用しています。<br>スクレイピング用、番号予測用でそれぞれ環境が異なります。<br>端末からは「conda activate」コマンドで切り替えできますが、シェルスクリプト内部からはなぜか切り替えができない事象が発生しました。</p>



<h4 class="wp-block-heading">以下の方法で解決</h4>



<pre class="crayon-plain-tag">&amp;gt;&amp;gt;&amp;gt; conda initialize &amp;gt;&amp;gt;&amp;gt;
 !! Contents within this block are managed by 'conda init' !!
 __conda_setup=&quot;$('/home/ユーザ/anaconda3/bin/conda' 'shell.bash' 'hook' 2&amp;gt; /dev/null)&quot;
 if [ $? -eq 0 ]; then
     eval &quot;$__conda_setup&quot;
 else
     if [ -f &quot;/home/ ユーザ /anaconda3/etc/profile.d/conda.sh&quot; ]; then
         . &quot;/home/ ユーザ /anaconda3/etc/profile.d/conda.sh&quot;
     else
         export PATH=&quot;/home/ ユーザ /anaconda3/bin:$PATH&quot;
     fi
 fi
 unset __conda_setup
 &amp;lt;&amp;lt;&amp;lt; conda initialize &amp;lt;&amp;lt;&amp;lt;

cd /home/ ユーザ /batch/lottery/scrayper/
conda activate scraping37
python lottery_loto7.py</pre>



<p>かなり強引ですが、anaconda3をインストールしたときに設定される環境設定スクリプトをシェルの中に埋め込み、実行できました。<br>参考<br> <a href="https://qiita.com/tori_taro/items/ad3a4f488a49400fd457">https://qiita.com/tori_taro/items/ad3a4f488a49400fd457</a> </p>



<h2 class="wp-block-heading">自動化完了</h2>



<p>これでJenkinsからシェルを実行できるようになりました。<br>と同時に、当初の目標でもあった、LotteryAnalyzerの自動更新の仕組みも出来上がったわけです。<br>今後は自動で更新されていくので、毎週の更新が楽しみですね！<br><br>Jenkinsは導入当初、左上のおじさんをシャロちゃんに変更して放置していましたが、やっと有効活用できた気がする。</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/06/jenkins%e3%81%8b%e3%82%89conda%e7%92%b0%e5%a2%83%e3%82%92%e5%88%87%e3%82%8a%e6%9b%bf%e3%81%88%e3%81%a6python%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/">JenkinsからConda環境を切り替えてPythonスクリプトを実行する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>LotteryAnalyzerを公開しました</title>
		<link>https://sheltie-garage.xyz/2019/05/lotteryanalyzer%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Thu, 23 May 2019 22:12:02 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<category><![CDATA[機械学習]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1225</guid>

					<description><![CDATA[<p>Vuejs(CoreUI) + Laravel + 機械学習(KNN)の勉強用として作成した「LotteryAnlyzer」を公開しました。メニューの「The Lab」からアクセスできます Loto7の統計情報を閲覧 L [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/05/lotteryanalyzer%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/">LotteryAnalyzerを公開しました</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vuejs(CoreUI) + Laravel + 機械学習(KNN)の勉強用として作成した「LotteryAnlyzer」を公開しました。<br>メニューの「The Lab」からアクセスできます</p>



<h3 class="wp-block-heading">Loto7の統計情報を閲覧</h3>



<p>LotteryAnalyzerの機能として<br>・最新の当選番号確認<br>・過去の当選番号閲覧<br>・統計情報<br>・KNNを使用した番号予測<br>が用意されています。<br><br>統計情報なんかは、意外と数字に偏りがあったりして、見ているだけで楽しめるかと思います。</p>



<h3 class="wp-block-heading">目玉の番号予測は残念な精度ですが・・・</h3>



<p>目玉の機能として作成した番号予測は散々な精度ですが・・・、まぁ簡単に予測出来たら1等当選が増えて最高10億円の夢も薄れてしまいますかね・・・<br>過去分の予測の答え合わせをしたら、最高でも2つしか数字が一致していなかったので、人間がカンで予測するのと変わらない精度かな・・・<br>今後データが増えていくことで、予測精度も向上するといいなと思っております</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/05/lotteryanalyzer%e3%82%92%e5%85%ac%e9%96%8b%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/">LotteryAnalyzerを公開しました</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Laravel5.8でMigrationを行う</title>
		<link>https://sheltie-garage.xyz/2019/03/laravel5-8%e3%81%a7migration%e3%82%92%e8%a1%8c%e3%81%86/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 31 Mar 2019 12:24:52 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1008</guid>

					<description><![CDATA[<p>Dockerの調子が悪くて・・・ 最近Dockerの調子が悪く、何度かFactory Resetを繰り返し行っていました で、Factory Resetの度にコンテナやらイメージやらボリュームやらが全部リセットとなり 結 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/laravel5-8%e3%81%a7migration%e3%82%92%e8%a1%8c%e3%81%86/">Laravel5.8でMigrationを行う</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h2>Dockerの調子が悪くて・・・</h2>
<p>最近Dockerの調子が悪く、何度かFactory Resetを繰り返し行っていました<br />
で、Factory Resetの度にコンテナやらイメージやらボリュームやらが全部リセットとなり<br />
結果、DBのデータやテーブル構造なども失われていたわけです</p>
<p>今まではMySql Workbench上から作り直していたのですが、さすがに何度も続くとめんどくさくなってきたので Laravelに組み込まれている「Migration」という機能を利用してDB管理を行うことにしました</p>
<h2>そもそもMigrationとは？</h2>
<p>Migration(マイグレーション)とは、「データベースの管理をコードで行える仕組みのこと」と、自分は解釈しています</p>
<h2>実際にやってみる</h2>
<p>公式マニュアルはこちら<br />
<a href="https://readouble.com/laravel/5.8/ja/migrations.html" target="_blank">https://readouble.com/laravel/5.8/ja/migrations.html</a></p>
<p><strong>LaravelでMigrationを行うには以下の通り</strong></p>
<p>Laravelプロジェクトに移動し、以下のコマンドを実行</p>
<p></p><pre class="crayon-plain-tag">php artisan make:migration loto7</pre><p></p>
<p>上記のコマンドを実行すると、以下のディレクトリにファイルが作成されます</p>
<p></p><pre class="crayon-plain-tag">(Laravelプロジェクトフォルダ)\database\migrations\2019_03_31_085703_loto7.php</pre><p></p>
<p>中を見ると、 <code>up</code> と <code>down</code> の2つのメソッドが準備されています</p>
<p>up : 新規テーブルやカラムの作成<br />
down : up時の操作を戻す</p>
<p>という役割があります</p>
<p>基本的に <code>up</code> にはcreate table などを記述し、 <code>down</code> には drop tableなどを記述することになるかと思います</p>
<h2>実際に記述してみる</h2>
<p>今回は宝くじ情報のサイトを作る想定でいるので、その情報を保存できるようにテーブルを作成します</p>
<p></p><pre class="crayon-plain-tag">&amp;lt;?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class Loto7 extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('loto7', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedInteger('holding_date');
            $table-&amp;gt;timestamps();
        });

        Schema::create('loto7_winning_numbers', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedInteger('number');
            $table-&amp;gt;timestamps();
        });

        Schema::create('loto7_bonus_numbers', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedInteger('number');
            $table-&amp;gt;timestamps();
        });

        Schema::create('loto7_winning_count', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedInteger('1st');
            $table-&amp;gt;unsignedInteger('2nd');
            $table-&amp;gt;unsignedInteger('3rd');
            $table-&amp;gt;unsignedInteger('4th');
            $table-&amp;gt;unsignedInteger('5th');
            $table-&amp;gt;unsignedInteger('6th');
            $table-&amp;gt;timestamps();
        });

        Schema::create('loto7_winning_money', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedInteger('1st');
            $table-&amp;gt;unsignedInteger('2nd');
            $table-&amp;gt;unsignedInteger('3rd');
            $table-&amp;gt;unsignedInteger('4th');
            $table-&amp;gt;unsignedInteger('5th');
            $table-&amp;gt;unsignedInteger('6th');
            $table-&amp;gt;timestamps();
        });

        Schema::create('loto7_carryover', function (Blueprint $table) {
            $table-&amp;gt;increments('holding_count');
            $table-&amp;gt;unsignedBigInteger('carry_over');
            $table-&amp;gt;timestamps();
        });

    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('loto7');
        Schema::drop('loto7_winning_numbers');
        Schema::drop('loto7_bonus_numbers');
        Schema::drop('loto7_winning_count');
        Schema::drop('loto7_winning_money');
        Schema::drop('loto7_carryover');
    }
}</pre><p></p>
<p>こんな感じの内容で作ってみました</p>
<h2>マイグレーションを実行する</h2>
<p>artisanコマンドを実行すれば、先ほど作成したファイルの内容が実行され、テーブル類が作成されます<br />
気を付けるのはLaravelプロジェクトの.envファイルの設定で、このファイルに書かれているDBの接続設定が使用されます</p>
<p></p><pre class="crayon-plain-tag">DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=lottery
DB_USERNAME=root
DB_PASSWORD=root</pre><p></p>
<p>今回、.envファイルはDockerネットワーク内で実行される想定で作ったので、Laradockのworkspaceからマイグレーションを実行します<br />
ちなみに、ホストから実行する場合は.envファイルを</p>
<p></p><pre class="crayon-plain-tag">DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lottery
DB_USERNAME=default
DB_PASSWORD=default</pre><p></p>
<p>のように変更する必要があります</p>
<p>また、マイグレーションを実行するとき、 information_schemaへのアクセスが可能なユーザーで行う必要があるようで、自分の環境では以下のエラーが発生しました <a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1-1024x325.png" alt="" width="640" height="203" class="alignnone size-large wp-image-1036" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1-1024x325.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1-300x95.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1-768x244.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-1.png 1585w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>そのため、設定ファイルでrootユーザーを指定し、実行しています</p>
<h3>Docker workspaceへ</h3>
<p>PortainerというDocker管理ツールを利用し、Laradockのワークスペースに入りました<br />
ここでマイグレーションを実行します</p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2-1024x568.png" alt="" width="640" height="355" class="alignnone size-large wp-image-1033" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2-1024x568.png 1024w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2-300x166.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2-768x426.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-2.png 1584w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p></p><pre class="crayon-plain-tag">php artisan migrate</pre><p></p>
<p>これでマイグレーションが実行されます</p>
<p>成功すると、このようなログが出力されます</p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-7.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-7.png" alt="" width="711" height="222" class="alignnone size-full wp-image-1035" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-7.png 711w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-7-300x94.png 300w" sizes="auto, (max-width: 711px) 100vw, 711px" /></a></p>
<p>MySQL Workbenchで確認すると、きちんとテーブルが出来ていますね<br />
<a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-9.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-9.png" alt="" width="262" height="308" class="alignnone size-full wp-image-1037" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-9.png 262w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-9-255x300.png 255w" sizes="auto, (max-width: 262px) 100vw, 262px" /></a></p>
<h2>以上です</h2>
<p>これでマイグレーションの紹介は以上です<br />
DBをコードで管理できるので、元に戻したり、環境の作り直しも簡単に行えそうですね<br />
ただ、簡単にdropもできてしまうため、本番運用では気を使いそうです</p>
<p><iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=monodon-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=4798052582&#038;linkId=25af35688291a0c97cacfaed692dad55"></iframe></p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/laravel5-8%e3%81%a7migration%e3%82%92%e8%a1%8c%e3%81%86/">Laravel5.8でMigrationを行う</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Docker利用時のカスペルスキーの設定について</title>
		<link>https://sheltie-garage.xyz/2019/03/docker%e5%88%a9%e7%94%a8%e6%99%82%e3%81%ae%e3%82%ab%e3%82%b9%e3%83%9a%e3%83%ab%e3%82%b9%e3%82%ad%e3%83%bc%e3%81%ae%e8%a8%ad%e5%ae%9a%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 31 Mar 2019 10:26:28 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=1019</guid>

					<description><![CDATA[<p>Dockerのファイルが見えなくなる いつものようにDockerを起動すると、今まで見えていたファイルが見えなくなりました 自分はセキュリティソフトに「カスペルスキー」を利用していますが、どうやらこいつのファイアウォール [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/docker%e5%88%a9%e7%94%a8%e6%99%82%e3%81%ae%e3%82%ab%e3%82%b9%e3%83%9a%e3%83%ab%e3%82%b9%e3%82%ad%e3%83%bc%e3%81%ae%e8%a8%ad%e5%ae%9a%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/">Docker利用時のカスペルスキーの設定について</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h2>Dockerのファイルが見えなくなる</h2>
<p>いつものようにDockerを起動すると、今まで見えていたファイルが見えなくなりました<br />
自分はセキュリティソフトに「カスペルスキー」を利用していますが、どうやらこいつのファイアウォールが悪さをしている模様</p>
<p><a href="https://sheltie-garage.xyz/2018/08/windows10-laradock%E3%81%A7%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AB%E3%81%A4%E3%81%AA%E3%81%8C%E3%82%89%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E3%81%8A/">以前のエントリ</a>で似たような事象を紹介しましたが、やっと根本解決ができたので改めて紹介します　　</p>
<p><strong>追記:</strong> やっぱり解決できませんでした・・・<br />
Dockerを再起動したタイミングで設定が初期化されてしまうので、Docker再起動時は常にカスペルスキーの設定を確認したほうがよさそうです</p>
<h2>カスペルスキーの設定</h2>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-1.png" alt="" width="325" height="240" class="alignnone size-full wp-image-1020" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-1.png 325w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-1-300x222.png 300w" sizes="auto, (max-width: 325px) 100vw, 325px" /></a></p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.png" alt="" width="766" height="570" class="alignnone size-full wp-image-1021" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.png 766w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2-300x223.png 300w" sizes="auto, (max-width: 766px) 100vw, 766px" /></a></p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-1.png" alt="" width="765" height="568" class="alignnone size-full wp-image-1022" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-1.png 765w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-1-300x223.png 300w" sizes="auto, (max-width: 765px) 100vw, 765px" /></a></p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-1.png" alt="" width="647" height="659" class="alignnone size-full wp-image-1023" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-1.png 647w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-1-295x300.png 295w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-1-78x78.png 78w" sizes="auto, (max-width: 647px) 100vw, 647px" /></a></p>
<p><a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-1.png" alt="" width="649" height="659" class="alignnone size-full wp-image-1024" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-1.png 649w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-1-295x300.png 295w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-1-78x78.png 78w" sizes="auto, (max-width: 649px) 100vw, 649px" /></a></p>
<p>上記の設定を行うことでDockerネットワークへのアクセスが常に許可されます<br />
今まで何かのタイミングで設定が戻ってしまっており、何度もファイルが見えなくなるとはまっていたのですが<br />
ひとまずこれでDockerに振り回されることは減りそうです</p>
<h2>終わりに</h2>
<p>セキュリティソフトは入れておくと安心ですが、開発マシンで使用するとこういう弊害も出るのですね<br />
そういえば昔ネトゲにはまった時も、セキュリティソフトの設定でうまくネットワークにつながらない時があったりしたなぁ・・・</p>
<p><iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=monodon-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=B07G8J28NP&#038;linkId=f5c9650494b8d9e524f2c55054424667"></iframe></p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/docker%e5%88%a9%e7%94%a8%e6%99%82%e3%81%ae%e3%82%ab%e3%82%b9%e3%83%9a%e3%83%ab%e3%82%b9%e3%82%ad%e3%83%bc%e3%81%ae%e8%a8%ad%e5%ae%9a%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/">Docker利用時のカスペルスキーの設定について</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Laradock壊れる</title>
		<link>https://sheltie-garage.xyz/2019/03/laradock%e5%a3%8a%e3%82%8c%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Tue, 19 Mar 2019 14:42:17 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=987</guid>

					<description><![CDATA[<p>ここ最近いろいろ壊れています カメラ、バイクが壊れ、そしてLaradockの環境も壊れました (´・ω・｀) 一応復旧が出来たので、試したことをつらつら書いていこうと思います 症状について 自分は以下の環境で開発していま [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/laradock%e5%a3%8a%e3%82%8c%e3%82%8b/">Laradock壊れる</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<h2>ここ最近いろいろ壊れています</h2>
<p>カメラ、バイクが壊れ、そしてLaradockの環境も壊れました (´・ω・｀)<br />
一応復旧が出来たので、試したことをつらつら書いていこうと思います</p>
<h2>症状について</h2>
<p>自分は以下の環境で開発しています</p>
<ul>
<li>Windows10 Pro </li>
<li>Docker Engine 18.09.02</li>
</ul>
<p>症状として、「コンテナからホストのファイルが参照できなくなった」というもの<br />
具体的には、Dockerでボリュームを設定し、共有フォルダ内にファイルを置いたにも関わらず、コンテナ内からファイルが参照できない<br />
逆に、コンテナ内で生成されたファイルが、ホスト側から参照できない<br />
というもの<br />
ファイルの共有が全くできなくなってしまったため、作成したLaravelプロジェクトにアクセスしても、動作確認が行えなくなってしまいました　　 　　</p>
<h2>試したこと</h2>
<p>現在は無事に復旧し、Laradockの環境を復活できたわけですが、いかんせん決定打となったものが不明なので、試したことをすべて書き出していきます</p>
<h4>カスペルスキーファイアウォールの設定確認</h4>
<p>使用しているアンチウィルスソフトが「カスペルスキー」なので、まずはファイアウォールの解除を確認 <a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.jpg"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.jpg" alt="" width="624" height="98" class="alignnone size-full wp-image-990" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2.jpg 624w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-2-300x47.jpg 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></a></p>
<p>許可するネットワークに設定が変更されていればOK</p>
<h4>Factory ResetとShare Drive再設定</h4>
<p>症状としては<br />
<a href="https://qiita.com/Targityen/items/2c4840fc900d8f9ce11f" target="_blank">https://qiita.com/Targityen/items/2c4840fc900d8f9ce11f</a><br />
<a href="https://mosapride.com/index.php/2017/02/16/post-70/" target="_blank">https://mosapride.com/index.php/2017/02/16/post-70/</a><br />
と同じ状況だったので試してみるも改善せず<br />
<strong>DockerでFactory Resetを行うと、作成したイメージやコンテナ、ボリュームがすべて消えてしまうため要注意です</strong> <a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3.png" alt="" width="825" height="565" class="alignnone size-full wp-image-993" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3.png 825w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-300x205.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-768x526.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-230x158.png 230w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-3-360x246.png 360w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a></p>
<h4>Docker仮想ドライブの移動</h4>
<p>もしかして、Dockerの仮想ドライブが書き込み不可の場所にあったりするのか？　という考えから「Disk Image Location」をユーザーディレクトリ配下に移動するも、効果なし<br />
<a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4.png" alt="" width="823" height="565" class="alignnone size-full wp-image-994" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4.png 823w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-300x206.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-768x527.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-230x158.png 230w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-4-360x246.png 360w" sizes="auto, (max-width: 823px) 100vw, 823px" /></a></p>
<h4>PowerShellでコマンド実行</h4>
<p>DockerのShared Drivesの設定の下部にシェルコマンドが記載されているのですが、試しにPower Shell上から実行するもエラーに・・・<br />
<a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5.png" alt="" width="829" height="570" class="alignnone size-full wp-image-995" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5.png 829w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-300x206.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-768x528.png 768w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-5-230x158.png 230w" sizes="auto, (max-width: 829px) 100vw, 829px" /></a></p>
<p>上記で紹介した設定を一通り試した後、再度コマンドを実行して見たらちゃんと実行されました　　<br />
<a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-1.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-1.png" alt="" width="567" height="194" class="alignnone size-full wp-image-1005" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-1.png 567w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-6-1-300x103.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></a></p>
<p>無事にコンテナ内からホストのファイルを参照できるように!<br />
<a href="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8.png"><img loading="lazy" decoding="async" src="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8.png" alt="" width="897" height="231" class="alignnone size-full wp-image-1001" srcset="https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8.png 897w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-300x77.png 300w, https://sheltie-garage.xyz/wp-content/uploads/2019/03/Image-8-768x198.png 768w" sizes="auto, (max-width: 897px) 100vw, 897px" /></a></p>
<h3>結局のところ原因は？</h3>
<p>今まで使用できていたLaradockが急に使えなくなってしまったことも、Dockerの共有フォルダが使えるようになったことも、正直なところ何が良くて何がダメだったのか原因がわからず・・・<br />
Dockerは便利なツールですが、意外なところでハマったりするもですね・・・</p>
<p><iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=monodon-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=4297100339&#038;linkId=30021c1de67e472b0b2ed9353bc2f991"></iframe></p>
<p>投稿 <a href="https://sheltie-garage.xyz/2019/03/laradock%e5%a3%8a%e3%82%8c%e3%82%8b/">Laradock壊れる</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
