1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Djangoでwebサービスを作ってみるまで~その1(環境構築編)~

Posted at

Djangoでwebサービスを作ってみるまで~その1(環境構築編)~

なぜ書き始めたか

ただの練習です。Djangoを触れるようになってから早1年、そろそろまとめるように何か記事を書いてみようということで初心者の方やDjangoってそもそもなんすかというような人向けの記事を僕なりにまとめたいと思います。(最終的には色々機能ごとに分けてテンプレ化したい)

ということで早速始めていきましょう

今回のテーマ

タイトルにもある通りDjangoでwebサービスを作ってみるまで~その1(環境構築編)~です

環境構築しましょう。(この記事を参考にdocker環境を構築しました。→https://qiita.com/bakupen/items/f23ce3d2325b4491a2dd)
今回はdocker上で構築・実装していきたいと思います。なのでdocker上のコンテナでコマンドを実行するような形になっています。

docker-compose run web python3 --version
docker-compose run web python3 manage.py --version
docker-compose run db mysql --version
Python 3.8.13
3.2
Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper

mysqlで日本語を使えるようにする対応(DBで日本語を使いたい人向け)

上記までの手順でdocker上にコンテナを立てるところまでは行けるようになっているはずです。
最後に、mysqlを日本語で対応できるようにするところをやっておきましょう。

引用させていただいた記事にある通りdocker-compose.yamlでCOMMANDを使っていたのですが、どうしても日本語に対応しなかったので別の方法を取りました。(これにつきましてはこちらの記事を参考にしました→https://qiita.com/k8uwall/items/79dbe6dd03aa8b0ed119)

ということで、記事と同じように手順を踏んでいくとdocker-compose.yamlとmy.cnfの内容は以下の通りになります。

docker-compose.yaml
  db:
    image: mysql:5.7
    container_name: xxxx
    environment:
      MYSQL_ROOT_PASSWORD: xxxx
      MYSQL_DATABASE: xxxx
      MYSQL_USER: xxxx
      MYSQL_PASSWORD: xxxx
      TZ: 'Asia/Tokyo'
    volumes:
      - ./mysql-data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/my.cnf
my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
log-bin=/var/log/mysql/bin-log
server-id=1

[client]
default-character-set = utf8mb4

ここまでの確認

ここまでのできたことを確認しましょう。

  • dockerを使ってDjango x mysqlの環境をコンテナで作成すること
  • mysqlを日本語に対応することができた

上記2点ですね。

docker-compose.yamlファイルがあるディレクトリで以下コマンドを実行してみましょう

docker-compose up --build -d

成功していればbuildなどで長文が表示された後に以下のようにdoneという文字列が表示されるはずです・

Creating ${docker-compose.yamlのcontainer_nameで指定した名前} ... done
Creating ${docker-compose.yamlのcontainer_nameで指定した名前} ... done

実際にコンテナが作成されているかを確認するコマンドは以下の通りです。

docker ps

また、mysqlが日本語に対応したかどうかは、実際にmysqlのコンテナに入って確認するほかありません。
dockerコンテナに入るコマンドは以下になります。

docker exec -it ${docker-compose.yamlのcontainer_nameで指定した名前} bash

コンテナに入ったあとは以下のコマンドを1つずつ実行しましょう。

mysql -u root -p${docker-compose.yamlのMYSQL_ROOT_PASSWORD}
show variables like "chara%";

コマンドの内容としては

  1. mysqlに入る。
  2. 文字コード設定を確認する

といった内容です。

結果が以下の通りになっていれば、無事に日本語のデータをmysqlに格納できます。

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

おわりに

いかがだったでしょうか?
いろいろな記事やサイトを調べてみて実際に役に立ったものを引用させていただいて途中の説明を省いてしまいましたが、ここまででdocker上にコンテナを立ててwebサービスを作成する準備ができました。

次回からは実際にこの機能を作成するというものに焦点を絞り、なるべくテンプレ的に使い回すことができるような説明を補足した記事を作成していこうと思います。

では、次の記事でお会いしましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?