Apache: 进行虚拟主机的设置
如果服务器上有许多用户,通过Apache在一个公共目录中进行管理会很困难,所以需要设置适当的配置,以便为每个用户设置一个目录并进行公开。然后,创建基于用户目录的虚拟主机,使其看起来像是一个服务器上有多个服务器。
创建用户目录
修改httpd.conf配置文件:启用用户目录。
$ vi /usr/local/apache2/conf/httpd.conf
<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled ←ここをコメントアウト
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html #←コメントアウトを外して有効にする
</IfModule>
创建用户目录(public_html)
我通常以一般用户身份进行操作。(这次为了虚拟环境,我会以vagrant用户身份进行操作)
在home目录下创建一个名为public_html的目录
$ mkdir ~/public_html
#
# mkdir /vagrant/home/public_html こちらでも可能
设定访问权限
# chmod:アクセス権を変更
# 701 :アクセス権。所有者以外は実行だけ許可。
# +x :すべて実行を許可
# ~/public_html :先ほど作成したディレクトリ
# ~/ :homeディレクトリ
$ chmod 701 ~/public_html
$ chmod +x ~
可以通过禁止他人对public_html目录进行读取和写入来避免对该目录中文件的意外访问。
用户目录已成功创建。
访问用户目录
在用户目录下创建index.html文件。
$ cp /usr/local/apache2/htdocs/index.html ~/public_html/index.html
$ vi ~/public_html/index.html
#内容をユーザディレクトリ内のファイルだと判断できるものに修正する(This is a UserDir test.等)
如果点击以下链接并显示更改内容,则表示成功:
http://192.168.33.10/~vagrant/
http://example.com/~vagrant/
为每个用户设置权限和限制的方法。
(Per user, how to set permissions and restrictions)
<IfModule mod_userdir.c>
# vagrantとyasuyukiだけ許可する場合
UserDir disabled
UserDir enabled yasuyuki
</IfModule>
<IfModule mod_userdir.c>
# vagrantとyasuyukiだけ禁止する場合
UserDir enabled
UserDir disabled yasuyuki
</IfModule>
创建用户目录的设置文件(.htaccess文件)。
更改httpd.conf文件中用户个人目录的共享设置。
#
# Control access to UserDir directories.
<Directory /home/*/public_html>
# AllowOverride:ディレクトリごとの設定ファイルを許可する
AllowOverride All
</Directory>
如果启用AllowOverride,服务器的负载会增加,因此如果没有特别需要或者需要性能时应避免使用。
#
# AccessFileName: The name of the file to look for in each directory
# AccessFileName: ディレクトリごとの設定ファイルの名称
AccessFileName .htaccess
创建配置文件(.htaccess文件)。
$ vi ~/public_html/.htaccess
Options Indexes
创建一个用于确认的空文件夹,并访问以下链接。如果文件列表显示出来,那么表示.htaccess的Options Indexes正在发挥作用,即成功。
$ mkdir ~/test
http://192.168.33.10/~vagrant/test/可以被重述为:192.168.33.10服务器上的vagrant用户的test文件路径。
http://example.com/~vagrant/test/可以被重述为:example.com服务器上的vagrant用户的test文件路径。
设置虚拟主机,让其看起来像多个服务器。
只需要一种选择:在虚拟环境内可能可以使用以下设置。
httpd.conf: 虚拟主机配置
NameVirtualHost:注册实际服务器IP以建立虚拟主机
虚拟主机:用于进行虚拟主机配置设置
ServerAlias:为虚拟主机设置别名
# Use name-based virtual hosting.
# 実際のサーバーIPアドレスとポートを設定。ここでは1台のみなので「*」を設定。
NameVirtualHost *:80
#実際のサーバーを改めて設定
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /usr/local/apache2/htdocs/
ServerName example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
</VirtualHost>
#仮想ホストを設定
<VirtualHost *:80>
ServerAdmin root@vagrant.com
DocumentRoot /home/vagrant/public_html
ServerName dummy.com
ServerAlias dummy-dummy-dummy.com #仮想ホストに別名をつけることも可能
ErrorLog logs/dummy.com-error_log
CustomLog logs/dummy.com-access_log common
</VirtualHost>
为了使设置生效,重新启动Apache。
$ /etc/rc.d/init.d/httpd restart
访问虚拟主机
确认主机。
如果使用Vagrant,请检查hostsupdater.aliases的值。
config.hostsupdater.aliases = ["example.com", "dummy.com","dummy-dummy-dummy.com"]
访问各自的虚拟环境
http://example.com/ → 显示/usr/local/apache2/htdocs/的测试页面
http://dummy.com/ → 显示/home/vagrant/public_html的测试页面
http://dummy-dummy-dummy.com → 显示/home/vagrant/public_html的测试页面