第十七课预习笔记

11.1 LAMP架构介绍

LAMP实际上是一个简写,Linux+Apache(httpd)+MySQL+PHP。

Linux:操作系统;

Apache:所谓的apache是一个提供web服务的软件,实际上叫httpd;

MySQL:实际上是一个存储的软件,比如数据,一些字符串;

PHP:高级的脚本语言(C开发的)。通常用来作一些网站。

 

用PHP的网站有以下这些:Google、淘宝、百度、51cto博客、猿课论坛等。

apache、mysql、php三个角色可以在一台机器、也可以分开(httpd和PHP要在一起)。对于一些小型的网站三个可以放在一台服务器上。

 

httpd、mysql、php三者如何工作:

图中php是以一个模块的形式和apache结合在一起的。apache不能直接和mysql交互,只能通过php模块在mysql中获取数据,交给apache来处理。这种方式叫做动态请求。

比如,我们访问猿课论坛。在浏览器中登录的时候,我们会输入账号密码,之后会交给apache处理,在数据库中比对,这个过程中apache用到php模块。如果输入的用户名密码正确,则apache会返回给浏览器正确登录状态。这个过程就是一个动态请求。

在我们访问网站时,会有些logo图片,这些请求没有和mysql交互,apache会直接在linux服务器中的一个存储图片的目录里获取。这就是静态请求。

 

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/
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内部测试版本。

 

11.3-11-5 MySQL安装

MySQL常用的安装包:rpm包、源码包、二进制免编译。

二进制免编译:发布之前,在linux上进行编译完成,打包压缩文件进行发布。优势:直接就可以用,可以指定安装目录。

MySQL安装步骤:

1、下载安装包。

[root@liang-00 ~]# cd /usr/local/src/
[root@liang-00 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
--2018-12-01 20:17:38--  http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
Resolving mirrors.sohu.com (mirrors.sohu.com)... 123.125.123.141
Connecting to mirrors.sohu.com (mirrors.sohu.com)|123.125.123.141|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 328563044 (313M) [application/octet-stream]
Saving to: ‘mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz’

100%[===============================================================================>] 328,563,044  613KB/s   in 5m 41s 

2018-12-01 20:23:24 (942 KB/s) - ‘mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz’ saved [328563044/328563044]

[root@liang-00 src]# ll
total 1243904
drwxr-xr-x 28 1001 1001      4096 Nov  2 00:55 apr-1.6.5
-rw-r--r--  1 root root   1073556 Sep 14 12:07 apr-1.6.5.tar.gz
drwxr-xr-x 21 1001 1001      4096 Nov  2 01:08 apr-util-1.6.1
-rw-r--r--  1 root root    554301 Oct 23  2017 apr-util-1.6.1.tar.gz
drwxr-sr-x 12 root   40      4096 Nov  2 21:03 httpd-2.4.37
-rw-r--r--  1 root root   9177278 Oct 22 22:13 httpd-2.4.37.tar.gz
-rw-r--r--  1 root root 604055819 Dec  1 14:32 mariadb-10.2.10-linux-glibc_214-x86_64.tar.gz
-rw-r--r--  1 root root 328563044 Feb 26  2018 mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
drwxr-xr-x  7 root root      8192 Nov  2 01:17 pcre-8.10
-rw-r--r--  1 root root   1409751 Jun 26  2010 pcre-8.10.zip
[root@liang-00 src]# ll -h

2、解压安装包,并把它移动到 /usr/local/mysql 目录下.

[root@liang-00 src]# cd /usr/local/mysql/
[root@liang-00 mysql]# ls
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
[root@liang-00 mysql]# 

3、创建mysql用户和存放mysql数据的/data/目录。

[root@liang-00 mysql]# useradd mysql
[root@liang-00 mysql]# mkdir /data/
[root@liang-00 mysql]# 

4、初始化,生成/data/mysql因为mysql启动时用到。

[root@liang-00 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@liang-00 mysql]# 

错误排查:

提示我们需要Perl modules 和 Dumper。

我们尝试用yum查找这些模块。

找到我们需要的包:perl-Data-Dumper.x86_64。

之后我们就可以正常初始化mysql了。用echo $? 可以检查安装是否正确。或是查看安装过程中有两个OK。

The latest information about MySQL is available on the web at

  http://www.mysql.com

Support MySQL by buying support/licenses at http://shop.mysql.com

New default config file was created as ./my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server

[root@liang-00 mysql]# echo $?
0
[root@liang-00 mysql]# 

5、拷贝配置文件和启动脚本。

在 support-files中有mysql的模板配置文件 my-default.cnf 。

[root@liang-00 mysql]# ls support-files/
binary-configure  magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@liang-00 mysql]# 

