20210623のMySQLに関する記事は4件です。

Ubuntu の Mysql と PowerDNS のバージョン組み合わせでRestAPIが使えなくなる現象について

Ubuntu の Mysql と PowerDNS のバージョン組み合わせでRestAPIが使えなくなる現象について ある仕事でオフラインの Ubuntu に debパッケージで mysql-server と PowerDNS をインストールし、 運用ではスケジュールで各マシンのIP情報を監視し、変更内容をバッチコマンドの RestAPIで DNS情報を更新するような使い方だったのですが、 通常のdebパッケージだけでインストールしたら何故か RestAPIでの DNS情報の更新ができない現象になったので、 同じ現象で困った人は以下にこの現象になった環境を記載しますので、対処方法を参考にしていただければ幸いです。 現象環境 OS DNS DB Ubuntu20.04 pdns-server_4.2.1-1build2 mysql-server_8.0.22-0 主に使用したdebパッケージ libmysqlclient21_8.0.22-0ubuntu0.20.04.3_amd64.deb mysql-client_8.0.22-0ubuntu0.20.04.3_all.deb mysql-client-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb mysql-client-core-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb mysql-common_5.8+1.0.5ubuntu2_all.deb mysql-server_8.0.22-0ubuntu0.20.04.3_all.deb mysql-server-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb mysql-server-core-8.0_8.0.22-0ubuntu0.20.04.3_amd64.deb pdns-server_4.2.1-1build2_amd64.deb pdns-backend-bind_4.2.1-1build2_amd64.deb pdns-backend-mysql_4.2.1-1build2_amd64.deb (関連パッケージを入れると多くなってしまうので割愛させていただきます。) インストールは検索などで得た上記のようなパッケージでそのままインストールして問題ありませんが、 PowerDNS 用の初期設定で使う Mysql 用スキーマ(テーブル作成SQL) に問題がありました。 パッケージは以下のものになります。 pdns-backend-mysql_4.2.1-1build2_amd64.deb インストールされると下記にMySQL用のスキーマが下記 Dir に入ります。 /usr/share/pdns-backend-mysql/schema/schema.mysql.sql これをそのまま実行して初期設定をしたら何故か RestAPIでの DNS情報の更新ができない現象になりました。 設定ファイルの /etc/powerdns/pdns.conf api=yes になっているので、APIは使えるはずです。。。 考察 まず、大きな違いのあるアップデートを考えると、Mysql の バージョンアップでの utf8mb4 対応などが思い付きました。 utf8 の4バイト文字対応です。 これを原因とするトラブル対応はいろいろあったのでこれに関わる部分を修正する事にしました。 対処方法 予想で対処したのですが、結果は正常に各機能が動作するようになったのでこの方法を記載します。 インストール用スキーマの内容を確認。 各テーブル内の項目毎に文字列部分には utf8 を指定していたので、 この部分を削除 VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,  ↓ ↓ ↓ VARCHAR(40) DEFAULT NULL, 項目ではなく、各テーブルのデフォルト文字列を utf8mb4 に変更。 Engine=InnoDB CHARACTER SET 'latin1';  ↓ ↓ ↓ Engine=InnoDB CHARACTER SET 'utf8mb4'; 一度作成されたDatabaseを削除して、この修正したスキーマで初期設定を行い起動する事で RestAPI で DNS情報を更新できるようになりました。 今後のPowerDNS 側のアップデートで対応される事を期待しております。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Flask+MySQL on docker

