Category: データベース

WordPressの構成を, DD4Lを使って学び直す

こんにちは。最近、精力的に活動しているRockinWoolです。今日はDocker Desktop for Linuxを使ってWordPressをより理解し、上手に活用することを目標に調査していきます。WordPressを雰囲気で使っている人々、Docker Desktop for Linuxに興味がある方に刺さってくれれば嬉しいですね。(逆にいえば、皆様には私のスキルの低さを温かい目で見守ってもらえばと思います) 1. 現在のWordPress環境:予測と懸念 現在、ロリポップさんのサーバをお借りし、WordPressを使って記事を作成しています。WordPressはロリポップさんのサーバ側に用意していただき、LocalのWeb browserからアクセスしております。ロリポップさんのサーバにはムームーさんのドメインをお借りしてアクセスしておりますので、現在の環境構成は下図のようになっていると予測しております。この時点で危惧すべきことは、資産がサーバ側にあるということです。つまり、何らかの状況でLolipopさんへの支払いが遅れたりした際には、一発でこの記事を含めたすべての情報が失われる危険性があるということです。 2. WordPress環境を試しに構築してみる 理解できないものに関しては、まずローカルで環境を作ってみるのが一番良いと思います。ただし、なるべく新品のローカルUbuntu環境を荒らしたくないので、Dockerを使って再現していきます。 2.1 Docker Desktop for Linux(DD4L)環境の構築 今回はこちらを使いながら確認していきます。まずはDocker Desktopをインストールしていきます。普段はCLIでdockerコンテナを使っているのですが、かねてよりナウな仕組みを使って高速化を狙うべくDockerDesktopも触ってみたいと思っていました。ちなみにDockerDesktopの有料化が先日話題になっておりましたが、FAQでは個人レベルであれば無料である旨が記載されています。 インストール作業は非常に簡単で、公式配布サイトに行ってdebパッケージを取得&apt installでインストールするだけです。 2.2 WordPressコンテナの作成 WordPressコンテナについても公式サイトからGithubの説明ページに飛ぶことで作り方がわかるようになっているようです。試しにやっていきましょう。まずは空のプロジェクトを作れと言われているので、単純に作業場所を作ります。その上でdocker-compose.ymlを作ることを指示されています。docker-compose.ymlの記述は下記の通りです。 雑な解説ですが、このdocker-compose.ymlではdb(database)とwordpressの2つのserviceが動いています。また、volumesでホストのdb_dataとwp_dataフォルダを各コンテナと共有しています。ちなみにcommand行がイマイチよくわかっていなくて、デフォルトのコマンドの上書きとしか日本語公式には書かれていないんですよね。ちょっと宿題にしておきます。 2.3 コンテナの起動とWordPressの設定 上記のいつものコマンドをdocker-compose.ymlのあるディレクトリで実行すればコンテナが作成され、自動的に動き出します。今回はここでDocker…

DBMSを触りたい!②

こんにちは。そのまま続きをやっていきます。前回は下記のようなコマンドで何か全権限を与えた時点でPCを落としてました。 ここで実際にユーザが追加されているのか?そして、権限がどうなっているのか?これを確認する必要がでてきます。これに関しては「わくわくBank」さんに詳しく書いてあったので、そのままやっていこうと思います。まずは、現在登録されているユーザを出していきます。 パッと見た感じ、UserにRWWが登録されていること、hostはlocalhostになっていることがわかります。ちなみにSELECT * FROM mysql.user; と入力することでuserやhost以外の列も出力できます。全然意味がわからないものがほとんどなので、そのうち理解して行きたいですね。 また、権限周りを確認するために、下記コマンドを入力してみました。 どうやらここでは%の部分がエラーになっているようで。%は正規表現か何かだと思って元から変更しなかったのですが、元記事ではlocalhostではなく%にしていたので、こういう表記になったようだ。そこで、localhostを指定することによって、うまく確認することができた。 ちなみに、前回最新IT技術情報_arkgame.comさんの記事では、GRANT ALL PRIVILEGESした後にFLUSH PRIVILEGESを実行して権限付与を確定させていただのだが、筆者の場合はFLUSH PRIVILEGESせずにPCの電源を落とすだけで権限付与が成功していた。これについてはMy Opinion is my ownに詳細な記載があったため、知りたい方はぜひ見に行ってくださいね。 3. データベース内でユーザが切り替えられない せっかくユーザを作成して権限を付与したので、これからそのユーザになってテーブルを作ってやるぞー!となった矢先、mysql内でcurrent userを切り替える方法が探しても見つからない。これは何故だ?と思って同じような質問を見に行くと「クライアントに何を使用しているのか不明ですが、利用ユーザは MySQL への接続の際に指定しているので、一般的には一度接続を解除して、その後、再度別ユーザを指定して接続しなおします。」との回答が。なるほど、そういう思想なんですね。 ということで、一旦EXITを入力してmysqlから脱出した後、今度はRWWとしてログインすることにします。 これによって、確かにRWWとしてログインできたようです。 4. データベースの作成 未だにデータベースという概念が分かっていませんが、テーブルデータの塊のことを指すのでしょうか?一応ChatGPTくんもDBはTableを束ねる上位存在というようなことを言っているので、その認識のまま進めていきます。 ちなみに今回扱えるようにしたかったデータはテーブルデータだったため、正直な話データベースを構築して、そこからテーブルに参照させることの意義が理解できていないです。そんなこんなでテーブルから作ろうとしたら怒られたので、愚直にDBから作って行きます。…

DBMSを触りたい!①

こんにちは。今日は表題の通り、DBMSを触りたいと思います。今日中に習得して、今後自分のサービスにもどんどん適応していくぞ! 1. ローカル環境へMySQLを入れる まずは勉強のため、ローカル環境へMySQLを入れていきます。参考にしたサイトはここです。 1.1 インストール ここまでは特に問題なく進む感じです。ただし、ここで気になったのはPerlの文字。もし、今後Perlレスのシステムを作ろう!となったときにはMySQLは避けたほうが良いのかな?なんて思いました。オリジナルOSはなるべく少ない言語で動作させたいし、サービスだってなるべくメンテしやすいものにしたいからね。 以下のパッケージが新たにインストールされます: libaio1 libcgi-fast-perl libcgi-pm-perl libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-template-perl libmecab2 libprotobuf-lite23 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server mysql-server-8.0 mysql-server-core-8.0 2. MySQLを動かしてみる どうやらうまくインストールできたので、次はMySQLを動かしてみます。説明を読む感じ、パット見は内部で用意されたサーバに入って、コマンドなどで指示を送る方式のようですね。これは別にローカルでなくても同じ動作で作業できるのでマシンやOSを抽象化できていると言えるのかもしれません。 もとのサイトに習ってユーザを追加している様子が下記になります。今回は外に公開していないMySQLサーバということで、ユーザ名等も公開しています。IDENTIFIEDのあとにはパスワードを記入するそうです。また、コマンドの終端がわかるように “;”…