この記事に触発されてホコリが被っていたラズパイをいじったときの備忘録。
Apacheのインストール
apache2とmod_wsgi関連の諸々(正直よくわかってない)をインストールする。
$ sudo apt-get install apache2 $ sudo apt-get install libapache2-mod-wsgi $ sudo pip install mod_wsgi
Apacheの設定
設定ファイルを編集する。理由は割愛。
$ sudo vi /etc/apache2/conf-available/serve-cgi-bin.conf (変更後) <IfDefine ENABLE_USR_LIB_CGI_BIN> ScriptAlias /cgi-bin/ /home/litoma/public_html/cgi-bin/ <Directory "/home/litoma/public_html/cgi-bin">
$ sudo vi /etc/apache2/sites-available/000-default.conf (変更前) # Include conf-avaliable/serve-cgi-bin.conf (変更後:コメントを外す) Include conf-avaliable/serve-cgi-bin.conf
$ sudo vi /etc/apache2/mods-available/mime.conf (変更後) AddHandler cgi-script .cgi .py AddHandler wsgi-script .wsgi
シンボリックリンクを所定のフォルダに作成して必要な機能を有効化する。Debianの場合こうするらしい。
$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/userdir.conf $ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/userdir.load $ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load $ sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf $ sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load $ sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf $ sudo ln -s /etc/apache2/mods-available/wsgi.conf /etc/apache2/mods-enabled/wsgi.conf $ sudo ln -s /etc/apache2/mods-available/wsgi.load /etc/apache2/mods-enabled/wsgi.load
元記事だとこれでうまくいくみたいだけど、自分の場合shmcbが足りない的なエラーが出たので以下も追加する。ちなみにこのサイトを参考にした。
$ sudo ln -s /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/socache_shmcb.load
apache2を再起動して設定を反映して終わり。
$ sudo /etc/init.d/apache2 restart
サーバ証明書の取得
元記事のとおりLet’s Encryptを使用する。ただし、MyDNS.JPとの組み合わせでは元記事のままではうまくいかなかったので、少し工夫する。
certbotのインストール
まずLet’s Encryptのクライアント(certbot)をインストールしなきゃいけない。が、これが結構面倒だった。
このサイトを参考にDebian Backports リポジトリを追加する。
$ sudo vi /etc/apt/sources.list (以下を追加) deb http://ftp.jp.debian.org/debian stretch-backports main contrib non-free
GPGエラーとか出る場合は以下を実行してみる。
$ gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553
dirmngrが足りないとか言われたら以下も実行する。
sudo apt-get install dirmngr
諸々うまくいったらcertbotをインストール。
$ sudo apt-get update $ sudo apt-get install certbot python-certbot-apache -t stretch-backports
このパッケージ版certbotの場合、自動的にcronが追加されるらしいのだけど、あとで自分で追加したいので今は削除。特にこだわりがなければそのままでもいいと思う。
$ sudo rm -rf /etc/cron.d/certbot
DNS認証ツールの実行
基本的にはツール提供元のとおりやればいいのだけど、unzipでうまくいかない場合は以下参照。(この記事を参考にした)
$ sudo su - # mkdir /etc/letsencrypt/DirectEdit-master # chmod 700 /etc/letsencrypt/DirectEdit-master # cd /etc/letsencrypt/DirectEdit-master/ # wget https://raw.githubusercontent.com/disco-v8/DirectEdit/master/txtdelete.php # wget https://raw.githubusercontent.com/disco-v8/DirectEdit/master/txtedit.conf # wget https://raw.githubusercontent.com/disco-v8/DirectEdit/master/txtregist.php # chmod 600 ./*.conf # chmod 700 ./*.php
confファイルの変更。
# vi /etc/letsencrypt/DirectEdit-master/txtedit.conf (''内を適宜変更する) $MYDNSJP_MASTERID = 'yourmasterid'; $MYDNSJP_MASTERPWD = 'yourpasswd'; $MYDNSJP_DOMAIN = 'yourdomain';
certbotでサーバ証明書を取得。
(<<<>>>内を適宜変更する) # certbot certonly --manual --preferred-challenges=dns \ --manual-auth-hook /etc/letsencrypt/DirectEdit-master/txtregist.php \ --manual-cleanup-hook /etc/letsencrypt/DirectEdit-master/txtdelete.php \ -d <<<Domain>>> \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos -m <<<Mail Address>>> --manual-public-ip-logging-ok
ここで、phpがないとツールが動かなくて死ぬ。以下を実行。
# apt-get install php # apt-get install php-mbstring
certbotがうまくいけば以下のファイルがあるはず。
/etc/letsencrypt/live/XXXXXX.mydns.jp/fullchain.pem /etc/letsencrypt/live/XXXXXX.mydns.jp/privkey.pem
サーバ証明書を参照するようにApacheの設定を変更する。
$ sudo vi /etc/apache2/sites-available/default-ssl.conf (変更後) SSLCertificateFile /etc/letsencrypt/live/XXXXXX.mydns.jp/fullchain.pem SSLCertificateFileKeyFile /etc/letsencrypt/live/XXXXXX.mydns.jp/privkey.pem
apache2を再起動して設定を反映。
$ sudo /etc/init.d/apache2 restart
ブラウザからhttps://XXXXXX.mydns.jpにアクセスしてデフォルトページが表示できれば成功。お疲れさまでした。
DDNSと証明書の自動更新
MySQLのDDNS更新
更新中。この記事を参考にやる。
サーバ証明書の更新
更新中。この記事を参考にやる。
cronによる自動化
更新中。