- 投稿日:2019-10-26T20:03:31+09:00
Ubuntu 18.04にMySQL 5.7をインストール(OS標準)
はじめに
Ubuntu18.04にMySQL5.7をインストール
LOG
インストール
# cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic # apt update; apt install -y mysql-server ... 略各種確認
# service mysql start # mysql -u root -e'select version();' +-------------------------+ | version() | +-------------------------+ | 5.7.27-0ubuntu0.18.04.1 | +-------------------------+
- 投稿日:2019-10-26T19:36:31+09:00
Ubuntu 16.04にMySQL 5.7をインストール(OS標準)
はじめに
Ubuntu16.04にMySQL5.7をインストール
LOG
インストール
# cat /etc/os-release NAME="Ubuntu" VERSION="16.04.6 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.6 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" VERSION_CODENAME=xenial UBUNTU_CODENAME=xenial # apt update; apt install -y mysql-server ... 略各種確認
# service mysql start # mysql -u root -e'select version();' +-------------------------+ | version() | +-------------------------+ | 5.7.27-0ubuntu0.16.04.1 | +-------------------------+
- 投稿日:2019-10-26T19:12:13+09:00
Ubuntu 14.04にMySQL 5.5をインストール(OS標準)
はじめに
Ubuntu14.04にMySQL5.5をインストール
LOG
インストール
# cat /etc/os-release NAME="Ubuntu" VERSION="14.04.6 LTS, Trusty Tahr" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 14.04.6 LTS" VERSION_ID="14.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" # apt update; apt install -y mysql-server ... 略各種確認
# service mysql start # mysql -u root -e'select version();' +-------------------------+ | version() | +-------------------------+ | 5.5.62-0ubuntu0.14.04.1 | +-------------------------+
- 投稿日:2019-10-26T18:07:44+09:00
Debian 8にMySQL 5.5をインストール(OS標準)
はじめに
Debian 8にMySQL5.5をインストール
LOG
インストール
# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" # apt update; apt install -y mysql-server ... 略各種確認
# service mysql start # mysql -u root -e'select version();' +-----------------+ | version() | +-----------------+ | 5.5.62-0+deb8u1 | +-----------------+
- 投稿日: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-26T15:16:25+09:00
MysqlのソートでNULLや0を最後に並べる方法
前置き
Mysqlでは、
シンプルにソートを行うと、
0やNULLは先に並べられてしまいます。SQLSELECT * FROM tests ORDER BY rank ASC;NULL->0->1~の順番になってしまう+----+------+ | id | rank | +----+------+ | 4 | NULL | | 3 | 0 | | 1 | 1 | | 2 | 2 | +----+------+以下の方法で、NULLや0を最後に並べられるので、ぜひ使ってみてください!
NULL を最後に並べたい場合
SQLSELECT * FROM tests ORDER BY rank IS NULL ASC, /* 追加 */ rank ASC;0->1~->NULLの順番になる+----+------+ | id | rank | +----+------+ | 3 | 0 | | 1 | 1 | | 2 | 2 | | 4 | NULL | +----+------+NULL と 0 を最後に並べたい場合
SQLSELECT * FROM tests ORDER BY rank IS NULL ASC, /* 追加 */ rank = 0 ASC, /* 追加 */ rank ASC;1~->0&NULLの順番になる+----+------+ | id | rank | +----+------+ | 1 | 1 | | 2 | 2 | | 3 | 0 | | 4 | NULL | +----+------+
- 投稿日:2019-10-26T13:33:49+09:00
mysqldump件数を指定して取得
- 投稿日: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以上です!

