CentOS7のApache2.4.6でVHをセットアップしようとしていますが、機能しないため成功しません。これは私が今まで試したことです:
_/etc/httpd/conf/httpd.conf
_には_Include conf.modules.d/*.conf
_という行があるので、_/etc/httpd/conf.d/vhost.conf
_の下にファイルを作成し、その中に配置します。
_NameVirtualHost *:80
<VirtualHost *:80>
ServerName webserver
ServerAlias localhost devserver development
DocumentRoot /var/www/html
</VirtualHost>
_
Apacheサービスをリロード/再起動します(両方を試しました):
_service httpd reload|restart
_
Windows側で、ファイル_C:\Windows\system32\drivers\etc\hosts
_を編集し、次の行を追加します。
_192.168.3.131 webserver localhost devserver development # this is the IP of Apache Server
_
ブラウザを開いて試してみました:_http://webserver
_、_http://devserver
_そして両方ともデフォルトのApacheページに移動するため、VHは機能しません。
_/var/www/html/index.php
_の下に次の行<?php phpinfo(); ?>
を付けてファイルを配置し、Apacheがロードしているモジュールを確認します。これが結果です。
_core mod_so http_core mod_access_compat mod_actions mod_alias mod_allowmethods mod_auth_basic mod_auth_digest
mod_authn_anon mod_authn_core mod_authn_dbd mod_authn_dbm mod_authn_file mod_authn_socache mod_authz_core
mod_authz_dbd mod_authz_dbm mod_authz_groupfile mod_authz_Host mod_authz_owner mod_authz_user mod_autoindex
mod_cache mod_cache_disk mod_data mod_dbd mod_deflate mod_dir mod_dumpio mod_echo mod_env mod_expires mod_ext_filter
mod_filter mod_headers mod_include mod_info mod_log_config mod_logio mod_mime_magic mod_mime mod_negotiation
mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_plain mod_slotmem_shm mod_socache_dbm
mod_socache_memcache mod_socache_shmcb mod_status mod_substitute mod_suexec mod_unique_id mod_unixd mod_userdir
mod_version mod_vhost_alias mod_dav mod_dav_fs mod_dav_lock mod_lua prefork mod_proxy mod_lbmethod_bybusyness
mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_heartbeat mod_proxy_ajp mod_proxy_balancer mod_proxy_connect
mod_proxy_express mod_proxy_fcgi mod_proxy_fdpass mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_systemd mod_cgi mod_php5
_
そして、どうやらmod_vhostがロードされていますが、機能していません。何かを見逃しましたか?これに関するヘルプやアドバイスはありますか?多分私は何かを忘れましたが、Apacheのドキュメントを読んで、何か役立つものが見つかりません
更新:test1
私はVH定義にいくつかの変更を加えました、そして今これは私が持っているものです:
_<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName webserver
#ServerAlias localhost devserver development
<Directory "/var/www/html">
Options FollowSymLinks Includes ExecCGI
AllowOverride All
Allow from all
#Require local
#Require 192.168.3.0/16
#Require 192.168.1.0/16
</Directory>
</VirtualHost>
_
しかし、私は403 Forbiddenを取得しています
禁止
このサーバーで/index.phpにアクセスする権限がありません。
ここで何が失敗しているのですか?
あなたに問題を引き起こしているかもしれないいくつかのこと:-
NameVirtualHost *:80
Apache 2.4.xの有効な構文ではなくなったため、完全に削除する必要があります。
Windows側では、HOSTSファイルを変更したら、DNS Client service
をリロードする必要があるため、再起動するか、「管理者として実行」を使用してコマンドウィンドウを起動し、これを実行します:-
net stop dnscache
net start dnscache
最後に、仮想ホストの定義内で、この仮想ホストへの接続を受け入れることができる場所をApacheに伝えるのに役立ちます:-
<VirtualHost *:80>
ServerName webserver
ServerAlias localhost devserver development
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Require local
Require ip 192.168.3
</Directory>
</VirtualHost>
これにより、Apache Require local
を実行しているマシンおよびローカルネットワーク上の任意のIPアドレスRequire ip 192.168.3
からのアクセスが許可されます。
また、UNIX上のApacheがデフォルトのドキュメントルートをどこに置くかはわかりませんが、3つのドメイン名をそのように異なるディレクトリに区別することは考えられるかもしれません。
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Require local
Require ip 192.168.3
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName webserver
ServerAlias webserver
DocumentRoot /var/www/html/webserver
<Directory "/var/www/html/webserver">
AllowOverride All
Require local
Require ip 192.168.3
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName development
ServerAlias development
DocumentRoot /var/www/html/development
<Directory "/var/www/html/development">
AllowOverride All
Require local
Require ip 192.168.3
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName devserver
ServerAlias devserver
DocumentRoot /var/www/html/devserver
<Directory "/var/www/html/devserver">
AllowOverride All
Require local
Require ip 192.168.3
</Directory>
</VirtualHost>
次に、「Hello from Servername」という単純なhtmlファイルを各ディレクトリに配置し、各ファイルのservernameを変更して、正しいサーバーに到達したことを確認します。
RE:test1.phpを更新
Allow from all
LoadModule access_compat_module modules/mod_access_compat.so
をロードしていない限り、Apache2.4構文も有効ではありません。
それでもそうあるべきです
Order Allow,Deny
Allow from all
したがって、Apacheを使用する2.4構文
Require all granted
怠惰なルートを取り、宇宙からのアクセスを許可したい場合。
jap1968 の投稿について詳しく説明すると、CentOS 7にはSELinuxお尻のレベルの痛みをenforcing
に設定します。これにより、完全に通常のサービス構成がサイレントに失敗すると、あらゆる種類の混乱が発生します(Apache)。
SELinuxを無効にするには、次のことを行う必要があります。
0)[オプション]シェルをクラックして開いてルートになります...または、光沢のある新しい、非常に楽しい構成Sudoをお楽しみください「rootstuffs」プロジェクトを実行できるようにします。恐らく。
su -l
1)SELinuxの現在のステータスを取得します。 sestatus
を実行します:
sestatus
2)SELinuxが脱毛と早期老化を引き起こしている場合は、次のようになります。
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
3)/etc/selinux/config
ファイルを編集します。 SELINUX=enforcing
をSELINUX=permissive
に変更します。これを行うと、次に再起動したときに無限の喜びが得られます。あなたはこのようなものになってしまうでしょう:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
# SELINUX=enforcing
# ===> VOODOO HERE <===
SELINUX=permissive
# ===> END VOODOO <===
#
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
4)SELinuxを無効にします。この時点で再起動できますが、SELinuxに苦痛を与えないように指示する方が簡単です。 setenforce
を実行して、SELinuxの強制レベルを/etc/selinux/config
ファイルと一致するようにリセットします。
setenforce 0
5)sestatus
をもう一度確認します。
sestatus
すべてが期待どおりに進んだ場合、sestatus
は次のようなものを返します。
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
6)再起動Apache。 vhostのドメイン名が作業中のサーバーに解決されている場合は、光沢のある新しい仮想ホストが表示されます。
# Restart Apache:
systemctl restart httpd.service
# Be lazy by checking your virtual Host from the command line:
curl www.example.com/new-file-that-only-exists-in-your-new-vhost.txt
6.5)ここで読むのをやめなさい。またはしないでください。私はあなたのお母さんではなく、掲示板の投稿です。
以下のすべては元の質問の範囲を超えており、実際にはSELinuxを有効にして実行する必要があるためのみ含まれています-)。
7)selinuxの再有効化に向けて取り組みます。 selinuxログを見て、素晴らしいアルファベットスープを確認することから始めます。
tail -f /var/log/audit/audit.log
8)機能の深さ、名前の悪いユーティリティの数の多さ、そしてSELinuxを構成する醜いUXの混乱に驚かされます。飛び込む前に、おそらく大きな男の子のズボンをはいて、コーヒーを一杯飲むべきです。ここにいくつかの情報があります:
SELinuxにも注意してください。デフォルト設定では、仮想ホストディレクトリにhttpdがアクセスできなくなります。適切なコンテキストを設定する必要があります。
# chcon -R -u system_u -r object_r -t httpd_sys_content_t <DocumentRoot>
もう1つのオプションは、SELinuxを無効にすることです。