自身のこの記事を作成するために、pythonのスクレイピングの技術を使ってホームページ上の値段を自動で取得してグラフにする仕組みを使っています。
毎日更新!マイプロ価格チャート | インテリマッスル (youmy-lvup.com)
前はAWSのEC2でこの仕組みを作っていたのですが、維持費の都合上ロリポップのライトプランに乗り換えました。契約した後に気づいたのですが、ロリポップのライトプランではSSHの仕組みが使えません。
SSHが使えないと、今までサーバ側で動かしていたpythonのプログラムが動かせなくなる可能性があり、色々調べました。それでもpython使ったページは残したく、色々試行錯誤した結果を残したので、皆さんに共有します。
ロリポップのレンタルサーバライトプランでpythonを使うまでに確認すること 1.ロリポップのレンタルサーバにpythonは入っているの? 2.pipのライブラリは使えるの? 3.pipのライブラリ追加は出来るの?
1.ロリポップのレンタルサーバにpythonは入っているの?
デフォルトで入っています。パスが登録されているpythonは「Python 2.7.5」です。
ですが、実はpython3もデフォルトで入っており、「/usr/local/bin/python3.7」にコマンドが置いてあるので
フルパス指定、もしくはパスを通して使いましょう。
(※既述のとおり、ライトプランではSSHを使えません。コマンドの実行の仕方は後述します。)
2.pipのライブラリは使えるの?
デフォルトでは使えません。追加インストールする必要があります。
追加インストールには、以下の手順で実施します。
手順1.インストールコマンドを記述したテキストファイルの作成手順2.FTPでファイルを転送手順3.cronで転送したファイルの実行
手順1.インストールコマンドを記述したテキストファイルの作成
コマンドファイルは、以下のようなテキストファイルを、クライアント環境で作成します。
#!/bin/sh curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py /usr/local/bin/python3.7 get-pip.py --user /usr/local/bin/python3.7 -m pip install --upgrade pip
python3でpipを使いたい場合、python3.7でコマンドを叩くこと、不用意にインストールターゲットパスは変えないほういいです。
文字コードはUTF-8、改行コードはLFで保存してください。
手順2.FTPでファイルを転送
ロリポップの全プランで使える、FTPファイル転送機能を使って、サーバにファイルを転送します。
手順3.cronで転送したファイルの実行
cronで先ほどのファイルを指定してファイルを実行します。
ロリポップの全プランで使える、FTPファイル転送機能を使って、ファイルを実行しましょう。
一回実行するだけですが、5分単位で設定して、メールで実行結果(標準出力)が送られてくる設定にしておくと、結果確認が楽です。
実行する際は、ファイルに実行権限を必ず付与してください。
これでインストールが完了しました。
pipライブラリがこれで使えるようになります。私はこの後、beautifulsoup4、requestsをpip3に追加して、スクレイピングの仕組みを作成し、前述のグラフを作成しています。
ここの作り方はまた記事にしようかと思います。
ライトプランでSSHが使えないからといって、出来ることが減るわけではありません。
色々工夫しながら、楽しみましょう。
コメント
>>>pipライブラリがこれで使えるようになります。私はこの後、beautifulsoup4、requestsをpip3に追加して、スクレイピングの仕組みを作成し、前述のグラフを作成しています。
お世話になります。pipライブラリのインストールまでは記事を参考にして無事
インストールが終了しました。ありがとうございます。しかしpip3の使用方法が不明です。
>beautifulsoup4、requestsをpip3に追加して、
とありますが具体的にシェルファイル .shの中にpip3インストールをどのように記載したのでしょうか?
例えば以下のようにシェルファイル(.sh)の中を記載するとエラーとなります。行 3: pip3: コマンドが見つかりません
#!/bin/sh
pip3 install requests
pipを動かすコードを教えてください。宜しくお願いします。
コメントありがとうございます。
pip3のフルパスをshellの中に記載しました。
/home/users/1/XXXXXX(ユーザローカル)/.local/bin/pip3 install requests
pip3のpathは、ロリポップのcron設定のところに、契約者が使えるディレクトリの
途中からのパスが書いてあるので、そこらへんでls -lRを仕込んで、探したような気がします。