LAMP架构介绍
LAMP是Linux+Apache(httpd)+MySQL+PHP的简写,即把Apache、MySQL以及PHP安装在linux系统上,组成一个运行环境来运行PHP脚本语言,通常是网站。比如Google、淘宝、百度、51cto博客、猿课论坛等就是用PHP语言写出来的。
- httpd、PHP、MySQL三个角色可以在一台机器、也可以分开,但httpd和PHP要安装在一台机器上,这也是PHP作为Apache的一个模块存在的,它们两必须在一起。
-
httpd、PHP、MySQL三者如何工作:PHP是以模块的形式和Apache结合在一起的。Apache不能直接跟Mysql打交道,只能通过PHP模块去Mysql拿数据,再交给Apache再交给用户。PHP与Mysql之间是动态请求。
MySQL、MariaDB介绍
MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)
- MySQL官网https://www.mysql.com 最新版本5.7GA/8.0DMR;
- MySQL5.6变化比较大,5.7性能上有很大提升;
- Mariadb为MySQL的一个分支,官网https://mariadb.com/最新版本10.2;
- MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领大部分原班人马创立;
- Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6;
- Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本;
MySQL安装
MySQL安装
- MySQL的几个常用安装包:rpm包、源码包、二进制免编译包
- 查看linux系统是多少位:
[root@ma-1 ~]
# uname -a
Linux ma-1
3.10
.0
-514.
el7.x86_64
#1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
2.下载mysql源码包,把安装包放到指定目录下:
[root@ma-1 ~]
# cd /usr/local/src
[root@ma-1 src]
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
--
2017
-
12
-
14
19
:
17
:
14
--
http:
/
/mirrors.sohu.com/mysql
/MySQL-5.6/mysql
-
5.6
.
35
-linux-glibc2.
5
-x86_64.tar.gz
已发出 HTTP 请求,正在等待回应...
200
OK
长度:
314581668
(
300
M) [application/octet-stream]
正在保存至: “mysql-
5.6
.
35
-linux-glibc2.
5
-x86_64.tar.gz”
100
%[===============================================================================>]
314
,
581
,
668
1.40
MB/s 用时
3
m
34
s
2017
-
12
-
14
19
:
20
:
49
(
1.40
MB/s) - 已保存 “mysql-
5.6
.
35
-linux-glibc2.
5
-x86_64.tar.gz” [
314581668
/
314581668
])
3.将压缩包解压:
[root@ma-1 src]
#
tar
zxvf
mysql-5
.6
.35-linux-glibc2
.5-x86_64
.tar
.gz
4.把目录移动到/usr/local/下并改名为mysql:
[root@ma-1 src]
# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
5.进入目录查看:
[root@ma-1 src]
# cd /usr/local/mysql
[root@ma-1 mysql]
# ls
bin COPYING data docs
include
lib man mysql-test README scripts share sql-bench support-files
6.创建mysql用户,创建目录/data/,用来存放mysql数据:
[root@ma-1 mysql]
# useradd mysql
[root@ma-1 mysql]
# mkdir /data/
7.初始化指定用户mysql和路径:
[root@ma-1 mysql]
# ./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
FATAL
ERROR:
please install the following Perl modules before executing ./scripts/
mysql_install_db:
Data::Dumper
[root@ma-1 mysql]
# yum list |grep perl |grep -i dumper
perl-Data-Dumper.x86_64
2.145
-
3
.el7 base
perl-XML-Dumper.noarch
0
.
81
-
17
.el7 base
[root@ma-1 mysql]
# yum install -y perl-Data-Dumper
[root@ma-1 mysql]
# echo $? //检验上一次命令是否成功,需要马上测验
0
[root@ma-1 mysql]
# ./scripts/mysql_install_db –user=mysql –datadir=/data/mysql //报错解决后再执行
解决办法:
(执行后可能会出现这种情况,是因为缺少了一个模块,需要我们安装:yum install -y perl-Data-Dumper)
执行完命令后可马上执行命令echo $?查看是否为0,为0说明执行成功。
可能缺少的包:
yum install -y libaio
yum install -y numactl
yum -y install libaio-devel
yum -y install openssl-devel
yum -y install perl perl-devel
安装centos 6.5 可以看下下面这篇文章:
- 拷贝配置文件,有两种方法:
方法一:
- 拷贝配置文件到etc目录下 cp support-files/my-default.cnf /etc/my.cnf
方法二:
- 更改自带的vim /etc/my.cnf文件,更改成如下配置:
9.复制启动脚本到/etc/init.d目录下并改名mysqld:
[root@ma-1 mysql]
# cp support-files/mysql.server /etc/init.d/mysqld
10.编辑启动脚本:
[root@ma-1 mysql]
# vi /etc/init.d/mysqld
定义basedir和datadir
basedir=/usr/local/mysql
datadir=/data/mysql
11.启动mysql:
- 看下默认权限是不是755,把服务加入开机启动。
root@ma-1 mysql]
# ls -l /etc/init.d/mysqld //默认权限
-rwxr-xr-x
1
root root
10902
12
月
14
20
:
57
/etc/init.d/mysqld
[root@ma-1 mysql]
# chkconfig --add mysqld //添加开机启动
[root@ma-1 mysql]
# chkconfig --list //查看已添加开机
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行
'systemctl list-unit-files'
。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'
。
mysqld
0
:关
1
:关
2
:开
3
:开
4
:开
5
:开
6
:关
netconsole
0
:关
1
:关
2
:关
3
:关
4
:关
5
:关
6
:关
network
0
:关
1
:关
2
:开
3
:开
4
:开
5
:开
6
:关
- 手动启动mysql服务命令
[root@ma-1 mysql]
# /etc/init.d/mysqld start 或者 service mysqld start
[root@ma-1 mysql]
# service mysqld start //服务启动成功
Starting MySQL.Logging to
'/data/mysql/ma-1.err'
.
..... SUCCESS!
[root@ma-1 mysql]
# ps aux |grep mysql //查看进程
root
8081
0
.
0
0
.
1
11760
1588
pts/
0
S
21
:
23
0
:
00
/bin/sh /usr/
local
/mysql/bin/mysqld_safe --datadir=
/data/mysql
--pid-file=
/data/mysql
/ma-1.pid
mysql 8216 0.9 44.9 973048 449520 pts/
0
Sl
21
:
23
0
:
05
/usr/
local
/mysql/bin/mysqld --basedir=
/usr/local
/mysql --datadir=/data
/mysql --plugin-dir=/usr
/local/mysql
/lib/plugin
--user=mysql --
log
-error=
/data/mysql
/ma-1.err --pid-file=/data
/mysql/ma-1
.pid --
socket
=
/tmpmysql.sock
root 8258 0.0 0.0 112664 972 pts/
0
S+
21
:
32
0
:
00
grep
--color=auto mysql
[root@ma-1 mysql]
# netstat -lntp //查看监听端口3306
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp
0
0
0
.
0
.
0
.
0
:
22
0
.
0
.
0
.
0
:* LISTEN
827
/sshd
tcp
0
0
127.0
.
0
.
1
:
25
0
.
0
.
0
.
0
:* LISTEN
1102
/master
tcp6
0
0
:::
3306
:::* LISTEN
8216
/mysqld
tcp6
0
0
:::
22
:::* LISTEN
827
/sshd
tcp6
0
0
::
1
:
25
:::* LISTEN
1102
/master
假设:
如果没有启动脚本可以放在/etc/init.d下,那么可以用命令的方式来打开mysql(PS:命令模式打开的mysql要关闭需要用kill命令:killall mysqld,也可以用 kill PID号,但是建议用killall,就如mysql如果用killall,它会先停止当前的读写操作,再把没有完成写入磁盘的数据慢慢写进去,直到写完之后才会把进程杀死。如果遇到mysqld进程杀不死,等了一分钟还杀不死,说明数据量很大,慢慢等,不要强制使用kill -9 。)
命令:
/usr/local/mysql/bin/mysqld_safe --defaults-file=
/etc/my
.cnf --user=mysql --datadir=
/data/my
sql &
–defaults-file:指定配置文件所在的路径。
示例如下:
[root@ma-1 mysql]# service mysqld stop //停止mysql服务
Shutting down MySQL.. SUCCESS!
[root@ma-1 mysql]# ps aux |grep mysql //查看进程停止
root 8290 0.0 0.0 112664 968 pts/0 S+ 21:38 0:00 grep --color=auto mysql
[root@ma-1 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql & //执行命令启动服务,这里按ctrl+z把命令放到后台执行
[1] 8472
[root@ma-1 mysql]# 171214 21:42:10 mysqld_safe Logging to '/data/mysql/ma-1.err'.171214 21:42:10 mysqld_safe Starting mysqld daemon with databases from /data/mysql
[root@ma-1 mysql]# ps aux |grep mysql //进程启动
root 8472 0.0 0.1 113256 1584 pts/0 S 21:42 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql 8595 0.3 45.6 973048 456372 pts/0 Sl 21:42 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/ma-1.err --pid-file=/data/mysql/ma-1.pid --socket=/tmp/mysql.sock
root 8620 0.0 0.0 112664 968 pts/0 S+ 21:46 0:00 grep --color=auto mysql
[root@ma-1 mysql]# yum install psmisc //安装killall命令
[root@ma-1 mysql]# killall mysqld //终止以命令方式启动的mysql服务
[root@ma-1 mysql]# ps aux |grep mysql //查看进程已结束
root 8642 0.0 0.0 112664 972 pts/0 R+ 21:54 0:00 grep --color=auto mysql
Apache介绍
Apache是一个基金会的名字,它最早就是httpd起家的,因为httpd使用的人很多,很流行,所以当时就以基金会的名字来命名的web服务软件 ,在早期的时候,名字就叫做Apache,而不是叫httpd,后来在http的2.0版本开始,就改名叫httpd,但是很多人还是习惯叫做Apache
Apache的主流版本,在之前是 1.3版本比较流行,后来出了2.0版本,2.2版本,2.4版本,现在主流版本是 2.4版本
Apache(2.4版本)
2.2版本和2.4版本的区别
安装的方法不同,涉及到一个安依赖软件apr版本不一样
apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地进行移植(从linux移植到windows)
2.2版本和2.4版本所依赖的apr版本是不同的
而centos系统,默认自带的apr,也就是yum安装的apr和2.4版本是不匹配的,所以无法使用yum安装的apr,所以需要自己去手动编译
Apache2.4版本编译起来麻烦,就是因为需要手动编译 apr 和 apr-util 这两个包
安装过程
- 首先切换到/usr/local/src目录下
[
root@ma-1
~
]
# cd
/
usr
/
local
/
src
[
root@ma-1 src
]
#
- 下载Apache 2.4源码包、apr、apr-util这三个包
wget http
:
/
/
mirrors
.
cnnic
.
cn
/
apache
/
httpd
/
httpd
-2.4
.
29
.
tar
.
gz
wget http
:
/
/
mirrors
.
cnnic
.
cn
/
apache
/
apr
/
apr
-1.6
.
3
.
tar
.
gz
wget http
:
/
/
mirrors
.
cnnic
.
cn
/
apache
/
apr
/
apr
-
util
-1.6
.
1
.
tar
.
bz2
- 在下载完成后,查看下下载的包
[
root@ma-1 src
]
# ls
apr
-1.6
.
3
.
tar
.
gz httpd
-2.4
.
29
.
tar
.
gz
apr
-
util
-1.6
.
1
.
tar
.
bz2 mariadb
-10.2
.
6
-
linux
-
glibc_214
-
x86_64
.
tar
.
gz
httpd
-2.2
.
34
mysql
-5.6
.
35
-
linux
-
glibc2
.5
-
x86_64
.
tar
.
gz
httpd
-2.2
.
34
.
tar
.
gz
[
root@ma-1 src
]
#
- 解压下载的包,并查看
[
root@ma-1 src
]
# tar zxvf httpd
-2.4
.
29
.
tar
.
gz
[
root@ma-1 src
]
# tar zxvf apr
-1.6
.
3
.
tar
.
gz
[
root@ma-1 src
]
# tar xjvf apr
-
util
-1.6
.
1
.
tar
.
bz2
[
root@ma-1 src
]
# ls
apr
-1.6
.
3
httpd
-2.2
.
34
.
tar
.
gz
apr
-1.6
.
3
.
tar
.
gz httpd
-2.4
.
29
apr
-
util
-1.6
.
1
httpd
-2.4
.
29
.
tar
.
gz
apr
-
util
-1.6
.
1
.
tar
.
bz2 mariadb
-10.2
.
6
-
linux
-
glibc_214
-
x86_64
.
tar
.
gz
httpd
-2.2
.
34
mysql
-5.6
.
35
-
linux
-
glibc2
.5
-
x86_64
.
tar
.
gz
[
root@ma-1 src
]
#
- 在解压完成后,首先安装apr
- 切换到/usr/local/src/apr-1.6.3,并安装apr
[
root@ma-1
src
]
# cd apr
-1.6
.
3
[
root@ma-1
apr
-1.6
.
3
]
#
.
/
configure
--
prefix
=
/
usr
/
local
/
apr
在安装的时候,有时会出现以下情况
只需要安装gcc包即可——>yum install -y gcc
[
root@ma-1 apr
-1.6
.
3
]
#
.
/
configure
--
prefix
=
/
usr
/
local
/
apr
checking build system type
...
x86_64
-
pc
-
linux
-
gnu
checking host system type
...
x86_64
-
pc
-
linux
-
gnu
checking target system type
...
x86_64
-
pc
-
linux
-
gnu
Configuring APR library
Platform
:
x86_64
-
pc
-
linux
-
gnu
checking
for
working mkdir
-
p
...
yes
APR Version
:
1.6
.
3
checking
for
chosen layout
...
apr
checking
for
gcc
...
no
checking
for
cc
...
no
checking
for
cl
.
exe
...
no
configure
:
error
:
in
`/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
See `
config
.
log'
for
more details
[
root@ma-1 apr
-1.6
.
3
]
#
[
root@ma-1 apr
-1.6
.
3
]
# yum install
-
y gcc
- 在安装完成后,可以用 echo $? 检查是否安装成功
[
root@ma-1
apr
-1.6
.
3
]
# echo $
?
0
[
root@ma-1
apr
-1.6
.
3
]
#
- 执行make && make install 命令
[
root@ma-1
apr
-1.6
.
3
]
# make
&&
make install
- 查看下apr,会看到有四个目录
[
root@ma-1 apr
-1.6
.
3
]
# ls
/
usr
/
local
/apr/
bin build
-1
include lib
[
root@ma-1 apr
-1.6
.
3
]
#
- 安装apr-util-1.6.1,首先切换到/usr/local/src/apr-util-1.6.1目录下
[
root@ma-1
apr
-1.6
.
3
]
# cd
/
usr
/
local
/
src
/
apr
-
util
-1.6
.
1
[
root@ma-1
apr
-
util
-1.6
.
1
]
#
- 安装apr-util
[
root@ma-1
apr
-
util
-1.6
.
1
]
#
.
/
configure
--
prefix
=
/
usr
/
local
/
apr
-
util
--
with
-
apr
=
/
usr
/
local
/
apr
- 然后使用echo $?检查是否安装成功
[
root@ma-1
apr
-
util
-1.6
.
1
]
# echo $
?
0
[
root@ma-1
apr
-
util
-1.6
.
1
]
#
- 然后make && make install
[
root@ma-1
apr
-
util
-1.6
.
1
]
# make
&&
make install
问题
但是在执行make && make install,出现以下错误
xml
/
apr_xml
.
c
:
35
:
19
:
致命错误:expat
.
h:没有那个文件或目录
#include
<
expat
.
h
>
^
编译中断。
make
[
1
]
:
**
*
[
xml
/
apr_xml
.
lo
]
错误
1
make
[
1
]
:
离开目录“
/
usr
/
local
/
src
/
apr
-
util
-1.6
.
1
”
make
:
**
*
[
all
-
recursive
]
错误
1
解决方法
是因为缺少了xml解释器,只需要yum安装 expat-devel 包即可
[
root@ma-1
apr
-
util
-1.6
.
1
]
# yum
-
y install expat
-
devel
这时再去执行make && make install 会正常执行
- --enable-so \ 表示支持动态扩展模块,Apache和PHP它们都会支持以一个模块的形式存在
PHP是Apache的一个模块,这个模块实际上就是一个文件,就是 .so 后缀名的文件,那他以Apache的一个模块形式存在,所以Apache本身是一个进程,是一个服务,在这个进程里面,通过一些配置文件指定一个模块的路径,那就可以去调用模块。
PHP模块是用来解析PHP的,执行PHP脚本的,所以就可以通过PHP脚本将PHP模块加载到进程里面去,加载到主进程里面去,
当它遇到PHP解析的需求时,它就会去调用这个模块,去执行一些操作
这些模块是一些独立的文件
而且还可以指定有哪些动态扩展的模块,需要加载哪些,这里指定是most
--enable-mods-shared=most
most,就是绝大多数,大多数会用到的模块,都会加载进来
- 查看/usr/local/apr-util/目录下,会看到生成三个子目录
[
root@ma-1 apr
-
util
-1.6
.
1
]
# ls
/
usr
/
local
/apr-util/
bin include lib
[
root@ma-1 apr
-
util
-1.6
.
1
]
#
- 安装httpd-2.4.29,首先切换到httpd-2.4.29/
[
root@ma-1
apr
-
util
-1.6
.
1
]
# cd
/
usr
/
local
/
src
/httpd-2.4.29/
[
root@ma-1
httpd
-2.4
.
29
]
#
- 安装httpd-2.4.29
[
root@ma-1
httpd
-2.4
.
29
]
#
.
/
configure
--
prefix
=
/
usr
/
local
/
apache2
.4
--
with
-
apr
=
/
usr
/
local
/
apr
--
with
-
apr
-
util
=
/
usr
/
local
/
apr
-
util
--
enable
-
so
--
enable
-
mods
-
shared
=
most
- 问题:
这里遇到了错误,如下
configure
:
error
:
pcre
-
config
for
libpcre not found
.
PCRE is required and available
from
http
:
/
/
pcre
.
org
/
- 解决方法:
- pcre是正则表达式的驱动库,支持正则表达式
- 可以先yum list |grep pcre 查看,因为是缺少库,所以只需要找带有 devel 或 lib 字符的,所以只需要安装pcre-devel包即可——>yum install -y pcre-devel
[
root@ma-1 httpd
-2.4
.
29
]
# yum list
|
grep pcre
pcre
.
x86_64
8.32
-
17
.
el7 @base
pcre
-
devel
.
x86_64
8.32
-
17
.
el7 @base
pcre
.
i686
8.32
-
17
.
el7 base
pcre
-
devel
.
i686
8.32
-
17
.
el7 base
pcre
-
static
.
i686
8.32
-
17
.
el7 base
pcre
-
static
.
x86_64
8.32
-
17
.
el7 base
pcre
-
tools
.
x86_64
8.32
-
17
.
el7 base
pcre2
.
i686
10.23
-
2
.
el7 base
pcre2
.
x86_64
10.23
-
2
.
el7 base
pcre2
-
devel
.
i686
10.23
-
2
.
el7 base
pcre2
-
devel
.
x86_64
10.23
-
2
.
el7 base
pcre2
-
static
.
i686
10.23
-
2
.
el7 base
pcre2
-
static
.
x86_64
10.23
-
2
.
el7 base
pcre2
-
tools
.
x86_64
10.23
-
2
.
el7 base
pcre2
-
utf16
.
i686
10.23
-
2
.
el7 base
pcre2
-
utf16
.
x86_64
10.23
-
2
.
el7 base
pcre2
-
utf32
.
i686
10.23
-
2
.
el7 base
pcre2
-
utf32
.
x86_64
10.23
-
2
.
el7 base
[
root@ma-1 httpd
-2.4
.
29
]
#
- 下载pcre-devel包
[
root@ma-1
httpd
-2.4
.
29
]
# yum install
-
y pcre
-
devel
- 使用echo $?检查是否安装成功,这里会看到成功安装
[
root@ma-1
httpd
-2.4
.
29
]
# echo $
?
0
[
root@ma-1
httpd
-2.4
.
29
]
#
- 执行make && make install
[
root@ma-1
httpd
-2.4
.
29
]
# make
&&
make install
- 错误:
collect2
:
error
:
ld returned
1
exit status
make
[
2
]
:
**
*
[
htpasswd
]
错误
1
make
[
2
]
:
离开目录“
/
usr
/
local
/
src
/
httpd
-2.4
.
29
/
support”
make
[
1
]
:
**
*
[
all
-
recursive
]
错误
1
make
[
1
]
:
离开目录“
/
usr
/
local
/
src
/
httpd
-2.4
.
29
/
support”
make
:
**
*
[
all
-
recursive
]
错误
1
- 解决方法:
- 删除源码包,重新解压,重新编译安装,重新做一遍即可
- 进入到/usr/local/src 目录下,删除源码包
- 删除源码包,重新解压,重新编译安装,重新做一遍即可
- 接下来便会完成安装Apache
Apache安装完成后
- 在安装完成后,进入到/usr/local/apache2.4/目录下,并 ls 查看有哪些目录
[
root@ma-1 httpd
-2.4
.
29
]
# cd
/
usr
/
local
/apache2.4/
[
root@ma-1 apache2
.4
]
# ls
bin build cgi
-
bin conf error htdocs icons include logs man manual modules
[
root@ma-1 apache2
.4
]
#
- 在以后会接触到的目录就是 bin目录,conf目录,htdocs目录
- /bin目录下,是可执行文件。也就是说,要启动一个服务,它就是在bin/httpd下面有一个文件或者命令,bin/httpd也是核心的二进制文件
[
root@ma-1 apache2
.4
]
# ls bin
/
httpd
bin
/
httpd
[
root@ma-1 apache2
.4
]
# ls
-
l bin
/
httpd
-
rwxr
-
xr
-
x
1
root root
2334331
12
月
15
00
:
01
bin
/
httpd
[
root@ma-1 apache2
.4
]
# du
-
sh bin
/
httpd
2
.
3M bin
/
httpd
[
root@ma-1 apache2
.4
]
#
- conf目录,是配置文件所在目录
[
root@ma-1 apache2
.4
]
# ls conf
/
extra httpd
.
conf magic mime
.
types original
[
root@ma-1 apache2
.4
]
#
- htdocs目录,是存放了一个访问页。启动完httpd服务后,去访问网站,默认的网站会放到 htdocs/目录下
[
root@ma-1 apache2
.4
]
# ls htdocs
/
index
.
html
[
root@ma-1 apache2
.4
]
#
- logs目录,就是日志相关的目录
- 包含:错误日志,访问日志,
- man目录,就是一些帮助文档
- modules扩展模块目录,所有模块都放到了modules目录下
- 每一个模块都代表着一个功能
[
root@ma-1 apache2
.4
]
# ls modules
httpd
.
exp mod_dbd
.
so mod_proxy_http
.
so
mod_access_compat
.
so mod_dir
.
so mod_proxy_scgi
.
so
mod_actions
.
so mod_dumpio
.
so mod_proxy
.
so
mod_alias
.
so mod_env
.
so mod_proxy_wstunnel
.
so
mod_allowmethods
.
so mod_expires
.
so mod_ratelimit
.
so
mod_auth_basic
.
so mod_ext_filter
.
so mod_remoteip
.
so
mod_auth_digest
.
so mod_file_cache
.
so mod_reqtimeout
.
so
mod_auth_form
.
so mod_filter
.
so mod_request
.
so
mod_authn_anon
.
so mod_headers
.
so mod_rewrite
.
so
mod_authn_core
.
so mod_include
.
so mod_sed
.
so
mod_authn_dbd
.
so mod_info
.
so mod_session_cookie
.
so
mod_authn_dbm
.
so mod_lbmethod_bybusyness
.
so mod_session_dbd
.
so
mod_authn_file
.
so mod_lbmethod_byrequests
.
so mod_session
.
so
mod_authn_socache
.
so mod_lbmethod_bytraffic
.
so mod_setenvif
.
so
mod_authz_core
.
so mod_lbmethod_heartbeat
.
so mod_slotmem_shm
.
so
mod_authz_dbd
.
so mod_log_config
.
so mod_socache_dbm
.
so
mod_authz_dbm
.
so mod_log_debug
.
so mod_socache_memcache
.
so
mod_authz_groupfile
.
so mod_logio
.
so mod_socache_shmcb
.
so
mod_authz_host
.
so mod_macro
.
so mod_speling
.
so
mod_authz_owner
.
so mod_mime
.
so mod_status
.
so
mod_authz_user
.
so mod_negotiation
.
so mod_substitute
.
so
mod_autoindex
.
so mod_proxy_ajp
.
so mod_unique_id
.
so
mod_buffer
.
so mod_proxy_balancer
.
so mod_unixd
.
so
mod_cache_disk
.
so mod_proxy_connect
.
so mod_userdir
.
so
mod_cache
.
so mod_proxy_express
.
so mod_version
.
so
mod_cache_socache
.
so mod_proxy_fcgi
.
so mod_vhost_alias
.
so
mod_cgid
.
so mod_proxy_fdpass
.
so mod_watchdog
.
so
mod_dav_fs
.
so mod_proxy_ftp
.
so
mod_dav
.
so mod_proxy_hcheck
.
so
[
root@ma-1 apache2
.4
]
# du
-
sh modules
/
6
.
3M modules
/
[
root@ma-1 apache2
.4
]
#
- 查看Apache加载了哪些模块
- /usr/local/apache2.4/bin/httpd -M //查看加载的模块
- -M 把所有的模块列出来 等于
- /usr/local/apache2.4/bin/apachectl -M //查看加载的模块——>这是一个shell文件,它调用了二进制的httpd
[
root@ma-1 apache2
.4
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
M
AH00557
:
httpd
:
apr_sockaddr_info_get
(
)
failed
for
ma-1
AH00558
:
httpd
:
Could not reliably determine the server
's fully qualified domain name, using 127.0.0.1. Set the '
ServerName' directive globally to suppress
this
message
//这里仅仅是一个提示,提示你要去定义ServerName——>不用去管
Loaded Modules
:
core_module
(
static
)
so_module
(
static
)
http_module
(
static
)
mpm_event_module
(
static
)
authn_file_module
(
shared
)
authn_core_module
(
shared
)
authz_host_module
(
shared
)
authz_groupfile_module
(
shared
)
authz_user_module
(
shared
)
authz_core_module
(
shared
)
access_compat_module
(
shared
)
auth_basic_module
(
shared
)
reqtimeout_module
(
shared
)
filter_module
(
shared
)
mime_module
(
shared
)
log_config_module
(
shared
)
env_module
(
shared
)
headers_module
(
shared
)
setenvif_module
(
shared
)
version_module
(
shared
)
unixd_module
(
shared
)
status_module
(
shared
)
autoindex_module
(
shared
)
dir_module
(
shared
)
alias_module
(
shared
)
[
root@ma-1 apache2
.4
]
#
[
root@ma-1 apache2
.4
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl
-
M
AH00558
:
httpd
:
Could not reliably determine the server
's fully qualified domain name, using 192.168.0.104. Set the '
ServerName' directive globally to suppress
this
message
Loaded Modules
:
core_module
(
static
)
so_module
(
static
)
http_module
(
static
)
mpm_event_module
(
static
)
authn_file_module
(
shared
)
authn_core_module
(
shared
)
authz_host_module
(
shared
)
authz_groupfile_module
(
shared
)
authz_user_module
(
shared
)
authz_core_module
(
shared
)
access_compat_module
(
shared
)
auth_basic_module
(
shared
)
reqtimeout_module
(
shared
)
filter_module
(
shared
)
mime_module
(
shared
)
log_config_module
(
shared
)
env_module
(
shared
)
headers_module
(
shared
)
setenvif_module
(
shared
)
version_module
(
shared
)
unixd_module
(
shared
)
status_module
(
shared
)
autoindex_module
(
shared
)
dir_module
(
shared
)
alias_module
(
shared
)
[
root@ma-1 apache2
.4
]
#
- 在模块的右侧有小括号,里面是 static 或 shared ,static是静态
- 静态和动态的区别
- 静态是直接把模块编译进了主脚本或主二进制文件里面
- http是一个核心文件,这个文件加载了哪些模块
- 如果是static,那也就意味这个模块在httpd里面,和它绑定在了一起,它们是一个整体
- 如果是shared,说明它是一个扩展的模块,这个模块是一个文件,我们可以看到的 .so 文件,文件的目录是在/usr/local/apache2.4/module目录下
启动Apache2.4
- 在安装完成Apache2.4后,Apache启动不需要定义启动脚本,也不需要放到/etc/init.d下去,直接使用命令行启动就行
- /usr/local/apache2.4/bin/apachectl start //命令行启动Apache脚本
- 启动脚本后,虽然出现提示,但不表示启动失败
- 若不想要出现提示,只需要编辑配置文件即可
- 启动脚本后,虽然出现提示,但不表示启动失败
[
root@ma-1 apache2
.4
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl start
AH00558
:
httpd
:
Could not reliably determine the server
's fully qualified domain name, using 192.168.0.104. Set the '
ServerName' directive globally to suppress
this
message
[
root@ma-1 apache2
.4
]
#
- 查看Apache是否启动,看httpd进程是否存在
[
root@ma-1 apache2
.4
]
# ps aux
|
grep httpd
root
47977
0.0
0.2
71400
2188
?
Ss
05
:
09
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
47978
0.0
0.4
360364
4248
?
Sl
05
:
09
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
47979
0.0
0.4
360364
4248
?
Sl
05
:
09
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
47980
0.0
0.4
360364
4248
?
Sl
05
:
09
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
root
48071
0.0
0.0
112676
984
pts
/
0
R
+
05
:
12
0
:
00
grep
--
color
=
auto httpd
[
root@ma-1 apache2
.4
]
#
- 查看端口号——>httpd默认监听端口为80,mysqld默认监听端口为3306,25端口是发邮件的,22端口是远程登录的
[root@ma-1 apache2.4]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1498/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1190/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1498/master
tcp6 0 0 :::3306 :::* LISTEN 1503/mysqld
tcp6 0 0 :::80 :::* LISTEN 47977/httpd
tcp6 0 0 :::22 :::* LISTEN 1190/sshd
[root@ma-1 apache2.4]#
配置httpd支持php目录概要
- httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
- vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
- ServerName
- Require all denied
- AddType application/x-httpd-php .php
- DirectoryIndex index.html index.php /usr/local/apache2.4/bin/apachectl -t //测试语法 /usr/local/apache2.4/bin/apachectl start //启动服务 netstat -lntp curl localhost vim /usr/local/apache2.4/htodcs/test.php //增加如下内容
<?php echo 123; ?>
- curl localhost/test.php
编辑httpd的配置文件
- 在安装好Apache、mysql、httpd,但是还未结合在一起,虽然apche调用了php作为它的模块,但是还不知道是否能解析php,所以现在还是需要编辑Apache的配置文件
- httpd主配置文件,在/usr/local/apache2.4/conf/httpd.conf下
- 编辑四个地方
- 定义ServerName,去除 # 号
- 在/usr/local/apache2.4/bin/apachectl restart 乍一看是报错信息,其实只是一个警告信息,并不是错误,若想不看到这个提示,可以在 /usr/local/apache2.4/conf/httpd.conf 取消掉
- 方法:在/usr/local/apache2.4/conf/httpd.conf 中搜索 /ServerName ,然后将 # ServerName www.example.com:80 前的# 去除掉,保存退出即可
- 把Require all denied 改成
- 若是不更改,那么访问会是 403
- 定义ServerName,去除 # 号
- 编辑四个地方
第一处:取消警告信息
- 在运行/usr/local/apache2.4/bin/apachectl start 会跳出警告信息
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
//ctrtl+z退出下
[
1
]
+
已停止 vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl restart
//会看到警告信息
AH00557
:
httpd
:
apr_sockaddr_info_get
(
)
failed
for
hanfeng
AH00558
:
httpd
:
Could not reliably determine the server
's fully qualified domain name, using 127.0.0.1. Set the '
ServerName' directive globally to suppress
this
message
[
root@
ma-1
~
]
# fg
//回到刚暂停的任务中——>vim /usr/local/apache2.4/conf/httpd.conf
在文件中搜索
/
ServerName
然后将 # ServerName www
.
example
.
com
:
80
前的# 去除掉保存退出即可
- 在去除# 号之后,运行apache,会提示79行错误
- 原因:是因为在最后调用了两个PHP,加载了两个PHP,导致冲突
- 解决方法:只需要注释掉一个PHP即可
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl restart
httpd not running
,
trying to start
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl
:
行
79
:
2348
段错误 $HTTPD
-
k $ARGV
[
root@
ma-1
~
]
#
- 在注释掉一个PHP,就会发现不提示警告信息了
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl start
[
root@
ma-1
~
]
#
- 查看httpd进程
[
root@
ma-1
~
]
# ps aux
|
grep httpd
root
2453
0.0
0.8
254072
8820
?
Ss
23
:
52
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
2454
0.0
0.8
540900
8972
?
Sl
23
:
52
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
2455
0.0
0.8
540900
8972
?
Sl
23
:
52
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
daemon
2456
0.0
0.8
540900
8972
?
Sl
23
:
52
0
:
00
/
usr
/
local
/
apache2
.4
/
bin
/
httpd
-
k start
root
2541
0.0
0.0
112676
980
pts
/
0
R
+
23
:
54
0
:
00
grep
--
color
=
auto httpd
[
root@
ma-1
~
]
#
- 因为在打开了ServerName,就不在提示警告信息了
第二处:更改Require all denied
- 首先,我们可以用浏览器访问自己虚拟机的IP,会发现无法访问
- 则会提示检查代理服务器和防火墙
- 若IP是通的,再去判断80端口是否是通的——>用物理机去ping80端口
- 因为windows 并没有打开telnet 客户端,所以会提示并没有这个命令
- 打开telnet客户端——>注意:不要打开Telnet服务端,否则会监听23端口,不安全
- 打开物理机的控制面板
- 然后选择程序
- 再选择打开或关闭Windows功能
- 选择Telnet客户端,并打开
7. 若是可以运行 telnet 命令,那出来的则是一个结果,显示80并不通
- 因为在linux虚拟机上,并没有打开80端口
- 在虚拟机上,使用iptables -nvL 命令,会查看到80端口并没有打开
[
root@
ma-1
~
]
# iptables
-
nvL
Chain
INPUT
(
policy ACCEPT
0
packets
,
0
bytes
)
pkts bytes target prot opt
in
out source destination
347
32935
ACCEPT all
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
ctstate RELATED
,
ESTABLISHED
0
0
ACCEPT all
--
lo
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
266
26673
INPUT_direct all
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
266
26673
INPUT_ZONES_SOURCE all
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
266
26673
INPUT_ZONES all
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
0
0
ACCEPT icmp
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
262
26469
REJECT all
--
*
*
0.0
.
0.0
/
0
0.0
.
0.0
/
0
reject
-
with
icmp
-
host
-
prohibited
等等,只截取了一部分,会发现
80
端口并没有打开
- 若想要windows机器去访问它,还需要加上一个操作
- 单独一条命令,临时加上80端口——> iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[
root@
ma-1
~
]
# iptables
-
I INPUT
-
p tcp
--
dport
80
-
j ACCEPT
[
root@
ma-1
~
]
#
- 这时再用物理机去访问虚拟机IP,则会显示 It works!
- 之前不能正常访问,就是由于防火墙的规则,没有加上80端口,不能正常访问
- 这时打开windows来查看80端口,这样的界面表示80端口通了
- 在物理机中按 ctrl+] 退出来,然后在按 quit 字符退出
- 这时删除之前加的那条规则,再来物理机查看虚拟机的80端口,会发现不通了
[
root@
ma-1
~
]
# iptables
-
D INPUT
-
p tcp
--
dport
80
-
j ACCEPT
[
root@
ma-1
~
]
#
- 这时在把规则添加上,会发现又可以正常访问了
- 有时浏览器去访问虚拟机的IP,会显示 403Forbidden 错误界面
- 这是因为在/usr/local/apache2.4/conf/httpd.conf配置文件中,有一个Require all denied
- 然后搜索 /denied ,
- 打开/usr/local/apache2.4/conf/httpd.conf配置文件
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
然后搜索
/
denied ,会看到
<
Directory
/
>
AllowOverride none
Require all denied
<
/
Directory
>
把 denied 改成 granted
- 之前可以在浏览器正常访问虚拟机ip,是因为
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
是因为DocumentRoot指定了Directory,即如下:
DocumentRoot
"/usr/local/apache2.4/htdocs"
<
Directory
"/usr/local/apache2.4/htdocs"
>
还有后面的
Require all granted
若是将这里的Require all granted改成Require all denied ,那肯定无法浏览
- 在更改完配置文件,需要重新加载配置
- /usr/local/apache2.4/bin/apachectl -t //检查你修改的配置文件是否存在错误
- -t参数,会检查你修改的配置文件是否存在语法错误
- 若语法不对,则会报错
- -t参数,会检查你修改的配置文件是否存在语法错误
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl
-
t
Syntax OK
[
root@
ma-1
~
]
#
- 重新加载配置文件
- graceful 只会重新加载配置文件,而不会重启你的服务
- 就是说即使你的配置文件有问题,它最多加载不成功,而不会把你的进程杀掉
- graceful 只会重新加载配置文件,而不会重启你的服务
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl graceful
[
root@
ma-1
~
]
#
- 在配置文件中的,两处位置都应该改成granted,这是为了防止你在打开虚拟主机配置文件的时候,显示403Forbidden(403是它的状态码,正常情况下,状态码都是200)
第三处:因为要支持php,所以要增加一行php相关的配置
- 如果不增加这一行,那么php就无法解析
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
搜索
/
AddType,然后
AddType application
/
x
-
compress
.
Z
AddType application
/
x
-
gzip
.
gz
.
tgz
在这两行下面,增加php一行
AddType application
/
x
-
httpd
-
php
.
php
第四部分,增加一个索引页
- 索引页作用:在打开一个网站,为什么不输入index.php就可以直接访问呢
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
搜索
/
Index ,找到
<
IfModule dir_module
>
DirectoryIndex index
.
html
<
/
IfModule
>
在index
.
html后加 index
.
php
显示为
<
IfModule dir_module
>
DirectoryIndex index
.
html index
.
php
<
/
IfModule
>
- 然后检查配置文件是否有错误
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl
-
t
Syntax OK
[
root@
ma-1
~
]
#
- 然后重新加载配置文件
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl graceful
[
root@
ma-1
~
]
#
检查Apache是否支持解析php5
- 验证
- 写一个测试php脚本
- 在访问的时候,访问的是htdocs下的文件
- phpinfo,可以把php的相关信息打印出来
[
root@
ma-1
~
]
# vi
/
usr
/
local
/
apache2
.4
/
htdocs
/
1
.
php
在文件中写入
<
?
php
phpinfo
(
)
;
?
>
然后保存退出
- 然后在浏览器访问虚拟机ip地址并添加页面地址(IP/index.php),然后会看到显示出内容——>增加一个文件是不需要重启php的
http
:
/
/
192.168
.
74.129
/
1
.
php
- 当看到php正常显示,如上图,那说明php支持支持解析
- 如果php不支持解析(以上四步骤错误一处),那么刷新页面显示出来的则是源代码(就是 1.php 文件中的代码)
- 如果遇到php无法解析,则去检查Apache的配置文件
- 第一项,查看是否加载php5模块,使用/usr/local/apache2.4/bin/apachectl -M命令
- 如果没有加载这个模块,查看这个模块是否存在。使用 ls /usr/local/apache2.4/modules/libphp5.so查看文件是否存在,若是文件都没有,那么肯定不会加载这个模块
[root@ma-1 ~]# /usr/local/apache2.4/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (static) authn_file_module (shared) authn_core_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared) authz_core_module (shared) access_compat_module (shared) auth_basic_module (shared) reqtimeout_module (shared) filter_module (shared) mime_module (shared) log_config_module (shared) env_module (shared) headers_module (shared) setenvif_module (shared) version_module (shared) unixd_module (shared) status_module (shared) autoindex_module (shared) dir_module (shared) alias_module (shared) php5_module (shared) [root@ma-1 ~]# ls /usr/local/apache2.4/modules/libphp5.so /usr/local/apache2.4/modules/libphp5.so
- 第二项,如果有文件,则没有显示php模块,那么就要去看apache的配置文件中有没有加载 libphp5 这一行配置,在文件中搜索/libphp5 ,如果没有这一行配置,那么肯定也是无法解析的
[root@ma-1 ~]# vim /usr/local/apache2.4/conf/httpd.conf
在文件中搜索/libphp5,看是否加载了这一行配置 LoadModule php5_module modules/libphp5.so
- 第三项,检查配置文件中是否加载了 AddType application/x-httpd-php .php 这一行
- 在 .php 前面有一行空格,需要注意下!不能遗忘!!!——>使用 /usr/local/apache2.4/bin/apachectl -t 可以检查出配置写错
[root@ma-1 ~]# vim /usr/local/apache2.4/conf/httpd.conf
在文件搜索/AddType中关于php这一行配置是否存在 AddType application/x-httpd-php .php
- 第四项,检查是否加了 index.php
- 在访问一个网站的时候,比如访问www.baidu.com的时候,并不用是www.baidu.com/index.php访问,会发现,两个访问出的页面是相同的,就是因为这里有索引页(或者叫做index页),它默认能跳转到这个页面下去,包括直接输入虚拟机ip的时候,也会访问到 It works!这是访问到的是 index.html ,就是因为我们定义了一个index
[root@ma-1 ~]# ls /usr/local/apache2.4/htdocs/ 1.php index.html [root@ma-1 ~]#
检查Apache是否支持解析php7
- 在配置文件中,注释掉php5,打开php7
[
root@
ma-1
~
]
# vim
/
usr
/
local
/
apache2
.4
/
conf
/
httpd
.
conf
在文件中搜索
/
libphp7,然后注释掉php5打开php7
# LoadModule php5_module modules
/
libphp5
.
so
LoadModule php7_module modules
/
libphp7
.
so
- 快捷键 ctrl+r ,可以快速执行命令历史中所用过的一些命令
- 在快捷键 ctrl+r 之后,然后输入命令的一些字母,就会显示出你使用过的命令
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl
-
t
Syntax OK
[
root@
ma-1
~
]
#
/
usr
/
local
/
apache2
.4
/
bin
/
apachectl graceful
[
root@
ma-1
~
]
#
- 会看到更换了php7之后,用物理机访问虚拟机的ip,也会正常显示
- 在浏览器打开看到的phpinfo,和/usr/local/php7/bin/php -i |less看到的结果基本是一致的,只不过一个是文本形式,一个是图形化,图形化看起来更加直观,清晰明了
[
root@
ma-1
~
]
#
/
usr
/
local
/
php7
/
bin
/
php
-
i
|
less
phpinfo
(
)
PHP Version
=>
7.1
.
6
System
=>
Linux
ma-1
3.10
.
0
-
123
.
el7
.
x86_64 #
1
SMP Mon Jun
30
12
:
09
:
22
UTC
2014
x86_64
Build Date
=>
Dec
18
2017
22
:
25
:
37
Configure Command
=>
'./configure'
'--prefix=/usr/local/php7'
'--with-apxs2=/usr/local/apache2.4/bin/apxs'
'--with-config-file-path=/usr/local/php7/etc'
'--with-pdo-mysql=/usr/local/mysql'
'--with-mysqli=/usr/local/mysql/bin/mysql_config'
'--with-libxml-dir'
'--with-gd'
'--with-jpeg-dir'
'--with-png-dir'
'--with-freetype-dir'
'--with-iconv-dir'
'--with-zlib-dir'
'--with-bz2'
'--with-openssl'
'--with-mcrypt'
'--enable-soap'
'--enable-gd-native-ttf'
'--enable-mbstring'
'--enable-sockets'
'--enable-exif'
Server API
=>
Command Line Interface
Virtual
Directory Support
=>
enabled
Configuration
File
(
php
.
ini
)
Path
=>
/
usr
/
local
/
php7
/
etc
Loaded Configuration File
=>
(
none
)
Scan
this
dir
for
additional
.
ini files
=>
(
none
)
Additional
.
ini files parsed
=>
(
none
)
PHP API
=>
20160303
PHP Extension
=>
20160303
Zend Extension
=>
320160303
Zend Extension Build
=>
API320160303
,
TS
等等等,只截取了一部分
Apache配置文件
- 为什么可以在htdocs下面中可以访问到 index.html、1.php
- 这是因为在/usr/local/apache2.4/conf/httpd.conf配置文件中的 DocumentRoot 参数,定义了网站的根目录在哪里,域名就是定义的ServerName
[root@ma-1 ~]# vim /usr/local/apache2.4/conf/httpd.conf
在文件中搜索
/htdocs,其中DocumentRoot 定义了文件根目录在哪里
DocumentRoot
"/usr/local/apache2.4/htdocs"
<Directory
"/usr/local/apache2.4/htdocs"
>
搜索
/ServerName,域名就是定义的ServerName ,只不过这个ServerName
,,可以使用任何一个域名去访问它,比如可以使用IP可以访问,使用example
.com可以访问,用www也可以去访问它
ServerName www
.example
.com
:
80