BETA

Python -【pyenv、Python3.7.0、nginx】をインストール・セットアップするシェルスクリプト

投稿日:2018-12-28
最終更新:2019-10-24

Raspberry PiでPythonを起動させてサーバーを建てたい!!

と思った際に、本来の手順であれば

pyenvをGithubからクローン→pyenvにパスを通す→設定ファイルの実行→libffi-dev等のインストール→Pythonのダウンロード・バージョンの切り替え→pyenv-virtualenvのインストール→pyenv-virtualenvで仮想環境の構築→nginxのインストール

と、単純な割に無駄な時間がかかるってしまう工程を踏まなければなりません。

めんどくさいですね!!笑

と、いうことでRaspbianにワンクリックでpyenv、Python3.7.0、nginxがインストール・セットアップされるようなスクリプトを組んでいきます!  

pyenvのインストール

参考:pyenvとvirtualenvを使用してPythonの開発環境を構築する

pyenvは複数バージョンのPythonを切り替えて利用できる便利なツールです。

pyenvで3.7系のインストールに失敗したときのメモのサイトを参考にして「libffi-dev」を先にインストールする。

#!/bin/bash  

# シェルスクリプトの絶対パス  
SCRIPT_DIR=$(cd $(dirname $0); pwd)  

# 変数の値を上書きされないようにする  
readonly SCRIPT_DIR  

# aptのアップデート  
sudo apt update  

# エラー対策の「libffi-dev」やgitをインストール  
sudo apt-get install -y --no-install-recommends \  
        build-essential \  
        wget \  
        libssl-dev \  
        libbz2-dev \  
        libreadline-dev \  
        libsqlite3-dev \  
        git  

# ホームディレクトリにpyenvをインストール  
git clone https://github.com/yyuu/pyenv.git ${SCRIPT_DIR}/.pyenv  

# SSHでの接続時に自動で.profileを更新できるように.bash_profileを作成して編集する  
touch ${SCRIPT_DIR}/.bash_profile  
echo "source ${SCRIPT_DIR}/.profile" >> ${SCRIPT_DIR}/.bash_profile  

# .profileファイルに追記  
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ${SCRIPT_DIR}/.profile  
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ${SCRIPT_DIR}/.profile  
echo 'eval "$(pyenv init -)"' >> ${SCRIPT_DIR}/.profile  

# ファイルを再読み込み  
source ${SCRIPT_DIR}/.profile

Python3.7.0のインストール

# Python3.7.0をインストール  
pyenv install 3.7.0  

# バージョンの切り替え  
pyenv global 3.7.0

pyenv-virtualenvをインストール

参考:pyenv と pyenv-virtualenv で環境構築

pyenv-virtualenvでディレクトリ単位のpython環境構築

pyenvだけでも便利なのですが、プラグインであるpyenv-virtualenvもインストールしていきます。

pyenv-virtualenvは仮想環境の構築に使用されます。

pyenvではpipでインストールされたパッケージはPythonのバージョンごとに管理されていましたが、pyenv-virtualenvを利用すると同じバージョンでもディレクトリごとに別環境として利用することができ、環境を分けることが出来ます。

# pyenv-virtualenvをインストール  
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv  

# .profileファイルに追記  
echo 'eval "$(pyenv virtualenv-init -)"' >> ${SCRIPT_DIR}/.profile

pipのアップグレード

Pythonをダウンロード時にpip自体はインストールされますが、古いバージョンなので、最新版にアップグレード。

# pipのアップグレード  
pip install --upgrade pip

nginxのインストール

# nginxのインストール  
sudo apt-get install nginx

最終的に完成したスクリプト

#!/bin/bash  

# シェルスクリプトの絶対パス  
SCRIPT_DIR=$(cd $(dirname $0); pwd)  

# 変数の値を上書きされないようにする  
readonly SCRIPT_DIR  

# aptのアップデート  
sudo apt update  

# エラー対策の「libffi-dev」やgitをインストール  
sudo apt-get install -y --no-install-recommends \  
        build-essential \  
        wget \  
        libssl-dev \  
        libbz2-dev \  
        libreadline-dev \  
        libsqlite3-dev \  
        git  

# ホームディレクトリにpyenvをインストール  
git clone https://github.com/yyuu/pyenv.git ${SCRIPT_DIR}/.pyenv  

# SSHでの接続時に自動で.profileを更新できるように.bash_profileを作成して編集する  
touch ${SCRIPT_DIR}/.bash_profile  
echo 'source "${SCRIPT_DIR}/.profile"' >> ${SCRIPT_DIR}/.bash_profile  

# .profileファイルに追記  
# ダブルクォートで囲われた文字列は変数が展開される  
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ${SCRIPT_DIR}/.profile  
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ${SCRIPT_DIR}/.profile  
echo 'eval "$(pyenv init -)"' >> ${SCRIPT_DIR}/.profile  

# ファイルを再読み込み  
source ${SCRIPT_DIR}/.profile  

# Python3.7.0をインストール  
pyenv install 3.7.0  

# バージョンの切り替え  
pyenv global 3.7.0  

# pyenv-virtualenvをインストール  
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv  

# .profileファイルに追記  
echo 'eval "$(pyenv virtualenv-init -)"' >> ${SCRIPT_DIR}/.profile  

# pipのアップグレード  
pip install --upgrade pip  

# nginxのインストール  
sudo apt-get install nginx

実行するときは以下のコマンドを利用します。

$ chmod 755 install.sh  
$ bash install.sh

以上で完成です!

※追記 pyenv-virtualenvで仮想環境の構築する際のコマンド

# 仮想環境用のディレクトリを作成  
$ mkdir ○○  

# 仮想環境用をディレクトリ(○○)に適用  
$ pyenv virtualenv 3.7.0 ○○  

# 環境の切り替え・アクティベート  
$ cd ○○

これで、ディレクトリを移動すると自動的に仮想環境が適用される。

ちなみに環境を削除する場合は以下を参照

# 構築した環境(○○)を削除する場合  
(○○)$ pyenv uninstall ○○
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

Python (Django)・JavaScript(Vue.js)・GISについて書いていきます。 たまにちゃんとした記事も書きますが、基本的には自分用のメモを残していきます

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!