物忘れの激しいエンジニアのメモ

スクレイピング、映像系、アプリ、webなど...

クラウドサーバまとめ

随時更新中

(個人的に)重要視する項目

outbound

  • 通信量は無料が良い

Free Tier

  • 無料期間は長い方が良い

region

  • 日本サーバーが良い

まとめ

cloud server outbound Free Tier Japan region available
sakura cloud free o o
idcf free o o
Microsoft Azure ?
BIGLOBE cloud hosting free? 3 month
IBM Cloud ? unlimited south U.S. only
CPI ? 10 days
ORACLE ? $300(30 days) ?
NIFTY Cloud ?
Cloudn ?
managed cloud for WEB ?
@YMC ?
GMO cloud VPS ?
どこでもキャビネット ?
wpX cloud ?
使えるクラウド ?
EX-CLOUD ?
アリババ ?
WADAX ? x
GCE x
AWS x 1 year o

Ubuntu18をCUI自動ログインに設定する

環境

  • Ubuntu18

CUIログインに設定する

sudo systemctl get-default
sudo systemctl set-default multi-user.target 

自動ログインに設定する

sudo systemctl edit getty@tty1

下記を書く

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin ユーザ名 --noclear %I 38400 linux

参考

Raspberry pi 3のChrome HeadlessでWebスクレイピング

はじめに

最近、毎日のスクレイピングタスクをこなすベストプラクティスを考えていて、一つの案であるラズパイで運用する環境を整えてみました。

chromedriverのインストール

aptで簡単にできました。

sudo apt update
sudo apt upgrade
sudo apt-get install chromium-browser
sudo apt-get install chromium-chromedriver

後は何も考えずにHeadless Chrome が使えました。

安定化&省電力化

連続で運用していると、たまにChromeが立ち上がらない時がある・・・

原因は不明ですが、USBとHDMI端子を無効にしたら、少し安定した・・・かな・・・?

端子の無効で発熱(消費電力)が抑えられるし・・・

echo 0 | sudo tee /sys/devices/platform/soc/3f980000.usb/buspower
/opt/vc/bin/tvservice --off

安定化 その2

たまにChromeが立ち上がらない問題、原因を探ったところ、Chromeが強制終了した時のプロセスが残っていて、メモリを食っていたことが原因のようでした。

psコマンドでプロセスがたくさんあるのを確認しました。

ps aux | grep Chrome

なので、cronの実行時にpkillするようにしたところ、今の所(一週間くらい)立ち上がらない問題は起きていないです。

pkill Chrome

参考

pypiに自作ライブラリを登録する

はじめに

いつもやり方を忘れるのでメモ。

1. アカウント作成

公式サイトでアカウントを作る。

メールアドレスの確認も忘れずに。やってないとライブラリの登録ができない。

2. ~/.pypirc ファイル作成

Usernameなどの情報を記載したファイルをホームディレクトリ下に作る。

[distutils]
index-servers = pypi

[pypi]
repository: https://pypi.python.org/pypi
username: YOUR_USERNAME
password: YOUR_PASSWORD

このファイルがないと、ライブラリ登録時にエラーが出る。

Upload failed (403): Invalid or non-existent authentication information.
error: Upload failed (403): Invalid or non-existent authentication information.

3. setup.py 作成

from distutils.core import setup


setup(
    name="PROJECT_NAME",
    packages=[
        "PROJECT_NAME",
    },
    version="0.0.0",
    description="",
    author="YOUR_NAME",
    author_email="YOUR_EMAIL_ADDRESS"
    url="https://github.com/***/***"
    license="MIT",
)

4. pypiへ登録

python setup.py sdist upload

ブータブルUSBメモリを作成する

いつも手順を忘れるのでメモしておく。

ディスク名の確認

fdiskコマンドで、認識されているデバイスの情報を表示する。

容量などの情報から、使用したいUSBメモリを特定する。

