CentOS7でメール受信時にスクリプトを実行する

Postfixの設定

すでにインストール済みのはずなのでアップデートしてから設定。DNSの設定は済んでいるものとする。

yum -y update postfix
cp /etc/postfix/main.cf /etc/postfix/main.cf.org
vi /etc/postfix/main.cf
diff /etc/postfix/main.cf.org  /etc/postfix/main.cf

サブドメイン限定で受信するだけなので編集するのはこれだけ。ユーザーのローカルから処理するように alias_maps の設定も変える。

76a77
> myhostname = noah.rocca.co.jp
113c114
< #inet_interfaces = all
---
> inet_interfaces = all
116c117
< inet_interfaces = 127.0.0.1
---
> #inet_interfaces = 127.0.0.1
386c387,388
< alias_maps = hash:/etc/aliases
---
> #alias_maps = hash:/etc/aliases
> alias_maps = hash:/home/<username>/.aliases

エイリアスに以下を追記して受信時にスクリプト呼び出し。今回、ローカルから処理したいので、ローカル側で以下の設定とした。

touch /home/<username>/.aliases.db
vi /home/<username>/.aliases

test@sub.domain.ltd で受信。

test: "| /home/<username>/commands/bin/script"

Rootで反映して再起動

postalias /home/<username>/.aliases
systemctl restart postfix

なんかあったら以下でログ確認のこと。

tail -f /var/log/maillog

ポートについて

今回は受信だけなので25さえ空けてればOKです。

さくらのVPSでCentOS7にローカル接続の設定

何度やっても忘れますので備忘録。 192.168.0.5 に設定する例です。

nmcli connection up "System eth1"
nmcli c m "System eth1" connection.autoconnect yes
nmcli connection modify "System eth1" ipv4.method manual ipv4.addresses "192.168.0.5/24" connection.autoconnect yes
nmcli connection up "System eth1"
ip addr

CentOS7で快適な開発環境を作る(Vim, Tmux, Zsh)

いろんな宗派があると思うので、私はこうだよ、という備忘録。

とりあえず

これは入れておく。

yum install -y git wget

Tmux2.9

yum で入れると古すぎるので、開発環境だし最新を入れます。 3.0 だと新しすぎて怖いので、 2.9 で。ソースからコンパイルlibeventncurses が無いとコンフィグエラー起きるので入れ忘れなきよう。

cd /usr/local/src/
yum install -y libevent-devel ncurses-devel
wget https://github.com/tmux/tmux/releases/download/2.9a/tmux-2.9a.tar.gz
tar -zxvf tmux-2.9a.tar.gz
cd tmux-2.9a/
./configure
make
make install

Vim8

当然のごとく、ソースからコンパイルruby は使わないのとインストールが面倒だったのでオプションに入れませんでした。

cd /usr/local/src/
git clone https://github.com/vim/vim.git
yum install -y lua-devel lua python-dev python3-dev perl-ExtUtils-Embed lua-devel ncurses-devel python-devel python36 python36-libs python36-devel python36-pip
yum remove -y vim-enhanced
cd vim
./configure     --enable-fail-if-missing     --with-features=huge     --disable-selinux     --enable-luainterp     --enable-perlinterp     --enable-pythoninterp=dynamic     --with-python-config-dir=/usr/lib64/python2.7/config     --enable-python3interp=dynamic     --with-python3-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu     --enable-cscope     --enable-fontset     --enable-multibyte     vi_cv_path_python3=/usr/bin/python3.6
make
make install
vim

Zsh(Oh-my-zsh + Powerlevel10k)

こちらも最新版が必要なので、ソースからコンパイル

cd /usr/local/src/
wget https://downloads.sourceforge.net/project/zsh/zsh/5.8/zsh-5.8.tar.xz
tar xvf zsh-5.8.tar.xz
cd zsh-5.8/
./configure --enable-multibyte
make
make install
echo /usr/local/bin/zsh >> /etc/shells

Oh-my-zsh + Powerlevel10kのインストール。ここからは開発するユーザー権限で作業します。

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

