はじめに
ある程度のスペックで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実行できました。これで本契約できそうです。
コメント