m0r016.net - apache2のセットアップ

widthが896以下の端末は
<code>が表示されません、ご了承ください。

自宅サーバをWANに公開するときに調べても、多くのサイトで省略されてて私みたいなLinux初心者にはわかりづらかったのでここに記しておきます。

環境 Ubuntu 16.04 32bit RAM 4GB

まずはsshでサーバーに接続し、sudo apt-get upgate && sudo apt-get upgrade -yとコンソールに打ちUbuntuを最新の状態にします。

そしてsudo apt-get install apache2 -yと打ち指示に従います。
インストールが終わるとapache2のテストページが表示されるはずなので、自分のPCがサーバーの場合ブラウザにlocalhostと打ち接続してみます。
私の場合、サーバーマシンを用意していたので、XXX.XXX.XXXと打ちテストページが出ることを確認します。

インストールされたファイルは/etc/apache2に配置されていて中身は以下のようになっています。

            
                /etc/apache2/
                |-- apache2.conf
                |       `--  ports.conf
                |-- mods-enabled
                |       |-- *.load
                |       `-- *.conf
                |-- conf-enabled
                |       `-- *.conf
                `-- sites-enabled
                    `-- *.conf
            
        

私もざっくり程度しかわかりませんがapache2.confでapache2の設定を決め、サイトの設定はsites-enabledの中にある000-default.confで決めていきます。

まずはapache2.confから設定していきましょう

sudo nano /etc/apache2/apache2.confと打ち

中盤辺りにある


            <Directory /var/www>
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
            </Directory>
        

の <Directory /var/www>を指定の位置に変えます。

ここでは/home/m0r016/webの中身(index.html)等を読み込ませたいので


                <Directory /home/m0r016/web>
                    Options Indexes FollowSymLinks
                    AllowOverride None
                    Require all granted
                </Directory>
            

とします。

終わって上書き保存をしたい場合はCtrl+Xと打ち画面の指示に従います。

viの場合は:wqです

次ので000-default.confを設定します。

sudo nano /etc/apache2/sites-enabled/000-default.confと打ち


            <VirtualHost *:80>
                # The ServerName directive sets the request scheme, hostname and port that
                # the server uses to identify itself. This is used when creating
                # redirection URLs. In the context of virtual hosts, the ServerName
                # specifies what hostname must appear in the request's Host: header to
                # match this virtual host. For the default virtual host (this file) this
                # value is not decisive as it is used as a last resort host regardless.
                # However, you must set it for any further virtual host explicitly.
                #ServerName www.example.com

                ServerAdmin yuuki12_25@icloud.com

                ServerName www.m0r016.net

                DocumentRoot /home/m0r016/web

                

                # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
                # error, crit, alert, emerg.
                # It is also possible to configure the loglevel for particular
                # modules, e.g.
                #LogLevel info ssl:warn

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                # For most configuration files from conf-available/, which are
                # enabled or disabled at a global level, it is possible to
                # include a line for only one particular virtual host. For example the
                # following line enables the CGI configuration for this host only
                # after it has been globally disabled with "a2disconf".
                #Include conf-available/serve-cgi-bin.conf
            </VirtualHost>

            # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
            

このように設定します。

説明すると

  • ServerAdminには自分のメールを入れる
  • ServerNameには自分のドメインを入れます。
  • DocumentRootには公開したい部分(ここでは/home/m0r016/web )をいれます。
  • これでapache2側の設定は終了です。

    次はアクセス権限を弄っていきます。

    単純に言うとapache2は読み込みと実行を要します。つまり0705に設定すればいいはずです。
    この場合自分が読み書き実行全て出来て、グループはアクセス不可、グループ外は読み込みと実行が可能となります。

    sudo chmod 0705 -R /home/m0r016/webと打ちます。この場合webのディレクトリ以下はrwx---r-xとなります。

    ls -lrwx---r-xとなることを確認したら完了です。

    そしたらapache2に再起動をかけます

    sudo /etc/init.d/apache2 restart

    再起動が完了したら自分のサーバーにアクセスし、アクセスすることができたら完了です。

    forbiddenが出た場合、アクセス権限か設定が問題かと思われます。

    sudo nano /var/log/apache2/error.log

    と打ちどれが問題かを確認して対処します。

    アクセス権限の場合上階層も影響するのでls -lで確認
    アクセス権限ではなくオーナーやグループの場合、オーナーはchown、グループはchgrpとなります。

    ちなみに私の場合apache2.confは設定していたのですが、000-default.confを設定していなかったのが原因だったようです。

    何かアドバイス・質問等があればメールまたはTwitterにてご連絡ください。

    最終更新日 2019-05-23