自宅サーバーが申し訳程度に速くなりました

2018年6月27日 0 投稿者: khws4v1

SSD

WordPressのデータベースとかコンテンツとかをSSDに配置しました。
SSDはCrucial MX500 250GBです。
従来はHDDだったので死にかけでした。

リバースプロキシ

Dockerでnginxのリバースプロキシを作りました。
ついでにWordpressもDockerにしときました。
Docker Composeで全部一発で環境が整うものだからすごい。

環境構築に役立つウェブページ集

Docker

横着して古い日本語ポエムを参照すると酷い目に会うので注意しましょう。

About Docker CE | Docker Documentation
https://docs.docker.com/install/#server

Install Docker Compose | Docker Documentation
https://docs.docker.com/compose/install/

WordPress

Quickstart: Compose and WordPress | Docker Documentation
https://docs.docker.com/compose/wordpress/

Increase PHP file upload limit · Issue #10 · docker-library/wordpress · GitHub
https://github.com/docker-library/wordpress/issues/10#issuecomment-88389890
DockerのWordpressでアップロードするファイルの上限を変更する方法が書いてある

Nginx(リバースプロキシ)

サブドメインで分けてる構成なら山ほど見るけど、サブディレクトリで分けてる構成って殆ど見ないよね。

Dockerのコンテナ間で通信させてリバースプロキシを作る – ぐるっとぐりっど
http://grugrut.hatenablog.jp/entry/2017/10/15/214322

Module ngx_http_core_module
https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
リバースプロキシ上でclient_max_body_sizeを設定しないと1MB以上のファイルをアップロードできなくて死ぬ。

nginxのproxy_passの注意点 — ぺけみさお
https://www.xmisao.com/2014/05/09/nginx-proxy-pass.html
/の有無で挙動が変わるので.confをコピペしてると死ぬ。

Let’s Encrypt

GitHub – SteveLTN/https-portal: A fully automated HTTPS server powered by Nginx, Let’s Encrypt and Docker.
https://github.com/SteveLTN/https-portal
多分これが1番簡単にHttps対応できると思います。

NextCloud

GitHub – nextcloud/docker: ⛴ Docker image of Nextcloud
https://github.com/nextcloud/docker

Mastodon

1年前くらいのブームで投稿された日本語ポエムの9割は古くて使えないので要注意。

documentation/Docker-Guide.md at master · tootsuite/documentation · GitHub
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md

documentation/Production-guide.md at master · tootsuite/documentation · GitHub
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md

環境構築Tips

リバースプロキシ + サブディレクトリ下で動かすWordpress

仮に/wordpressというディレクトリでWordpressを動かしたいとする。
ただし、サーバーにはルートディレクトリでWordpressが動いている。

まず、proxy_passの末尾/は必要。
インターネットにある大半のポエムはサブディレクトリを考慮していないので/が無い。
/が無いとうまく動かない。

proxy_passに/を付けてない場合

proxy_passに/を付けた場合

WordPressが生成するhtmlに入っているリンクなどのパスは、当然ルートディレクトリ直下で動いていること前提のパスになる。
特に何もしてないとリンク切れやリダイレクトループになったりして動かない。

URLを/wordpress下にしたいけど、Wordpressサーバー上ではルートディレクトリ直下前提なので動かない

そこで、WordpressサーバーのWordpressを「/wordpress下にインストールされていると思い込んでいる精神異常者」にしてみる。

なお、実際のファイルパスが変わったわけではないし、HTTPサーバーは精神異常者ではないのでリバースプロキシ→Wordpressサーバーでは/wordpressは付けなくていい。