本稿ではエックスサーバーにAnaconda経由でPythonを導入する手順を紹介します。
当サイトが利用しているXserver(Business)のレンタルサーバーには、2022年2月現在、Python 3.6.8 と 2.7.5 が標準搭載されているのですが、パッケージ管理システムの「pip」がありません(そもそもsudo権限の無いユーザーは自由にライブラリをインストールしたりアップデートしたりできない)。
これだと新規にライブラリをインストールしたい場合などに不便なので、自由にPythonをカスタマイズするためには独自にインストールしなければなりません。
ここでは「Anaconda」という無償のディストリビューションパッケージを利用することにします。
※ここで紹介する内容を実践するには、Linuxに関する知識が必要です。
※元からサーバーにインストールされている各種言語を(自分でカスタマイズせず)そのまま使うので十分という方は、Pythonを独自に導入する必要が無いので、この記事の内容は参考にならないと思います…。
Xserverに接続する
TeraTermやMobaXtermなどを使って自分が契約しているサーバーにSSH接続すれば、サーバー内でCUIベースでの操作が可能となります。詳しくはXserver公式サイトの「SSH設定」のページの「SSH接続機能について」の欄を参照して下さい。
SSH接続の有効化手順は同じページの下段で詳しく説明されています。SSH接続には公開鍵と秘密鍵のペアが必要ですが、エックスサーバーのサーバーパネルで発行することができます。この時に秘密鍵にアクセスするためのパスフレーズ(=パスワード)を決めなければならないので、紛失しないようにメモをしておきましょう。
生成された公開鍵はサーバーに自動で登録されます。秘密鍵は勝手にダウンロードされて手に入るので、紛失しないような場所に保存しておきましょう。秘密鍵のパスはTeraTermなどのターミナルソフト(SSHクライアント)でセッションを開始する際に必要となります。なお、接続ポートは一般的な22ではなく10022であることに注意しましょう。
※管理人は専らMobaXtermというSSHクライアントを使っています。
サーバーのOSのバージョンは cat /etc/centos-release
で確認できます。
Anacondaをインストールする
※以下、仮のユーザー名を 1111a22、ホスト名を xx111 とします。
Linux対応のAnacondaのインストーラを公式のリポジトリから wget でダウンロードします(以下のコードを実行)。
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
※2022年2月現在での最新版はAnaconda3-2021.11のバージョンのようです。
次にこのシェルスクリプトをbashで起動します(以下のコードを実行)。
bash Anaconda3-2021.11-Linux-x86_64.sh
起動すると以下のようなメッセージが出力されますので、[ENTER] を押します。
Welcome to Anaconda3 2021.11 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>>
続いて利用規約が表示されるので、yes を入力します。文章が長すぎて下まで表示されていない場合はスペースを押すことで画面を先に送ることができます。
Do you accept the license terms? [yes|no] >>> yes
次にAnacondaの展開場所がここで良いか尋ねられるので、問題がなければ [ENTER] を押します。
Anaconda3 will now be installed into this location: /home/1111a22/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below
これでAnacondaパッケージのインストールが始まります。インストールが終わるとAnaconda3を初期化するか尋ねられるので、yes を入力しておきます(これは既に別のAnacondaパッケージをインストールしている人向けの質問だと思います)。
installation finished. Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes
全体の流れとしては以下のような感じです。
In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> # <------------------------------------ エンターを入力 =================================== Anaconda End User License Agreement ... Do you accept the license terms? [yes|no] [no] >>> yes # <--------------------------- yes を入力 Anaconda3 will now be installed into this location: /home/1111a22/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below [/home/1111a22/anaconda3] >>> # <------------ エンターを入力 PREFIX=/home/1111a22/anaconda3 ... Preparing transaction: done Executing transaction: done installation finished. Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes # <------------------------------- yesを入力
以上により $HOME 直下にanaconda3というディレクトリが生成し、無事自分専用のPythonを導入することができました。親切なことに自動でパスを通してくれるのですぐに使えます。
ただ単にpipをダウンロードするだけなら
curl -O https://bootstrap.pypa.io/pip/3.6/get-pip.py
などとすれば可能ですが、我々ユーザーにはsudo権限が無いので導入済みのPythonにライブラリを追加できません(pipが使えません)。というわけで自分専用の(パーミッションのある)Pythonの環境を構築しなければならないのです。
Anaconda環境を起動する
Anaconda環境のPythonを利用するには、conda activate
でAnaconda環境を起動します。すると、プロンプトの先頭に (base)
という謎の文字が現れます。
(base) [1111a22@xx111 ~]$
これはAnaconda環境の中の「base環境」にいるよ、ということを意味しています。ここで python
と入力すると、以下のように Python 3.9.7 が起動します(抜けるときは Ctrl + D)。
(base) [1111a22@xx111 ~]$ python Python 3.9.7 (default, Sep 16 2021, 13:09:58) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>>
以降、ログインすると自動的にbase環境に入るようになるのですが、これが邪魔くさいという方は
conda config --set auto_activate_base false
というコマンドを実行し、勝手にbase環境に入らないように設定して下さい(この場合、再ログインが必要)。
逆に、自動的にbase環境に入るように設定したい場合は
conda config --set auto_activate_base true
pipでライブラリをインストールする
以上、Anaconda環境をXserverのレンタルサーバーに導入する手順を紹介しました。この環境下であればユーザーのパーミッションが及ぶため、pip経由、もしくは conda install
で自由にライブラリをインストールすることが可能になります。
※pipはAnacondaに付属しているので、pip install [ライブラリ名]
とすれば先ほど導入したPython 3.9.7の方にライブラリがインストールされます。
ここでは例として、インテルが開発したオープンソースのコンピュータビジョン向けライブラリ「OpenCV」をpip経由でインストールしてみます(opencv-python という非公式ビルド済みパッケージであればpipでインストールできます)。
[1111a22@xx111 ~]$ pip install opencv-python Collecting opencv-python Downloading opencv_python-4.5.5.62-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.4 MB) |████████████████████████████████| 60.4 MB 7.8 MB/s Requirement already satisfied: numpy>=1.14.5 in ./anaconda3/lib/python3.9/site-packages (from opencv-python) (1.20.3) Installing collected packages: opencv-python Successfully installed opencv-python-4.5.5.62
インストールが終わったら対話モードでPythonを起動し、import cv2
と入力してみて下さい。エラーが出なければ上手くインストールできています。
エイリアス(alias)を定義する(おまけ)
最後に、pythonを便利に使うためのワザを紹介しておきます。Pythonを起動するためにいちいち “python” や “python3” などと入力するのは面倒です。そこで便利なのが「エイリアス(alias)」です。
$HOME(ログインしたときに一番最初に自分が居るディレクトリ)の中に .bashrc という隠しファイルが置かれています。この .bashrc はユーザーがログインしたときに自動的に読み込まれるようになっています。
この .bashrc の中に
alias py="$HOME/anaconda3/bin/python3.9"
と記入して上書き保存して下さい。その後で source .bashrc
を実行すると、 py
というコマンドだけでAnacondaのPythonが呼べるようになります。これをエイリアス(alias)といいます。
これにより、python3
というコマンドからはサーバーに元々あったPython 3.6が、py
というコマンドからは新たに導入したAnacondaのPython 3.9が別々に呼べるようになります。
このページでは例としてAnacondaによってPythonを導入する手順を紹介しましたが、あくまでも簡便な方法というだけで、別の方法で(例えば公式サイトからインストーラーをダウンロードするなど)導入することももちろん可能です。
サーバー内でプログラムを動かせるようにしておけば何かと便利な場面が増えると思います。使い方次第ではウェブサイトのパワーアップにも繋がるので、機械に強い人もそうでない人も、ちょっとでも遊んでみると良いのではないでしょうか。