[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf 编辑一下内容: 1. ServerName 默认被注释掉了 # ServerName www.example.com:80 2. 有时会显示403 forbidden <Directory /> AllowOverride none Require all denied </Directory> Require all denied 改成 Require all granted 3. php相关配置(解析PHP) AddType application/x-httpd-php .php <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
修改后须要执行php
1. 检验配置文件正确性 /usr/local/apache2.4/bin/apachectl -t 2. 并从新加载配置文件(文件错误将不会杀死进程) /usr/local/apache2.4/bin/apachectl graceful
先启动httpd [root@localhost ~]# /usr/local/apache2.4/bin/apachectl start 临时开放80端口 [root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT 打开浏览器,输入服务器ip,显示“It works!”即成功;不然有问题! 在阿里云虚拟主机内安装lamp架构时,须要关闭防火墙(systemctl stop firewalld),不然浏览器没法访问!
网页打不开的解决思路:服务器ip是否可通 -> 80端口是否通(服务器是否开放该端口iptables)html
验证apache是否解析phpapache
1. 在/usr/local/apache2.4/htdocs/目录下新建一个index.php 输入下面的代码 <?php phpinfo(); ?> 2. 在浏览器中输入ip/index.php,看是否显示php的说明界面
当php没法解析,显示的将是源代码vim
没法解析php时须要检查的内容:浏览器
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep php php5_module (shared)
[root@localhost ~]# ls /usr/local/apache2.4/modules/libphp5.so /usr/local/apache2.4/modules/libphp5.so
[root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep libphp LoadModule php5_module modules/libphp5.so
[root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep x-httpd-php AddType application/x-httpd-php .php
[root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep -C1 index.php <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
对配置文件的操做后最好使用apachectl -t进行检验服务器
执行apachectl start启动apache时出现下列错误的缘由是安装了2个版本的php,主配置文件内模块都启动了,须要注释掉其中一个,这样才能正常启动!架构
/usr/local/apache/bin/apachectl: 行 79: 2391 段错误 $HTTPD -k $ARGV
一个服务器能够运行多个网站,每一个网站都是一个虚拟主机app
任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机curl
在dns还未生效时,经过修改hosts文件,设置ip与域名的映射解析,来配置域名。tcp
vim /usr/local/apache2.4/conf/httpd.conf 搜索httpd-vhost # Virtual hosts # Include conf/extra/httpd-vhosts.conf 去掉该行开始的#,保存退出
一旦让虚拟主机配置文件生效,以前配置的默认主机将失效,须要apache模块支持:mod_log_config
[root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf ... <VirtualHost *:80> # DocumentRoot定义网站的根目录 DocumentRoot "/data/wwwroot/abc.com" ServerName abc.com # ServerAlias定义出ServerName以前其余的域名 ServerAlias www.abc.com www.123.com ErrorLog "logs/abc.com-error_log" CustomLog "logs/abc.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost> ...
[root@localhost ~]# mkdir /data/wwwroot/ [root@localhost ~]# mkdir /data/wwwroot/abc.com [root@localhost ~]# mkdir /data/wwwroot/111.com [root@localhost ~]# vim /data/wwwroot/abc.com/index.php <?php echo "abc.com" ?php> [root@localhost ~]# vim /data/wwwroot/111.com/index.php <?php echo "111.com" ?php> [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
访问任意的域名都将访问到默认主机所对应的内容。
# 访问指定ip、端口、域名的内容,返回结果 # 下面代码将获取默认主机内容 [root@localhost ~]# curl -x 192.168.65.133:80 abc.com abc.com # 指定特定的域名,该域名匹配了上面的第二个虚拟主机,因此显示内容为第二个虚拟主机所配置的内容 # 经过ServerName访问 [root@localhost ~]# curl -x 192.168.65.133:80 111.com 111.com # 经过ServerAlias访问 [root@localhost ~]# curl -x 192.168.65.133:80 www.example.com 111.com