レンタルサーバ契約からPython実行まで(Xserver編)

はじめに

ある程度のスペックでPythonの実行環境が欲しかったので、コスト、スペックを検討のうえ、Xserverのレンタルサーバを利用し、試すことにしました。その際のメモを備忘録として残しておきます。

契約~Python実行まで

契約

スタンダードプランの10日間無料お試しを申し込みました。さくらのVPSも契約しているのですが、Pythonでスクレイピング&クローリングする程度ならレンタルサーバのほうがコストパフォーマンスが高く、自分の利用には十分です。

ssh設定

契約後、XserverのコントロールパネルからSSHを有効にします。

続いて、公開鍵を登録します。

ログインできるようになりました。スペックよいです。

$ cat /proc/cpuinfo | grep processor | wc -l
256
$ cat /proc/cpuinfo | grep "model name" |uniq
model name      : AMD EPYC 9534 64-Core Processor
$ free -m
              total        used        free      shared  buff/cache   available
Mem:        1547557       16737     1525258        2639        5561     1530820
Swap:        401407        1666      399741

homebrew設定

参考サイト:レンタルサーバーにパッケージ管理のHomeBrewを入れる

opensslの最新をインストール

PREFIX=$HOME/opt
SRC=$PREFIX/src
mkdir -p $SRC
cd $SRC
openssl version
 ⇒OpenSSL 1.1.1k  FIPS 25 Mar 2021
wget https://github.com/openssl/openssl/releases/download/openssl-3.3.1/openssl-3.3.1.tar.gz
tar xvf openssl-3.3.1.tar.gz
cd openssl-3.3.1
./configure --prefix=$PREFIX
make
make install
cd ..

curl の最新版をインストール

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.46.0.tar.gz
tar zxf git-2.46.0.tar.gz
cd git-2.46.0
./configure --prefix=$PREFIX --with-curl=$PREFIX --with-expat
make all
make install

cd ..

homebrewインストール

export LD_LIBRARY_PATH=$HOME/opt/lib:$HOME/opt/lib64:$LD_LIBRARY_PATH
export PATH=$HOME/opt/bin:$PATH

export HOMEBREW_CURL_PATH=`which curl`
export HOMEBREW_GIT_PATH=`which git`
export HOMEBREW_PATH=$PATH

mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
eval "$(homebrew/bin/brew shellenv)"
which brew

brew update --force --quiet
chmod -R go-w "$(brew --prefix)/share/zsh"

各種ライブラリおよびPythonインストール

Pythonの実行(インストール)に必要なライブラリ、および selenium でChromeを利用するので、Chromeの実行に必要なライブラリをインストールしていきます。brew install でインストールできるものは良いのですが、インストールできないものは brew install --force-bottle を利用し、それでもインストールできないものはrpmパッケージをダウンロードしてきて、ライブラリを取り出すという手法をとっています。

どのライブラリが必要かは ldd コマンドで確認したうえで、yum provides にてどの rpmパッケージが必要かを確認しています。

参考:レンタルサーバーでselenium/puppeteerを動かす – レン鯖プログラマー

かなりトライアンドエラーを繰り返しており、結果的にインストールしたものを記載しています。が、おそらく無駄が多いと思います。

brew install glibc
brew install binutils
brew install glib
 ⇒python も入った
brew install mesalib-glw

どうしようもなくなってきたので --force-bottle を活用していく
brew install --force-bottle util-linux
brew install --force-bottle glib
chrome で必要なlibrary も...
brew install --force-bottle libdrm
brew install --force-bottle elfutils
brew install --force-bottle wayland
brew install --force-bottle lm-sensors
brew install --force-bottle mesalib-glw
brew install alsa-lib
cd opt/lib64
ln -s /home/xxxx/homebrew/lib/libxxxx.so.X .
これを何個か。。

結局個別にダウンロードしてきた。。
yum provides libasound.so.2 
 ⇒含まれているパッケージ名割り出して rpm を探してくる。なお OS は rocky linux
wget https://dl.rockylinux.org/pub/rocky/8/Devel/x86_64/os/Packages/l/libdrm-2.4.115-2.el8.x86_64.rpm
wget https://dl.rockylinux.org/pub/rocky/8/AppStream/x86_64/os/Packages/m/mesa-libgbm-23.1.4-2.el8.x86_64.rpm
wget https://dl.rockylinux.org/pub/rocky/8/Devel/x86_64/os/Packages/a/alsa-lib-1.2.10-2.el8.x86_64.rpm
wget https://dl.rockylinux.org/pub/rocky/8/Devel/x86_64/os/Packages/l/libwayland-server-1.21.0-1.el8.x86_64.rpm

brew install cpio
rpm2cpio libdrm-2.4.115-2.el8.x86_64.rpm | cpio -idv
rpm2cpio mesa-libgbm-23.1.4-2.el8.x86_64.rpm | cpio -idv
他も同様に展開
cd usr/lib64
cp -pr lib* ~/opt/lib64/
失敗したときの対処
  • glibc
brew info glibc
.bash_profie に追加
export LDFLAGS="-Wl,-rpath=/home/kaniy/opt/lib64/ -L/home/kaniy/homebrew/opt/glibc/lib -L/home/kaniy/homebrew/opt/binutils/lib -L/home/kaniy/opt/lib -L/home/kaniy/opt/lib64"
export CPPFLAGS="-I/home/kaniy/homebrew/opt/glibc/include -I/home/kaniy/homebrew/opt/binutils/include -I/home/kaniy/opt/include"
  • 全般
    • 失敗したら一度、brew cleanup **** を実行する
  • openssl@3
    • brewを使用する際、依存関係でopensslがインストールされている必要があった、最初にソースからインストールしているがそれでは認識してくれなかった。
    • が、brew install openssl 実行時に実施する make test のエラーがどうしても解決できなかった。
    • そのため、強引にmake test をスキップ手法をとった
<openssl の強引なインストール>
brew install openssl で make 中に Makefile を退避しておく、brew install openssl が完全に失敗してしまうと該当のディレクトリ /tmp/opensslA3-2024xxxxxxx/openssl-3.3.1/ がなくなってしまうので、失敗してしまう前にコピーしておく。

vi Makefile
------------
_tests: build_programs_nodep build_modules_nodep link-utils
##      "$(MAKE)" run_tests
------------

brew install openssl で make test を実行する前にコピーする
cp Makefile /tmp/opensslA3-20240816-3068806-m56dt7/openssl-3.3.1/

Chrome & chromedriver 関連

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
pm2cpio libwayland-server-1.21.0-1.el8.x86_64.rpm | cpio -idv
cp -pr opt/google/chrome ~/opt/bin/

cd
wget https://storage.googleapis.com/chrome-for-testing-public/127.0.6533.119/linux64/chromedriver-linux64.zip
unzip chromedriver-linux64.zip
cp -p chromedriver-linux64/chromedriver opt/bin/chrome

Python関連

venv で仮想環境を作り pip コマンドで必要なライブラリをインストールしていきます。自分のスクリプト用。

python3 -m venv .venv
. ./.venv/bin/activate
python --version
python -m pip install --upgrade pip wheel
python -m pip install pandas numpy requests opencv-python beautifulsoup4 mplfinance japanize_matplotlib pyti selenium tweepy seaborn pillow opencv-contrib-python mysql-connector-python
python -m pip install tensorflow keras scikit-learn
python -m pip install pandas_datareader
python -m pip install undetected-chromedriver
python -m pip install selenium_stealth
python -m pip install seleniumbase
python -m pip install tradingview-datafeed

おわりに

無事、Python実行できました。これで本契約できそうです。

コメント

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