Apache についてのまとめ

  • Apache

ウェブサーバー(Apache)について、自分用のまとめです。

Apache の設定

ファイルの役割

/etc/httpd/conf/httpd.conf

サーバー設定を行います。すべての親玉。HTTP のポート番号、ポート番号による DNS の割り振りなど行える。ここにかいてある設定は、AllowOverrideディレクティブで上書きを許可したもののみ .htaccess で上書きできます。全ての上書きを禁止( AllowOverride None )している場合、htaccess が使えないサーバーという事になります。

IncludeOptional conf.d/*.conf

この行でオプションファイル(*.conf)を読み込むため、該当する外部ファイルに設定を書いていた場合は上書きされます。設定が長くなりすぎるようなときは、ファイルを分割するのも良いかもしれません。

/etc/httpd/conf.d/ssl.conf

SSL の設定を行います。

/etc/httpd/conf.d/php.conf

PHPの設定を行います。ドキュメントルートなどに設置して php の設定を変更する .user.ini はデフォルトで禁止されています。この二人は似たような関係です。

  • httpd.conf → .htaccess で上書き
  • php.conf → .user.ini で上書き
#
# The following lines prevent .user.ini files from being viewed by Web clients.
#
<Files ".user.ini">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Deny from all
        Satisfy All
    </IfModule>
</Files>

ファイアウォールの設定

自分で特定のポートを開けた時は、下記コマンドで永久開放しておきます。この例では 65535 番を開放しています。

firewall-cmd --add-port= 65535/tcp --zone=public --permanent
firewall-cmd --reload 

Virtual Host の設定

通常ウェブサーバーというのは1つに対して1つのサイトという関係になります。しかし、同じサーバーに複数サイトを入れたい!という時にはバーチャルホストを使用します。

参考:https://qiita.com/zaburo/items/b9c3c8c541ffd16797fc

ファイルの修正

/etc/httpd/conf/httpd.conf

ServerName は VirtualHost 側で設定するので(#)でコメントアウトしておきます。そもそも ServerName はいずれ不要になるらしいです。NameVirtualHost で 80 番全て VirtualHost 側に回します。

# ServerName www.example.com:80 
NameVirtualHost *:80 

次に作るファイルをインクルードさせるために、/etc/httpd/conf.d/*.confを Include しているか確認しておきます。

IncludeOptional conf.d/*.conf 

/etc/httpd/conf.d/vhost.conf

VirtualHost の設定です。vhost.conf という名前である必要はありませんが、先ほど*.confをインクルードさせたので、拡張子は .conf にしておきます。

そしてここで http、https の設定を行います。https の方は基本的に/etc/httpd/conf.d/ssl.confの VirtualHost _default_ の設定が適用されているため、不要なものは書かなくてもよいです。

ポートで振り分けてみる

/etc/httpd/conf/vhost.conf

Listenでポート受付、VirtualHost の設定を書きます。80, 443 以外で受け付けるポート番号は 49152番 – 65535番 のいずれかにしておきます。ServerAlias ディレクティブで、www ありなしどちらも受け付けます。ポートは「ファイアウォールの設定」で開放しておく必要があります。

Listen 65536
<VirtualHost *:65535>
    ServerName www.sample.com:65535
    ServerAlias www.sample.com
    DocumentRoot /var/www/mywebroot
</VirtualHost>

用語やその他

Listen 80 \ Listen 443

apache が使用するポート番号。80 は httpd.conf、443 は ssl.conf でそれぞれ宣言されています。普段意識することはないですが、実はブラウザは勝手にURLの後ろに :80 :443 をくっつけてサーバーにリクエストを送っています。

例えばListen 9999を増やしたとして、そこに DocumentRoot を割り当てると、

http://www.sample.com(ブラウザでは省略されるが :80)
http://www.sample.com:9999

それぞれでアクセスした時に別のサイトを表示させるなどが可能になる。

SSL 暗号化設定について

暗号化にもいろいろな設定があります。低レベルだと、いまいち安全何だか分からんサイトだとみなされてしまい、Facebook の共有などの時にソースファイルの読み込みをブロックされたりします。

参考:https://www.marineroad.com/staff-blog/16042.html

参考サイト

■CentOS に Laravel インストール
https://qiita.com/inakadegaebal/items/d370bcb1627fce2b5cd1

■SSH
sshd_config でポート変更しよう
https://unskilled.site/sshd_config%E3%81%AE%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%AE%E7%90%86%E8%A7%A3%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99/

■sftpユーザーの作成
シンボリックリンクを張ることで対応
https://qiita.com/kenta8813/items/57f00f7dbb48326c5cef

■PHP7.3の設定
https://www.server-world.info/query?os=CentOS_7&p=php73

■mySQL 匿名ユーザーとパスワードが空のユーザーの削除、rootパスワードの設定
https://qiita.com/sango/items/e6eaa5694cd4043f3c4e
http://lovee7.blog.fc2.com/blog-entry-25.html

■MariaDBを消してMySQLを入れる
https://enomotodev.hatenablog.com/entry/2016/09/01/225200