ウェブサーバー(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