- 投稿日:2019-10-26T20:07:46+09:00
Moodle-3.7 マニュアル - Cron
以下の日本語訳となります。
https://docs.moodle.org/37/en/CronMoodle の 'cron' プロセスはバックグラウンドで定期的に動作するべき PHP スクリプト(スタンダートな Moodle インストールの一部)です。Moodle cron スクリプトは、それぞれ異なる期間で実行される異なるタスクです。
重要: Moodle のために cron プロセスをセットアップするのをスキップしないでください。これなしには、サイトが適切に動作しません。
cron は、非同期的なアクティビティとして recycle bin を削除するために毎分動作する事が推奨されます。
cron プログラム(Moodle スクリプトを実行する)は、時間のみに依存して使われる unix ベースのシステム(Linux と OSX を含む)のコアな部分のサービス群です。ウィンドウズじょうでは、ウィンドウズ タスクスケジューラを作成し、定期的に実行するという簡単な解決策となります。シェアードホスティングにおいては、どのように cron を設定するかというドキュメントがあるかを見つけて(あるいはサポートに問い合わせて)ください。ほとんどのシェアードホスティングシステムは、サイトを管理するためにコントロールパネルを用意しており、通常は、そのパネルに Cron ジョブのセクションがあるはずです。
基本的に、タスクはあなたのシステムの cron アクティビティのリストのうちの一つのコマンドを含んでいる。Unix ベースのシステムでは、このリストは 'crontab' と呼ばれ、全てのユーザが持っているものです。
コンテンツ
1 一般的な議論
1.1 Moodle の cron コマンドを動かす
1.2 web ベースの Moodle cron コマンド
1.3 コマンドを置く正しい場所を特定する
2 システムに cron を設定する
3 サードパーティの cron サービスを使う
3.1 Moodle の Cron 設定
3.2 リモート cron
4 タスクをスケジュールする
5 複数の Moodle サーバのために cron を動作させる
6 スケジュールしたタスクをデバッグする
7 参照1 一般的な議論
あなたのサーバタイプのためには、以下のセクションを読んでください。このセクションは、一般的な背景情報についてお伝えします。
cron を配置するためには、基本的に 2つのステップがあります。
- 正しいコマンを特定して、実行する
- システムにおいてコマンドを置く正しい場所を見つける
1.1 Moodle の cron コマンドを動かす
cron を配置するには、Moodle インストールにおいて2つの異なる方法があり、それぞれ異なるスクリプトが使用されます。以下、となります。
- CLI (コマンドラインインタープリタ)スクリプト。次のパスにあります。
/path/to/moodle/admin/cli/cron.phpもし疑問があれば、これが使うべきスクリプトです。あなたのコンピュータで、'PHP CLI' として実行されるプログラムです。したがって、コマンドの最終的な形は、以下のようになります。
/usr/bin/php /path/to/moodle/admin/cli/cron.phpこれが動くかどうかコマンドラインで試すことができる(そして、そうするべき)です。注意: あなたのコマンドラインの PHP バージョンが Moodle によって選ばれたバージョンと互換性があるかチェックしてください。コマンドライン PHP プログラムは、web サイト上のものとは異なり、同じバージョンとは限りません。
もし、ある理由で、CLI スクリプトを動作させられないならば、web ベースのスクリプトがあります。これは、非推奨となっており、将来的に削除される可能性があることに注意してください。これは web ブラウザから、
http://your.moodle.site/admin/cron.phpという web URL リンクのように実行されます。コマンドラインベースのweb ブラウザ(例えば wget のように)を見つけて、最終的なコマンドは次のようになります。
/usr/bin/wget http://your.moodle.site/admin/cron.phpこれは、"どこからでも" 実行できるという利点があります。あなたのマシンで cron が動作させられないのなら、別のどこかで動作させられます。
1.2 web ベースの Moodle cron コマンド
選択肢があるなら、web ベースの cron を使うのは避けてください。Moodle の将来のバージョンで削除される可能性があります。
Moodle 2.9 から、cron ジョブは、既にデフォルトで web では動作しなくなっています。以下のエラーメッセージが出力されます。
!!! Sorry, internet access to this page has been disabled by the administrator. !!!' Dashboard ► Site administration ► Security ► Site policies ' において、 'Cron execution via command line only' を選択しないことで設定できます。
以下のように注意されます。
'Running the cron from a web browser can expose privileged information to anonymous users. Thus it is recommended to only run the cron from the command line or set a cron password for remote access.'次に、'Cron password for remote access' を入力するよう求められます。もしこのフィールドが空ならば、パスワードを入力する必要はありません。
これは、web ブラウザから以下の形式の URL を使用した場合、パスワードを与えなければ 、cron.php スクリプトが実行できないことを意味しています。
http://site.example.com/admin/cron.php?password=opensesame1.3 コマンドを置く正しい場所を特定する
あなたが使用しているシステムに依存するため、プラットフォームあるいはホスティングのドキュメントを読んでください。ほとんどの場合、Moodl cron を動作させるためには、正しいコマンド(上記の)を確立し、ある種のファイルには、実行する時間なども、追加することになります。これは、特定のユーザインターフェースあるいはファイルを直接編集することによりなされます。
CLI バージョンを使っているのなら、cron プロセスが適切なユーザで実行されることを確認してください。web バージョンでは、確認不要です。
一例: Ubuntu/Debian Linux に cron をインストールする場合。root でログインしていることを想定しています。
www-data ユーザ crontab エディタウィンドウを開くために、crontab コマンドを使用します。Debian ベースのシステムでは、Apache (web サーバ)が実行されるユーザです。
$ crontab -u www-data -e上記コマンドにより、エディタウィンドウが開きます。 CLI cron スクリプトを 1分毎実行するには、以下の行を加えます。
* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null注: 最後の >/dev/null は、出力を 'bin' に送り、毎分メールを受けるのを止めます。
2 システムに cron を設定する
あなたのサーバタイプの情報を選択してください。
'Cron with Unix or Linux'(翻訳準備中)- UNIX と Linux フレーバの OS Cron サービス
'Cron with Windows OS'(翻訳準備中)- Windows の cron サービス
'Apple OSX'(翻訳準備中)- 組み込み 'crontab' サービスを使ってください。これは、Unix あるいは Linux の cron と同じです。しかしながら、launchd を回、'Apple の方法で' やりたいかもしれません。その場合は、
'Cron with MAC OS X'(翻訳準備中)を参照してください。
'Cron with web hosting services'(翻訳準備中)-様々な web ホスティングにおける Cron サービスの例があります。以下は、特定のホストのための手引きがあります(最新かどうか確認してください)
'Cron on 1and1 shared servers'(翻訳準備中)3 サードパーティの cron サービスを使う
cron をあなたのサーバで運用する他に、サードパーティの cron サービス(通常、webcron と呼ばれます)を使うことができます。
cron-job.org - 無料のサービスです(1分毎の cron が可能です)。
EasyCron - cron ジョブを設定するのに crontab やその他のタスクスケジューラを必要としない webcron サービスプロバイダです。3.1 Moodle の Cron 設定
管理者は、コマンドライン経由または Site administratio の 'Site security settings' の リモートアクセスのための cron パスワードによってのみ cron を設定できます。
3.2 リモート cron
'web ベース' バージョンの cron を使うことは、異なる Moodle サーバに cron プロセスを置くのに問題ありません。例えば、Unix の cron サービスは、ウィンドウベースの Moodle サーバの cron web ページを起動できます。
4 タスクをスケジュールする
管理者は、Administration > Site administration > Server > Scheduled tasks から、cron のタスクを正確にスケジュールできます。'Scheduled tasks'(翻訳準備中) 参照のこと。
5 複数の Moodle サーバのために cron を動作させる
タスクは、並列実行が可能であり、プロセスは、同じ Moodle インスタンスのタスクが複数の web サーバから同時に実行されないように、ロックを活用します。
同じサーバ上で異なる Moodle インスタンスを実行しているのなら、それぞれの Moodle インスタンスは、cron ジョブが必要となります(単一の Apache web サーバでも、異なる Moodle インスタンスを異なるドメインで virtual host の活用により可能です https://httpd.apache.org/docs/2.2/vhosts/index.html)。
6 スケジュールしたタスクをデバッグする
しばしば、特定の cron タスクが正しく動作しないことがあります。Moodle の 2.7 バージョンより前においては、ある cron のタスクで例外が発生すると 他の cron タスクが動作しなくなります。毎回 cron が完了しているかをモニタするには、動作ている cron の結果(例えば、"Cron completed at " という文字列を探す)から自動チェックを追加することです。
Moodle 2.7 以降においては、ある単一のスケジュールタスクの失敗は他のタスクの完了を妨げません。ある単一のスケジュールが失敗した場合、失敗とマークされ、再度実行が試みられます。何度も失敗し続けると、次の実行予定時刻は、24時間のうち最大 1 回に控えられます。'Scheduled tasks'(翻訳準備中)admin ページでは、現在のタスクで失敗したものを確認できます(fail delay-失敗したタスクを再度試みるための秒数 がゼロになっていない)。失敗したタスクをデバッグするのに簡単な方法は、CLI スケジュールタスクランナーを動作させて出力をモニターすることです。
7 参照
'Scheduled tasks'(翻訳準備中)
cron 機能についての Wikipedia の記事
MDL-50694 - Cron メッセージ "The operation timed out while waiting for a lock" はエラーメッセージとは言えない。フォーラムの議論:
How to log the output of a Scheduled Task on Windows - この議論は、ウィンドウズのスケジュールタスクで問題に遭遇した時に、スケジュールタスクのログを採取し、ログファイルに出力するのがよいという、便利なよいトリックを説明している。
- 投稿日:2019-10-26T17:31:49+09:00
【サルが書く】LaraDockでLaravelの環境構築やってみよう編
わきゃ
環境構築がこの世で一番難しいと思っています。
今回はLaraDockを使用して、Laravelの開発環境構築を行っていきます。
※基本的にMacでの環境構築方法を説明していきます。LaraDockとは?
LaraDockとは、仮想化ソフトウェア「Docker」上で動作する、オープンソースの開発環境です。
https://laradock.io/Dockerとは、コンテナと呼ばれる仮想環境を作ることができるものです。これまでの仮想環境に比べると動作が軽く、環境の設定等をコードで管理できるため、環境の再現性が高いです。
LaraDockはLaravelの動作に必要な環境を構築するコードを、GitHubから引っ張ってきてそのコードを元にDockerが環境を構築してくれます。
LaraDockには以下の機能が含まれています。
- nginx (webサーバー)
- php-fpm (phpの実行環境)
- MySQL (DB管理システム)
- workspace (Laravelの開発に必要な環境がまとまっているもの)
- phpMyAdmin (MySQLをGUIで操作できるもの)
Laravelの環境を構築していくわよ
Laradockのの導入には
Dockerとgitのインストールが必要です。1. Dockerのインストール
DockerHubにアクセス会員登録を行う。
https://hub.docker.com/会員登録後に、トップページにある
Get started with Docker Desktopのリンクをクリックし、Dockerをダウンロードします。ダウンロードファイルを展開し、指示通りにインストールを進めます。インストールが完了したらDockerを起動した状態にしておきましょう。
2. gitのインストール
Macの場合Xcodeがインストールがされていればgitのインストールがされていると思います。
以下のコマンドをターミナルで叩いてみましょう$ git --version git version 2.23.0バージョン情報が出ていればgitはすでにインストールされています。
バージョンが古い場合があるので、最新版のgitをインストールしても良いと思います。
https://git-scm.com/downloads3. LaraDockのインストール
# laradock_testという名前でディレクトリを作ります bash-3.2$ mkdir laradock_test # cd でlaradock_testに移動 bash-3.2$ cd laradock_test/ # git cloneでlaaradockのソースをダウンロードします。 bash-3.2$ git clone git@github.com:laradock/laradock.git Cloning into 'laradock'... remote: Enumerating objects: 32, done. remote: Counting objects: 100% (32/32), done. remote: Compressing objects: 100% (30/30), done. remote: Total 9337 (delta 10), reused 7 (delta 0), pack-reused 9305 Receiving objects: 100% (9337/9337), 8.66 MiB | 4.45 MiB/s, done. Resolving deltas: 100% (5002/5002), done. # lsでディレクトリの中身を確認するとlaaradockディレクトリが確認できます。 bash-3.2$ ls laradock # cdでlaradockディレクトリに移動しましょう。 bash-3.2$ cd laradock/4. コンテナの初期化をやる
コンテナ初期化の前に、設定ファイルを作成する必要があります。
# 元のソースにあるenv-exampleを.envとしてコピーする bash-3.2$ cp env-example .envコンテナの初期化を行ってきましょう。
# コンテナの初期化行います。ダウンロードや設定を行うのでしばらく待ちます。 bash-3.2$ docker-compose up -d nginx mysql workspace phpmyadmin初期化が終わると自動的にコンテナが起動状態になっています。
docker psコマンドを実行すると起動中のコンテナを確認することができます。CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09b6b2e0f3e8 laradock_nginx "/bin/bash /opt/star…" 28 seconds ago Up 26 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1 7dcee16a8564 laradock_php-fpm "docker-php-entrypoi…" 29 seconds ago Up 27 seconds 9000/tcp laradock_php-fpm_1 7f049605423b laradock_phpmyadmin "/docker-entrypoint.…" 31 seconds ago Up 29 seconds 0.0.0.0:8080->80/tcp laradock_phpmyadmin_1 38a2d3135a8d laradock_workspace "/sbin/my_init" 31 seconds ago Up 28 seconds 0.0.0.0:2222->22/tcp laradock_workspace_1 018fa8e3cdde laradock_mysql "docker-entrypoint.s…" 32 seconds ago Up 30 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp laradock_mysql_1 59ec053e8585 docker:dind "dockerd-entrypoint.…" 32 seconds ago Up 30 seconds 2375-2376/tcp laradock_docker-in-docker_16つのコンテナが起動していることが確認できます。
5. Laravelのプロジェクトを作っていこう
先程、初期化を行ったworkspaceが作業を行うコンテナなのでそこへ接続(ログイン)を行います。
ログインはデフォルトで用意されているlaradockで行います。docker-compose exec --user=laradock workspace bashログインが完了すると、
/var/wwwディレクトリに入るので、下記のcomposerコマンドを叩いて新規プロジェクトを作成します。
このcreateコマンドを打つことによって、必要なパッケージは自動的にインストールされ、laravelのアプリケーションが作成されます。
コマンド内のtest_appがアプリケーション名になります。composer create-project laravel/laravel test_app --prefer-dist "5.5.*"アプリケーションは作成されましたが、まだ
http://localhostではアクセスできません。6. 最後にホストに設定をしなくてはならない......!!
一旦、workspaceコンテナから出ます。
laradock@38a2d3135a8d:/var/www$ exit exitそこで先程の
.envファイルを編集します。vi .env ########################################################### ###################### General Setup ###################### ########################################################### ### Paths ################################################# # Point to the path of your applications code on your host # ここを先程作成したアプリケーション名に書き換える APP_CODE_PATH_HOST=../ ↓ APP_CODE_PATH_HOST=../test_app ..(略)書き換えただけでは、設定が反映されないので、コンテナの再起動を行います。
# 停止 bash-3.2$ docker-compose stop Stopping laradock_nginx_1 ... done Stopping laradock_php-fpm_1 ... done Stopping laradock_phpmyadmin_1 ... done Stopping laradock_workspace_1 ... done Stopping laradock_mysql_1 ... done Stopping laradock_docker-in-docker_1 ... done # 起動 bash-3.2$ docker-compose up -d nginx mysql Starting laradock_mysql_1 ... done Recreating laradock_docker-in-docker_1 ... done Recreating laradock_workspace_1 ... done Recreating laradock_php-fpm_1 ... done Recreating laradock_nginx_1 ... doneここで
http://localhostにアクセスしてみましょう。
テストページが表示されるはずです!
環境ができた!いろいろためしてみよう!
7. 参考文献
- 投稿日:2019-10-26T17:07:01+09:00
brefを使って簡単にLambdaのPHP Custom Runtime環境を構築する
概要
LambdaでPHPを動かすためにはCustom Runtimeの機能を使って、自分でランタイム環境をビルドして、bootstrapというCustom Runtimeのエンドポイントとなるファイルを用意する必要があります。
しかし、brefというサーバーレス環境でPHPを動かすためのツールとServerless Frameworkを使うことで非常に簡単にPHPのCustom Runtime環境が構築できたのでその紹介をしたいと思います。
使い方
テンプレートからプロジェクトを作成
brefのgithubリポジトリにサンプルとなるプロジェクトが公開されているのでそれを元にローカルにプロジェクトをセットアップします
$ serverless create --template-url https://github.com/brefphp/bref/tree/master/template/default --path sls-phpapp $ cd sls-phpappcomposerでbrefをインストール
プロジェクト配下でcomposerを使ってインストールを行います
$ composer require bref/brefserverless.yml
デフォルトでは以下のようなserverless.ymlになっています。brefのAWSアカウント内に既にPHPのレイヤーが構成されていてそれを参照してPHPを動作させるという仕組みです
serverless.ymlservice: app provider: name: aws region: us-east-1 runtime: provided plugins: - ./vendor/bref/bref functions: function: handler: index.php description: '' layers: - ${bref:layer.php-73}SQSバックエンドなアプリケーションを構成する
Lambdaはイベントソースをトリガーとして起動させるので、今回はSQSバックエンドLambdaを構成して動かしてみます。
以下がそのserverless.ymlになりますserverless.ymlservice: phpapp provider: name: aws region: ap-northeast-1 runtime: provided plugins: - ./vendor/bref/bref functions: function: handler: index.php description: '' layers: - ${bref:layer.php-73} events: - sqs: arn: Fn::GetAtt: - PhpQueue - Arn resources: Resources: PhpQueue: Type: AWS::SQS::Queue Properties: QueueName: phpqueueそして、
index.phpでeventをダンプさせますindex.php<?php declare(strict_types=1); require __DIR__.'/vendor/autoload.php'; lambda(function ($event) { var_dump($event); });これで準備完了です。デプロイしましょう
$ serverless deployデプロイが完了したらSQSにメッセージを送ってこのLambdaが動くか動作確認します。
$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/<アカウントID>/<queue名> --message-body aaaCloudWatchLogsを見てみると、正しくメッセージが処理されていることがわかります。
php.iniを編集する
デフォルトではLambdaの実行に最適化されたphp.iniがデプロイされています。
設定をカスタマイズしたい場合は、プロジェクト直下にphp/conf.d/php.iniを配置して設定の記述を行います。brefは自動で
php/conf.d/*.iniで設定内容をincludeしてくれるようです。エクステンションを追加する
デフォルトでは以下のエクステンションがインストールされているようです。
ここにないエクステンションは、自身でそのエクステンション用のLambda layerを作成して、
php.iniに設定することで使用可能になるようです。まとめ
brefを使うことでかなり簡単にPHPのLambda環境を作ることが出来ました。カスタマイズについてもphpの設定やエクステンションも自由に追加できるため、多くのプロジェクトでは特に問題なく採用できるのでは無いでしょうか。
- 投稿日:2019-10-26T16:08:02+09:00
Laravelで画像投稿機能を実装する
Laravelで画像投稿機能を実装します。具体的には以下のような機能を実装します。
上記の写真で画像ファイルを選択し、フォームにコメントを入力後、投稿ボタンを押すと、
上記の写真のように、画像とコメントを表示する機能を実装します。
開発環境
Laravel:5.5.46
MYSQL:5.5.62
PHP:7.2.17
画像アップロードサーバ:AmazonS3マイグレーションファイル作成
画像とコメントを保存するためのテーブルpostsを作成します。ターミナルで以下のコマンドを実行しマイグレーションファイルを作成します。
$ php artisan make:migration _create_posts_table --create=posts作成したマイグレーションファイルを編集します。
database/migrations/2019_10_22_220848_create_posts_table.php<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('image_file_name',100);//追加 $table->string('image_title',100);//追加 $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }ターミナルで以下のコマンドを入力しマイグレーションを実行します。
$ php artisan migrateモデル
Postモデルを作成します。ターミナルで以下のコマンドを実行しモデルを作成します。
$ php artisan make:model Post作成したモデルを編集します。
app/Post.php<?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { //後にcreate()メソッドで保存するカラムを指定 protected $fillable = [ 'image_file_name', 'image_title', ]; }ルータ
ルータを記述します。ページを表示したときと、投稿ボタンを押したときのルーティングを記述します。
routes/web.phpRoute::post('upload', 'PostsController@upload')->name('upload'); Route::get('/', 'PostsController@index');コントローラ
ターミナルで以下のコマンドを実行しコントローラを作成します。
$ php artisan make:controller PostsControllerweb.phpに記述した各ルーティングに対応したアクションを記述します。
/app/Http/Controllers/PostsController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Foundation\Auth\User; use App\Post; use Storage; use Illuminate\Support\Facades\Validator; class PostsController extends Controller { //画像およびコメントアップロード public function upload(Request $request){ //Validatorファサードのmakeメソッドの第1引数は、バリデーションを行うデータ。 //第2引数はそのデータに適用するバリデーションルール $validator = Validator::make($request->all(), [ 'file' => 'required|max:10240|mimes:jpeg,gif,png', 'comment' => 'required|max:191' ]); //上記のバリデーションがエラーの場合、ビューにバリデーション情報を渡す if ($validator->fails()){ return back()->withInput()->withErrors($validator); } //s3に画像を保存。第一引数はs3のディレクトリ。第二引数は保存するファイル。 //第三引数はファイルの公開設定。 $file = $request->file('file'); $path = Storage::disk('s3')->putFile('/', $file, 'public'); //カラムに画像のパスとタイトルを保存 Post::create([ 'image_file_name' => $path, 'image_title' => $request->comment ]); return redirect('/'); } //ページ表示 public function index(){ $posts = \App\Post::all(); $data = [ 'posts' => $posts, ]; return view('welcome',$data); } }ターミナルで以下のコマンドを入力し、ビューでFormファサードを使用できるようにします。
$ composer require "laravelcollective/html":"5.5.*"AWSの S3にアクセスするライブラリを導入します。
$ composer require league/flysystem-aws-s3-v3.envで環境変数を設定します。
.envAWS_S3_KEY=[your Access Key ID] AWS_S3_SECRET=[your Secret Key] AWS_S3_REGION=[your region] AWS_S3_BUCKET=[your backet]ビュー
resources/viewsに最初からあるwelcome.blade.phpを編集します。
resources/views/welcome.blade.php//投稿フォーム {!! Form::open(['route' => 'upload', 'method' => 'post','files' => true]) !!} <div class="form-group"> {!! Form::label('file', '画像投稿', ['class' => 'control-label']) !!} {!! Form::file('file') !!} </div> <div class="form-group m-0"> {!! Form::label('textarea', '投稿コメント', ['class' => 'control-label']) !!} {!! Form::textarea('comment',null,['class' => 'form-control']) !!} </div> <div class="form-group text-center"> {!! Form::submit('投稿', ['class' => 'btn btn-primary my-2']) !!} </div> {!! Form::close() !!} //画像とコメントをすべて表示 @foreach($posts as $post) <div class="card-header text-center"> <img src= {{ Storage::disk('s3')->url($post->image_file_name) }} alt="" width=250px height=250px></a> </div> <div class="card-body p-1"> <span class="card-title">{{ $post->image_title }}</span> </div> @endforeach
- 投稿日:2019-10-26T11:31:31+09:00
docker-composeでWordpressの構築 (Windows)
概要
- 手元のPCでWordpressを軽く触りたい
- 手元のPCにPHPやDBをインストールしていない(環境設定とか面倒)
- MAMPのような導入に便利なパッケージあるけど、やっぱり手元のPC環境はきれいなままにしたい
- そもそも、Wordpressで本格的に何かを開発するのではなくて勉強程度に触れるだけ
...ってな時にはDockerで試してみるのもありですね!
環境
- Windows 10 pro
- Docker version 19.03.2
- docker-compose version 1.24.1
準備
- 下記ファイルを用意
docker-compose.ymlversion: '3.4' networks: { intr: { external: true } } volumes: wp_db_data: { driver: "local" } services: wp: image: wordpress networks: [ "intr" ] volumes: - ./www:/var/www/html environment: WORDPRESS_DB_HOST: wp_db:3306 WORDPRESS_DB_PASSWORD: pass ports: [ 8001:80 ] wp_db: image: mysql:5.7 networks: [ "intr" ] volumes: - wp_db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: wordpress MYSQL_USER: user MYSQL_PASSWORD: pass構築
docker-compose.ymlを置いたディレクトリで下記のコマンドを実行cmddocker network create intr docker-compose up -d動作確認
[フロント画面]:http://localhost:8001
[管理画面]:http://localhost:8001/wp-admin補足
docker-compose.ymlに定義した内容の補足
- networks
- 将来的に別の
docker-compsoe.ymlで定義したコンテナからのアクセスを考慮し、共通リンク用のネットワークを作成してからコンテナを立ち上げるようにしています。(不要の場合は削除してよいです。)- そのため、
docker-compose up -dの前に、docker network create intrを実行して事前にネットワークを作っています。docker network lsで既存のnetworkの一覧を確認できます。- volumes
- データを永続化させるためにトップレベルに
data volumesを指定しています。- そのため、コンテナを再構築することになっても
data volumesさえ消さなければデータは無事です。- 今回、Docekr for Windowsを標準のまま利用しているので、Mysqlに登録されたデータは
Hyper-Vで作成した仮想マシンMobyLinuxVMにマウントされています。docker-compose down -vを実行するとdata volumesも消えるのでデータは消失します。docker volumes lsで 既存のvolumes一覧を確認できます。- services
- Wordpress(wp)とMysql(wp_db)のコンテナを立ち上げています。
- wpではホスト側のエディタ等を使用してWordpressのカスタマイズが出来るようにコンテナ内の
/var/www/htmlをマウントしてます。- wpではホスト側の
8001番ポートとコンテナ側の80番ポートをマッピングしているので、localhost:8001でブラウザからアクセスして動作を確認することができます。- wp_dbのコンテナの中には以下のコマンドで入ることができます。
docker-compose exec wp_db sh- コンテナの中に入ったら、下記のようなMysqlのコマンドでDBの参照等を行うことができます。
mysql -uuser -ppass wordpress以上です!
- 投稿日:2019-10-26T10:10:38+09:00
windowsでphp5.6からphp7.3に移行
今更ながら5.6系のサポートは2018年末までだった。あわてて7.3に更新することにした。
windowsで苦労している人ってすくないのか、ググっても記事が少ない。
なんとか動いたのでメモ手順
1. http://windows.php.net/download/ から7.3系統のマルチスレッド対応で64bit用の「VC15 x64 Thread Safe」をローカルにダウンロード
2. ダウンロードしたzipをサーバにコピー
3. 古いPHPフォルダをC:\php_5.6.versionにリネーム
4. zipを展開してC:\phpとして保存
5. C:\php_5.6.version\php.iniをコピーしてC:\php\php.iniとする
6. apache再起動・・・動かない原因
PHPのおまじないをやっていたことを思い出した。
php.ini へのパスを設定します5.6のおまじない
どこで調べたのかは忘れた
LoadModule php5_module C:/php/php5apache2_4.dll
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"7.3のおまじない
足して2で割ったようなかんじ
centos7 phpinfo.phpが表示されない
モジュール(php7_module)の追加と拡張子(.php)の登録LoadModule php7_module C:/php/php7apache2_4.dll
AddHandler php7-script .php
DirectoryIndex index.php
PHPIniDir "C:/php"「PHPIniDir "C:/php"」を付け忘れると、、、
- phpinfoで「Loaded Configuration File (none)」ってなってpip.iniが読み込まれない
- wordpressで「Fatal error: Uncaught Error: Call to undefined function mysql_connect() 」でハマる
- 投稿日:2019-10-26T10:10:38+09:00
windowsでwordpressのためにphp5.6からphp7.3に移行
今更ながら5.6系のサポートは2018年末までだった。あわてて7.3に更新することにした。
windowsのwordpressで苦労している人ってすくないのか、ググっても記事が少ない。
なんとか動いたのでメモ手順
1. http://windows.php.net/download/ から7.3系統のマルチスレッド対応で64bit用の「VC15 x64 Thread Safe」をローカルにダウンロード
2. ダウンロードしたzipをサーバにコピー
3. 古いPHPフォルダをC:\php_5.6.versionにリネーム
4. zipを展開してC:\phpとして保存
5. C:\php_5.6.version\php.iniをコピーしてC:\php\php.iniとする
6. apache再起動・・・動かない原因
PHPのおまじないをやっていたことを思い出した。
httpd.confにphp.ini へのパスを設定します5.6のおまじない
どこで調べたのかは忘れた
LoadModule php5_module C:/php/php5apache2_4.dll
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"7.3のおまじない
足して2で割ったようなかんじ
centos7 phpinfo.phpが表示されない
モジュール(php7_module)の追加と拡張子(.php)の登録LoadModule php7_module C:/php/php7apache2_4.dll
AddHandler php7-script .php
DirectoryIndex index.php
PHPIniDir "C:/php"もし「PHPIniDir "C:/php"」を付け忘れると、、、
- phpinfoで「Loaded Configuration File (none)」ってなってpip.iniが読み込まれない
- wordpressで「Fatal error: Uncaught Error: Call to undefined function mysql_connect() 」でハマる
php.iniの修正
上と順番が逆になっているかもしれないけど、こんな感じで修正する。
extension_dir = "c:\php\ext"
extension=curl
extension=mbstring
extension=mysqli
extension=openssl
- 投稿日:2019-10-26T02:16:55+09:00
ER図から『Laravel Migrationファイル生成』可能なツールを4日で作った
4日で作った『ER diagram Quick』 Laravel Migration生成可能
◇ツール名: ER diagram Quick
4日で作成したER図をWeb上で作成管理してLaravelのMigrationを生成するツールです。
『Laravel Migrationファイル生成』機能は、まだβ版ですがER図で設計したあとにベーステンプレートのMigrationを作成するだけでも(全て書かなくて良いので)捗るはずです。見た目など、細かい部分などはだいぶ見ないで進めましたが、現時点の進捗としては満足してます。◇技術
- HTML / CSS / Vanilla JS
- Firebase / WWW SQL Designer
- PHP /Laravel5.5(Migration検証)
リンク: https://venezia-works.com/sql/
ER図をかいたら保存!!
作成したER図はCloud(Firebase) or ブラウザに保存
Migrationファイルができあがるとこんな感じ
早く開発できたのには理由がある
- API(Firebase)を利用できたこと
- WWW SQL Designer を利用できたこと(1日コード眺めるくらいでどのような事をやってるかわかったので、必要な修正には時間がかからなかった。)
- Laravelを少し前に触ってたので、Migrationのドキュメントを読んでいた。そのため、全てではないがER図から生成できるカラム等の調査にも時間がかからなかった(はず)。
- 作るのが楽しい
今後は
一気に作って少し疲れたので、少しずつ改修していこうと思います。
必要とされるかまだわかりませんが、今後も良いものにしていきたいです。
- 投稿日:2019-10-26T02:16:55+09:00
ER図から『Laravel Migrationファイル生成』可能なツールを4日で作ってみた
4日で作った『ER diagram Quick』 Laravel Migration生成可能
◇ツール名: ER diagram Quick
4日で作成したER図をWeb上で作成管理してLaravelのMigrationを生成するツールです。
『Laravel Migrationファイル生成』機能は、まだβ版ですがER図で設計したあとにベーステンプレートのMigrationを作成するだけでも、全て書かなくて良いので捗るはずです。
見た目など、細かい部分などはだいぶ見ないで進めましたが、現時点の進捗としては満足してます。(1日は子供をスカイツリーに連れていったので・・・もう少し少ないかも)
少しでも役に立てば幸いです。リンク: https://venezia-works.com/sql/
ER図をかいたら保存!!
作成したER図はCloud(Firebase) or ブラウザに保存
Migrationファイルができあがると
Zip圧縮されて全てのMigrationファイルが作成されます。
中身はみなさんご存知の以下のようなCODEです。早く開発できたのには理由がある
- API(Firebase)を利用できたこと
- WWW SQL Designer を利用できたこと(1日コード眺めるくらいでどのような事をやってるかわかったので、必要な修正には時間がかからなかった。)
- Laravelを少し前に触ってたので、Migrationのドキュメントを読んでいた。そのため、全てではないがER図から生成できるカラムや記法等の調査にも時間がかからなかった。
- 作るのが楽しい
◇使用した技術
- HTML / CSS / Vanilla JS
- Firebase / WWW SQL Designer
- PHP / Laravel5.5(Migration検証) / MAMP
今後は
一気に作って少し疲れたので、少しずつ改修していこうと思います。
必要とされるかまだわかりませんが、今後も良いものにしていきたいです。
いや、かなり便利なはずなので、是非使ってほしい(^^)
- 投稿日:2019-10-26T02:16:55+09:00
ER図をWeb上で作成管理してLaravelのMigrationを生成するツール
4日で作った『ER diagram Quick』 Laravel Migration生成可能
◇ツール名: ER diagram Quick
4日で作成したER図をWeb上で作成管理してLaravelのMigrationを生成するツールです。
『Laravel Migrationファイル生成』機能は、まだβ版ですがER図で設計したあとにベーステンプレートのMigrationを作成するだけでも、全て書かなくて良いので捗るはずです。
見た目など、細かい部分などはだいぶ見ないで進めましたが、現時点の進捗としては満足してます。(1日は子供をスカイツリーに連れていったので・・・もう少し少ないかも)
少しでも役に立てば幸いです。リンク: https://venezia-works.com/sql/
ER図をかいたら保存!!
作成したER図はCloud(Firebase) or ブラウザに保存
Migrationファイルができあがると
Zip圧縮されて全てのMigrationファイルが作成されます。
中身はみなさんご存知の以下のようなCODEです。早く開発できたのには理由がある
- API(Firebase)を利用できたこと
- WWW SQL Designer を利用できたこと(1日コード眺めるくらいでどのような事をやってるかわかったので、必要な修正には時間がかからなかった。)
- Laravelを少し前に触ってたので、Migrationのドキュメントを読んでいた。そのため、全てではないがER図から生成できるカラムや記法等の調査にも時間がかからなかった。
- 作るのが楽しい
◇使用した技術
- HTML / CSS / Vanilla JS
- Firebase / WWW SQL Designer
- PHP / Laravel5.5(Migration検証) / MAMP
今後は
一気に作って少し疲れたので、少しずつ改修していこうと思います。
必要とされるかまだわかりませんが、今後も良いものにしていきたいです。
いや、かなり便利なはずなので、是非使ってほしい(^^)
- 投稿日:2019-10-26T02:16:55+09:00
ER図からLaravelのMigrationを生成するツール
『ER diagram Quick』は Laravel Migration生成可能ツールでもある
◇ツール名: ER diagram Quick
実は4日間で作成したER図をWeb上で作成管理してLaravelのMigrationを生成するツールです。たった4日間ですが、アウトプットの量はハンパないので、こういうのは慣れています。
『Laravel Migrationファイル生成』機能は、まだβ版ですがER図で設計したあとにベーステンプレートのMigrationを作成するだけでも、全て書かなくて良いので捗るはずです。開発の進めかたですが、個人としては「アウトプット・ファースト」を最優先にしています。
大体いつもα版(目的を満たす機能、動作ができてる最低限の状態)を一週間と決めて開発しています。
そこを軸に、大事な目的にあった機能を先行して作り込み、機能動作優先、見た目など細かい部分などはだいぶ見ないで進めました。現時点の進捗としては満足してます。いつもデザインはリリース後に調整していくので、このスピード感を出すためには、この方法が良いと思っています(まずは動くが優先、モチベーションも保ちやすい)。
少しでも役に立てば幸いです。◇サイトデザインは少しだけLaravelのサイトカラーを入れました(^^)
リンク: https://venezia-works.com/sql/
ER図をかいたら保存!!
作成したER図はCloud(Firebase) or ブラウザに保存
Migrationファイルができあがると
Zip圧縮されて全てのMigrationファイルが作成されます。
中身はみなさんご存知の以下のようなCODEです。早く開発できたのには理由がある
- API(Firebase)を利用できたこと
- WWW SQL Designer を利用できたこと(1日コード眺めるくらいでどのような事をやってるかわかったので、必要な修正には時間がかからなかった。)
- Laravelを少し前に触ってたので、Migrationのドキュメントを読んでいた。そのため、全てではないがER図から生成できるカラムや記法等の調査にも時間がかからなかった。
- 作るのが楽しい
◇使用した技術
- HTML / CSS / Vanilla JS
- PWA (ChcheAPI, ServiceWorker, Manifest)
- Firebase / WWWSQLDesigner
- PHP7.2 / Laravel5.5(Migration検証) / MAMP
- ツール: PHPStorm、GoogleChrome
今後は
一気に作って少し疲れたので、少しずつ改修していこうと思います。
必要とされるかまだわかりませんが、今後も良いものにしていきたいです。
いや、かなり便利なはずなので、是非使ってほしい(^^)
- 投稿日:2019-10-26T01:01:54+09:00
PHPキャッチアップ~ToDoリスト作成~
なんでわざわざ公開したの?
PHPを触りくらい使えるようにとキャッチアップ中だからです。
とりあえずアウトプットして皆様のご意見を戴かないと、自己研鑽できないからです。
お決まりのToDoリストくらいは作れるぜってアピールしたいからです。PHPらしいコードってのがイマイチ理解できていないので、有識者様、どうか私奴に教えてください。
コード
ToDo.php<?php $pdo = new PDO('mysql:dbname=php;host=localhost','root',''); if(isset($_POST['submit'])){ $content = $_POST['content_name']; $sql = "INSERT INTO doing (content) VALUES ('$content')"; $insert = $pdo->query($sql); } $sql = 'SELECT content FROM doing'; $results = $pdo->query($sql); ?> <html> <head> <meta charset="UTF-8"> <Title>ToDoリスト</Title> </head> <body> <h1>ToDoリスト</h1> <form action="ToDo.php" method="post"> <ul> <li><span>タスク名</span><input type="text" name="content_name"> <span><input type="submit" name="submit"></span></li> </ul> <ul> <ul> <?php foreach($results as $result){ echo "<li>"; echo $result['content']; echo "</li>"; }; ?> </ul> </ul> </body> </html>DBは下記の通り作成しました
doing.sqlCREATE DATABASE php; CREATE TABLE doing ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, content VARCHAR(100) NOT NULL );











