当前位置: 首页 > Linux

Apache的虚拟主机配置和伪静态

时间:2023-04-06 01:32:40 Linux

虚拟主机一般在配置多域名的时候。我们可以在一台服务器上配置很多网站。这时候就必须要有多重配置,保证每个访问网站的域名的内容和源码都不一样。废话不多说,首先我们进入Apache的安装目录如下图cd/etc/httpd/接下来我们查看conf文件夹cdconfll我们再打开httpd.conf的配置文件vimhttpd.conf配置里面我们可以看到#我们的服务目录地址ServerRoot"/etc/httpd"#监听端口80Listen80#加载模块Pass*wildcardall.conffilesIncludeconf.modules.d/*.conf#RejectexternalaccessRequirealldenied#Code配置放在这路径DocumentRoot默认为“/var/www/html”。当然,我们可以随意指定代码放在哪里。接下来,让我们配置我们的虚拟主机。在Esc状态下,使用命令bigG到文件底部,搜索virtual。在Esc状态/virtual下,当我们进入编辑状态时,如上图:提示文件是只读的。我们通过sudo提权退出打开命令:sudovimhttpd.conf我们在virtualServerNamewww.aqingkong.comDocumentRoot/data/www下添加并配置一个虚拟主机监听80端口配置完成后,重启我们的服务器命令:sudoservicehttpdrestart接下来,我们创建一个文件夹Sudomkdir–p/data/www我们创建一个文件命令:vimindex.html在文件中写入一些内容后保存时,我们发现“index.html”E212:can'topenfileforwriting(无法打开或写入)强制退出命令:Esc:q!通过命令:ll/data/发现这个/data/目录的用户是rootaccount如下图,如果我们不想这么麻烦的话,我们应该使用qingkong账号,更改其权限目录的属主命令:sudochown-Rqingkong:qingkong/data查看ll的属主/data/通过命令保存.html后,通过https://www.aqingkong.com访问,当然这是访问不了的,因为我们的域名没有绑定IP。使用命令sudovim/etc/hoststohosts将我们的域名绑定到公网IP。sudovim/etc/hosts#复制到Hosts文件192.168.43.227www.aqingkong.comping我们的域名没有问题,发现已经解析到这台服务器了。访问页面上显示的Apache页面。我们来看看图中标注的段落。他的意思是(你应该把网站的内容添加到目录/var/www/html/。要防止这个页面被使用,请按照文件/etc/httpd/conf.d/welcome.conf中的说明操作.)那么说明我们分配的虚拟主机是不工作的和我们默认的访问页面是一样的。接下来我们查看日志命令cd/etc/httpd/logs,发现进不去。sudosu–//进入前先切换到root用户。cd/etc/httpd/logsll//会有两个文件access_log,error_logtail-ferror_log//查看日志定位这个目录不可访问然后发现需要配置sudovim/httpd.confServerNamewww.aqingkong.comDocumentRoot/data/www#AddDirectoryconfigurationauthorizationinourvirtualhosttoaccessyourprogramOptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted然后重启服务器命令:sudoservicehttpdrestartextendedcommandsudosetenforce1(暂时关闭访问)或sudosetenforce0(暂时打开访问)什么时候执行?当你配置目录(授权这个标签,你仍然不能访问你的执行sudosetenforce0)setenforce是干什么的,我们服务器里面有个设置,这个设置是为了安全的设置,这个是系统本身作为多层开关的一个功能,如果你想永久关闭访问权限命令sudovim/etc/selinux/config把SELINUX=enforcing(强制模式)改成SELINUX=disabled(松散模式)然后下次重启服务器,还是松散模式,不会出现访问。如果如下图配置了多个域名和多个虚拟主机,如果有问题,重复上面的操作再试一次即可。先说伪静态下的伪静态,还是比较常见的。使用命令:cd/etc/httpd找到模块文件的链接。我们在/etc/httpd.conf下的Modules中找到了所有模块类的模块mod_rewrite.so(这是伪静态重写规则)。模块配置文件都放在conf.modules.d下。然后我们来到cd/etc/httpd/conf并编辑httpd.conf命令:sudovimhttpd.conf第一步是将mod_rewrite.so加载到系统中。首先打开我们的伪静态规则。Esc状态下搜索loadModule命令:/loadModule会找到LoadModulefoo_modulemodules/mod_foo.so复制一行下来改成LoadModulerewrite_modulemodules/mod_rewrite.so重启我们的伪静态函数就可以生效命令:sudoservicehttpdrestart配置我们的伪静态ServerNamewww.aqingkong.comDocumentRoot/data/www#AddDirectorytoourvirtualhosttoconfigureauthorizationtoaccessyourprogramOptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted#表示只有当我们的mod_rewrite.c文件存在时这个模块才有效#RewriteEngineOpenRewriteEngineon#TherequestedURLis*.htm,redirecttoindex.html前提条件在根目录下创建一个index.html文件RewriteRule^(.*).htm$index.html注意:如果在编辑文件时强行按错了键如果有退出编辑时出错,会出现以下问题:E325:ATTENTIONFoundaswapfilebyname".httpd.conf.swp"ownedby:ro...使用命令ls-a查找所有隐藏文件。然后rm–rfXXX.swp文件末尾就行了