在CentOS上搭建虚拟主机是一个常见的任务,它允许一台物理服务器运行多个网站,本文将详细介绍如何在CentOS上安装和配置Apache虚拟主机,包括创建目录结构、授予权限、创建页面以及配置虚拟主机文件等步骤。
一、前提条件
1、拥有一个指向公共服务器IP的域名:建议去NameSilo注册一个,非常便宜。
2、安装了Apache的CentOS系统:可以自建虚拟机或去vultr,阿里云,腾讯云购买一个VPS。
3、以root用户或具有sudo特权的用户身份登录。
二、创建目录结构
文档根目录是用于存储域名网站文件并响应请求提供服务的目录,可以将文档根目录设置为所需的任何位置,我们将使用以下目录结构:
/var/www/ └── example.com/public_html/ └── example2.com/public_html/ └── example3.com/public_html/
对于将在服务器上托管的每个域,我们将在/var/www内创建一个单独的目录,在域目录中,我们将创建一个public_html目录,它将成为域文档的根目录并存储域网站文件,为域example.com创建根目录:
sudo mkdir -p /var/www/example.com/public_html
为了进行测试,请在域的文档根目录内创建一个index.html文件:
sudo nano /var/www/example.com/public_html/index.html
将以下代码复制并粘贴到文件中:
<!DOCTYPE html> <html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body> </html>
重复上述步骤为其他域名创建目录和文件。
三、授予权限
我们需要将目录的所有权授予用户,而不仅仅是保留在根系统上,确保每个人都能够读取我们的新文件是很重要的,执行以下命令:
sudo chown -R $USER:$USER /var/www/example.com/public_html sudo chown -R $USER:$USER /var/www/example2.com/public_html sudo chmod 755 /var/www
现在您已经完成了权限设置。
四、创建页面
我们已经在第二步中为每个域名创建了一个基本的index.html页面,如果您需要更复杂的页面,可以使用文本编辑器编辑这些文件,为example2.com创建一个简单的HTML文件:
sudo nano /var/www/example2.com/public_html/index.html
添加以下内容:
<!DOCTYPE html> <html> <head> <title>Welcome to Example2.com!</title> </head> <body> <h1>Success! The example2.com virtual host is working!</h1> </body> </html>
保存并关闭文件。
五、创建新的虚拟主机文件
虚拟主机文件指定了我们各个站点的配置,并指示Apache Web服务器如何响应各种域请求,我们需要设置存储虚拟主机的目录,以及告诉Apache虚拟主机为访问者提供服务的目录,sites-available目录将保留我们所有的虚拟主机文件,而sites-enabled目录将保存我们要发布的虚拟主机的符号链接,我们可以输入以下两个目录:
sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled
我们令Apache在sites-enabled目录中查找虚拟主机,我们将编辑Apache的主配置文件,并添加一行代表其他配置文件的可选目录:
sudo nano /etc/httpd/conf/httpd.conf
将此行添加到文件末尾:
IncludeOptional sites-enabled/*.conf
完成添加该行后,保存并关闭该文件,我们现在准备创建我们的第一个虚拟主机文件。
创建第一个虚拟主机文件:
sudo nano /etc/httpd/sites-available/example.com.conf
添加以下内容:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined </VirtualHost>
保存并关闭文件,然后创建一个符号链接:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
重复以上步骤为example2.com创建虚拟主机文件:
sudo nano /etc/httpd/sites-available/example2.com.conf
添加以下内容:
<VirtualHost *:80> ServerName www.example2.com ServerAlias example2.com DocumentRoot /var/www/example2.com/public_html ErrorLog /var/log/httpd/example2.com-error.log CustomLog /var/log/httpd/example2.com-access.log combined </VirtualHost>
保存并关闭文件,然后创建一个符号链接:
sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf
六、测试配置文件语法并重启Apache服务
在完成所有配置更改后,我们需要测试配置文件语法是否正确,并重新启动Apache服务以使更改生效,执行以下命令:
sudo apachectl configtest
如果没有错误,输出内容类似如下:
Syntax OK
要激活新创建的虚拟主机,请使用以下命令重新启动Apache服务:
sudo systemctl restart httpd
打开浏览器访问http://example.com和http://example2.com验证一切是否按预期进行,如果一切正常,您应该看到相应的欢迎页面。
七、常见问题及解答FAQs
问题1:为什么我无法访问我的虚拟主机?
答:可能的原因有以下几点:
1、DNS未正确解析到您的服务器IP地址,确保您的域名指向正确的IP地址。
2、防火墙阻止了HTTP流量,检查防火墙设置并确保允许端口80的流量。
3、Apache配置文件错误,检查虚拟主机配置文件中的语法是否正确。
4、Apache服务未启动,使用systemctl status httpd
检查Apache服务状态。
问题2:如何为多个域名配置SSL证书?
答:您可以使用Let’s Encrypt免费获取SSL证书,并将其配置到您的虚拟主机中,以下是基本步骤:
1、安装Certbot:sudo yum install -y epel-release && sudo yum install -y certbot python2-certbot-apache
2、为域名生成证书:sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
3、Certbot会自动修改Apache配置文件以启用HTTPS,如果您手动编辑过配置文件,请确保将相关指令添加到正确的虚拟主机块中。
4、重启Apache服务:sudo systemctl restart httpd
5、访问https://yourdomain.com验证SSL证书是否生效。
小编有话说
通过上述步骤,您已经成功在CentOS上搭建了多个虚拟主机,并为它们配置了相应的网站内容,虚拟主机技术使得在同一台服务器上运行多个网站成为可能,极大地提高了服务器的资源利用率和管理效率,希望本文对您有所帮助,如果您有任何疑问或建议,请随时联系我们!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1393320.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复