Pythonを解説をみながらようやくローカル環境で実行することができるようになりましたが、こうなるとサーバー上でも動かしてみたくなります。エックスサーバーでもPythonを使うことはできるけれどもpipは使えません。root権限がないのでエラーメッセージが出ます。これだとbeautifulsoupなどをつかってスクレイピングライフを満喫することができません。

Linuxbrewではうまくいかない?

そこでroot権限がないならホームディレクトリにインストールできないかを考えます。

SSHでサーバーに接続

まずSSHでサーバーに接続します。公式サイトの説明をみながら進めていきます。

SSH設定 | レンタルサーバーならエックスサーバー

SSHソフトの設定(Tera Term) | レンタルサーバーならエックスサーバー

問題はここから。古い記事だとLinuxbrewをインストールしてそこからPythonをインストールする方法が紹介されていますが、これをやろうとしてもうまくいきません。

まずLinuxbrewをインストールしようとして書いているとおりに

を実行しても

と表示されるだけ。LinuxbrewはHomebrewに統合されたのでHomebrewをインストールしろと言われます。そしてHomebrewをインストールしてPythonをインストールしようとすると今度はcurlとgitをアップデートしろというエラーが出る。そしてcurlをアップデートしてPythonをインストールしようとすると今度はhttpsが使えないというエラーメッセージが・・・。結局どうやってもできませんでした。

しかたがないので別の方法をとります。

Minicondaを使う

エックスサーバーで簡単にpythonのpipとFlaskの環境を構築するによるとanacondaを使うとよいそうです。そしてこの方法ならできました。

まずはMinicondaをインストール。ここからMiniconda3-py38_4.8.3-Linux-x86_64.shを探してダウンロードし、FFFTPでホームディレクトリにアップロードします。そのあと

これでMinicondaのインストールが始まります。

と表示されたらEnterキーをおします。

次にライセンス条項が表示されます。1行ずつ表示されるのでEnterキーを押し続けます。するとライセンス条項に同意するかどうかを問われるのでyesを入力してEnterキーをおします。

すると下のように表示されるのでEnterキーを押します。

続いて以下のような表示がされるのでyesと入力してEnterキーを押します。

最後にパスを通すために

と入力してEnterキーを押します。

MinicondaをインストールしたらPythonとpipが使える

このあとエックスサーバーで簡単にpythonのpipとFlaskの環境を構築するではPythonのインストールをするように書いていますが、

とタイプするとなにもしなくてもこのままの状態でPython3.8とpipが使える状態になっていることがわかります。

試しにwhich pythonとかwhich pipと入力して実行してみましょう。以下のような表示がされ、Pythonとpipがminiconda3のなかにインストールされていることがわかります。

ためしにbeautifulsoupをインストールしてみます。そのあと以下のコマンドでどこにインストールされたか調べます。

すると

と表示されます。うまくいっているようです。

Pythonで書かれたプログラムを動かしてみる

ではPythonでプログラムを作成して実際に動くかどうか試してみましょう。

index.pyを作成して以下を書きます。

.htaccessの設置とパーミッションの設定

これを適当な場所にアップロードします。そしてパーミッションを755または705に設定します。ここを間違えると500エラーとなって動いてくれません。

そしてアップロードのと同じディレクトリに以下の.htaccessファイルをアップロードします。パーミッションは644とします。

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

実際にhttps://lets-csharp.com/samples/2108/python-test/にアップロードしているので確認してください。それからYahooをGoogleに変更しただけでhttps://lets-csharp.com/samples/2108/python-test/test.pyも作成してみました。スラッシュエンドでなくてもうまく動作しています。

Node.jsも使える?

それからNode.jsも同じようにインストールしてみました。こちらはNodebrewでNodeをインストールします。curlが使えないならwget と perl の組み合わせという技があります。これでダウンロードとインストールをしてしまいます(ネタ元 ⇒ xserver に nodejs インストール)。

インストール完了したらパスを通します。

このままでは空っぽなのでNode.jsをインストールします。

最新のものであれば

nodebrew install latest

安定版であれば

nodebrew install stable

複数インストールできます。そして

nodebrew list

とすればインストールしたパッケージ一覧を見ることができるので

nodebrew use v14.2.0

などと使いたいバージョンのものを選択します。

実際に動かしてみる

index.jsでコードを書きます。ユーザーエージェントを表示するだけの簡単なプログラムです。

root権限がないので80でリッスンすることができません。そこで65000を使います。

実行するにはindex.jsをアップロードしたディレクトリに移動して

SSHを切断したあとも表示させつづけるためには最後に&をつけるのがポイントです。そのあといったんCtrl+Cを押します。そのあと

を実行します。

.htaccessでページが表示されるようにする

それからレンタルサーバーの場合、使用できるポートが限定されています。ブラウザで表示させることができないので.htaccessを使います。

要は.htaccessを設置したディレクトリにアクセスがきたらhttp://localhost:65000の内容を表示させるのです。

https://lets-csharp.com/samples/2108/nodejs-test/から確認できます。

終了させるときは

終了させるときは以下のコマンドを実行してでてきたものをkillすればいいのですが、これでは複数起動しているときにどれがどれかわからなくなります。

そこで以下のようにポート番号を指定して65000を使用しているPIDを調べます。そのあとkillします。