前回、インスタンスの立ち上げとユーザーの設定までいきました。
今回は、環境構築を行います。
前回の記事はこちら
AWS でスクレイピング環境をつくる ① インスタンス作成・ユーザー作成
全体の流れ
① アカウント登録
② サーバーのインスタンスを建てて
③ 開発者用のユーザーを作って ← 前回はここまで
④ 環境構築 ← 今回のお話
環境構築について
環境構築は、大きく分けて2つのステップで行います。
①Python 実行環境の導入
②Selenium 実行環境の導入
① の Python 等の動作環境を導入することは、割と簡単にできると思いますが、② の Selenium を動作させるための環境を用意するのが少し手間でした。
Python の動作環境の構築
まず、EC2 のインスタンスに入るために、コマンドライン上でログインしましょう。
詳しい方法については、インスタンスの接続は EC2 内のインスタンスを選び、対象のインスタンスが選択された状態で接続ボタンを押すと詳しい手法が載っています。
EC2 ダッシュボード内のインスタンスを選んで
インスタンスにチェックが入っている状態で接続を押すと
インスタンスへの接続方法についての詳細な方法が出る。
で普通に SSH 接続できるのですが、毎回コマンドを打ち込むんのはめんどくさいので、git bash 入れている方は ssh 接続の設定ができる~/.ssh/config を設定しておきましょう。
※鍵の場所は指定してあげないと、鍵が無いってエラーがでます。
<pre class="lang:default decode:true"> Host aws1
HostName #パブリックDNS
Port 22
User #ログインするユーザー名
IdentityFile #鍵ファイルの位置
ServerAliveInterval 180 #接続が切れないように定期的に接続する間隔(s)
今回の場合だと
ssh aws1
で接続できるようになります。
<pre class="lang:default decode:true" title="CLI">$ ssh aws1
Last login: Mon Oct 29 02:43:20 2018 from
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[user@ip-~]$
ここからは Python のアップデートと環境の切り替え、それから Selenium 等の依存関係のダウンロードをしていきます。といってもすぐですけど。
もともと Python2.6 は導入されているようなので、pyenv をインストールして、その後 global の Python のバージョンを切り替えましょう。(pyenv を勧めていますが、記事を書いているときに調べると virtualenv がデファクトスタンダードになっていたので、そちらで環境を構築されることを勧めておきたいです・・・)
pyenv のインストール・パスを通す。
<pre class="lang:default decode:true" title="install pyenv">#pyenvをclone
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
#pathを通すために.bash_profileの変更
$ vi ~/.bash_profile
~/.bash_profile 内
<pre class="lang:default decode:true" title="~/.bash_profile"># ~/.bash_profile 内
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export PYENV_ROOT="$HOME/.pyenv" %追加
export PATH="$PYENV_ROOT/bin:$PATH" $追加
eval "$(pyenv init -)" #追加
パスを通した後は、
<pre class="">#pythonインストール *内はお好きなバージョンを
pyenv <span class="nb">install </span>3.*.*
#リフレッシュ
pyenv rehash
#インストールしたバージョンを選択
pyenv global 3.*.*
#確認
python -V
Python 3.*.*
パッケージについては、pipenvでまるっと導入する。これは PHP でいうComposer的なやつで、パッケージ管理をしてくれている。
Pipfile、Pipfile.lock をディレクトリの中に入れて、
<pre class="lang:default decode:true" title="pipenv"># pipenv導入
pip install pipenv
#パッケージの導入
pipenv install
Selenium の動作環境の準備
AWS は Heroku と異なり、ChromeDriver を動かす環境を自前で用意しないといけない。
ので、入れていきます。
ここの記事を参考にしました。
Amazon Linux で Selenium 環境を最短で構築する
・Google Chrome のインストール
・GConf2 のインストール
・ChromeDriver のインストール
・Google Noto Fonts のインストール
・Selenium のインストール
備考 ① GConf2 のインストールについて
参考では GConf2 のインストールの際に、yum install GConf2
が出来ない旨を書かれているのですが、sudo yum install GConf2
で通って問題なく動いているので、その点は短縮できると思います。他のことについては同じことをしているので、割愛させていただければと思います。
備考 ②Selenium のオプションについて
Selenium のオプションについては、
options.add_argument(“–no-sandbox”)
options.add_argument(“–disable-setuid-sandbox”)
を追加しました。
これは、AWS 環境で、
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
とエラーが出るようになったため、追加した項目です。
参考:Chrome not reachable error when running Selenium test on Linux
以上で環境構築は終了です。
あとはリモートリポジトリからお好みのプログラムを Clone して、動かしていきましょう。