将 my-default.cnf 拷贝到/etc/my.cnf 默认位置,如果要放在其它目录下启动时要指定。

/etc/my.cnf 文件默认存在,是可以使用的。需要修改文件内容。

修改完之后就可以用了,其它的配置,有需要的时候在去增加修改。

拷贝mysql的启动脚本,到 /etc/init.d/mysqld 。

[root@liang-00 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@liang-00 mysql]# ls /etc/init.d/
functions  mysqld  netconsole  network  README
[root@liang-00 mysql]# 

编辑 /etc/init.d/mysqld 启动脚本

/etc/init.d/mysqld 权限设置成755。

[root@liang-00 mysql]# vim /etc/init.d/mysqld 
[root@liang-00 mysql]# chmod 755 !$^C
[root@liang-00 mysql]# ll /etc/init.d/mysqld 
-rwxr-xr-x 1 root root 10592 Dec  1 21:15 /etc/init.d/mysqld
[root@liang-00 mysql]# 

加入到系统服务列表中。

[root@liang-00 mysql]# chkconfig --add mysqld
[root@liang-00 mysql]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off
netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@liang-00 mysql]# 

6、开启mysql服务。

service mysqld start 或 /etc/init.d/mysqld start

[root@liang-00 mysql]# service mysqld start 
Starting MySQL.Logging to '/data/mysql/liang-00.err'.
......... SUCCESS! 
[root@liang-00 mysql]# 

7、当我们没有启动脚本时,我们可以用命令行的模式去启动。

1)关闭mysql

[root@liang-00 mysql]# service mysqld stop 
Shutting down MySQL.. SUCCESS! 
[root@liang-00 mysql]# !ps
ps aux |grep mysql
root      2398  0.0  0.0 112704   968 pts/0    S+   21:41   0:00 grep --color=auto mysql
[root@liang-00 mysql]# 

2)指定配置文件路径来启动mysql。--defaults-file=路径 

