まえがき
俺の環境を整える備忘録です。
AWS LightsailのCentOS7.9。
とりあえず入れるの↓
- Python3.11.0
- Mastodon.py
他は追々。
.
まずログインする
私はRLoginを利用しているため、RLoginを用いてSSHログインする。
Lightsailのインスタンスのトップページのようなところに 接続先 としてIPアドレスが出ているので、それが『ホスト名/サーバーIPアドレス』となる。
ログインユーザー名は、とりあえず centos を使えと書いてあるのでそれ。
Lightsailは最初はキーのファイルでログインするので、デフォルトキーをダウンロード をクリックし、どこかに保存する。RLoginの SSH認証鍵 というところでそのファイルを選択。
それでとりあえずログインできるはず。
.
各種 初期設定
ユーザーの追加など
Lightsailは初期設定ではrootにパスワードがついていないようなので、最初にrootのパスワードを設定する。
$ sudo su -
# passwd
centosというユーザーはLightsailの初期ユーザー名でそれを使い倒すのもよくないとおもうので、実際に使うユーザーは他に作る。パスワードも設定。
# useradd hogehoge
# passwd hogehoge
個人的にhogehogeには管理者権限を与える。このOSだとvisudoのコメントアウトは最初から外されているはずだけど、一応確認。
# visudo
# -----略----- ### Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# -----略----- #
%wheel ALL=(ALL) ALL の行頭に#がなければOK。
よって、今回はそちらはいじらず以下のコマンドのみ実行する。
# usermod -G wheel hogehoge
これでhogehogeはsudoをつければ色々好き勝手できるようになる。
.
CentOS日本語化
まだ私は、日本語で表示できるところは日本語で表示してほしい。。
yumはアップデートしておく。
# yum -y update
# yum -y install ibus-kkc vlgothic-*
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf
# echo $LANG ### 変更されたか確認できる
ja_JP.UTF-8
タイムゾーンをJSTに設定
crontabする際、ログなど残すときなど不便なので日本時間に設定する。
# timedatectl set-timezone Asia/Tokyo
# timedatectl status ### 確認
こっちはTime zoneのところがAsia/Tokyoになっていれば成功。
以下のコマンドでcrond.serviceを再起動。
# service crond.service restart
.
まずOpenSSL1.1.1をインストール
Python3.11のインストールはOpenSSL1.1.1以上が必要。
このCentOSはデフォルトだと1.0.2になっている。
Pythonを使う予定のユーザーのみにインストールする想定でいるので、対象のユーザー(hogehoge)にログイン。
初期バージョン。
$ python -V
Python 2.7.5
$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
パッケージの下準備(ひたすらコピペしまくってきたので要らないのもあるかも)
$ sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel git libffi-devel tar make wget xz-devel perl-core tk-devel epel-release bluez-libs-devel libtirpc-devel tkinter
$ sudo yum group install "Development Tools"
OpenSSLとPython3.11.0はダウンロード・解凍をしておく。今回はホームフォルダ。
$ cd
$ wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
$ tar xvJf Python-3.11.0.tar.xz
$ wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
$ tar zxvf openssl-1.1.1s.tar.gz
OpenSSLをビルド。
$ cd openssl-1.1.1s
$ ./config
$ make
$ sudo make install
共有ライブラリの検索パスを追加。
$ sudo sh -c 'echo /usr/local/lib64 > /etc/ld.so.conf.d/local.conf'
$ sudo ldconfig
$ /usr/local/bin/openssl version ### 確認
OpenSSL 1.1.1s 1 Nov 2022
既存の OpenSSL をアンインストールし、OpenSSLのリンクを貼る。
$ sudo rpm -e --nodeps openssl
$ sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
$ openssl version
OpenSSL 1.1.1s 1 Nov 2022
Python3.11.0のインストール
$ cd ~/Python-3.11.0
$ ./configure
$ make
$ sudo make install
「python」「pip」のコマンドで利用できるよう、リンクを張る。
$ sudo ln -nfs /usr/local/bin/python3.11 /usr/bin/python
$ sudo ln -s /usr/local/bin/pip3.11 /usr/bin/pip
$ python -V
Python 3.11.0
$ pip -V
pip 22.3 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)
とても参考にしました。
.
Mastodon.pyのインストール
$ pip install mastodon.py
簡単。
とりあえず適当にtesttoot.pyなどを作って動作を試してみる。
(認証情報は、Mastodonの各自アカウントのユーザー設定→開発 から 新規アプリ を作ると生成される。)
from mastodon import Mastodon
mastodon = Mastodon(
access_token = 'アクセストークン',
client_id = 'クライアントキー',
client_secret = 'クライアントシークレット',
api_base_url = 'https://インスタンスURL'
)
mastodon.toot('突撃・侵略・制覇~!')
これが「突撃・侵略・制覇~!」をトゥートする最小のコードのはず。
また、今回は投稿にtoot()を利用したけどstatus_post()でも同じように投稿が可能。toot()はシンプルにアカウントで設定しているデフォルトの公開範囲でトゥートする。status_post()の方は様々な指定をしてトゥートできる。たとえば、
mastodon.status_post('突撃・侵略・制覇~!', visibility='direct')
.toot()ではなくて上記のようにすれば、公開範囲がダイレクトのトゥートをすることも可能。公開範囲は「public(公開)」「unlisted(未収載)」「private(非公開)」「direct(ダイレクト)」の4種類。
他にも色々設定できる。詳細は以下のドキュメントを参照。
.
おまけ
yumをいじる
pythonコマンドのデフォルトを3系にするとyumがうまくいかなくなるので、そちらを直す。
1行目は「#!/usr/bin/python」になっていますが、2を指定する。
# vi /bin/yum
# ---------- #
#!/usr/bin/python2
同じようにこちらのファイルも直す。
# vi /usr/libexec/urlgrabber-ext-down
# ---------- #
#!/usr/bin/python2
その他、色々と。
やるといいそうなのでメモ。
.
おわりに。
かなりハマったけど結局pyenvを使わないのが一番楽にできた。
Lightsailと遊ぶの楽しみです。
#EOF