Alpine Linuxにapache web serverを入れる

September 26, 2020

linuxAlpineLinuxwebサーバー

はじめに

当方は、サーバ上に必要なだけいくつでも(ポートを変えて)webサーバーを立ち上げればいいと考えている口なので、webサーバーはdocker composeでインストールします。

本ドキュメントはAlpine Linuxにapache web serverをインストールした手順をまとめています。

インストール

apache web serverをdocker composeでインストールします。インストール先のOSはAlpine Linuxを想定していますが、docker composeでインストールするので、dockerを入れたLinuxならば、どれでも大丈夫だと思います。

以下の記事を参考にしました。docker-composeファイルはこのサイトの丸コピーです。 Webサーバだけでなく、よく使うphpやdbもまとめて立ち上がるので便利です。

【参考】 https://qiita.com/naente_dev/items/d259ea84c172deeff7d8
docker-compose で PHP7.2 + Apache + MySQL + phpMyAdmin 環境を構築

docker-compose.yml
version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 8080:80
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=test
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=test
      - PMA_PASSWORD=test
    links:
      - mysql
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions
    restart: always

dbの名前やユーザ名、パスワードは適宜変更してください。 ポートは8080で起動していますが、必要に応じて変更します。

apache web server起動

$ docker compose up -d

ホームページ作成

$ vi ./html/index.html

以上でWebサーバが起動しました。

動作確認
http://centos7:8080/
ホームページ

http://centos7:4040/
phpMyAdmin

プロキシサーバ機能の追加

iPhoneから自宅LAN内のサーバにアクセスする場合、iPhoneではhostsファイルを設定できないのでプロキシサーバで名前解決する必要があります。(自宅LAN内dnsを立てるとその限りではありませんが。)

プロキシポート:8888
でプロキシサーバを設定すします。

apache2/apache2.conf
LoadModule proxy_html_module /usr/lib/apache2/modules/mod_proxy_html.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
 
<IfModule proxy_html_module>
  Include /etc/apache2/proxy-html.conf
</IfModule>
apache2/proxy-html.conf
<IfModule mod_proxy.c>
  ProxyRequests On
  ProxyVia On
  Listen 8888
  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from all
  </Proxy>
</IfModule>
apache2/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.27.0.2      450ce809bc23
192.168.1.2     centos7
192.168.1.1     rt-500ki

docker-compose.yml 追加部分

docker-compose.yml
services:
  php:
    volumes:
      - ./apache2/apache2.conf:/etc/apache2/apache2.conf
      - ./apache2/proxy-html.conf:/etc/apache2/proxy-html.conf
      - ./apache2/hosts:/etc/hosts
    ports:
      - 8888:8888

以上設定し、docker composeで再起動すると、プロキシが有効になります。

iPhoneでのプロキシの設定例

設定 >> Wifi

iphone_proxy1.png

接続中のWifiの、〇の中に「i」の青いアイコンをクリック >> プロキシを構成

iphone_proxy2.png

サーバのipアドレスとプロキシのポート番号を設定する。

これで、家庭内LANからwebサーバに、サーバ名でアクセスできるようになる。


Written by questions6768 who lives in Uji, Kyoto.