【Python】ConoHa WINGのサーバーでPythonプログラムを実行する

どうも、カメ助(@kamesuke_blog)です。

今回はレンタルサーバーのConoHaWINGで、Python言語のプログラムを実行する環境構築の方法を共有していきます。

カメ助

この記事はこんな人にオススメ
・ConoHa WINGでPython言語のプログラムを動かしたい

本記事を通じて、Pythonのプログラムを定期実行するイメージを掴んでいただければ嬉しいです。

目次

ConoHa WINGでPythonプログラムの実行環境の構築手順

レンタルサーバー「ConoHa WING」でPythonプログラムの環境構築手順は以下の通りです。

実行環境:Windows 11 Home 、SSHソフト「Tera Term」、レンタルサーバー「ConoHa WING

Pythonの実行環境構築手順
  1. ConoHa WINGにアクセスし、SSH通信に必要なプライベートキーの取得
  2. SSHソフトでConoHa WINGのサーバーにアクセス
  3. Pythonのインストール状況の確認
  4. 必要なライブラリのインストール
  5. ConoHa WINGのサーバーにPythonのPGを配置
  6. PythonのPG動作確認

これから順番に紹介していきます。

①:ConoHa WINGにアクセスし、SSH通信に必要なプライベートキーの取得

最初に、ConoHa WINGにアクセスし、SSH通信に必要なプライベートキーの取得します。

ConoHa WINGの管理画面にアクセスし、「サーバー管理」→「SSH」→「+SSH Key」を押下します。

「サーバー管理」→「SSH」→「+SSH Key」を押下します


表示される画面で、適当な名前を付けて保存を押下します。その後、プライベートキーをダウンロードします。

適当な名前を付けて保存を押下します
プライベートキーをダウンロードします
カメ助

ダウンロードした【ネームタグに入力した文字列.pem】のプライベートキーは後で使用するので、大事に保存しておきましょう。

参考サイト:[ConoHa WING] SSH接続する方法

②:SSHソフトでConoHa WINGのサーバーにアクセス

先程取得したプライベートキーを使ってConoHa WINGのサーバーにアクセスします。

まず、ConoHa WINGで作成したプライベートキーの詳細画面を開きます。(ConoHa WING管理画面の「サーバー管理」→「SSH」から確認できます。)

プライベートキーの詳細画面
カメ助

【ホスト名】、【ポート番号】、【ユーザー名】は後で使うのでメモしておこう


その後、SSHソフトである「Tera Term」を起動し、以下の設定で「OK」を押下します。

  • Host:「ConoHa WINGのプライベートキー画面」のホスト名(XXX.conoha.ne.jp)
  • TCP port:「ConoHa WINGのプライベートキー画面」のポート番号(8022)
  • Service:SSH

認証情報は以下の通り設定し、「OK」を押下してください。

  • User name:「ConoHa WINGのプライベートキー画面」のユーザー名(c2XXX)
  • Use RSA/…を選択し、プライベートキーを選択

以下の通り「ユーザー名@webホスト名」の表示がされていれば、ConoHaWINGのサーバーにSSH接続できています。

以降の作業は基本的に「Tera Term」上で行います。

③:Pythonのインストール状況の確認

まずはPythonのバージョン確認を行います。「Tera Term」で以下のコマンドを入力します。

Python 3.6.8がインストールされていることが分かります。ローカルの端末ではPython3.9.16を利用しているので、ConoHa WINGサーバーにPython3.9.16をインストールします。

ConoHa WINGサーバーにPython3.9.16をインストール