$ fdisk -l

以下、USBメモリがsdbだった場合。

USBメモリのフォーマット

ext4でフォーマットする。

$ sudo mkfs -t ext4 /dev/sdb

OSイメージの書き込み

公式サイトなどから、OSイメージファイルをダウンロードしておく。

以下はubuntu18の場合。

$ sudo dd bs=4M if=ubuntu-18.04.1-desktop-amd64.iso of=/dev/sdb && sync

"

Ubuntu18でCUDA9.1を使えるようになるまでの最短手順

はじめに

CUDAは最新バージョンじゃないけど、9.1ならaptで簡単にインストールできるようになっていたのでメモ。

secure bootの無効化

BIOSで設定する。設定するところは頑張って見つける。

映像出力を内部GPUに固定

こちらもBIOSで設定する。設定するところ見つけづらい。

NVIDIA driverのインストール

$ sudo apt install nvidia-driver-390

rebootののち、下記コマンドをエラーなく実行できることを確認する。

$ nvidia-smi

CUDAのインストール

$ sudo apt install nvidia-cuda-toolkit

下記コマンドをエラーなく実行できれば完了。

$ nvcc --version

nvccでコンパイル時にエラー

こんなエラーが出ていた。

/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h(436): error:
identifier "nullptr" is undefined

gccとg++のバージョンを5にすべきとのことで、そうしてみる。

sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1

しかし同じエラーが出る。

そこで、nvccで使われているgccとg++のバージョンを5に下げる。

$ sudo apt install gcc-5
$ sudo mv /usr/lib/nvidia-cuda-toolkit/bin/gcc /usr/lib/nvidia-cuda-toolkit/bin/gcc_old
$ sudo ln -s /usr/bin/gcc-5 /usr//nvidia-cuda-toolkit/bin/gcc

$ sudo apt install g++-5
$ sudo mv /usr/lib/nvidia-cuda-toolkit/bin/g++ /usr/lib/nvidia-cuda-toolkit/bin/g++_old
$ sudo ln -s /usr/bin/g++-5 /usr//nvidia-cuda-toolkit/bin/g++

これでコンパイルできるようになった。

毎日のwebスクレイピングのタスクをこなすサーバー運用のベストプラクティス

webスクレイピングAWSで毎日決まった時間にサーバーで動かすようになって3ヶ月ほど経ちました。

しかし、AWSの無料枠は1年間。気づかないうちにお金がかかるようになってしまったら困る!

ということで、タイトルについてちょっと考えてみました。

条件

理想的には、

  • 保守がめんどいので、物理的にマシンを所有したくない
  • 永年無料で運用可能
  • データ通信をできるだけたくさん

これ全て満たすものが見つかれば最高なのですが・・・ なるべく良いものを検討した過程。

heroku

メリット

  • 永年無料枠(また仕様変わるかも?)
  • データ通信量がかからない?

デメリット

  • 24時間稼働は1アプリのみ

物理的に自分のサーバーを所有する

ラズパイでheadless chromeを動かす記事を見つけたのでやってみようかな

メリット

  • わかりやすい

デメリット

  • いつかは壊れる
  • 電気代がかかる(ラズパイなら省電力)
  • サーバー設置場所が必要

AWS

メリット

  • 安定稼働いつもありがとうございます

デメリット

  • 1年は無料だが、それ以降は従量課金
  • データ通信の無料枠がきつい

idcf

メリット

  • データ通信無料?
  • 最小構成で月500円

デメリット

  • 無料枠が期間限定

その他クラウドサーバー

どこも結構似たり寄ったり。

無料枠はあれど30days~1year

データ通信の無料枠は結構厳しい

まとめ

とりあえずheroku試してみよう。

ラズパイも試してみたい。選択肢は多いほうが良い。

idcfなどのデータ通信無料のクラウドサーバーもありではある。 最小構成の最安値を更新したい。