ICT関連の学習備忘録

ICTの学習をアウトプットするワークブックサイト

ICT関連の学習備忘録

2019/08/29:Python用仮想環境を構築(pyenv、pipenv、PyMySQL)

Python用仮想環境を構築(pyenv、pipenv、PyMySQL)

パスとバッシュ理解しきれてないけど、書いてあった通りにやった←。
途中なんやかんやと嵌っては進めて嵌っては進めてで
ずっとググりながらでした。
故手順が非効率な感じになってるし
挙句MySQL自体でも嵌るっていう。

取りあえず、インストールまで完了したのでメモを残すとです。

実際に仮想環境を使うユーザに切り替えてから

$ su - pythonuser	#プロジェクトで使うユーザでログイン
$ cd	#カレントディレクトリ変更 /home/pythonuser
$ mkdir djangogirls	#プロジェクト用にディレクトリ作成
$ cd djangogirls	#cdで移動
$ python3 -m venv myvenv #仮想環境を作成。
$ エラー。  #エラー吐きました。
仮想環境作成でエラーになりました。
改めてpyenvとpipenvを入れることにします。
$ sudo yum -y install git	#Gitが必要っぽいので、yumで入れる。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv	#Gitコマンドでpyenvを入れる。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile	#パスを通す・・・。
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL" -l
$ sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-$ devel libffi-devel
$ pyenv --version		#バージョン確認
pyenv 1.2.13-2-g0aeeb6f
$ sudo pip install pipenv	#pipenvをインストール
$ pipenv --version 3.6.7
pipenv, version 2018.11.26

$ python3 -m venv myvenv	#仮想環境を作成
(myvenv) $ source djangogirls/myvenv/bin/activate	#仮想環境起動
$ pip list
Package      Version
------------ -------  
Django       2.2.4      #OK!
(略)

(myvenv) $ pyenv versions	#バージョンの変更
* system (set by /home/user/.pyenv/version)  #バージョン確認、上に(system)が選択されてる。
  3.7.4
(myvenv) $ deactivate	#仮想環境を一度出て、
$ python --version		#バージョンを見てみる
Python 2.7.5
$ pyenv global 3.7.4		#グローバルで3.7.4を使う
$ python --version		#改めてバージョン確認
Python 3.7.4
$ pyenv versions		
  system
* 3.7.4 (set by /home/user/.pyenv/version)
$ source myvenv/bin/activate	#仮想環境に入り、
(myvenv)$ python --version		#バージョンが変わってることを確認。
Python 3.7.4
プロジェクトの作成
「mysite」というプロジェクトを作成します。
]
(myvenv) ~/djangogirls$ django-admin startproject mysite .

#vi mysite/settings.py	#設定ファイルを開いて編集
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']	#ホスト設定
LANGUAGE_CODE = 'ja'	#言語コードを変更
TIME_ZONE = 'Asia/Tokyo'	#タイムゾーンを変更
STATIC_URL = '/static/'	#静的ファイルのパスを追加
STATIC_ROOT = os.path.join(BASE_DIR,'static')
Djangode使用するデータベースの準備。
データベースの作成とユーザの作成。
mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード'; #ユーザ作成
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON *.* TO 'ユーザ名'@'localhost';   #権限付与
Query OK, 0 rows affected (0.01 sec)
    #シングルクォーテーションは上記のように入る。ユーザ、ローカルホスト、パスワードそれぞれに。

mysql> CREATE DATABASE データベース名;	#データベース作成
Query OK, 1 row affected (0.00 sec)

mysql> use データベース名	#データベース選択
Database changed
行ったりきたりしまってるが、
MySQL用のモジュールをインストールして、pyファイルの設定を書き換える。
$ pip install PyMySQL   #PyMySQLのインストール
$ pip show django       #追加されたか確認
(myvenv)$ pip install mysqlclient   #mysqlclientをインストール。

#データベースとの接続設定
(myvenv)$ vi mysite/settings.py    
    DATABASES = {           #DATABASESの部分をmysqlの設定に変更
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'データベース名',
        'USER': 'データベースのユーザ',
        'PASSWORD': 'データベースのパスワード',
        }
    }

    LANGUAGE_CODE = 'ja'        #下の方にある言語とタイムゾーンの変更
    TIME_ZONE = 'Asia/Tokyo'

(myvenv)$ vi manage.py
    import pymysql          #import sysの下に2行追加
    pymysql.install_as_MySQLdb()
pymysqlはDjango2.2以上で対応してないので、
というか、2.24でそのままやろうとしたらエラー吐いた。
Djangoのバージョンを下げてからmigrateを実行。

(myvenv)$ pip install django==2.1
(myvenv) $ python manage.py migrate
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 admin.0003_logentry_add_action_flag_choices... 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 auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK
(myvenv) $ 
Djangoの演習用にサブドメイン運用するので、
Nginxのリバースプロキシを追加する。
$ sudo vi /etc/nginx/conf.d/proxy.conf 
server{
    server_name    django.workbook.tokyo;

    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

    location / {
        proxy_pass    http://localhost:8000;
    }
}



前のページへ戻る