Xserver(エックスサーバー)
前回、XserverにSSH接続する方法を解説しました。
今回はXserverにPythonの実行環境をインストールしていきます。
ただ実はPythonを実行するだけであれば、Xserverには最初からPythonがインストールされています。
しかし問題なのはパッケージ(ライブラリのまとまったもの)。
新しいパッケージをインストールする権限がなく、基本ライブラリしか使うことができません。
そこでLinuxbrewというパッケージ管理ソフトを導入し、新たにPythonをインストールします。
そうすると自分のサーバー上だけで使えるPythonがもう一つ入り、そちらを使って新しいパッケージをインストールすることができるようになります。
なかなか難しいですが、とりあえずLinuxbrewをXserverに入れれば、自分が使いたいパッケージを好きにインストールできると思ってもらえればいいと思います。
Linuxbrewのインストール
ということでLinuxbrewをインストールしていきます。
サーバーにログインして、こちらのコマンドを実行します。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
するとインストールが始まり、20〜30分ほどでこちらのメッセージが出てきます。
途中で止まっているかなと思っても、まだまだ動いていることが多いので、気長に待っていてください。
==> Next steps:
- Run `brew help` to get started
- Further documentation:
https://docs.brew.sh
- Install the Homebrew dependencies if you have sudo access:
sudo yum groupinstall 'Development Tools'
See https://docs.brew.sh/linux for more information
- Add Homebrew to your PATH in /home/XXXXX/.bash_profile:
echo 'eval $(/home/XXXXX/.linuxbrew/bin/brew shellenv)' >> /home/XXXXX/.bash_profile
eval $(/home/XXXXX/.linuxbrew/bin/brew shellenv)
- We recommend that you install GCC:
brew install gcc
このメッセージには次にやることが書いてあります。
まずやることは「Add Homebrew to your PATH in /home/XXXXX/.bash_profile:」ということで、「.bash_profile」というファイルに「your PATH in /home/XXXXX/」を追加します。
コマンドも書いてくれているので、そのまま実行します。
echo 'eval $(/home/XXXXX/.linuxbrew/bin/brew shellenv)' >> /home/XXXXX/.bash_profile
eval $(/home/XXXXX/.linuxbrew/bin/brew shellenv)
次に「brew install gcc」を実行して「GCC」をインストールしろと書いてありますが、私は忘れていてこの時点ではやりませんでした。
後でやったところ、最新版になっているとのことで、ちょっとほっとしました。
ちょっとびっくりした問題が…
今回、この作業をやっているとき、ちょっとメモを取るのを忘れたところもあったため、ちょっとうろ覚えのところもあります。
そのためこの手順通りにやっておらず、むしろもっと変なことをやってしまったところがありました。
その際、何が起こったのか、どう対処したのかをまとめておこうと思います。
起こった症状としてはログインし直したところ「ls」「cd」など基本のコマンドも含め全てのコマンドが使えなくなったということが起こりました。
こうなってしまうと手も足も出ず、ものすごく焦ってしまいます。
原因は新たに加えたLinuxbrewのパス設定によりサーバー自体のパス設定が狂ってしまったためでした。
そこでまずこちらのコマンドを実行して、基本コマンドが入っているパスを通しました。
PATH=/sbin:/usr/sbin:/bin:/usr/bin
その後、.bash_profileをviで開いて(vi .bash_profile)、「# User specific environment and startup programs」の下を削除。
その後、こちらのコマンドを削除したところに追加しました。
PATH=$PATH:$HOME/bin
export PATH
eval $(/home/XXXXX/.linuxbrew/bin/brew shellenv)
これでログインし直して、無事「ls」や「cd」が使用できるようになりました。
Pythonのインストール
次にPythonとTweepyをインストールしていきます。
まずPythonをインストールするにはこちらのコマンドを実行します。
brew install python
これでインストールが完了したら、インストールされたPythonのバージョンを確認してみましょう。
python -V
こちらのコマンドを実行すると「Python 2.7.5」とか古いバージョンのPythonが表示されるのではないでしょうか。
実は先ほども少しお話ししましたが、Xserver自体にPythonがインストールされていて、単純にpythonとコマンドを打つと、そちらのPythonが呼び出されてしまうのです。
新たにインストールしたPythonを使うにはpython3とします。
python3 -V
私の場合はこれで「Python 3.9.1」と表示され、新しいPythonがインストールされたことが確認できました。
Tweepyのインストール
ここまできたらあとは通常のパソコンにインストールしたPythonと変わりません。
ということでTweepyをインストールするにはpipを使って、こんな感じです。
pip install tweepy
これでインストールが完了すれば、tweepyが使える状態になりました。
プログラムのアップロード
ここからはPythonプログラムをアップロードし、cronで実行する方法を紹介していきます。
Xserverにログインして、「ファイル管理」のページを開きます。
前回、Pythonをインストールした「サーバー名.xsrv.jp」をダブルクリックして開きます。
「public_html」を開きます。
ここに「Python」というフォルダを作りたいので「新規フォルダ」をクリックします。
「名前を入力してください」の下の欄に「Python」と入力し、「作成」をクリックします。
作成した「Python」フォルダをクリックして中に入ります。
ここにプログラムをアップロードするので、「アップロード」をクリックします。
するとアップロードウインドウが開きますので、「ファイルを選択」かドラッグ&ドロップします。
そして「アップロード」ボタンをクリックしたら、アップロードが始まります。
アップロードが終わったら、次はcron(クロン)を設定していきます。
cron(クロン)の設定
cronの設定をするには、「サーバー管理(サーバーパネル)」を開きます。
その中の「Cron設定」をクリックします。
「Cron設定追加」をクリックします。
ここで上から「分」、「時間」、「日」、「月」、「曜日」、「コマンド」、「コメント」となっています。
ここを好きな時間で実行されるように、前に解説したルールに従って、設定していきます。
今回は毎日21時に実行するように設定してみました。
ここで一つ注意点なのですが、0分に実行したい時は「00」ではなく、「0」です。
「00」にするとエラーが出て登録できませんので、注意してください。
また「コマンド」ですが、通常なら「Python プログラム名.py」となるのですが、ここでは絶対パスで入力します。
私の場合は、「/home/サーバー名/.linuxbrew/bin/python3 /home/サーバー名/サーバー名.xsrv.jp/public_html/python/thankstweet_ver1.py」となりました。
ちなみに前半がPythonの呼び出し、後半が自分で作成したPythonプログラムの読み込みの部分です。
前半のPythonの呼び出しに関しては、前回にインストールしたlinuxbrewのPythonを指定する必要があるので、注意してください。
これでcronの設定が終わったので、「確認画面へ進む」をクリックして、問題なければさらに「追加する」をクリックします。
そして時間まで待ってみると、問題なくツイートが表示されました。
2秒違いで処理されているのはなかなか素晴らしいですね。
全体を通じての注意点
今回、Linuxbrewをインストール→LinuxbrewでPythonをインストール→pipでtweepyをインストールという流れで環境を構築してきました。
しかし実はそれほどスムーズに行ったわけでなく、色々と無駄なことをしたこともありました。
それはPythonの仮想環境であるpyenvも平行して入れようとしてしまったことです。
最初に色々と調べて、よく分からないまま進めてしまい、いくつかの解説サイトを渡り歩いてしまったため、設定がぐちゃぐちゃになってしまい、余計に時間がかかったということです。
ということで今回学んだことは、いくつもの解説サイトのやり方を並行してやらないということと、メモを取る(少なくともスクリーンショット)ということです。
まだまだサーバーもいじっていくので、今後は注意していきたいと思います。
ではでは今回はこんな感じで。
コメント