~/.zshrc のテーマを ZSH_THEME="powerlevel10k/powerlevel10k" に変更。再度ログインすると、Cuiの設定画面が出てくるのでそれに従ってPowerlevel10kを設定する。

CentOS7にPHP74, PostgreSQL12, MariaDB10.4をインストールする

PostgreSQL12

12用のリポをゲットしてインストール。

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum -y install postgresql12-server postgresql12-contrib
cp /var/lib/pgsql/12/data/pg_hba.conf /var/lib/pgsql/12/data/pg_hba.conf.org
vi /var/lib/pgsql/12/data/pg_hba.conf
diff /var/lib/pgsql/12/data/pg_hba.conf.org /var/lib/pgsql/12/data/pg_hba.conf

編集した差分はこちら。ローカルかつ特定のユーザーからしかアクセスできないように設定。

84c84
< local   all             all                                     peer
---
> local   all             all                                     trust
86c86
< host    all             all             127.0.0.1/32            ident
---
> host    all             <dbusername>       127.0.0.1/32            md5
88c88
< host    all             all             ::1/128                 ident
---
> #host    all             all             ::1/128                 ident
91,93c91,93
< local   replication     all                                     peer
< host    replication     all             127.0.0.1/32            ident
< host    replication     all             ::1/128                 ident
---
> #local   replication     all                                     peer
> #host    replication     all             127.0.0.1/32            ident
> #host    replication     all             ::1/128                 ident

データベースの初期化。

PGSETUP_INITDB_OPTIONS="-E UTF8 --no-locale" /usr/pgsql-12/bin/postgresql-12-setup initdb
su - postgres
psql

ユーザーの追加。権限の変更。ユーザー一覧の確認。

CREATE ROLE <dbusername> CREATEDB LOGIN PASSWORD '<dbpassword>';
ALTER USER kir014912 SUPERUSER;
\du;

rootに戻ってサービスの登録と起動。ファイヤーウォールの設定。

firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --permanent --zone=public --add-service=postgresql
systemctl restart firewalld.service
firewall-cmd --list-all
systemctl enable postgresql-12.service
systemctl start postgresql-12

MariaDB10.4

以下のリポジトリにバージョン指定すればインストール指定したバージョンでインストールが可能。インストール後は初期設定。

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=mariadb-10.4
yum install -y MariaDB-server MariaDB-client
mysql_secure_installation

初期設定はrootのパスワード設定以外はだいたいYesで。

cp /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.org
vi /etc/my.cnf.d/mariadb-server.cnf
diff  /etc/my.cnf.d/server.cnf.org  /etc/my.cnf.d/server.cnf

[mysqld] 以下に追記。

12a13,15
> character-set-server = utf8mb4
> [client-mariadb]
> default-character-set = utf8mb4

サービス登録と起動、ファイヤーウォールの設定。

systemctl enable mariadb
systemctl start mariadb
firewall-cmd --permanent --zone=public --add-service=mysql
systemctl restart firewalld.service
firewall-cmd --list-all

PHP74

epelリポジトリからPHP74のインストール。ipaフォントはプロジェクトで使うのでついでに入れてます。

yum install -y epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi-php74 php php-mysql php-pgsql httpd-tools php-curl php-dom php-gd php-pecl-imagick php-zip  php-mbstring php-openssl php-xml unzip ipa-gothic-fonts ipa-pgothic-fonts fontconfig
php -v

composer なしにはPHPで何もできないように思うので初めから入れておく。

cd /usr/local/src/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer

さくらのクラウドでCentOS7を導入したメモ - その3

ロードバランサの設定

スイッチ+ルーター にロードバランサの構成とした。WEB側のサーバーのみロードバランサを利用し、DB側は別途ローカルスイッチを作成し、ローカルからアクセスすることとした。

内容はここと全く同じ。

manual.sakura.ad.jp

cp /etc/sysctl.conf /etc/sysctl.conf.org
vi /etc/sysctl.conf

以下を追記する。

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

反映

sysctl -p

バイスの追加

/etc/sysconfig/network-scripts/ifcfg-lo:0

以下を記述。

DEVICE=lo:0
IPADDR=仮想IPアドレス
NETMASK=255.255.255.255

反映

ifup lo:0