LoginSignup
2
1

More than 5 years have passed since last update.

Django on CentOS7, python34, apache2.4 mod_wsgi, mariadb #1 -- 基本環境構築

Last updated at Posted at 2016-12-05

Overview

 Webアプリケーションを作る必要が出てきたのでDjangoというのを使ってみることにした。
構築環境として指定された物は以下の通り

  • CentOS7
  • python 3.x
  • django 1.10
  • mysql

基本方針

  • 可能な限りyum install (標準パッケージ)を使う
  • 可能な限りOSデフォルトの挙動を変えない
    • デフォルト動作が変わると他のコマンドに影響が出て基盤管理が面倒くさくなる
  • 可能な限り自動化する
    • ダルいから

方針に関するメモ

CentOS7のpythonは2.7がデフォルトなのでpython3.xは別インストールすると言うことになる。
また、djangoもyumパッケージは1.4だか1.6という化石のようなバージョンが標準なので
パッケージ名さえ同じであればいいでしょ、とはいかないので挫折してpipも使った

How to Install packages

Install git/ansible packages

 基本、インストールはAnsible化しているのでインストールはAnsibleとして説明するが
Ansible自体が入っていないと話にならないので、以下の作業は必須。


 # yum -y install epel-release
 # yum -y install ansible git

Ansible play-books (roles/xxx/task/xxx.yml)

全てmain.ymlに記載しても良いが、メンテナンス性や可読性を考えると
別ファイルにしてIncludeした方が都合が良いことが多い。

Python3.4


- name: install packages from repo
  yum:
    name: "{{ item }}"
    state: latest
  with_items:
    - python34
    - python34-devel
    - python34-setuptools
    - python34-pip
    - gcc

Apache


- name: yum install httpd
  yum: 
    name: "{{ item }}"
    state: latest
  with_items:
    - httpd
    - httpd-devel
    - mod_ssl
    - mod_wsgi
  tags:
    - prod
  become: yes

mariadb


- name: yum install mariadb
  yum: 
    name: "{{ item }}"
    state: latest
  with_items:
    - mariadb-server
    - mariadb-devel
  tags:
    - prod
  become: yes

Django


- name: install packages from pip3
  easy_install:
    name: "{{ item }}"
    state: latest
  executable: /usr/bin/pip3
  with_items:
    - django
    - pymysql
    - pip
  tags:
    - prod
  become: yes

Settings

httpd.conf

python3.4を使っているので、パスを記載してやる必要がある。


WSGIScriptAlias / /var/www/django/project/mysite/mysite/wsgi.py
WSGIPythonPath /var/www/django/project/mysite:/usr/lib64/python3.4/site-packages
WSGIDaemonProcess mysite python-path=/var/www/django/project/mysite:/usr/lib64/python3.4/site-packages
WSGIProcessGroup mysite

django

setting.py, wsgi.py, manage.py に細工が必要なところだけ記載

manage.py


#!/usr/bin/env python3
import os
import sys
import pymysql
pymysql.install_as_MySQLdb()

setting.py


import os
import pymysql
pymysql.install_as_MySQLdb()

wsgi.py


import os
import pymysql
pymysql.install_as_MySQLdb()

Install


 # ansible-playbook -i   -vvv

基本的にはこれで最低限の動作はしてくれる。

2
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
2
1