Vagrant + Centos7 + Python3.6 + Django + MariaDB環境構築まとめ

シェアする

  • このエントリーをはてなブックマークに追加

Vagrantに
・Centos7
・Python3.6
・Django
・MariaDB
の環境を構築してDjango管理サイトにログインするまでのまとめです。

サーバーはDjangoの開発用サーバーです。
Apacheとmod_wsgiを使うタイプのものはまた別に書こうと思います。

Vagrantfileを編集

#config.vm.network "forwarded_port", guest: 80, host: 8080
↓
config.vm.network "forwarded_port", guest: 8000, host: 8080
mbazuki:python hide$ vagrant up
mbazuki:python hide$ vagrant ssh

ルートユーザになっておく

[vagrant@localhost ~]$ sudo su

Python3.6

Pythonをいれるためのリポジトリをいれる

[root@localhost vagrant]# yum install -y https://centos7.iuscommunity.org/ius-release.rpm

pythhon3.6をインストール

[root@localhost vagrant]# yum install -y python36u.x86_64 python36u-devel.x86_64 python36u-pip.noarch

/varの中にpythonって名前でシンボリックリンクを作っておくことにします

[root@localhost var]# ln -s /vagrant /var/python

python仮想環境を/var/pythonの中に作る

[root@localhost var]# cd /var/python
[root@localhost python]# python3.6 -m venv shigurevenv

python3.6を有効化

[root@localhost python]# cd shigurevenv
[root@localhost shigurevenv]# source bin/activate

Django

Djangoをいれる

(shigurevenv) [root@localhost shigurevenv]# pip install django

Djangoプロジェクトを/var/pythonの中に作る

(shigurevenv) [root@localhost shigurevenv]# cd ..
(shigurevenv) [root@localhost python]# django-admin startproject mysite

開発用サーバーを起動してアクセスしてみる
起動前にファイアフォールを止めておく

(shigurevenv) [root@localhost python]# cd mysite
(shigurevenv) [root@localhost mysite]# systemctl stop firewalld
(shigurevenv) [root@localhost mysite]# python manage.py runserver 0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 23, 2017 - 12:47:56
Django version 1.11.6, using settings 'mysite.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.

http://127.0.0.1:8080/へアクセス

MariaDB

Mariadbをインストール

(shigurevenv) [root@localhost mysite]# yum install -y mariadb-server mariadb-devel

起動して初期設定

(shigurevenv) [root@localhost mysite]# systemctl start mariadb
(shigurevenv) [root@localhost mysite]# mysql_secure_installation
(shigurevenv) [root@localhost mysite]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

ちゃんと入れた。

Djangoでmariadbにつなげる

(shigurevenv) [root@localhost mysite]# pip install mysqlclient

Sequel Proで’hide4_wakeup’ってDB作っておく

Djsngoの設定ファイル
mysite/setting.py
さきほどの初期設定で決めたNAMEとPASWORDを設定

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'hide4_wakeup',
        'USER': 'root',
        'PASSWORD': 'root',
    }
}

Django管理サイト

Djangoの管理サイトにアクセスする

(shigurevenv) [root@localhost mysite]# python manage.py migrate
System check identified some issues:

WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
	HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/1.11/ref/databases/#mysql-sql-mode
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK
(shigurevenv) [root@localhost mysite]# 

mysqlのエラーが出てたのを解決。

'ENGINE': 'django.db.backends.mysql',
        'NAME': 'hide4_wakeup',
        'USER': 'root',
        'PASSWORD': 'root',
        'OPTIONS': {
           'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },

OPTIONSが必要な模様。
もういっかい実行。

これで必要なDBが作成されました。

管理サイトにログインするためのユーザーを作る

(shigurevenv) [root@localhost mysite]# python manage.py createsuperuser

Username
Email address
password
を設定。

http://127.0.0.1:8080/admin/へアクセスして、さきほど作ったユーザーでログイン

完了!