まずは、Python公式のホームページ(https://www.python.org/)からインストーラーのtgzファイルのURLを取得します。

tgzファイルのURL : https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz

次に、pythonをインストール先のディレクトリを、サーバーに作ります。今回は、「ホームディレクトリ」の直下に、「work」→「python3」ディレクトリを作成し、そこにインストールします。

「python3」ディレクトリに移動後、wgetコマンドでpython3.9.16のファイルをダウンロードします。

実行コマンド:wget –no-check-certificate [ダウンロード先のファイルのURL]

カメ助

wgetの後の「–no-check-certificate」は、wgetでsslのついたページにアクセスするときは必要みたいです。

次に、tgzファイルをtarで解凍し、できたPython-3.9.16のディレクトリに移動します。

configureのスクリプトで~/local/pythonをインストール先に指定します。

その後、Makefileを作成します。引き続いて、makeでコンパイルして, make installでインストールを実行していけば、指定ディレクトリの下にインストールされます。

正しくインストールされたかを確認します。「ホームディレクトリ」に移動後、Pythonのバージョンと起動を確認します。

Python3.9.16がインストールされていることを確認しました。

PythonのPATHの設定

先程インストールしたPython 3.9.16のPATHを通す必要があります。viコマンドで「ホームディレクトリ」直下の「.bash_profile」のPATHを「PATH=$PATH:$HOME/.local/bin:$HOME/bin」→「PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/local/python/bin」に変更します。

最後にTera Termを再起動するとPATHの変更が反映されています。

参考:conoha wingに最新Pythonの環境構築

Pythonのライブラリ確認

次にPythonのライブラリでインストール済みのものを一覧で確認します。

現在のpipのバージョンが「22.0.4」なので、pipを最新バージョン「23.1.2」にアップデートします。

次にPythonのプログラムで使用する「pandas」をインストールされていないことが分かります。

以降でプログラムで必要なライブラリをインストールしていきます。

Tips:Python3.10以上を利用する際には、OpenSSLのバージョンが1.1.1以上が必要

Python3.10をインストールした際には、以下の警告が表示されました。Python3.10の仕様でOpenSSLのバージョンが1.1.1以上が必須のようです。

カメ助

Python3.10以上でOpenSSLのバージョンが1.1.1未満の場合は、ライブラリのインストールなど様々な処理に失敗します。

サーバーのOpenSSLのバージョンを確認します。

インストールされているOpenSSLのバージョンは、1.0.2ですので1.1.1にバージョンアップさせる必要があるみたいです。

カメ助

OpenSSLをバージョンアップさせるには、管理者(root)での作業が必要になります。
OpenSSLのバージョンが1.1.1未満の場合で、管理者権限がない場合は、python3.9以下のものを利用しましょう。

参考:CentOS7にpython3.10系を入れた場合のSSLエラー

④: 必要なライブラリのインストール

Pythonライブラリの「pandas」がインストールされてなかったので、以下のコマンドでインストールします。

pandasの情報については以下のコマンドで確認できます。

カメ助

必要なライブラリ毎に、上記コマンドを適宜実行してください。
私の場合は「pandas」「yfinance」「firebase_admin」のライブラリをインポートしました。

必要なライブラリのインポートが完了したら、サーバーにPythonのPGを配置していきます。

Tips:ライブラリのインストール時にはまったこと※[Errno 13] Permission denied

対処方法:「–user」オプションをつけて解決しました。※「–user」オプションなしのpip installでは管理者権限が必要な /usr下にパッケージがインストールされます。

ライブラリのインストール時に以下のエラーが出ました。どうやらConoHaWINGのサーバーの管理者権限がないのが原因のようです。

参考:pip3 installでエラー [Errno 13] Permission denied

Tips:希望のライブラリバージョンがインストールできない

対処方法:Pythonをバージョンアップして解決しました。※Python3.6.8→3.9.16にバージョンアップ

yfinanceのライブラリをインポートする際に依存関係のpandasのバージョンが1.3.0以上である必要がありました。

しかし、以下のコマンドで確認したところ「pandas」は1.1.5までしかバージョンアップできないことが分かりました。Pyhonのバージョンによってインストール可能なバージョンが決まっているみたいです。

⑤:ConoHa WINGのサーバーにPythonのPGを配置

次にConoHaWINGのサーバーにPythonのPGファイルを配置します。

ConoHa WINGの管理メニューから「サイト管理」→「ファイルマネージャー」に移動し、PythonのPGをドラッグ&ドロップで配置します。今回は例として「sample.py」を配置しています。

sample.pyの中身は以下の通りです。

⑥:PythonのPG動作確認

先ほど配置したPythonのPGの動作確認をしていきましょう。「Tera Term」でConoHaWINGのサーバーにSSH接続します。

そして、以下のコマンドでファイルを配置した階層まで移動します。

その後以下のコマンドでPythonのPGを実行します。

上記の結果より、「Hello World!!」が6回出力されているのでsample.pyが実行できていることが分かります。

Tips:PG実行時に「ModuleNotFoundError: No module named ‘_ctypes’」のエラー

PGの実行時に、「ModuleNotFoundError: No module named ‘_ctypes’」のエラーが発生しました。

原因を調べたところ、PythonのPG実行に必要な「_ctypes」と「libffi」モジュールが不足しているみたいです。詳細は下記参照。

  • _ctypes と libffi
    • _ctypes は C 言語で書かれたライブラリを Python から利用するためのモジュールであり、libffiに依存している。
    • ソースからPythonをビルドする際、libffiが見つからない場合は _ctypes のビルドはスキップされる。
    • _ctypes がビルドされていない Python から _ctypes を利用しようとすると、当該エラー(ModuleNotFoundError: No module named ‘_ctypes’)が発生する。
  • 原因
    • つまり、libffi がインストールされていない状態で Python をインストールしたため、_ctypes のビルドがされていなかった。
  • 解決方法
    • 当該エラーを解消するには、libffi をインストールした上で Python を再ビルド・再インストールする必要がある。
https://notemite.com/python/no-module-named-ctypes/

参考

libffiのインストール

まず、「libffi」モジュールをインストールします。pythonをインストール先のディレクトリを、サーバーに作ります。今回は、「ホームディレクトリ」の直下に、「work」→「libffi」ディレクトリを作成し、そこにインストールします。

シンボリックリンクを作成します。

次に環境変数の設定をします。「.bash_profile」ファイルにシンボリックリンクを設定したパスを追記します。

その後、Tera Termを再起動し、ConohaWINGサーバーに接続後パスが通っているか確認します。

パスが通っていることが確認出来たら、Pythonを再インストールします。

もし、エラーが解決しない場合は、管理者権限が必要になってくると思いますので「VPSサーバ」や「AWS」での作業をご検討ください。

カメ助

エラーの発生原因ですが、Pythonのバージョンやモジュールの依存関係など複数の要素が絡み合っているので、特定・解決が難しい場合が多いみたいです。

終わりに

今回は、レンタルサーバーのConoHaWINGで、Python言語のプログラムを実行する環境構築の方法について紹介しました。

自分の忘備録として記載しましたが、本記事をWebアプリの開発の参考にしていただければ幸いです。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪でITエンジニアしています。(9年目に突入)
趣味でウェブサイトに関することをいろいろと勉強しています。

勉強した内容やプログラミングに関する情報を中心に役立つ情報を発信するべく日々ブログを更新しています。

3度の飯よりも「柿の種」をこよなく愛する関西人。

コメント

コメントする

目次