11 .2 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(
11.6 MariaDB安装
11.7/11.8/11.9 Apache安装
扩展
apache dso :https://yq.aliyun.com/articles/6298
apache apxs :http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/programs/apxs.html
apache工作模式 : https://blog.csdn.net/STFPHP/article/details/52954303
11.6 MariaDB安装
1.下载mariaDB
[root@linux-5 ~]# cd /usr/local/src/[root@linux-5 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
2.解压
[root@linux-5 src]# tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
3.将目录重命名
[root@linux-5 src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
[root@linux-5 src]# cd /usr/local/mariadb/
[root@linux-5 mariadb]# ls
bin data include mysql-test share
COPYING DESTINATION INSTALL-BINARY README.md sql-bench
COPYING.thirdparty docs lib README-wsrep support-files
CREDITS EXCEPTIONS-CLIENT man scripts
4.创建mysql用户
[root@linux-5 mysql]# useradd -s /sbin/nologin mysql
5.创建存放数据库的目录
[root@linux-5 mysql]# mkdir /data
6.初始化
[root@linux-5 mariadb]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb //--user=mysql定义mysql身份运行//--basedir=/usr/local/mariadb 定义mariadb的安装目录,这里如果不定义mariadb的目录有可能系统会去找之前安装的mysql的目录//--datadir=/data/mariadb定义存放数据库的目录
[root@linux-5 mariadb]# echo $? 0
7.配置文件
Mariadb的配置文件也在/user/local/mariadb/support-files/目录下,和mysql有一定区别,这个目录下有好几个配置模板
[root@linux-5 mariadb]# ls /usr/local/mariadb/support-files/
binary-configure my-innodb-heavy-4G.cnf my-small.cnf mysql.server wsrep_notify
magic my-large.cnf mysqld_multi.server policy
my-huge.cnf my-medium.cnf mysql-log-rotate wsrep.cnf
my-huge.cnf;my-large.cnf;my-medium.cnf;my-small.cnf这些配置文件的区别就在于缓存数字的大小不一样,这些值是根据内存的大小指定合适的缓存,这样会让mysql达到一个更高效的性能。我们做实验内存是1G 拷贝my-small.cnf就可以,如果你的内存有几十G,可以拷贝my-huge.cnf,再根据实际情况适当调整这些参数。
(1)拷贝配置文件
[root@linux-5 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf //为了和之前mysql的配置文件区别,将配置文件路径修改下。
(2)修改配置文件
[root@linux-5 ~]# vim /usr/local/mariadb/my.cnf
添加basedir和datadir
[mysqld]
basedir = /usr/local/mariadb //mariadb安装目录
datadir = /data/mariadb //存放数据库目录
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K
注:如果不添加数据库的存储目录,仅仅在在系统中存在其他数据库时(如MySQL),则mariadb数据库会使用之前数据库中的配置文件里面的数据库的存储目录
8.拷贝启动脚本
[root@linux-5 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb
(1)修改启动脚本
[root@linux-5 ~]# vim /etc/init.d/mariadb
需要修改2个地方
basedir=/usr/local/mariadb //存放mariadb的目录
datadir=/data/mariadb //存放数据库的目录
conf=$basedir/my.cnf //指定配置文件的路径
并且在开始启动脚本中添加上面修改的配置文件路径
(2)启动脚本
[root@linux-5 ~]# /etc/init.d/mariadb start
Starting mariadb (via systemctl): [ 确定 ]
这里要注意:之前安装过mysql,所以在安装mariadb的时候,要先关闭mysqld服务,在启动脚本中指定了配置文件路径conf,并将添加到启动脚本中,如果之前没有装过mysql,可以直接将配置文件拷贝到/etc/my.cnf,启动脚本中也不用指定配置文件路径。
11.7/11.8/11.9 Apache安装
1.下载apache和apr、apr-util
• Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache
• Apache官网www.apache.org
• wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
• wget http://mirrors.hust.edu.cn/apache/apr/apr-1.6.3.tar.gz
• wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.5.4.tar.gz
• wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
• apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)
• tar zxvf httpd-2.4.27.tar.gz
• tar zxvf apr-util-1.5.4.tar.gz
• tar zxvf apr-1.5.2.tar.gz
• cd /usr/local/src/apr-1.5.2
• ./configure --prefix=/usr/local/apr
• make && make install
• cd /usr/local/src/apr-util-1.5.4
• ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
• make && make install
• cd /usr/local/src/httpd-2.4.27
• ./configure \ //这里的反斜杠是脱义字符,加上它我们可以把一行命令写成多行
--prefix=/usr/local/apache2.4 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-so \ #支持扩展模块 动态扩展模块
--enable-mods-shared=most #支持绝大多数,常用的模块都加进来
• make && make install
• ls /usr/local/apache2.4/modules
• /usr/local/apache2.4/bin/httpd -M //查看加载的模块
2.解压
[root@linux-5 src]# tar zxvf apr-1.6.3.tar.gz[root@linux-5 src]# tar jxvf apr-util-1.6.1.tar.bz2[root@linux-5 src]# tar zxvf httpd-2.4.29.tar.gz
3.安装apr
[root@linux-5 src]# cd apr-1.6.3
[root@linux-5 apr-1.6.3]# ./configure --prefix=/usr/local/apr //初始化
…
[root@linux-5 apr-1.6.3]# echo $? //检查初始化是否正确0
编译make
[root@linux-5 apr-1.6.3]# make
[root@linux-5 apr-1.6.3]# echo $? //检查编译是否正确0
编译安装 make install
[root@linux-5 apr-1.6.3]# make install
…
[root@linux-5 apr-1.6.3]# echo $? //检查编译安装是否正确0
[root@linux-5 apr-1.6.3]# ls /usr/local/apr
bin build-1 include lib
4.安装apr-util
[root@linux-5 apr-1.6.3]# cd /usr/local/src/apr-util-1.6.1/
初始化
[root@linux-5 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@linux-5 apr-util-1.6.1]# echo $?0
编译make
[root@linux-5 apr-util-1.6.1]# make
…
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
编译报错,需要安装expat-devel包
[root@linux-5 apr-util-1.6.1]# yum install -y expat-devel
然后重新编译 make
…
[root@linux-5 apr-util-1.6.1]# echo $?0
编译安装 make install
[root@linux-5 apr-util-1.6.1]# make install
[root@linux-5 apr-util-1.6.1]# echo $?0
apr/ bin/ games/ lib/ libexec/ mysql/ share/
[root@linux-5 apr-util-1.6.1]# ls /usr/local/apr-util/
bin include lib
5.安装apache
(1)初始化
[root@linux-5 apr-util-1.6.1]# cd /usr/local/src/httpd-2.4.33/
[root@linux-5 httpd-2.4.33]# ./configure \ //这里的反斜杠是脱义字符,加上它我们可以把一行命令写成多行
--prefix=/usr/local/apache2.4 \ //指定安装路径
--with-apr=/usr/local/apr \ //指定apr
--with-apr-util=/usr/local/apr-util \ //指定apr-util
--enable-so \
//支持动态模块 ;表示启用DSO,意思是把某些功能以模块的形式展现出来,一个功能模块就是一个.so文件,编译完会看到这些文件。
--enable-mods-shared=most //指定模块most;most绝大多数功能模块
这里出现一个错误:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
可以用yum list来查找缺少那个包
[root@linux-5 httpd-2.4.33]# yum list |grep pcre
pcre.x86_64 8.32-15.el7_2.1 @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.x86_64 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
[root@linux-5 httpd-2.4.33]# yum install -y pcre-devel
(2)然后重新编译参数
[root@linux-5 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
[root@linux-5 httpd-2.4.33]# echo $?0
(3)编译make&&安装make install
[root@linux-5 httpd-2.4.33]# make
此时编译出现一个错误
经查询相关资料后,将apr-util重新初始化并编译一次即可解决。
再次重新编译并安装apache
[root@linux-5 httpd-2.4.33]# make[root@linux-5 httpd-2.4.33]# make install
[root@linux-5 apr-util-1.5.2]# cd /usr/local/apache2.4/
[root@linux-5 apache2.4]# ls
bin build cgi-bin conf error htdocs icons include logs man manual modules
这里介绍一个进程用到的目录
bin :可执行文件的目录
conf:配置文件的目录
htdocs:默认访问网站的目录
logs:日志文件的目录
modules:存放动态模块的目录;也就是.so文件,每一个模块就代表这一个功能
启动/停止apache
[root@linux-5 apache2.4]# /usr/local/apache2.4/bin/apachectl start[root@linux-5 apache2.4]# /usr/local/apache2.4/bin/apachectl stop
查看apache都加载了那些模块
[root@linux-5 apache2.4]# /usr/local/apache2.4/bin/apachectl -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::fdb8:14ca:d41b:3dc8. Set the 'ServerName' directive globally to suppress this message
Loaded Modules: //这里不用管它
core_module (static) //static 表示静态模块
so_module (static)
http_module (static)
mpm_event_module (static)
authn_file_module (shared) //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)
动态和静态模块的区别:静态模块(static)直接和主程序(/usr/local/apache2.4/bin/httpd)绑定在一起,动态模块(shared)都是一个个独立存在的文件(moudles目录下面的.so文件)这些动态模块不会全部加载,如果想用哪个动态模块,直接在配置文件里面配置即可。
yum install expat-devel yum -y install pcre-devel yum install -y epel-release yum install -y libmcrypt-devel
tar zxvf apr-1.6.3.tar.gz
./configure --prefix=/usr/local/apr
make && make install
tar zxvf apr-util-1.6.1.tar.gz
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
tar zxvf httpd-2.4.34.tar.gz
./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
make && make install netstat -lntp
/usr/local/apache2.4/bin/apachectl start 启动
ps au x |grep httpd
netstat -lntp
PHP5
tar zxvf php-5.6.30.tar.gz
./configure --prefix=/usr/local/php --with-apr-util --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
make && make install
PHP7
tar jxvf php-7.1.6.tar.bz2
./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 && make install
核心启动文件
[root@localhost php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf #想选用PHP版本这里改 不想弄那个就注释掉
LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so
[root@localhost apache2.4]# ls conf/ #配置文件目录
extra httpd.conf magic mime.types original
[root@localhost apache2.4]# ls htdocs/ #默认的网站在这个目录
index.html
[root@localhost apache2.4]# ls logs/ #日志
[root@localhost apache2.4]# ls modules/ #扩展模块
/usr/local/apache2.4/bin/httpd -M #apache 加载了那些模块
[root@localhost apache2.4]# /usr/local/apache2.4/bin/httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. 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)
/usr/local/php/bin/php -m # 查看PHP 5加载了那些模块
/usr/local/php7/bin/php -m #查看PHP7 加载模块
ls -l /usr/local/apache2.4/modules/libphp5.so #aoache模块文件
/usr/local/php/bin/php -i |less #查看PHP 编译参数
find / -name 'php.ini*'
cd /usr/local/src/php-5.6.30
cp php.ini-production /usr/local/php/etc/php.ini
/usr/local/src/php-5.6.30/php.ini-production #生产环境
/usr/local/src/php-5.6.30/php.ini-development #开发环境
ls /usr/local/apache2.4/modules/libphp7.so # 查看modules7.so
/usr/local/apache2.4/modules/libphp7.so
du -sh /usr/local/apache2.4/modules/libphp7.so #查看7.so大小
/usr/local/apache2.4/bin/apachectl graceful #重新加载配置文件
十周第一次课
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
php中mysql,mysqli,mysqlnd,pdo到底是什么
http://blog.csdn.net/u013785951/article/details/60876816
查看编译参数 http://ask.apelearn.com/question/1295
11.10/11.11/11.12 安装PHP5
• PHP官网www.php.net
• 当前主流版本为5.6/7.1
下载PHP5.6安装包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
解压安装包
tar jxvf php-5.6.32.tar.bz2
初始化
cd /usr/local/src/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
//--prefix=/usr/local/php 指定安装目录//--with-apxs2=/usr/local/apache2.4/bin/apxs 自动在httpd上配置PHP模块//--with-config-file-path=/usr/local/php/etc 指定PHP配置文件所在路径(PHP配置文件后缀为.ini)// --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-
mysqli=/usr/local/mysql/bin/mysql_config 三种连接MySQL的驱动
在初始化时出现一个错误
通过报错信息判断是缺少libxml2-devel(库)类型的安装包,也可通过命令做进一步确认(安装PHP时一般都会缺少各种各样的库文件)
yum list |grep xml2
第二个错误
第三个错误(yum安装的包应为小写)
第四个错误
[root@linux-5 php-5.6.32]# yum install -y libjpeg-turbo-devel.x86_64
第五个错误
第六个错误
第七个错误(这是基于epel扩展源的包,需要先安装epel扩展源)
看到此标识,说明已经初始化成功(以防万一可用echo $?进行检查)
将PHP配置文件模板拷贝至初始化规定的配置文件路径下
cp php.ini-production(development)/usr/local/php/etc/php.ini
//production为生产环境,development为测试开发环境
第一次安装PHP时所需要的包汇总
libxml2-developenssl-develbzip2-devellibjpeg-turbo-devel.x86_64libpng-devel.x86_64freetype-devel.x86_64libmcrypt-devel.x86_64(需要先安装epel扩展源)
编译&&安装PHP5
make
make install
在LAMP架构中,Apache所需要PHP中的模块文件是/usr/local/apache2.4/modules/libphp5.so,PHP的作用是将php5_module模块安装在Apache上帮助Apache进行一些通信,因此LAMP中的PHP无需启动也可正常工作
[root@linux-5 php-5.6.32]# /usr/local/apache2.4/bin/httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::531b:14ea:3a75:f113. 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)
alias_module (shared)
php5_module (shared)
Apache的配置文件/usr/local/apache2.4/conf/httpd.conf
配置文件可随用随取,被注释掉的模块都不会显示,也不会加载该模块。
11.13 安装PHP7
下载PHP7.1安装包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
解压安装包
tar jxvf php-7.1.6.tar.bz2
初始化
./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
编译&&安装PHP7
make
make install
注:一个机器中可以同时安装两个PHP,但是要配置好Apache调用哪一个PHP,避免混乱,可去Apache的配置文件/usr/local/apache2.4/conf/httpd.conf中进行修改
配置httpd支持phphp
十周第二次课
11.14/11.15 Apache和PHP结合
11.16/11.17 Apache默认虚拟主机
11.14/11.15 Apache和PHP结合
• httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
• vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
1 ServerName去#
2 Require all denied 改》equire all granted #改掉就不会显
示403
3 AddType application/x-httpd-php .php
4 DirectoryIndex index.html index.php
• /usr/local/apache2.4/bin/apachectl -t //测试语法
/usr/local/apache2.4/bin/apachectl graceful //重新加载
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
• /usr/local/apache2.4/bin/apachectl start //启动服务
• netstat -lntp
• curl localhost
• vi /usr/local/apache2.4/htdocs/1.php //增加如下内容
<?php
phpinfo();
?>
•curl localhost/1.php
修改Apache(httpd)主配置文件
定义ServerName以消除Apache启动时所产生的警告
未修改前
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::531b:14ea:3a75:f113. Set the 'ServerName' directive globally to suppress this message
httpd (pid 5756) already running
定义ServerName
完成修改后
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl restart[root@linux-5 ~]#
打开服务器的80端口
[root@linux-5 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
测试连接Apache服务器
修改配置文件以防止打开虚拟主机配置文件时拒绝访问(访问时提示403)
<Directory />
AllowOverride none
Require all granted //将denied改为granted
</Directory>
...
DocumentRoot "/usr/local/apache2.4/htdocs"
<Directory "/usr/local/apache2.4/htdocs">
...
Require all granted //将denied改为granted
</Directory>
检查配置文件语法
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
重新加载配置文件
[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl graceful
修改配置文件以用于解析PHP文件
增加PHP的索引页
增加索引页可以直接输入域名或IP,后自动跳转至索引页,无需单独输入
编写PHP测试脚本
[root@linux-5 ~]# vim /usr/local/apache2.4/htdocs/test.php
<?php
phpinfo();
?>
//该脚本用于打印PHP版本信息
注:增加PHP文件无需重启服务
测试PHP解析效果
上图为成功解析PHP脚本文件的效果,如果不支持解析,则会产生如下结果
Tips:使用ctrl+r可以快速查找并使用历史命令
11.16/11.17 Apache默认虚拟主机
定义
不同的主机名解析到不同的IP地址,提供虚拟主机服务的机器上同时设置有这些IP地址。服务器根据用户请求的目的IP地址来判定用户请求的是哪个虚拟主机的服务,从而进一步的处理。(默认虚拟主机只能定义单一域名,且为使用该服务器IP所跳转的唯一Apache站点,所有域名均会跳转至唯一定义的DocumentRoot下的网站根目录,一个配置文件只能定义一个Severname)
一台服务器可以访问多个网站,每个网站都是一个虚拟主机
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
修改Windows系统上的hosts
路径C:\Windows\System32\drivers\etc\hosts
由于默认虚拟主机只能使所有域名指向同一网站根目录,不易于管理,因此可以打开虚拟主机配置文件,使得不同域名可以跳转至不同网站。
打开虚拟主机配置文件
编辑虚拟主机配置文件
[root@linux-5 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
# Virtual Hosts
...
<VirtualHost *:80> //可定义多个虚拟主机(当前第一个)
ServerAdmin webmaster@dummy-host.example.com//管理员邮箱,可不填写
DocumentRoot "/data/wwwroot/abc.com" //网站的根目录
ServerName abc.com//网站(服务器)名称,唯一
ServerAlias www.abc.com www.123.com //网站(服务器)别名,可多个
ErrorLog "logs/abc.com-error_log" //错误日志
CustomLog "logs/abc.com-access_log" common //访问日志
</VirtualHost>
<VirtualHost *:80> //可定义多个虚拟主机(当前第二个)
ServerAdmin webmaster@dummy-host2.example.com//管理员邮箱,可不填写
DocumentRoot "/data/wwwroot/def.com" //网站的根目录
ServerName def.com//网站(服务器)名称,唯一
ServerAlias www.def.com www.456.com //网站(服务器)别名,可多个
ErrorLog "logs/def.com-error_log" //错误日志
CustomLog "logs/def.com-access_log" common //访问日志
</VirtualHost>
注:一旦虚拟主机配置文件生效,则默认主机配置的文件定义的内容会失效
重新加载服务
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
在虚拟主机配置文件中不能在代码后添加注释,否则会引起报错
创建相应的网站目录
[root@linux-5 ~]# mkdir /data/wwwroot/[root@linux-5 ~]# mkdir /data/wwwroot/abc.com[root@linux-5 ~]# mkdir /data/wwwroot/def.com
创建相应目录下的网站文件
[root@linux-5 ~]# vim /data/wwwroot/abc.com/index.php<?phpecho "abc.com";
[root@linux-5 ~]# vim /data/wwwroot/def.com/index.php<?phpecho "def.com";
测试网站效果
curl -x //发送网络请求,-x选项为网络请求增加代理,相当于hosts的作用
[root@linux-5 ~]# curl -x 192.168.88.5:80 abc.comabc.com[root@linux-5 ~]#
[root@linux-5 ~]# curl -x 192.168.88.5:80 def.comdef.com[root@linux-5 ~]#
在测试过程中使用的是两个虚拟主机,则第一个虚拟主机则是Apache服务的默认虚拟主机,无论访问哪个域名(其他虚拟主机定义的域名除外),只要指向了服务器的IP地址,都会跳转至默认虚拟主机。我们实验所使用的Linux虚拟机,在其上安装的Apache服务的主配置文件,相当于实体主机,也是默认主机,只能指定一个域名,访问单一目录下的文件。
vim /usr/local/apache2.4/conf/httpd.conf
PHP7 加#
153 LoadModule php5_module modules/libphp5.so
154 #LoadModule php7_module modules/libphp7.so
windows 安装 telnet
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Require all granted
PHP没解析 检查
1 /usr/local/apache2.4/bin/apachectl -M
2 ls /usr/local/apache2.4/modules/libphp5.so 差看有没有这个文件
3检查
4检查
5 检查
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本