[root@liang-00 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
[1] 2426
[root@liang-00 mysql]# 181201 21:45:43 mysqld_safe Logging to '/data/mysql/liang-00.err'.
181201 21:45:43 mysqld_safe Starting mysqld daemon with databases from /data/mysql

[root@liang-00 mysql]# ps aux |grep mysql
root      2426  0.0  0.1 113304  1608 pts/0    S    21:45   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql     2560  9.7 44.6 1302728 449788 pts/0  Sl   21:45   0:10 /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=liang-00.err --pid-file=liang-00.pid --socket=/tmp/mysql.sock
root      2593  0.0  0.0 112704   972 pts/0    S+   21:47   0:00 grep --color=auto mysql
[root@liang-00 mysql]# 

用这种方式启动的mysql只能用killall mysqld 来停止

[root@liang-00 mysql]# killall mysqld
[root@liang-00 mysql]# 181201 21:50:05 mysqld_safe mysqld from pid file /data/mysql/liang-00.pid ended

[1]+  Done                    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
[root@liang-00 mysql]# ps aux |grep mysql
root      2628  0.0  0.0 112704   972 pts/0    S+   21:50   0:00 grep --color=auto mysql
[root@liang-00 mysql]# 

kill 命令需谨慎使用,用到时要用 killall 来停止。

mysql 在工作的时候数据交换量会非常大,这时我们绝对不能用kill命令,一定要用killall 来停止,之后耐心去等待它中止。

 

11.6 MariaDB安装

mariadb的安装方法和mysql安装方法类似。

步骤:

1、下载安装包。

[root@liang-00 mysql]# cd /usr/local/src/
[root@liang-00 src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  mariadb-10.2.10-linux-glibc_214-x86_64.tar.gz  pcre-8.10.zip
apr-1.6.5.tar.gz  httpd-2.4.37           mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
apr-util-1.6.1    httpd-2.4.37.tar.gz    pcre-8.10
[root@liang-00 src]# 

2、解压安装包,移动到/usr/local/mariadb 中。

[root@liang-00 src]# ls
apr-1.6.5         apr-util-1.6.1.tar.gz  mariadb-10.2.10-linux-glibc_214-x86_64         pcre-8.10
apr-1.6.5.tar.gz  httpd-2.4.37           mariadb-10.2.10-linux-glibc_214-x86_64.tar.gz  pcre-8.10.zip
apr-util-1.6.1    httpd-2.4.37.tar.gz    mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
[root@liang-00 src]# 

 

[root@liang-00 src]# mv mariadb-10.2.10-linux-glibc_214-x86_64 /usr/local/mariadb
[root@liang-00 src]# cd /usr/local/mariadb/
[root@liang-00 mariadb]# ls
bin      COPYING.thirdparty  data  EXCEPTIONS-CLIENT  INSTALL-BINARY  man         README.md     scripts  sql-bench
COPYING  CREDITS             docs  include            lib             mysql-test  README-wsrep  share    support-files
[root@liang-00 mariadb]# 

3、创建/data/mariadb目录,用户名和mysql一样。

[root@liang-00 mariadb]# mkdir /data/mariadb
[root@liang-00 mariadb]# mysql^C
[root@liang-00 mariadb]# 

4、初始化。

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

[root@liang-00 mariadb]# echo $?
0
[root@liang-00 mariadb]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb^C
[root@liang-00 mariadb]# ls /data/mariadb/
aria_log.00000001  aria_log_control  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test
[root@liang-00 mariadb]# ls /data/mysql/
auto.cnf  ibdata1  ib_logfile0  ib_logfile1  liang-00.err  mysql  performance_schema  test
[root@liang-00 mariadb]# 

--basedir=/user/local/mariadb 指定创建目录

5、拷贝配置文件和启动文件。

在mariadb的配置模板目录下有很多文件。

[root@liang-00 mariadb]# ls support-files/
binary-configure  my-huge.cnf             my-large.cnf   my-small.cnf         mysql-log-rotate  policy     wsrep_notify
magic             my-innodb-heavy-4G.cnf  my-medium.cnf  mysqld_multi.server  mysql.server      wsrep.cnf

配置文件不同缓存的不同,根据内存大小的不同,可以指定合适的缓存,可以使mysql达到最佳效果。

这里我们用small就可以了。

[root@liang-00 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
[root@liang-00 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb

my-small.cnf 内容。

6、配置文件和启动脚本的编辑。

配置文件基本不需要修改。

启动脚本的修改。这里我们修改三个地方,其中配置文件要指定

最后在启动命令中指定。

7、启动mariadb服务。

在启动之前我们要检查mysql服务是否启动,因为两个服务端口一样。

[root@liang-00 mariadb]# ps aux |grep mysql
root      3064  0.0  0.0 112704   972 pts/0    S+   22:32   0:00 grep --color=auto mysql
[root@liang-00 mariadb]# 

启动mariadb服务。

查看端口。

[root@liang-00 mariadb]# 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      964/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1053/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      3243/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      964/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1053/master         
[root@liang-00 mariadb]# 

问题解决

当一台机器同时安装了mysql和mariadb 会有多个配置文件。这时就会影响服务加载。

[root@liang-00 mariadb]# ls /etc/my.cnf
/etc/my.cnf
[root@liang-00 mariadb]# 
[root@liang-00 mariadb]# ps aux |grep mysql
root      3127  0.0  0.1 115432  1744 ?        S    22:32   0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mysql --pid-file=/data/mysql/liang-00.pid
mysql     3243  0.5  6.4 1585840 65448 ?       Sl   22:32   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/liang-00.err --pid-file=/data/mysql/liang-00.pid --socket=/tmp/mysql.sock --port=3306
root      3330  0.0  0.0 112704   972 pts/0    S+   22:40   0:00 grep --color=auto mysql
[root@liang-00 mariadb]# 

从上面可以看到加载的是 /data/mysql 。因为我们配置文件 /usr/local/mariadb/my.cnf 中并没有定义。它还会在/etc/mysql中去寻找。

这时我们可以在配置文件 /usr/local/mariadb/my.cnf  中加上 datadir=/data/mariadb。

之后我们先killall mysql,再次启动mariadb。

[root@liang-00 mariadb]# /etc/init.d/mariadb restart
Restarting mariadb (via systemctl):                        [  OK  ]
[root@liang-00 mariadb]# ps aux |grep mysql
root      3997  1.3  0.1 115432  1748 ?        S    22:50   0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mariadb --pid-file=/data/mariadb/liang-00.pid
mysql     4116 23.5  5.0 1585772 51160 ?       Sl   22:50   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/liang-00.err --pid-file=/data/mariadb/liang-00.pid --socket=/tmp/mysql.sock --port=3306
root      4159  0.0  0.0 112704   972 pts/0    S+   22:50   0:00 grep --color=auto mysql
[root@liang-00 mariadb]# 

在自定义配置文件位置时,我们在/etc/init.d/mariadb中指定了配置文件位置,但在启动mariadb时,系统还是加载了/etc/my.cnf 文件。

这样我们只能把 datadir=/data/mariadb 定义在 /usr/local/mariadb/my.cnf 中了。

 

11.7-11-9 Apache安装

apache是一个基金会的名字,httpd才是我们要安装文软件包,在早期的版本中叫apache,现在我们习惯上叫apache。

apache的官网 www.apache.org

2.4版本和2.2版本安装方法不一样,涉及到依赖函数apr。

apr和ap-util是一个通用函数库,它让httpd可以不关心底层的操作系统平台,可以和方便的移植。

Apache的安装

1、下载相关的软件包,解压

[root@liang-00 src]# ll
total 922728
drwxr-xr-x 28 mysql mysql      4096 Nov  2 00:55 apr-1.6.5
-rw-r--r--  1 root  root    1073556 Sep 14 12:07 apr-1.6.5.tar.gz
drwxr-xr-x 21 mysql mysql      4096 Nov  2 01:08 apr-util-1.6.1
-rw-r--r--  1 root  root     554301 Oct 23  2017 apr-util-1.6.1.tar.gz
drwxr-sr-x 12 root     40      4096 Nov  2 21:03 httpd-2.4.37
-rw-r--r--  1 root  root    9177278 Oct 22 22:13 httpd-2.4.37.tar.gz
-rw-r--r--  1 root  root  604055819 Dec  1 14:32 mariadb-10.2.10-linux-glibc_214-x86_64.tar.gz
-rw-r--r--  1 root  root  328563044 Feb 26  2018 mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
drwxr-xr-x  7 root  root       8192 Nov  2 01:17 pcre-8.10
-rw-r--r--  1 root  root    1409751 Jun 26  2010 pcre-8.10.zip

2、安装apr、apr-util

[root@liang-00 ~]# ls /usr/local/apr
bin  build-1  include  lib
[root@liang-00 ~]# ls /usr/local/apr-util/
bin  include  lib
[root@liang-00 ~]# 

3、安装httpd。

./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most

其中 --enable-so 表示支持动态扩展模块,比如php就是以模块的方式在apache中。

        --enable-mods-shared=most 指定需要加载的模块,most指大多数模块。

安装过程中会出出现 pcre-config 错误,这时我们就要用之前的方法解决,yum install -y pcre-devel 解决。因为之前安装apache2时用到,我再次安装时没有出现错误。

config.status: creating include/ap_config_auto.h
config.status: executing default commands
configure: summary of build options:

    Server Version: 2.4.37
    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@liang-00 httpd-2.4.37]# echo $?
0

make

make[4]: Entering directory `/usr/local/src/httpd-2.4.37/modules/mappers'
make[4]: Nothing to be done for `local-shared-build'.
make[4]: Leaving directory `/usr/local/src/httpd-2.4.37/modules/mappers'
make[3]: Leaving directory `/usr/local/src/httpd-2.4.37/modules/mappers'
make[2]: Leaving directory `/usr/local/src/httpd-2.4.37/modules'
make[2]: Entering directory `/usr/local/src/httpd-2.4.37/support'
make[2]: Leaving directory `/usr/local/src/httpd-2.4.37/support'

make[1]: Leaving directory `/usr/local/src/httpd-2.4.37'
[root@liang-00 httpd-2.4.37]# echo $?
0
[root@liang-00 httpd-2.4.37]# 

make install

Installing build system files
mkdir /usr/local/apache2.4/build
Installing man pages and online manual
mkdir /usr/local/apache2.4/man
mkdir /usr/local/apache2.4/man/man1
mkdir /usr/local/apache2.4/man/man8
mkdir /usr/local/apache2.4/manual
make[1]: Leaving directory `/usr/local/src/httpd-2.4.37'
[root@liang-00 httpd-2.4.37]# echo $?
0

 

httpd中的目录文件。

[root@liang-00 httpd-2.4.37]# cd /usr/local/apache2.4/
[root@liang-00 apache2.4]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

bin目录,下面有可执行文件httpd。

[root@liang-00 apache2]# ls bin/httpd
bin/httpd
[root@liang-00 apache2]# 

conf目录,配置文件所在目录,用的比较多。

htdocs目录,存放着访问页面,和默认访问页面。

logs目录,日志,错误日志,访问日志,文档。

modules目录,扩展模块目录。

[root@liang-00 apache2]# ls modules/
httpd.exp               mod_authz_host.so     mod_filter.so               mod_proxy_fcgi.so      mod_setenvif.so
mod_access_compat.so    mod_authz_owner.so    mod_headers.so              mod_proxy_fdpass.so    mod_slotmem_shm.so
mod_actions.so          mod_authz_user.so     mod_include.so              mod_proxy_ftp.so       mod_socache_dbm.so
mod_alias.so            mod_autoindex.so      mod_info.so                 mod_proxy_hcheck.so    mod_socache_memcache.so
mod_allowmethods.so     mod_buffer.so         mod_lbmethod_bybusyness.so  mod_proxy_http.so      mod_socache_shmcb.so
mod_auth_basic.so       mod_cache_disk.so     mod_lbmethod_byrequests.so  mod_proxy_scgi.so      mod_speling.so
mod_auth_digest.so      mod_cache.so          mod_lbmethod_bytraffic.so   mod_proxy.so           mod_status.so
mod_auth_form.so        mod_cache_socache.so  mod_lbmethod_heartbeat.so   mod_proxy_uwsgi.so     mod_substitute.so
mod_authn_anon.so       mod_cgid.so           mod_log_config.so           mod_proxy_wstunnel.so  mod_unique_id.so
mod_authn_core.so       mod_dav_fs.so         mod_log_debug.so            mod_ratelimit.so       mod_unixd.so
mod_authn_dbd.so        mod_dav.so            mod_logio.so                mod_remoteip.so        mod_userdir.so
mod_authn_dbm.so        mod_dbd.so            mod_macro.so                mod_reqtimeout.so      mod_version.so
mod_authn_file.so       mod_dir.so            mod_mime.so                 mod_request.so         mod_vhost_alias.so
mod_authn_socache.so    mod_dumpio.so         mod_negotiation.so          mod_rewrite.so         mod_watchdog.so
mod_authz_core.so       mod_env.so            mod_proxy_ajp.so            mod_sed.so
mod_authz_dbd.so        mod_expires.so        mod_proxy_balancer.so       mod_session_cookie.so
mod_authz_dbm.so        mod_ext_filter.so     mod_proxy_connect.so        mod_session_dbd.so
mod_authz_groupfile.so  mod_file_cache.so     mod_proxy_express.so        mod_session.so
[root@liang-00 apache2]# du -sh modules/
6.4M    modules/
[root@liang-00 apache2]# 

查看apache加载的模块。/usr/local/apache2.4/bin/httpd -M 或者 /usr/local/apache2.4/bin/apachectl

[root@liang-00 apache2]# /usr/local/apache2.4/bin/httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fef5:8a7f. 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)

其中static 静态,shared扩展模块。

static:编译进了bin中,绑定到httpd中。

shared:扩展模块。

 

启动apache服务。/usr/local/apache2.4/bin/apachectl start 

 

11.10 安装PHP5

php官网:www.php.net

主流版本:5.6/7.1  大部分企业用的是5版本的。

php安装

1、下载软件包,解压。

2、编译php

./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
 
参数:
--with-apxs2=/usr/local/apache2.4/bin/apxs    这个是apache的一个工具,自动帮我们把扩展模块放到apache的modules中,并且在配置文件里加上load module。

--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,编译出支持mysql的模块。

 

checking for stdlib.h... (cached) yes
checking for strtoll... yes
checking for atoll... yes
checking for strftime... (cached) yes
checking which regex library to use... php
checking whether to enable LIBXML support... yes
checking libxml2 install dir... yes
checking for xml2-config path... 
configure: error: xml2-config not found. Please check your libxml2 installation.
[root@liang-00 php-5.6.30]# echo $?
1
[root@liang-00 php-5.6.30]# 

安装时出现了error: xml2-config not found. 错误问题。

缺少xml2。

yum install -y libxml2-devel

之后继续编译,依次解决错误问题。

最后完成./configure

make

clicommand.inc
directorytreeiterator.inc
invertedregexiterator.inc
directorygraphiterator.inc
pharcommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

[root@liang-00 php-5.6.30]# echo $?
0

make install

Installing PEAR environment:      /usr/local/php/lib/php/
[PEAR] Archive_Tar    - installed: 1.4.0
[PEAR] Console_Getopt - installed: 1.4.1
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util       - installed: 1.3.0
[PEAR] PEAR           - installed: 1.10.1
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/usr/local/src/php-5.6.30/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/
[root@liang-00 php-5.6.30]# echo $?
0
[root@liang-00 php-5.6.30]# 

完成php的安装。

 

php目录文件。

php的核心配置文件在bin目录下。

php和apache结合是通过libphp5.so文件实现的。

[root@liang-00 php]# du -sh /usr/local/apache2.4/modules/libphp5.so 
36M    /usr/local/apache2.4/modules/libphp5.so
[root@liang-00 php]# 

查看php所加载的模块。/usr/local/php/bin/php -m。这些模块全部是静态的,支持扩展模块安装。

[root@liang-00 php]# /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]

[root@liang-00 php]# 

在LNMP中php是以apache模块的方式存在的。

在apache中就有php模块。

在apache配置文件  /usr/local/apache2.4/conf/httpd.conf 中就有php5_module加载选项。

 

php配置文件。

 /usr/local/php/bin/php -i |less 可以查看php相关的信息,包括编译选项、配置文件等。

把php的参考配置文件拷贝到 /usr/local/php/etc目录下。

参考配置文件:/usr/local/src/php-5.6.30/php.ini-production 或 /usr/local/src/php-5.6.30/php.ini-development 其中,前面的是生产环境的版本,后面的是开发用到的。

[root@liang-00 php]# cp /usr/local/src/php-5.6.30/php.ini-production /usr/local/php/etc/php.ini

 

11.13 安装PHP7

1、下载包,解压。

wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2

tar jxvf php-7.1.6.tar.bz2

2、编译安装php7。

./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

其中编译参数和php5的参数有差别,路径 --prefix=/usr/local/php7  

没有--with-mysql 只有 --with-mysqli=/usr/local/mysql/bin/mysql_config。

查看apache中加载的php7模块,和apache配置文件中的php模块。

 

11.14-11.15 Apache和PHP结合

配置httpd支持解析php

httpd的主配置文件:/usr/local/apache2.4/conf/httpd.conf 配置。

1、ServerName

在启动httpd服务时我们会看到这样的提醒,这是因为没有定义ServerName。

[root@liang-00 php-7.1.6]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fef5:8a7f. Set the 'ServerName' directive globally to suppress this message
[root@liang-00 php-7.1.6]# 

将ServerName去掉#生效。

注释掉php7

2、Require all denied

Windows访问httpd的80端口,默认linux的80端口是关闭的,这时我们就需要在iptables中添加一条打开80端口规则。

Windows打开telnet方法:

控制面板--系统安全--允许程序通过防火墙,找到telnet打开就可以了。

有时我们访问httpd服务时会出现forbidden 403。是因为有 Require all denied 。

改为 Require all granted 就可以正常了

改完配置文件后我们要用  /usr/local/apache2.4/bin/apachectl -t 检查语法是否错误。

之后用 /usr/local/apache2.4/bin/apachectl    graceful  重新加载配置文件,这样不会把服务给停止掉。

3、AddType application/x-httpd-php .php 增加一行关于php解析的内容。

DirectoryIndex index.html index.php 增加索引页,让用输入地址时不加 index.php 后缀就能访问网页。

 

验证apache是不是支持解析php

1、在 /usr/local/apache2.4/htdocs/ 目录中添加1.php文件。

编辑 /usr/local/apache2.4/htdocs/1.php 添加以下内容。

在浏览器中打开,出现以下内容说明可以正常解析php了。如果没有正常解析的话会出现源代码。

当遇到php不能解析时,排查步骤:httpd中是否有php模块、在配置文件中有没有配置php模块代码行、AddType是否加上等。

 

验证httpd解析php7

在配置文件 /usr/local/apache2.4/conf/httpd.conf 中添加php7模块,去掉php5模块。

保存退出,检查语法,重新加载配置文件。

[root@liang-00 php-7.1.6]# !vim
vim /usr/local/apache2.4/conf/httpd.conf
[root@liang-00 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@liang-00 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
[root@liang-00 php-7.1.6]# 

在linux命令行中 Ctrl+r 快捷键,可以用关键词搜索用过的命令历史。

在浏览器中查看解析的php7.

 

浏览器中加载的内容和 /usr/local/php7/bin/php -i 内容是一样的。

 

转载于:https://my.oschina.net/u/3993922/blog/2966570

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值