Windows操作系统Xampp-配置虚拟主机

Apache使在同一个物理服务器上运行多个网站或Web应用程序,并使用自定义域名访问每个站点变得容易。这就是所谓的虚拟主机,每个虚拟主机都可以映射到服务器的不同子目录。

此功能在开发方案中特别有用,因为它允许开发人员使用唯一的域名隔离和访问不同的应用程序。例如,域http://app01.localhosthttp://app02.localhost可以指向同一服务器上的两个单独的应用程序。或者,您可以为同一服务器上托管的多个客户端网站创建单独的域,例如http:// client1 /http:// client2 /等。

备注:除非其他系统单独配置为将虚拟主机使用的自定义域与XAMPP服务器的IP地址相关联,否则无法从其他系统访问以这种方式创建的虚拟主机。本指南通过为WordPress安装创建和配置名为wordpress.localhost的示例主机,引导您完成使用XAMPP设置新虚拟主机的过程。假设您已经在C:\ xampp \ apps \ wordpress \ htdocs \下安装了WordPress,并可以通过URL http:// localhost / wordpress进行访问。

备注2: 使用XAMPP的Bitnami WordPress模块​​,只需单击几下即可安装WordPress 。

请按照以下步骤创建虚拟主机:

1、转到您的XAMPP安装目录(通常为C:\ xampp),然后使用您喜欢的文本编辑器打开apache \ conf \ extra \子目录中的httpd-vhosts.conf文件。

2、用以下指令替换该文件的内容:

<VirtualHost *:80>
       DocumentRoot "C:/xampp/htdocs/"
       ServerName localhost
</VirtualHost>
<VirtualHost *:80>
       DocumentRoot "C:/xampp/apps/wordpress/htdocs"
       ServerName wordpress.localhost
</VirtualHost>

这包含两个虚拟主机配置块:

  • 第一个块是默认或后备虚拟主机,用于后续块不匹配的所有请求。
  • 第二个块设置了一个名为wordpress.localhost的虚拟主机。DocumentRoot指令指定为该虚拟主机提供请求时要使用的目录(在本例中为WordPress安装目录),而ServerName指令指定虚拟主机的自定义域名。

要添加更多虚拟主机,只需复制第二个虚拟主机块,然后根据需要修改端口号,DocumentRoot和ServerName指令。例如,如果要对自定义域名使用SSL,则可以为端口443添加新的虚拟主机块。

备注: 如果您打算使用配置非常相似的大量虚拟主机,请考虑将基于通配符的子域与虚拟主机一起使用。

3、 使用XAMPP控制面板重新启动Apache,以使更改生效。

4、 至此,您的虚拟主机已配置完毕。但是,如果尝试浏览到wordpress.localhost域,则浏览器将显示失败通知,因为该域实际上不存在。要解决此问题,必须将自定义域映射到本地IP地址。为此,请打开文件C:\ windows \ system32 \ drivers \ etc \ hosts并添加以下行:

127.0.0.1 wordpress.localhost

这需要将wordpress.localhost域名映射到本地计算机,该本地计算机始终具有IP地址127.0.0.1。

备注: 在某些版本的Windows上,如果没有管理员权限,将无法编辑C:\ windows \ system32 \ drivers \ etc \ hosts文件。您可以通过右键单击记事本图标并选择“以管理员身份运行”菜单选项,然后输入管理员凭据(如果需要)并单击“确定”或“是”来编辑文件。

此时,您应该能够在浏览器的地址栏中输入URL http://wordpress.localhost并查看WordPress的安装。这是您应该看到的示例:

重要1:配置完,第一个报错

注意,看下面文章之前,请转到另一篇文章,因为另一边文章可以解决下面遇到的很多问题:Windows操作系统Xampp-启用对phpMyAdmin的远程访问

欢迎使用 phpMyAdmin

错误MySQL 返回: 无法连接:无效的设置。
 mysqli::real_connect(): (HY000/2002): Connection refused 使用配置文件中定义的控制用户连接失败。 mysqli::real_connect(): (HY000/2002): Connection refused phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。
