FreeBSD-13R(arm64)でメールサーバとWebサーバを立てた作業記録

  • 投稿日:
  • by
  • カテゴリ:

1.環境

・Raspberry Pi 4 を推奨 ※3B+で残りメモリ25MB、ちょっとキツそう。

fbsd2-210909.png

・OSはFreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img.xz

・WordPressまでの動作を確認。
 (追記)MovavleType対応を別記事に纏めた。

・sshが有効になったら、fail2banとpfの設定を行なう。(既出)

2.メールサーバー

・現用中の環境で構築する。
 Bind + Postfix + Dovecot (sasl) + maildrop + spamassassin

追記(2021/10/20):当初、cyrus-sasl-saslauthd を入れていたが、現在のところPAM認証であり、cyrus-saslの機能は使っていない。そこで、dovecot-saslとなるよう設定を変更した。むろん、sasldbとかldapを使う場合には、cyrus_sasl_saslauthdを導入すべきである。情報元

・ということで、packageのインストールは以下;

pkg install -y postfix-sasl dovecot bind916 bind-tools maildrop spamassassin

3.Webサーバー

・今回、新規に構築する。

・WordPressとMovableTypeが稼働するのを目的にする
 Apache24 + mariaDB105 + PHP74

・まず、ApacheとmariaDB105のパッケージを入れる。

pkg install -y apache24 mariadb105-server

・/etc/rc.confに以下を追加

apache24_enable="YES"
apache24_http_accept_enable="YES"
php_fpm_enable="YES"
mysql_enable="yes"

続いてmysql_serverを起動

/usr/local/etc/rc.d/mysql-server start

mysqlサーバの仕上げとして、mysql_secure_installation を実行。
赤字部分のように応答する。

mysql_secure_installation

-----------------------------

root@fbsd2:~ # mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):(rootパスワード)
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n](Y)
Enabled successfully!
Reloading privilege tables..
... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n](Y)
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n](Y)
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n](Y)
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n](Y)
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
root@fbsd2:~ #

・phpのインストール。php74のバイナリをインストールする。

pkg install -y php74 php74-extensions php74-gd php74-mbstring php74-pear php74-gettext php74-iconv

pkg install -y php74-exif php74-fileinfo php74-ftp php74-pdo_mysql php74-mysqli php74-zip

pkg install -y mod_php74 php74-curl php74-gd php74-xml php74-xmlrpc php74-soap php74-intl php74-pecl-imagick

・続いて、php.iniファイルを雛形からコピーする。

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

・/usr/local/etc/apach24/httpd.confを編集。
 書き換え必要な個所は以下;

mpm関係が鬼門と思う。

#LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
#LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so

と設定することで、稼働した。
以下の例を掲出してあるがあるが、phpをコンパイルしなおせという警告が出て、
Apache24が起動しない。→実は、defaultのhttpd.confが正解だった。ヒントこことかここ

LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
#LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
LoadModule ssl_module libexec/apache24/mod_ssl.so

以下、全体のdiff;

diff httpd.conf.org httpd.conf
92c92
< #LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
---
> LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
129c129
< #LoadModule proxy_module libexec/apache24/mod_proxy.so
---
> LoadModule proxy_module libexec/apache24/mod_proxy.so
133c133
< #LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
---
> LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
148c148
< #LoadModule ssl_module libexec/apache24/mod_ssl.so
---
> LoadModule ssl_module libexec/apache24/mod_ssl.so
166c166
< #LoadModule cgid_module libexec/apache24/mod_cgid.so
---
> LoadModule cgid_module libexec/apache24/mod_cgid.so
169c169
< #LoadModule cgi_module libexec/apache24/mod_cgi.so
---
> LoadModule cgi_module libexec/apache24/mod_cgi.so
231d230
< # explicitly permit access to web content directories in other
265c264,265
< Options Indexes FollowSymLinks
---
> # Options Indexes FollowSymLinks
> Options +FollowSymLinks +Multiviews +ExecCGI
295a296,299
> <FilesMatch "\.php$">
> SetHandler "proxy:fcgi://127.0.0.1:9000/"
> </FilesMatch>
>
432c436
< #AddHandler cgi-script .cgi
---
> AddHandler cgi-script .cgi

PCからのアクセスできるよう、sambaを構成しておく。

さらにこの後、サーバのドメインが決まったら、letsencrypt を導入して、https化の作業など行う。

以上、備忘のため記す。

2021年8月26日