XserverでPython3環境を構築してパッケージを自由にインストールする

Pythonのロゴ Python

XserverでPython3環境を独自に構築してしまえば、豊富なPythonパッケージを自由にインストールすることが出来る。さらに応用として、PythonをPHPのようなサーバサイドプログラムとして実行させることも出来るようになる。

以下は、実際にやってみた手順。

XserverにSSHでログインする

以下の当サイト記事を参考にXserverにSSH接続できるようにする。
SSH接続できるようになる、ということは要するにXserverにターミナルで接続できるようになる、ということ。(これが出来ないと何も始まらない)

XserverでSSH接続を行う方法(Windows図解)
レンタルサーバのXserverでSSH接続するための手順を示します。 大まかな流れは以下の通りです。 1.Xserver側でSSH接続するための設定を行う 2.Telnet接続ソフト(今回はTeraTermというフリーソフト)でSSH接続す...

SSH接続の手順の中で「公開鍵キーのファイル」が手元にダウンロード出来るようになり、「公開鍵パスワード」を自分で作成することになる。「公開鍵パスワード」は後々必要になる。

SSHでログイン後、linuxbrewをインストールする

linuxbrewインストール時に、XserverにSSHでログインするときのパスワード「公開鍵パスワード」が必要になる。

Xserverへのlinuxbrewインストールについては以下のサイトを参考にした。(サイトに書いてある通りにやったらインストールできた)

外部サイト

[sanko href=”https://yukiyuriweb.com/migrate-xserver-and-install-linuxbrew/” title=”XSERVERで最新サーバに移行してLinuxbrewをインストールするまでの手順” site=”YUKiYURi WEB Blog” target=”_blank”]

linuxbrew上でPython3をインストールする

まずはPyhton3をインストール。

brew install python3

pip3コマンドで必要なPythonパッケージをインストールする

Python3がインストール出来ればあとは、pip3コマンドでお好きなパッケージをインストールするだけ。

例)スクレイピング用のライブラリbeautifulsoup4の場合

pip3 install beautifulsoup4

例)QRコード生成ライブラリqrcode

pip3 install qrcode

嬉しい程簡単にパッケージ追加可能!

Python3で動作するサーバサイドプログラムを作成する

一番重要な部分は、Pythonのコード先頭行に記述するPythonへのパス。
linuxbrew上で構築したPython3へのパスをコードの先頭に記述するようにする。

例としてサーバIDがhogehogeの場合のPython3へのパスは以下のようになる。

#!/home/hogehoge/.linuxbrew/bin/python3

Pythonプログラムをサーバにアップロード

サーバの適当な位置にPythonプログラムをアップロードする。
アップロードした同じディレクトリに以下の.htaccessファイルをアップロードしておく。

.htaccess

DirectoryIndex index.py indexhtml
AddHandler cgi-script .py

ちなみに1行目は、index.pyというファイル名の場合、URL入力のとき省略可能という意味。
2行目は、拡張子が~.pyのファイルをCGIプログラムとして認識するための記述。

アップロードした~.pyのファイルは、実行権限を与えておく。

chmod +x index.py

以上で、index.pyのようなPythonプログラムをサーバ上で実行できるようになる。

実際のPythonコード例:安倍首相のTwitter最新5件をスクレイピングして表示

日本語の文字コードをHTML化する際の記述で手こずったので、サンプルを載せておく。

※「ここは自分のサーバID」の部分は置き換えてください。
※pip3 install beautifulsoup4でパッケージを事前にインストールしておいてください。

[btn href=”https://torisky.com/cgi/checkSinzo/” target=”_blank” class=”raised blue-bc strong”]実行サンプルを見る[/btn]

index.py

#!/home/ここは自分のサーバID/.linuxbrew/bin/python3
# -*- coding: utf-8 -*-

import urllib.request
from bs4 import BeautifulSoup

# 日本語を扱うために必要な設定
import sys
sys.stdin =  open(sys.stdin.fileno(),  'r', encoding='UTF-8')
sys.stdout = open(sys.stdout.fileno(), 'w', encoding='UTF-8')
sys.stderr = open(sys.stderr.fileno(), 'w', encoding='UTF-8')

# HTMLヘッダ出力
print("Content-type: text/html; charset=utf-8\r\n\r\n")

# Twitterアカウントにアクセス
url = "https://twitter.com/abeshinzo"

data = urllib.request.urlopen(url)

# HTMLを解析して取得
soup = BeautifulSoup(data, 'html.parser')

# Twitterのつぶやき部分のみ取り出す
items = soup.find_all("div", class_="js-tweet-text-container")

# HTMLタグ出力
print("<!DOCTYPE html>")
print("<html>")
print("<head>")
print("<meta charset='utf-8'>")
print("<meta name='viewport' content='width=device-width,user-scalable=yes'>")
print("<link rel='stylesheet' href='style.css'>")
print("<title>Twitterのつぶやきを取得してみる</title>")
print("</head>")
print("<body>")
print("

<h1>Twitterのつぶやきを取得してみる</h1>


")
print("

<h2>とある人物の最新5件のつぶやき</h2>


")

# 最新の5件を表示
endPoint = 5
if len(items) <= 5:
	endPoint = len(items)

print("

<ul>")

for i in range(endPoint):
	print("

<li>")
	print(items[i].text)	# つぶやき(1件分)
	print("</li>


")

print("</ul>


")

print("

<footer><small>&copy; <a href='https://torisky.com/' target='_blank'>torisky.com</a></small></footer>


")
print("</body>")
print("</html>")

 

Pythonの豊富なライブラリを使えば、何か面白いことが簡単に出来そうです!

コメント

タイトルとURLをコピーしました