Flask+MySQL on docker Webアプリケーションを作りシステム作りが初めてであってもどこからどこまで実施すれば動くシステムができるのかを開発して体験してみます。 FlaskはpythonのWebアプリ開発フレームワークです。Webサーバーを立ち上げてURLに応じた画面を表示したり、リクエストに対する処理をpythonで作り処理結果を返すことができます。 勉強会スケジュール 開発環境の構築(Python, docker, githubの使い方・フローの説明)​ 今回、勉強会で必要なツール等のインストールのサポートと簡単な開発の流れを説明します。 PythonでRest APIサーバープログラムの作成​ 何らかのデータモデルを参照・作成・変更・削除できるAPIを作ります。 各参加者に異なったデータモデルを割り当てるのでDBの設計、sqlの作成、そのモデルを扱うpythonプログラムの作成、apiの入出力の設計、リクエストを受け取って返却するプログラムの作成を行います。 Vue.jsでフロント画面の作成​ Vue.jsでWebフロントのサンプルプログラムを用意します。それに各自が作ったAPIを呼び出す、Vue.jsを使ったjavascriptプログラムを作成します。 本番環境の構築 AWS上にサービスを構築し、公開(リリース)します。 本番に構築する前に、開発環境に構築してプログラム、構築方法が正しいか確認します。 開発環境で問題ないことが確認できたら本番に構築します。また、本番構築後に再度構築が必要になった時、サービスを止めないで構築する方法などについても話をします。 事前準備 Flask+MySQL on dockerを始める準備を参考に環境を作ってください。 Project 今回の勉強会で作っていくシステムを次のリポジトリに公開しました。 プロジェクトはpythonのプログラムである flask_sv と後述しますが、DBのdockerコンテナである docker_mysql_flask_sv  があります。 途中、作業しているディレクトリなどが切り替わりますのでご注意ください。 ここでは flask_sv での作業です。 次のコマンドを入力し、リポジトリよりcloneし、そのディレクトリに移動します。 $ git clone git@github.com:kaorunix/flask_sv.git $ cd flask_sv 次のコマンドでPipenvを起動します。 $ pipenv shell 次のコマンドで必要なパッケージをインストールします。 $ pipenv install --ignore-pipfile $ pipenv install --ignore-pipfile --dev プロジェクトは以下の様なディレクトリ構成となっています。 . ├── Pipfile ├── Pipfile.lock ├── Readme.md ├── backend │   ├── src │   │   ├── api.py │   │   ├── main.py │   │   ├── model │   │   │ ├── Account.py │   │   │ ├── Authentication.py │   │   │ ├── Authority.py │   │   │ ├── Status.py │   │   │ │ .... │   │   │ ├── __init__.py │   │   │ └── db.py │   │   └── restapi │   │   ├── __init__.py │   │   └── AccountApi.py │   └── tests │   ├── __init__.py │   ├── conftest.py │   └── model │   ├── __init__.py │   ├── test_Account.py │   ├── test_Status.py │   └── test_db.py └── tests └── __init__.py backend配下にアプリケーションサーバーのソースを入れてあります。 model配下にモデルを配置しています。 MVCモデルに準じてコード設計をしましょう。Model View Controller参照。 データベースのテーブル単位であったり、取り扱うデータ(例えば複数テーブルをJOINしたもの)単位にコードを書く事にします。 src直下のmain.pyの中にコントローラを実装します。 WEBアプリケーションFWであるflaskを使ってアプリケーションサーバーを実装します。 URL毎に異なった振る舞いをmain.pyを入り口に実装します。 docker アプリケーションを動かすにはDBが必要です。 DBをdockerで用意してありますので次の手順に従って構築してください。 1. dockerインストール Windows に Docker Desktop をインストール 2. mysql dockerイメージからコンテナを作成 ここより、docker_mysql_flask_sv の話題となります。 次のリポジトリに今回の開発で必要となるdocker-composeプロジェクトを作ってあります。 次のコマンドでgit cloneします。 $ git clone git@github.com:kaorunix/docker_mysql_flask_sv.git ディレクトリ docker_mysql_flask_sv/docker-mysql の配下に .env というファイルを作ります。 MYSQL_PASSWORD=password MYSQL_ROOT_PASSWORD=password passwordのところは自分の環境用のパスワードに変更しておきましょう。 このファイルをはgitに登録しないことでパスワードの漏洩を防ぐことができます。 docker-compose.yml ファイルには次の様に記載されています。 .env で設定した変数を埋め込むことができます。 docker-compose.yml # versionは3系が最新版で、versionによって書き方が異なる version: "3" services: mysql: build: ./mysql/ #Dockerfileからビルドすることを示す image: mysql:5.7 #original_mysql_world # イメージの名前 environment: MYSQL_DATABASE: flask_sv MYSQL_USER: creist MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} volumes: - ./mysql/db:/docker-entrypoint-initdb.d #初期データをマウントする場所 ports: - 3306:3306 Docker-docs-ja Compose ファイル内でのサービス定義などをみて書き方を調べてみてください。 docker-compose.yml があるディレクトリで次のコマンドを打つとmysqlのコンテナが起動されます。 $ docker-compose up -d docker psコマンドで実行中のコンテナを確認できます。 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4a03b458af46 mysql:5.7 "docker-entrypoint.s…" 11 days ago Up 3 seconds 3306/tcp, 33060/tcp, 0.0.0.0:3316->3316/tcp docker-mysql_mysql_1 動いているのが確認できたらmysqlコマンドでログインできることを確認しましょう。 $ mysql -h 127.0.0.1 -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.23 MySQL Community Server - GPL Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> もし、うまくdockerが起動できなかったら次のコマンドでログを確認し、問題を解決します。 $ docker logs -f コンテナID docker-compose.ymlの次の行でPCのディレクトリをDockerコンテナの中にマウントしています。 docker-compose.yml volumes: - ./mysql/db:/docker-entrypoint-initdb.d #初期データをマウントする場所 docker_mysql_flask_sv/docker-mysql/mysql/db 配下が /docker-entrypoint-initdb.d にマウントされる事になります。 docker mysqlは /docker-entrypoint-initdb.d にsqlファイルを置いておくとコンテナを作成・起動時に実行してくれます。 こちらを参考にしました。docker mysql(Initializing a fresh instance) コンテナが起動できないトラブルシューティング MySQLをインストールしたときにMySQLサーバーを起動する設定にしているとコンテナが起動できません。コンテナで公開しようとしているポートが既に使われているためです。 OSの設定からMySQLサーバーを起動しない設定に変更してください。 もし、他の用途でMySQLを使っていて、共存させたい場合、次の設定変更でも対応できます。 docker-compose.ymlのポート設定を変更し、自PC上で公開するポートは3307など空いているポートを指定します。 docker-compose.yml ports: - 3307:3306 この場合、MySQLに接続するコマンドはポート番号を指定するため次の様になります。 mysql -h 127.0.0.1 -u root -p -P 3307 他にも接続するアプリケーションのポート番号を変更する必要があります。 ちなみに、flask_svでは、 flask_sv/backend/model/db.py の中でポート番号の設定をしています。 アプリケーションの起動 flask_sv に戻ります。 Projectを確認し、 pipenv shell や依存パッケージをインストールした状態で始めてください。 2. mysql dockerイメージからコンテナを作成で作成したDBのパスワード情報を環境変数に設定するシェルを用意しました。 次の DOCKER_HOME に設定するパスを docker_mysql_flask_sv のパスに書き換えてください。 bin/env.sh DOCKER_HOME=$HOME/projects/docker_mysql_flask_sv/docker-mysql IFS=$'\n' for line in `cat $DOCKER_HOME/.env` do export $line done このファイルは、使っているシェルに環境変数として読み込ませるので次のコマンドを実行してください。 $ source bin/env.sh flask_sv アプリケーションは、次のコマンドで実行します。 flask_svのディレクトリから実行してください。 $ pipenv run python backend/src/main.py * Serving Flask app "main" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 実行されると5000ポートでwebサービスが動きます。 http://127.0.0.1:5000 にブラウザでアクセスするとアプリケーションを実行することができます。 APIとしてaccountの取得をするAPIを用意しました。 http://127.0.0.1:5000/account/get/\ 上記URLへのアクセスに対して次のレスポンスが返ります。 { "body": { "name": "account", "id": <account_id>, "account_name": <account_name>, "start_on": "2021-01-01 10:00:00", "end_on": "2025-12-31 21:00:00" }, "status": { "code" : "I0001", "message" : "", "detail" : "" } } また、登録用のURL http://127.0.0.1:5000/account/create { "account_name": "start_on": "end_on": "opration_account_id": } のAPIに登録すると、作成日(created_at)、作成者(created_by)、更新日(updated_at)、更新者(updated_by)が更新される。 また、アカウントが作られた時はstatusに "1":"ACTIVE"が入る事にします。 statusは今後のことも考えて使用可能不可能を切り替えられる事にします。 "0":"NEW" 作成後有効化前の状態 "1":"ACTIVE" 有効状態 "2":"INACTIVE" 無効状態 "3":"DELETE" 削除状態 こういった決め事を考えることが設計です。 APIを正常に受け付けると次のレスポンスを返します。 { "body" : "", "status": "I0001", "message": "account {} was created.", "detail": "" } APIの設計を課題とします。後術再度確認します。 DB 現在、accountテーブルを用意してあります。 mysqlではデータベースという論理データベースを選択した後、目的のテーブルなどにアクセスできます。 show databases use <データベース名> show tables describe 論理データベースの一覧は show databases、テーブルの一覧は show tables、 テーブル構造を確認するのは describeコマンドで確認できます。これらのコマンドはmysql独自のコマンドです。他のデータベースはまた違うコマンドが用意されています。 mysql> show databases; +--------------------+ | Database | +--------------------+ | flask_sv | | information_schema | +--------------------+ 2 rows in set (0.12 sec) mysql> use flask_sv; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +--------------------+ | Tables_in_flask_sv | +--------------------+ | account | | authentication | | authority | +--------------------+ 3 rows in set (0.01 sec) mysql> mysqlから確認すると次の様に確認できます。 mysql> desc account; +--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | account_name | varchar(64) | NO | UNI | NULL | | | start_on | datetime | NO | | NULL | | | end_on | datetime | NO | | NULL | | | created_by | int | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_by | int | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | status | int | NO | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 9 rows in set (0.08 sec) mysql> アカウントのテーブルを作るSQLは以下の様になります。 SQLはどのRDBでも基本同じです。ここで慣れておけばOracleや、PostgreSQL、SQLServerなどを使う時に役に立ちます。 DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `id` int NOT NULL AUTO_INCREMENT, `account_name` varchar(64) NOT NULL UNIQUE, `start_on` datetime NOT NULL, `end_on` datetime NOT NULL, `created_by` int DEFAULT NULL, `created_at` datetime DEFAULT NULL, `updated_by` int DEFAULT NULL, `updated_at` datetime DEFAULT NULL, `status` int NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 課題として、先に説明したAPIの設計、テーブル定義の設計、テーブル作成を各メンバー一人ひとつづつ実施してください。 次回各、テーブルに対するapiを作っていきます。 題材は、Scrumのかんばんをイメージした「タスク管理システム」です。 業務等で発生する課題を記録、ステータスやスケジュール管理をしましょう。 開発とはお客さんが仕様を決めてくれるので言われるままに作れば良いと考えてしまいがちですが、システムがどの様に動くのか、どの様にしか動かないのかわかる人は開発者です。お客さんの目的を考えて何が必要か洗い出してください。 それぞれテーブルは1つでもできますが汎用性を考えて紐付けテーブルを作るのも検討してください。 プロジェクト 案件であったり取り扱うシステムであったりなどの大きな一括りにする。名称、説明の他、誰が作ったかいつ作ったかの情報も保持できる様にしましょう。 スプリント プロジェクト内での一定期間単位でタスクをまとめるものをスプリントと呼びます。1〜2週間でできるストーリーとタスクを紐付けます。期間情報、作成者情報、プロジェクトとの紐付けができる様にします。 プロジェクト、ストーリー、タスクと関連があります。 ストーリー 目標とする作業のまとまり。開発作業によって出来上がるもの例えば機能などを作る作業のくくりを保存します。例えば「商品一覧画面を作る」といったデータが入ります。 プロジェクト、スプリント、タスクと関連があります。 タスク プロダクトバックログを実現するためにやらなくてはならない作業単位の最も小さなもの。 タスク見出し、タスク内容、期限、工数、開始日、終了日、担当者が必須です。 プロジェクト、スプリント、ストーリー、アカウントと関連があります。 タスクのステータス タスクの処理ステータス。未着手、作業中、レビュー、完了を管理しましょう。 タスクと関連があります。 プロジェクトグループ プロジェクトに参加するアカウントをまとめて管理します。また、権限とも組み合わせて設定を容易にすることも念頭に置きましょう。 プロジェクト、アカウント、権限、業務、画面と関連があります。 権限 アカウントの権限を管理するテーブルを作ります。 権限によってアクセスできる業務・画面(データ)に制限をかけます。また操作できる内容も参照であったり更新 といった権限を紐付けできる様に考えてください。 プロジェクト、プロジェクトグループ、業務、画面、アカウントと関連があります。 業務 業務を権限によって利用制限をつけるための業務側のテーブル設計をしてください。 権限、アカウント、画面などと関連があります。 画面 現在はAPIを作っていますが、Web画面ができた時、その画面と権限を紐付けます。 権限、アカウント、業務などと関連があります。 APIを作る記事に続きます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[ Rails & Nuxt ] Dockerで開発環境を構築する