重试连接
欢迎使用 phpMyAdmin

错误
MySQL 返回: 文档

无法连接:无效的设置。
 mysqli::real_connect(): (HY000/2002): Connection refused
 使用配置文件中定义的控制用户连接失败。
 mysqli::real_connect(): (HY000/2002): Connection refused
 phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。
无法正常访问PHPmyadmin
无法正常访问PHPmyadmin

起因

发现 xampp 默认的 mysql 帐号居然是空密码,虽然只是本地调试环境,但还是不太舒服,因此修改了密码,再次访问 phpmyadmin 就出现此错误了。

分析

这是由于 xampp 中 phpmyadmin 的登陆方式默认是通过记录在配置文件的帐号密码来直接登陆而不是通过登陆界面登陆,但修改过密码后,就与配置文件里的帐号密码不符,因此出错。

解决方法

修改 phpmyadmin 的登录方式为传统的登陆界面登陆,修改 phpmyadmin 根目录下的配置文件 config.inc.php:

/* Authentication type */
//$cfg['Servers'][$i]['auth_type'] = 'config';//注释掉这一行
$cfg['Servers'][$i]['auth_type'] = 'cookie';//添加这一行
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'root';//你也可以顺便给phpmyadmin添加一个密码,默认为空!
/* Server parameters */
//$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

后记

phpmyadmin 的登陆方式有三种,分别是 config、cookie、http 以及 signon。 config 就是直接使用配置文件的信息登陆; cookie 就是使用最广泛的普通登陆方式登陆; http 就是使用 HTTP-Auth 模块来验证登陆,但局限性很大; signon 就是提供第三方接入来验证登陆。

重要2:第二个报错

mysqli::real_connect(): (HY000/2002): Connection refused
 使用配置文件中定义的控制用户连接失败。
 mysqli::real_connect(): (HY000/2002): Connection refused

解决办法:

第一步:按照官方文档设置一次密码,设置参考 http://localhost/dashboard/faq.html

How can I make my XAMPP installation more secure?

By default, XAMPP has no passwords set and it is not recommended to run XAMPP with this configuration as it is accessible to others.

Simply type the following command (as root) to start a simple security check:

sudo /opt/lampp/lampp security

Now you should see the following dialog on your screen:

XAMPP: Quick security check...
XAMPP: MySQL is accessable via network.
XAMPP: Normaly that's not recommended. Do you want me to turn it off? [yes] yes
XAMPP: Turned off.
XAMPP: Stopping MySQL...
XAMPP: Starting MySQL...
XAMPP: The MySQL/phpMyAdmin user pma has no password set!!!
XAMPP: Do you want to set a password? [yes] yes
XAMPP: Password: ******
XAMPP: Password (again): ******
XAMPP: Setting new MySQL pma password.
XAMPP: Setting phpMyAdmin's pma password to the new one.
XAMPP: MySQL has no root passwort set!!!
XAMPP: Do you want to set a password? [yes] yes
XAMPP: Write the passworde somewhere down to make sure you won't forget it!!!
XAMPP: Password: ******
XAMPP: Password (again): ******
XAMPP: Setting new MySQL root password.
XAMPP: Setting phpMyAdmin's root password to the new one.
XAMPP: The FTP password for user 'nobody' is still set to 'lampp'.
XAMPP: Do you want to change the password? [yes] yes
XAMPP: Password: ******
XAMPP: Password (again): ******
XAMPP: Reload ProFTPD...
XAMPP: Done.

(1) Setting a password will protect the XAMPP demo pages (http://localhost/xampp/) using this password. The user name is ‘lampp’!

After running this command, your XAMPP installation should be more secure.

第二步:

把/opt/lampp/phpmyadmin路径下的config.inc.php文件,使用config.sample.inc.php文件代替。即把原先的 config.inc.php 文件备份,把 config.sample.inc.php 修改成 config.inc.php

config.sample.inc.php :

*******
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
******

完成!

发表评论

您的电子邮箱地址不会被公开。