LAMP架构(Ⅰ)
一、LAMP架构介绍
LAMP:Linux+Apache(httpd)+Maridb(Mysql)+PHP,常用来搭建动态网站或者服务器的开源软件。
习惯上,apache一般是指httpd,当然Apache还有很多的其他软件。Appache是最常用的web服务软件,而MYSQL是比较小型的数据库软件,MySQL存储用户名;密码和数据、图片之类的放在静态文件里。 这两个软件及PHP都可以安装到windows机器上。
Apache和PHP需要安装到同一台机器上,因为PHP是作为Apache的一个模块存在的,两个必须在一起
二、MySQL_MariaDB介绍
三、MySQL安装
3.1下载MySQL软件包
[root@ying01 ~]# uname -i x86_64 [root@ying01 ~]# cd /usr/local/src/ [root@ying01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz --2018-06-23 11:57:00-- http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 正在解析主机 mirrors.sohu.com (mirrors.sohu.com)... 221.236.12.140 正在连接 mirrors.sohu.com (mirrors.sohu.com)|221.236.12.140|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:316320366 (302M) [application/octet-stream] 正在保存至: “mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz”
3.2 初始化Mysql
把之前下载的包,解压
[root@ying01 src]# ls httpd-2.4.33 httpd-2.4.33.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@ying01 src]# tar zxf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz //解压包 [root@ying01 src]# ls /usr/local //准备放到这个目录下 bin etc games include lib lib64 libexec sbin share src [root@ying01 src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql //移到usr/local下,且改为mysql名称 [root@ying01 src]# cd /usr/local/mysql/ [root@ying01 mysql]# ls bin COPYING data docs include lib man mysql-test README scripts share sql-bench support-files [root@ying01 mysql]# useradd mysql //增加mysql用户
需要创建数据库目录,这里/data/已经存在,那就直接初始化;
[root@ying01 mysql]# ls /data/ //data目录存在,就不用再创建 mariadb mysql wwwroot yumdata [root@ying01 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
发现上面有错误,缺少Perl模块,缺少Dumper的支持;谷歌查询安装如下包
[root@ying01 mysql]# yum install -y perl-Data-Dumper 已加载插件:fastestmirror
再次初始化mysql
[root@ying01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 安装信息省略 [root@ying01 mysql]# echo $? //检查上步是否正确,0位正确 0
3.3 配置文件
首先复制配置文件mysql的模板配置文件my-default.cnf,但是系统自带已经存在,我们只需要修改一下即可;
[root@ying01 mysql]# ls support-files/ //放置配置文件和启动脚本的目录 binary-configure magic my-default.cnf mysqld_multi.server mysql-log-rotate mysql.server [root@ying01 mysql]# ls support-files/my-default.cnf //这个是mysql的模板配置文件 support-files/my-default.cnf [root@ying01 mysql]# vim support-files/my-default.cnf [root@ying01 mysql]# cp support-files/my-default.cnf /etc/my.cnf^C //按道理要复制到其他地方,但是已经存在,不执行,看下一步; [root@ying01 mysql]# ls /etc/my.cnf //这里有自带的配置文件my.cnf /etc/my.cnf [root@ying01 mysql]# rpm -qf /etc/my.cnf //查看这个配置文件的来源 mariadb-libs-5.5.56-2.el7.x86_64 //发现来自mariadb [root@ying01 mysql]# vim /etc/my.cnf
按下图更改配置文件my.cnf;
启动脚本
[root@ying01 mysql]# ls support-files/ //mysql的启动脚本也在此目录下 binary-configure magic my-default.cnf mysqld_multi.server mysql-log-rotate mysql.server [root@ying01 mysql]# cp support-files/mysql.server /etc/init.d/mysqld //把mysql.server复制到mysqld这个新目录 [root@ying01 mysql]# vim !$ //编辑此脚本文件 vim /etc/init.d/mysqld ..... //下面为在编辑mysqld下 basedir=/usr/local/mysql //指定mysql 的程序目录 datadir=/data/mysql //指定日期目录
定义mysqld为755权限;
[root@ying01 mysql]# ls -l !$ //查看权限是不是755 ls -l /etc/init.d/mysqld -rwxr-xr-x 1 root root 10592 6月 24 08:16 /etc/init.d/mysqld
增加到系统列表服务:chkconfig --add mysqld
[root@ying01 mysql]# chkconfig --add mysqld [root@ying01 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:关
3.4 启动与关闭服务
**常规启动 **
[root@ying01 mysql]# /etc/init.d/mysqld start^C [root@ying01 mysql]# service mysqld start Starting MySQL.Logging to '/data/mysql/ying01.err'. SUCCESS!
用命令行启动
[root@ying01 mysql]# service mysqld stop //关闭服务 Shutting down MySQL.. SUCCESS! [root@ying01 mysql]# !ps //查看进程,已经关闭 ps aux |grep mysql root 2932 0.0 0.0 112720 984 pts/0 S+ 08:57 0:00 grep --color=auto mysql [root@ying01 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/ & [1] 3018 //用命令行启动,需要加上&,把它放入后台 [root@ying01 mysql]# 180624 09:05:50 mysqld_safe Logging to '/data/mysql/ying01.err'. 180624 09:05:50 mysqld_safe Starting mysqld daemon with databases from /data/mysql [root@ying01 mysql]# !ps //查看进程,已经开启 ps aux |grep mysql root 3018 0.0 0.0 113304 1604 pts/0 S 09:05 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/ //此进程,为我们之前的命令行 mysql 3143 0.4 23.9 1300828 449568 pts/0 Sl 09:05 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/ying01.err --pid-file=/data/mysql/ying01.pid --socket=/tmp/mysql.sock root 3175 0.0 0.0 112720 984 pts/0 R+ 09:08 0:00 grep --color=auto mysql [root@ying01 mysql]# !net //查看网络链接,有3306端口,说明mysql启动成功 netstat -lntp 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 690/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 928/master tcp6 0 0 :::22 :::* LISTEN 690/sshd tcp6 0 0 ::1:25 :::* LISTEN 928/master tcp6 0 0 :::3306 :::* LISTEN 3143/mysqld
用killall 杀进程,尽量不要用kill PID
[root@ying01 mysql]# killall mysqld //杀死进程 [root@ying01 mysql]# 180624 09:13:20 mysqld_safe mysqld from pid file /data/mysql/ying01.pid ended [root@ying01 mysql]# !ps ps aux |grep mysql root 3224 0.0 0.0 112720 984 pts/0 S+ 09:14 0:00 grep --color=auto mysql [1]+ 完成 /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/ [root@ying01 mysql]# !ps //查看进程 ps aux |grep mysql root 3226 0.0 0.0 112720 984 pts/0 S+ 09:14 0:00 grep --color=auto mysql
四、MariaDB安装
MariaDB和mysql同源,因此安装方式也是一模一样的;
下载MariaDB包
[root@ying01 ~]# cd /usr/local/src/ [root@ying01 src]# ls httpd-2.4.33 httpd-2.4.33.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@ying01 src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz --2018-06-24 09:21:00-- https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 正在解析主机 downloads.mariadb.com (downloads.mariadb.com)... 51.255.94.155, 2001:41d0:1004:249b:: 正在连接 downloads.mariadb.com (downloads.mariadb.com)|51.255.94.155|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:541295045 (516M) [application/octet-stream] 正在保存至: “mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz” 100%[===================================================================================================================>] 541,295,045 723KB/s 用时 12m 12s 2018-06-24 09:33:16 (722 KB/s) - 已保存 “mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz” [541295045/541295045]) [root@ying01 src]# ls httpd-2.4.33 httpd-2.4.33.tar.gz mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@ying01 src]#
解压,并移到/usr/local/mariadb下
[root@ying01 src]# tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz [root@ying01 src]# ls httpd-2.4.33 mariadb-10.2.6-linux-glibc_214-x86_64 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz httpd-2.4.33.tar.gz mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz [root@ying01 src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb //移到local下面 [root@ying01 src]# cd !$ cd /usr/local/mariadb [root@ying01 mariadb]# ls bin COPYING.thirdparty data docs include lib mysql-test README-wsrep share support-files COPYING CREDITS DESTINATION EXCEPTIONS-CLIENT INSTALL-BINARY man README.md scripts sql-bench
初始化,此处和mysql一样
[root@ying01 mariadb]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb 安装省略...... [root@ying01 mariadb]# echo $? //检测上步正确 0
把mariadb的默认配置文件与启动脚本文件复制一份,并改如下名称;
[root@ying01 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf //配置文件,路径和mysql不一样,为了区分 [root@ying01 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb //启动脚本文件
按下图编辑启动脚本文件: vim /etc/init.d/mariadb
启动mariadb服务:/etc/init.d/mariadb start
[root@ying01 mariadb]# ps aux |grep mysql //查看有没有mysql进程,两者会相冲突 root 4324 0.0 0.0 112720 984 pts/0 S+ 11:47 0:00 grep --color=auto mysql [root@ying01 mariadb]# /etc/init.d/mariadb start //启动服务 Reloading systemd: [ 确定 ] Starting mariadb (via systemctl): [ 确定 ] [root@ying01 mariadb]# ps aux |grep mariadb //再次查看进程,确认启动 root 6210 0.0 0.0 115432 1744 ? S 17:36 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mysql --pid-file=/data/mysql/ying01.pid mysql 6326 4.1 2.6 1583932 49724 ? Sl 17:36 0:02 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mysql --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mysql/ying01.err --pid-file=/data/mysql/ying01.pid --socket=/tmp/mysql.sock --port=3306 root 6383 0.0 0.0 112720 980 pts/1 R+ 17:37 0:00 grep --color=auto mariadb [root@ying01 mariadb]# 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 690/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 928/master tcp6 0 0 :::22 :::* LISTEN 690/sshd tcp6 0 0 ::1:25 :::* LISTEN 928/master tcp6 0 0 :::3306 :::* LISTEN 6326/mysqld
- 有个小问题:进程中:--datadir=/data/mysql 这里怎么还是mysql?而不是--datadir=/data/mariadb?
解决:那是因为刚才没有修改配置文件 /usr/local/mariadb/my.cnf;在那里面我们没有指定相应的目录;它会自动加载mysql的配置文件目录;
在配置文件按下图添加目录
先停止服务,在杀掉mysqld进程,再次开启mariadb服务
[root@ying01 ~]# /etc/init.d/mariadb stop Stopping mariadb (via systemctl): [ 确定 ] [root@ying01 ~]# killall mysqld [root@ying01 ~]# ps aux |grep mariadb root 2368 0.0 0.0 112720 980 pts/0 S+ 09:58 0:00 grep --color=auto mariadb [root@ying01 ~]# /etc/init.d/mariadb start Starting mariadb (via systemctl): [ 确定 ] [root@ying01 ~]# ps aux |grep mariadb root 2394 0.2 0.0 115432 1748 ? S 09:59 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mariadb --pid-file=/data/mariadb/ying01.pid mysql 2513 3.8 2.9 1583832 55896 ? Sl 09:59 0:00 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mariadb --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mariadb/ying01.err --pid-file=/data/mariadb/ying01.pid --socket=/tmp/mysql.sock --port=3306 root 2549 0.0 0.0 112720 980 pts/0 R+ 09:59 0:00 grep --color=auto mariadb [root@ying01 ~]#
请看下图方框,看到比较清楚:
五、Apache安装
5.1 安装前准备工作
分别下载:2.4.33源码包,apr-1.6.3,apr-util-1.6.1;后面两个是通用函数库;
[root@ying01 ~]# cd /usr/local/src [root@ying01 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz --2018-06-24 22:12:15-- http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz 正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:9076901 (8.7M) [application/octet-stream] 正在保存至: “httpd-2.4.33.tar.gz.1” 100%[===================================================================================================================>] 9,076,901 3.37MB/s 用时 2.6s 2018-06-24 22:12:18 (3.37 MB/s) - 已保存 “httpd-2.4.33.tar.gz.1” [9076901/9076901]) [root@ying01 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz --2018-06-24 22:12:41-- http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz 正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:1072661 (1.0M) [application/octet-stream] 正在保存至: “apr-1.6.3.tar.gz” 100%[===================================================================================================================>] 1,072,661 1.41MB/s 用时 0.7s 2018-06-24 22:12:42 (1.41 MB/s) - 已保存 “apr-1.6.3.tar.gz” [1072661/1072661]) [root@ying01 src]# wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2 --2018-06-24 22:13:10-- http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2 正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:428595 (419K) [application/octet-stream] 正在保存至: “apr-util-1.6.1.tar.bz2” 100%[===================================================================================================================>] 428,595 1.01MB/s 用时 0.4s 2018-06-24 22:13:11 (1.01 MB/s) - 已保存 “apr-util-1.6.1.tar.bz2” [428595/428595])
下载完后,查看相应的包
[root@ying01 src]# ls apr-1.6.3.tar.gz httpd-2.4.33 httpd-2.4.33.tar.gz.1 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz apr-util-1.6.1.tar.bz2 httpd-2.4.33.tar.gz mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
依次解压包
[root@ying01 src]# tar zxf httpd-2.4.33.tar.gz [root@ying01 src]# tar zxf apr-1.6.3.tar.gz [root@ying01 src]# tar jxf apr-util-1.6.1.tar.bz2 //注意此包解压方式与其他两个不同 [root@ying01 src]# ls apr-1.6.3 httpd-2.4.33.tar.gz apr-1.6.3.tar.gz httpd-2.4.33.tar.gz.1 apr-util-1.6.1 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz apr-util-1.6.1.tar.bz2 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz httpd-2.4.33
5.2 安装apr-1.6.3
定义到apr-1.6.3目录下,
[root@ying01 src]# cd apr-1.6.3/ [root@ying01 apr-1.6.3]# ls apr-config.in build-outputs.mk helpers misc strings apr.dep CHANGES include mmap support apr.dsp CMakeLists.txt libapr.dep network_io tables apr.dsw config.layout libapr.dsp NOTICE test apr.mak configure libapr.mak NWGNUmakefile threadproc apr.pc.in configure.in libapr.rc passwd time apr.spec docs LICENSE poll tools atomic dso locks random user build emacs-mode Makefile.in README buildconf encoding Makefile.win README.cmake build.conf file_io memory shmem
安装包: ./configure --prefix=/usr/local/apr
[root@ying01 apr-1.6.3]# ./configure --prefix=/usr/local/apr 省略 配置检测..... [root@ying01 apr-1.6.3]# echo $? //检查上步是否正确 0代表正确 0
执行 make && make install
[root@ying01 apr-1.6.3]# make && make install
5.3 安装apr-util-1.6.1
[root@ying01 apr-1.6.3]# ls /usr/local/apr/ bin build-1 include lib [root@ying01 apr-1.6.3]# cd ../apr-util-1.6.1/ [root@ying01 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
执行 make && make install
[root@ying01 apr-util-1.6.1]# make && make install
此时发现错误,缺少expat.h包
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 [root@ying01 apr-util-1.6.1]#
执行 yum install -y expat*
[root@ying01 apr-util-1.6.1]# yum install -y expat* 已加载插件:fastestmirror base
再次 make && make install
[root@ying01 apr-util-1.6.1]# make && make install See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /usr/bin/install -c -m 644 aprutil.exp /usr/local/apr-util/lib /usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util/bin/apu-1-config [root@ying01 apr-util-1.6.1]# echo $? 0 [root@ying01 apr-util-1.6.1]# ls /usr/local/apr-util/ bin include lib
5.4 安装apache2.4
先定义到 httpd-2.4.33/目录下
[root@ying01 apr-util-1.6.1]# cd .. [root@ying01 src]# ls apr-1.6.3 apr-util-1.6.1 httpd-2.4.33 httpd-2.4.33.tar.gz.1 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz apr-1.6.3.tar.gz apr-util-1.6.1.tar.bz2 httpd-2.4.33.tar.gz mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz [root@ying01 src]# cd httpd-2.4.33/
执行安装
[root@ying01 httpd-2.4.33]# ./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/ [root@ying01 httpd-2.4.33]# echo $? //报错 1
此处报错,按提示,我们查找安装包:yum list |grep pcre
[root@ying01 httpd-2.4.33]# yum list |grep pcre pcre.x86_64 8.32-17.el7 @anaconda ghc-pcre-light.x86_64 0.4-13.el7 epel ghc-pcre-light-devel.x86_64 0.4-13.el7 epel mingw32-pcre.noarch 8.38-1.el7 epel mingw32-pcre-static.noarch 8.38-1.el7 epel mingw64-pcre.noarch 8.38-1.el7 epel mingw64-pcre-static.noarch 8.38-1.el7 epel pcre.i686 8.32-17.el7 base pcre-devel.i686 8.32-17.el7 base pcre-devel.x86_64 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
安装 yum install -y pcre-devel
[root@ying01 httpd-2.4.33]# yum install -y pcre-devel 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * epel: mirror01.idc.hinet.net * extras: mirrors.aliyun.com * updates: centos.ustc.edu.cn
再次配置
[root@ying01 httpd-2.4.33]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most 省略....... Server Version: 2.4.33 Install prefix: /usr/local/apache2.4 C compiler: gcc -std=gnu99 CFLAGS: -g -O2 -pthread CPPFLAGS: -DLINUX -D_REENTRANT -D_GNU_SOURCE LDFLAGS: LIBS: C preprocessor: gcc -E [root@ying01 httpd-2.4.33]# echo $? //配置成功 0
执行make
[root@ying01 httpd-2.4.33]# make
执行make install
[root@ying01 httpd-2.4.33]# make install
安装成功,查看apache2.4目录下的目录
[root@ying01 httpd-2.4.33]# cd /usr/local/apache2.4/ [root@ying01 apache2.4]# ls bin build cgi-bin conf error htdocs icons include logs man manual modules [root@ying01 apache2.4]# ls bin/httpd bin/httpd [root@ying01 apache2.4]# ls -l bin/httpd -rwxr-xr-x 1 root root 2348432 6月 25 11:55 bin/httpd [root@ying01 apache2.4]# du -sh !$ du -sh bin/httpd 2.3M bin/httpd [root@ying01 apache2.4]# ls bin build cgi-bin conf error htdocs icons include logs man manual modules [root@ying01 apache2.4]# ls conf/ extra httpd.conf magic mime.types original [root@ying01 apache2.4]# ls htdocs/ index.html [root@ying01 apache2.4]# ls logs/ [root@ying01 apache2.4]# ls man man1 man8 [root@ying01 apache2.4]# ls modules/ //默认模板 httpd.exp mod_authz_dbd.so mod_deflate.so mod_log_config.so mod_proxy_scgi.so mod_socache_dbm.so mod_access_compat.so mod_authz_dbm.so mod_dir.so mod_log_debug.so mod_proxy.so mod_socache_memcache.so mod_actions.so mod_authz_groupfile.so mod_dumpio.so mod_logio.so mod_proxy_uwsgi.so mod_socache_shmcb.so mod_alias.so mod_authz_host.so mod_env.so mod_macro.so mod_proxy_wstunnel.so mod_speling.so mod_allowmethods.so mod_authz_owner.so mod_expires.so mod_mime.so mod_ratelimit.so mod_ssl.so mod_auth_basic.so mod_authz_user.so mod_ext_filter.so mod_negotiation.so mod_remoteip.so mod_status.so mod_auth_digest.so mod_autoindex.so mod_file_cache.so mod_proxy_ajp.so mod_reqtimeout.so mod_substitute.so mod_auth_form.so mod_buffer.so mod_filter.so mod_proxy_balancer.so mod_request.so mod_unique_id.so mod_authn_anon.so mod_cache_disk.so mod_headers.so mod_proxy_connect.so mod_rewrite.so mod_unixd.so mod_authn_core.so mod_cache.so mod_include.so mod_proxy_express.so mod_sed.so mod_userdir.so mod_authn_dbd.so mod_cache_socache.so mod_info.so mod_proxy_fcgi.so mod_session_cookie.so mod_version.so mod_authn_dbm.so mod_cgid.so mod_lbmethod_bybusyness.so mod_proxy_fdpass.so mod_session_dbd.so mod_vhost_alias.so mod_authn_file.so mod_dav_fs.so mod_lbmethod_byrequests.so mod_proxy_ftp.so mod_session.so mod_watchdog.so mod_authn_socache.so mod_dav.so mod_lbmethod_bytraffic.so mod_proxy_hcheck.so mod_setenvif.so mod_authz_core.so mod_dbd.so mod_lbmethod_heartbeat.so mod_proxy_http.so mod_slotmem_shm.so
在/apache2.4/bin/目录下
root@ying01 apache2.4]# ls /usr/local/apache2.4/bin/ ab apxs dbmmanage envvars-std htcacheclean htdigest httpd logresolve apachectl checkgid envvars fcgistarter htdbm htpasswd httxt2dbm rotatelogs [root@ying01 apache2.4]# /usr/local/apache2.4/bin/httpd -M AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::16dc:89c:b761:e115. 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)
5.5 启动httpd服务
启动httpd服务:/usr/local/apache2.4/bin/apachectl start
[root@ying01 apache2.4]# /usr/local/apache2.4/bin/apachectl start AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::16dc:89c:b761:e115. Set the 'ServerName' directive globally to suppress this message
查看有关httpd的进程
[root@ying01 apache2.4]# ps aux |grep httpd root 59382 0.0 0.1 95580 2524 ? Ss 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 59383 0.0 0.2 382408 4432 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 59384 0.0 0.2 382408 4432 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 59385 0.1 0.2 382408 4428 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start root 59484 0.0 0.0 112720 984 pts/0 R+ 12:43 0:00 grep --color=auto httpd [root@ying01 apache2.4]# netstat -lntp //80端口就是httpd 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 664/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 800/master tcp6 0 0 :::80 :::* LISTEN 59382/httpd tcp6 0 0 :::22 :::* LISTEN 664/sshd tcp6 0 0 ::1:25 :::* LISTEN 800/mast
configure的命令格式也可以这样书写; \是转义字符,后面可以换行添加多行命令;
[root@ying01 httpd-2.4.33]# ./configure \ > --prefix=/usr/local/apache2.4 \ > --with-apr=/usr/local/apr \ > --with-apr-util=/usr/local/apr-util \ > --enable-so \ > --enable-mods-shared=most
六、安装PHP5
虽然目前最新版本的PHP为PHP7,但是还有批量的PHP5在使用,而且一些论坛软件不支持PHP7,因此也需要掌握PHP5和PHP7;
在/usr/local/src/目录下,下载源码
[root@ying01 apache2.4]# cd /usr/local/src/ [root@ying01 src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
解压 php-5.6.32.tar.bz2
[root@ying01 src]# ls apr-1.6.3 apr-util-1.6.1.tar.bz2 httpd-2.4.33.tar.gz.1 php-5.6.32.tar.bz2 apr-1.6.3.tar.gz httpd-2.4.33 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz apr-util-1.6.1 httpd-2.4.33.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@ying01 src]# du -sh php-5.6.32.tar.bz2 15M php-5.6.32.tar.bz2 [root@ying01 src]# tar -xjf php-5.6.32.tar.bz2
进入php-5.6.32 目录下,进行配置
[root@ying01 src]# cd php-5.6.32/ [root@ying01 php-5.6.32]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --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
执行配置后,发现错误:error: jpeglib.h not found.
checking for T1lib support... no checking whether to enable truetype string function in GD... yes checking whether to enable JIS-mapped Japanese font support in GD... no If configure fails try --with-vpx-dir=<DIR> configure: error: jpeglib.h not found. [root@ying01 php-5.6.32]# echo $? 1
安装 yum install -y libjpeg-devel;安装完后继续配置
[root@ying01 php-5.6.32]# yum install -y libjpeg-devel
有出现错误:error: png.h not found.
checking for jpeg_read_header in -ljpeg... yes configure: error: png.h not found. [root@ying01 php-5.6.32]#
继续按提示安装包;安装完后继续配置
[root@ying01 php-5.6.32]# yum install -y libpng-devel
错误提示:缺少包
If configure fails try --with-xpm-dir=<DIR> configure: error: freetype-config not found. [root@ying01 php-5.6.32]#
继续按提示安装包;安装完后继续配置
[root@ying01 php-5.6.32]# yum install -y freetype-devel
又有错误
configure: error: mcrypt.h not found. Please reinstall libmcrypt. [root@ying01 php-5.6.32]#
若没有安装扩展源,需要安装
[root@ying01 php-5.6.32]# yum install epel-release
已经安装 则,继续安装; 安装完后继续配置
[root@ying01 php-5.6.32]# yum install libmcrypt-devel
终于看到曙光了,出现下面的提示,说明配置成功;
省略...... Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands [root@ying01 php-5.6.32]# [root@ying01 php-5.6.32]# echo $? //检测是否正确 0
然后安装 make 和make install
[root@ying01 php-5.6.32]# make 省略..... Build complete. Don't forget to run 'make test'. [root@ying01 php-5.6.32]# make install
-
查看php5下有哪些模块:/usr/local/php/bin/php -m
[root@ying01 php-5.6.32]# ls /usr/local/php/ bin etc include lib php [root@ying01 php-5.6.32]# ls /usr/local/php/bin/ pear peardev pecl phar phar.phar php php-cgi php-config phpize [root@ying01 php-5.6.32]# du -sh !$ du -sh /usr/local/php/bin/ 71M /usr/local/php/bin/ [root@ying01 php-5.6.32]# du -sh /usr/local/apache2.4/modules/libphp5.so 36M /usr/local/apache2.4/modules/libphp5.so [root@ying01 php-5.6.32]# /usr/local/php/bin/php -m //查看模块 [PHP Modules] bz2 Core ctype date dom ereg exif fileinfo filter gd hash iconv json libxml mbstring mcrypt mysql mysqli openssl pcre PDO pdo_mysql pdo_sqlite Phar posix Reflection session SimpleXML soap sockets SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib
[Zend Modules]
-
前面已经讲过php作为httpd的模块存在;因此php 不需要启动;
我们查看httpd的模块;此时能看到 php5_module (shared)
[root@ying01 php-5.6.32]# /usr/local/apache2.4/bin/httpd -M |tail -5 AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::16dc:89c:b761:e115. Set the 'ServerName' directive globally to suppress this message status_module (shared) autoindex_module (shared) dir_module (shared) alias_module (shared) php5_module (shared) //作为httpd的模块
查看模块libphp5.so文件的权限
[root@ying01 php-5.6.32]# ls -l /usr/local/apache2.4/modules/libphp5.so -rwxr-xr-x 1 root root 37743776 6月 25 13:56 /usr/local/apache2.4/modules/libphp5.so [root@ying01 php-5.6.32]# vim /usr/local/apache2.4/conf/httpd.conf //进入httpd的配置文件
此时为配置文件里面的模块,增减#可以随用随取
LoadModule dir_module modules/mod_dir.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so LoadModule php5_module modules/libphp5.so //能够看到libphp5.so
- php的参考配置文件
[root@ying01 php-5.6.32]# /usr/local/php/bin/php -i |less [root@ying01 php-5.6.32]# ls /usr/local/php/etc pear.conf [root@ying01 php-5.6.32]# cp php.ini-production /usr/local/php/etc/php.ini //参考文件;production适合生产环境;de [root@ying01 php-5.6.32]# /usr/local/php/bin/php -i |less
此时我们能看到已经加载到此配置文件
Virtual Directory Support => enabled Configuration File (php.ini) Path => /usr/local/php/etc Loaded Configuration File => /usr/local/php/etc/php.ini //此时已经加载 Scan this dir for additional .ini files => (none) Additional .ini files parsed => (none)
七、PHP7的安装
在/usr/local/src/目录下,下载php7源码
[root@ying01 src]# wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
解压:tar jxf php-7.1.6.tar.bz2
[root@ying01 src]# tar jxf php-7.1.6.tar.bz2
进入php-7.1.6 目录下,进行配置
[root@ying01 src]# cd php-7.1.6/ [root@ying01 php-7.1.6]#./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
配置完成后,make编译
[root@ying01 php-5.6.32]# make 省略..... Build complete. Don't forget to run 'make test'.
make install安装
[root@ying01 php-7.1.6]# make install
查看php7的模块,和php5 一样
[root@ying01 php-7.1.6]# ls /usr/local/apache2.4/modules/libphp7.so /usr/local/apache2.4/modules/libphp7.so [root@ying01 php-7.1.6]# du -sh !$ du -sh /usr/local/apache2.4/modules/libphp7.so 37M /usr/local/apache2.4/modules/libphp7.so [root@ying01 php-7.1.6]# /usr/local/php7/bin/php -m [PHP Modules] bz2 Core ctype date dom exif fileinfo filter gd hash iconv json libxml mbstring mcrypt mysqli openssl pcre PDO pdo_mysql pdo_sqlite Phar posix Reflection session SimpleXML soap sockets SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules]
查看httpd的模块;此时能看到 php5_module (shared)和 php7_module (shared);再次说明php是作为httpd的模块存在;
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::16dc:89c:b761:e115. 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) php5_module (shared) php7_module (shared)
八、 Apache和PHP结合
Apache(httpd)的主配置文件:/usr/local/apache2.4/conf/httpd.conf
在启动httpd服务的时候,总会有以下警告;通过更改配置文件,可以取消;
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl start AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::16dc:89c:b761:e115. Set the 'ServerName' directive globally to suppress this message //提示,警告的意思 httpd (pid 59382) already running [root@ying01 php-7.1.6]# ps aux |grep httpd //查看httpd进程 root 56216 0.0 0.0 112720 984 pts/0 S+ 17:06 0:00 grep --color=auto httpd root 59382 0.0 0.1 95580 2524 ? Ss 12:42 0:01 /usr/local/apache2.4/bin/httpd -k start daemon 59383 0.0 0.2 382408 4432 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 59384 0.0 0.2 382408 4432 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 59385 0.0 0.2 382408 4428 ? Sl 12:42 0:00 /usr/local/apache2.4/bin/httpd -k start [root@ying01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf
按下图更改配置文件:/usr/local/apache2.4/conf/httpd.conf
这个也需要不要让php7加载,因为不能同时调用两个php
关闭服务,再次启动,就没有加载警告信息
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl stop [root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl start
8.1 修改denied
此时我们无法网页192.168.112.136
此时我们开始排查问题:
第一步:在windows上ping 192.168.112.168 是否通畅;
第二步:IP通畅,那么我们检查端口,先在window启用telnet,只选择客户端,服务端危险;
第三步:开始检查端口;
第四步:iptables -nvL查看无端口,指定80端口
[root@ying01 php-7.1.6]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
第五步:再次用telnet测试端口;
第六步:此时我们再浏览器再访问192.168.112.168
- 探索能够访问的原理
此时能够显示,那是因为在配置文件里面
把 Require all granted 改为Require all denied;保存配置文件
此时我们为了安全起见,不重启配置文件;用以下命令检测配置、加载配置验证;
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t //检查更改配置是否语法错误 Syntax OK [root@ying01 php-7.1.6]# /usr/local/apache2.4//bin/apachectl graceful //加载配置成功
此时我们再浏览器再访问192.168.112.168,显示:禁止访问
在 配置文件httpd.conf 还需要把此处更改为granted;否则会出现403状态码,一般为200;
8.2 解析php
检测配置,加载配置
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@ying01 php-7.1.6]# /usr/local/apache2.4//bin/apachectl graceful
在配置文件里面增加如下内容,意思解析php
添加如下内容,就会直接跳转到主页
新建一个1.php
[root@ying01 php-7.1.6]# vim /usr/local/apache2.4/htdocs/1.php 以下为内容 <?php phpinfo(); //打印php的所有函数 ?>
此时我们再浏览器中,看是否解析PHP (在配置中增加内容,不需要重启php)
php能够支持解析;那么把它加上#,代表不加载
#AddType application/x-httpd-php .php
检查,加载配置文件httpd.conf
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
此时打开浏览器,我们发现不解析php,只是源代码;
8.3 加载php7
因为php7与php5不能同时加载,此时需要在httpd.con的配置文件中,把php7模块加载,把php5注释掉;
#LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so
检查,加载配置文件httpd.conf
[root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
此时再次通过浏览器,查看
九、Apache默认虚拟主机
9.1 windows下host用法
第一步:按下图找到host文件
第二步:按下图添加域名;
第三步:ping 设置的域名是否通畅;
Microsoft Windows [版本 10.0.17134.112] (c) 2018 Microsoft Corporation。保留所有权利。 C:\Users\zqsgq>www.abc.com 'www.abc.com' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:\Users\zqsgq>ping www.abc.com 正在 Ping www.abc.com [192.168.112.136] 具有 32 字节的数据: 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 192.168.112.136 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms C:\Users\zqsgq>ping test.com 正在 Ping www.abc.com [192.168.112.136] 具有 32 字节的数据: 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 192.168.112.136 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms C:\Users\zqsgq>ping ying.com 正在 Ping www.abc.com [192.168.112.136] 具有 32 字节的数据: 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间=1ms TTL=64 来自 192.168.112.136 的回复: 字节=32 时间<1ms TTL=64 192.168.112.136 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 1ms,平均 = 0ms C:\Users\zqsgq>
第四步:在浏览器访问域名
9.2 linux下配置虚拟主机
第一步:编辑配置文件httpd.conf,去掉以下的#号,使虚拟主机的配置文件生效
# Virtual hosts Include conf/extra/httpd-vhosts.conf //去掉#号 加载虚拟主机的配置文件
第二步:进入虚拟主机配置文件中;
以下内容需要更改
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com //定义管理员的邮箱 DocumentRoot "/usr/local/aprche2.4/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error_log" CustomLog "logs/dummy-host.example.com-access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/usr/local/aprche2.4/docs/dummy-host2.example.com" ServerName dummy-host2.example.com ErrorLog "logs/dummy-host2.example.com-error_log" CustomLog "logs/dummy-host2.example.com-access_log" common </VirtualHost>
更改为以下内容:
<VirtualHost *:80> DocumentRoot "/data/wwwroot/abc.com" //定义网站的根目录 ServerName abc.com //定义域名,只能写1个 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>
第三步: 创建和虚拟主机对应的站点根目录,以及新建相应index.php
[root@ying01 php-7.1.6]# mkdir /data/wwwroot/ [root@ying01 php-7.1.6]# mkdir /data/wwwroot/abc.com [root@ying01 php-7.1.6]# mkdir /data/wwwroot/111.com [root@ying01 php-7.1.6]# vim /data/wwwroot/abc.com/index.php [root@ying01 php-7.1.6]# vim /data/wwwroot/111.com/index.php [root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t //需要检查配置语法 [root@ying01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful //需要加载
第四步:ping 设置的www.abc.com,此时明显是外网的域名;
[root@ying01 wwwroot]# ping www.abc.com PING abc.com (199.181.132.250) 56(84) bytes of data. 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=1 ttl=128 time=176 ms 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=2 ttl=128 time=160 ms ^C --- abc.com ping statistics --- 3 packets transmitted, 2 received, 33% packet loss, time 8490ms rtt min/avg/max/mdev = 160.519/168.407/176.296/7.899 ms
第五步:用curl -x192.168.112.136:80 abc.com 来测试
[root@ying01 wwwroot]# curl -x192.168.112.136:80 abc.com abc.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 www.abc.com //指向abc.com abc.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 www.qq.com //qq都指向abc.com abc.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 www.126.com abc.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 www.example.com //这个别名,指向111.com 111.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 www.111.com //www.111.com因为不是设置的所有指向abc.com abc.com[root@ying01 wwwroot]# curl -x192.168.112.136:80 111.com