No. タイトル 1 Dockerで開発環境を構築する 2 ログイン認証を機能を実装する 3 記事投稿機能を実装する 4 AWS ECSを使ってデプロイする 5 Circle CIを使って自動テスト•デプロイをする はじめに ※初投稿なので多少読みづらいのはご容赦ください! 本記事は私がエンジニアとして就活するにあたり、ポートフォリオを完成させるまでの過程を簡単にまとめたものです。解説書というよりは手順書という感覚で読んで頂ければと思います。 全5部構成でDocker,CircleCI,AWS等モダンな技術を組み込んだ作品を完成させる予定です。 本章ではDockerをローカル環境に導入して、開発環境を構築するフレーズまで進めていきます。 事前知識 Dockerって何やねんって方は以下の学習をおすすめします! ↓ AWS公式の解説。前半部分でDockerの概念について分かりやすく解説されている。 ↓ Dockerの基礎をハンズオン形式で学べます。 Dockerのインストール Dockerの環境構築 まず最初に以下のディレクトリ&ファイルを作ってください。 Gemfile.lockの中身は空で大丈夫です。 sample |-docker-compose.yml |-front | |-Dockerfile | |-back |-Dockerfile |-Gemfile |-Gemfile.lock back/Dockerfile FROM ruby:2.6.3-alpine3.10 ENV RUNTIME_PACKAGES="linux-headers libxml2-dev make gcc libc-dev nodejs tzdata mysql-dev mysql-client yarn" \ DEV_PACKAGES="build-base curl-dev" \ HOME="/app" \ LANG=C.UTF-8 \ TZ=Asia/Tokyo WORKDIR ${HOME} COPY Gemfile ${HOME}/Gemfile COPY Gemfile.lock ${HOME}/Gemfile.lock RUN apk update && \ apk upgrade && \ apk add --update --no-cache ${RUNTIME_PACKAGES} && \ apk add --update --virtual build-dependencies --no-cache ${DEV_PACKAGES} && \ bundle install -j4 && \ apk del build-dependencies && \ rm -rf /usr/local/bundle/cache/* \ /usr/local/share/.cache/* \ /var/cache/* \ /tmp/* \ /usr/lib/mysqld* \ /usr/bin/mysql* front/Dockerfile FROM node:16.3.0-alpine ENV HOME="/app" \ LANG=C.UTF-8 \ TZ=Asia/Tokyo ENV HOST 0.0.0.0 WORKDIR ${HOME} RUN apk update && \ apk upgrade && \ yarn install &&\ rm -rf /var/cache/apk/* Gemfile source 'https://rubygems.org' gem 'rails', '6.1.3.2' docker-compose.yml version: "3" services: db: image: mariadb:10.4 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: touhou ports: - '3306:3306' restart: always volumes: - sample-db:/var/lib/mysql back: build: ./back command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0' " volumes: - ./back:/app:cached stdin_open: true tty: true depends_on: - db ports: - 3000:3000 front: build: ./front command: yarn run dev volumes: - ./front:/app:cached ports: - 8000:3000 volumes: sample-db: 作成し終わったら以下のコマンドを実行します。 #Dockerfileを基にコンテナを作成 [sample]$: docker-compose build #RailsAPIの作成 [sample]$: docker-compose run back rails new . -f -d mysql --api --skip-test #Nuxtアプリの作成 [sample]$: docker-compose run front npx create-nuxt-app@v3.6.0 front2 # 以下のような選択画面が出ます。 ? Project name --> Sample ? Programming language --> javascript ? Package manager --> Yarn ? UI framework --> bootstrap-vue ? Nuxt.js modules --> Axios ? Linting tools --> ESlint ? Testing framework --> None ? Rendering mode --> Universal ? Development tools --> None ? Github name --> 任意 ? Version control system --> Git Nuxtアプリを作成後、front2ディレクトリの中身を全てfrontディレクトリに移動させて下さい。そしたらfront2は削除してOKです。 データベースの設定 mariadbのコンテナを使用するよう書き換えます。 config/database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db development: <<: *default database: app_development test: <<: *default database: app_test production: <<: *default database: app_production $: docker-compose build $: docker-compose run back rails db:create $: docker-compose run back rails db:migrate 以上で構築完了です! コンテナを立ち上げるとlocalhost:3000またはlocalhost:8000にアクセス出来るのが確認出来ると思います。 $: docker-compose up localhost:8000 localhost:3000 終わりに 以上で完了です、お疲れ様でした。 次回からポートフォリオの中身を作成していきます。良ければそちらもご覧ください!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ララベルで久々にプロジェクトをクローンしたのでつまづきポインの備忘録(forMac)

自分のプロジェクトをクローンしてデータベースのモックアップ(テスト環境)をローカルに作成しようと思ったのですが、前にプロジェクトをクローンした時と同じ轍を踏んでいる気がしたのでいい加減覚えようと戒めの意味も込めて備忘録を作成します。 1.プロジェクトのクローン これは簡単ですねサクッとローカルにクローンします。 simple_db_mockup % git clone https://github.com/mar-gitacount/simple.git うまくいったぽいです。 Cloning into 'simple'... remote: Enumerating objects: 554, done. remote: Counting objects: 100% (554/554), done. remote: Compressing objects: 100% (307/307), done. remote: Total 554 (delta 304), reused 463 (delta 213), pack-reused 0 Receiving objects: 100% (554/554), 1.06 MiB | 4.62 MiB/s, done. Resolving deltas: 100% (304/304), done. 中身もチェックします。プロジェクトはsimple_db_mockup/simple直下にあるので、 移動して中身をチェックします。 % cd simple % ls README.md dist server.php app docker-compose.yml server.txt artisan flowmemo.txt serverlog.txt bootstrap package-lock.json src composer.json package.json storage composer.lock phpunit.xml tests composer.phar public config resources webpack.mix.js database routes とりあえずは大丈夫そうです。 2.MAMPの設定 ローカ環境ではMAMPを利用しており、ここでは割愛しますが、htdocs直下にプロジェクトをクローンしています。 ちなみに自分の環境ですと以下になります。 /Applications/MAMP/htdocs/s_p/simple_db_mockup/simple MAMPは大変便利でバーチャルホストの設定をすることでプロジェクトのホスト名を任意で設定できます。MAMPではNginxとApacheが提供されていますが、Apacheを利用を前提に説明します。 2-1バーチャルホストにプロジェクトの追加 バーチャルホストにhtdocs以下のパスとホスト名を設定します。 vi /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf パスが/Applications/MAMP/htdocs/s_p/simple_db_mockup/simple/public で、エイリアスをdbmockとします。 portはMAMPの初期設定の80ポートを利用します。 ~ <VirtualHost *:80> DocumentRoot "/Applications/MAMP/htdocs/s_p/simple_db_mockup/simple/public" ServerName dbmock </VirtualHost> ~ hostsファイルを書き換える。 ホストファイルを書き換えてIPアドレスとホスト名を紐づけます。これはMAMPではなくMac側の設定です。ファイルの場所はprivate/etc/hostsとなります。 他の方はわかりませんが、おそらくデフォルトでは管理者権限出ないとファイル編集ができないのではと思います。 sudo vi /private/etc/hosts 以下のようなファイルが表示されるかと思います。 ~ 127.0.0.1 localhost 127.0.0.1 s_p 127.0.0.1 js_study 127.0.0.1 neomedia 127.0.0.1 liqid_hp 127.0.0.1 dbmock ←追加 ~ 3..envファイルを書き換える。 とりあえずアクセスしてみます。 ホスト名をdbmockとしましたのでdbmockとアドレスバーに入力します。 しかし接続しても画面が真っ白になってしまい、表示されません インターネッツで調べるとどうやらcomoseをインストールしないといけないみたいです。 %composer install Laravel Framework 8.18.1 Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase t ~ とりあえず正常に行きました。 今度こそはと思い、dbmockに移動しますが、500servererrorとなります。 先ほどとは内容が変わりました。 またもやインターネッツの旅に出かけます。 どうやら.envファイルが存在しないのが問題のようです。前も同じことしたような、、 その上でキーを作成しないといけないようです。 プロジェクトファイル内に.env.exampleファイルがありますのでこれをコピーして.env ファイルを作成します。 cp .env.example .env % php artisan key:generate Application key set successfully. でもう一回接続しますが今度はデータベース関係のエラーが吐かれています。 自分的にはこの辺は何度もやっていたので予測はしていました。 4.データベース設定 今まで利用していたデータベースとは違う場所で作成し、実験的に作業したかったので, 新しく作業したかったので作成します。 4-1データベース作成 DB名はdbmockとします。コマンドラインでやるのは面倒だったので、phpmyAdminを利用して作成します。 4-2.設定ファイルの修正 .envファイルとconfig/database.phpを修正します。 .envファイル(修正前) DDB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=mysql DB_USERNAME=root DB_PASSWORD=root DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock .envファイル(修正後) DDB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=dbmock ←編集 DB_USERNAME=root DB_PASSWORD=root DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock 修正後マイグレーションします。 % php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (51.64ms) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (50.18ms) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated: 2019_08_19_000000_create_failed_jobs_table (53.27ms) Migrating: 2020_12_12_192229_create_votings_table Migrated: 2020_12_12_192229_create_votings_table (26.06ms) Migrating: 2020_12_23_191814_create_articles_table Migrated: 2020_12_23_191814_create_articles_table (62.01ms) Migrating: 2020_12_29_161423_remove_article_title_from_articles_table Migrated: 2020_12_29_161423_remove_article_title_from_articles_table (34.97ms) Migrating: 2021_01_20_140834_change_aritcle_articles Migrated: 2021_01_20_140834_change_aritcle_articles (61.61ms) Migrating: 2021_04_16_130836_add_column_to_user_prf_table Migrated: 2021_04_16_130836_add_column_to_user_prf_table (30.66ms) Migrating: 2021_06_02_094739_create_sessions_table Migrated: 2021_06_02_094739_create_sessions_table (102.78ms) Migrating: 2021_06_15_130739_add_column_to_gunle_table Migrated: 2021_06_15_130739_add_column_to_gunle_table (28.16ms) テーブルもできています!! dbmodkにアクセスしてみます。大丈夫そうです。 以上です。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む