AWSでスクレイピング環境をつくる② 環境構築

2018年10月30日 00時10分

前回、インスタンスの立ち上げとユーザーの設定までいきました。

今回は、環境構築を行います。

前回の記事はこちら

AWS でスクレイピング環境をつくる ① インスタンス作成・ユーザー作成

全体の流れ

① アカウント登録

② サーバーのインスタンスを建てて

③ 開発者用のユーザーを作って ← 前回はここまで

④ 環境構築 ← 今回のお話

環境構築について

環境構築は、大きく分けて2つのステップで行います。

①Python 実行環境の導入

②Selenium 実行環境の導入

① の Python 等の動作環境を導入することは、割と簡単にできると思いますが、② の Selenium を動作させるための環境を用意するのが少し手間でした。

Python の動作環境の構築

まず、EC2 のインスタンスに入るために、コマンドライン上でログインしましょう。

詳しい方法については、インスタンスの接続は EC2 内のインスタンスを選び、対象のインスタンスが選択された状態で接続ボタンを押すと詳しい手法が載っています。

EC2 ダッシュボード内のインスタンスを選んで

2018 10 30 16h28 36

インスタンスにチェックが入っている状態で接続を押すと

2018 10 30 16h33 45

インスタンスへの接続方法についての詳細な方法が出る。

2018 10 30 16h33 58

で普通に 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 のインストール

Amazon Linux で 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 して、動かしていきましょう。