1 LAMP架构介绍
2 MySQL、MariaDB介绍
3 MySQL安装
4 MariaDB安装
5 Apache安装
6 安装PHP5
7 安装PHP7
8 Apache和PHP结合
扩展
mysql5.5源码编译安装 http://www.aminglinux.com/bbs/thread-1059-1-1.html
mysql5.7二进制包安装(变化较大) http://www.apelearn.com/bbs/thread-10105-1-1.html
apache dso https://yq.aliyun.com/articles/6298
apache apxs https://wizardforcel.gitbooks.io/apache-doc/content/51.html
apache工作模式 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html
php中mysql,mysqli,mysqlnd,pdo到底是什么 http://blog.youkuaiyun.com/u013785951/article/details/60876816
查看编译参数 http://ask.apelearn.com/question/1295
1、LAMP架构介绍
linux(操作系统)、apache(web服务httpd)、mysql(数据库存储软件,存储一些数据、字符串)、php(脚本语言、和shell类似比shell复杂)
PHP网站(google、淘宝、百度、51cto博客)
三个角色可以在一台机器、也可以分开(httpd和PHP要在一起)
apache和php是一个整体,php是以一个模块的形式和apache结合在一起的,apache不能直接和mysql打交道,只能通过php的模块从mysql拿数据,拿到数据之后php把结果交给apache,最后交给用户。(动态请求)
在浏览器输入网站登录,用户请求交给apache,apache检查请求是动态还是静态
mysql存用户数据
2、Mysql_MariaDB介绍
mysql是一个关系型数据库
mysql官网https://www.mysql.com
mysql5.6变化比较大,5.7性能上有很大提升
mariadb为mysql的一个分支,官网https://mariadb.com
mariadb5.5版本对应mysql的5.5,10.0对应mysql5.6
community社区版本,enterprise企业版,ga(generally available)指通用版本,在生产环境中用的,DRM(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本
3、mysql安装
mysql的几个常用安装包:rpm、源码、二进制免编译
cd /usr/local/src
查看系统是多少位的
下载mysql5.6 64位二进制免编译包
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
解压mysql安装包
tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
移动mysql解压文件到/usr/local/mysql
mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
进入/usr/local/mysql/目录
cd /usr/local/mysql/
创建一个mysql用户
useradd mysql
创建存放mysql数据的目录
mkdir /data/
初始化mysql,生成/data/mysql目录
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
报错少了一个模块,查看一下少了那个模块
yum list |grep perl |grep -i dumper
yum安装perl-Data-Dumper
yum install -y perl-Data-Dumper
继续初始化mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
查看是否执行成功
echo $?
查看/etc/my.cnf是从哪里来的
rpm -qf /etc/my.cnf
拷贝mysql模板配置文件到/etc/my.cnf下
cp support-files/my-default.cnf /etc/my.cnf
编辑/etc/my.cnf配置文件
拷贝mysql启动脚本到/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
编辑mysqld
vim /etc/init.d/mysqld
权限改成755
设置开机启动
chkconfig --add mysqld
查看是否开机启动
启动mysqld
service mysqld start
查看mysql进程
ps aux |grep mysql
查看监听端口
netstat -lntp
命令行方式启动mysql
先关掉mysqld
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
关闭方法
killall mysqld
mysql常用引擎
innodb myisam
4、mariadb安装
cd /usr/local/src/
解压mariad
tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz.1
初始化mariadb
./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb
拷贝配置文件
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
拷贝启动脚本
cp support-files/mysql.server /etc/init.d/mariadb
编辑配置文件
vim /usr/local/mariadb/my.cnf
编辑启动脚本
vim /etc/init.d/mariadb
启动mariadb
/etc/init.d/mariadb start
查看服务是否启动
ps aux |grep mariadb
查看端口是否监听
netstat -ltnp
还是mysql
编辑mariadb配置文件
重启启动mariadb
5、apache安装
系统自带apr和yum安装的apr不匹配,需要自己手动编译
下载httpd、apr安装包
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.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
解压软件包
tar zxvf httpd-2.4.33.tar.gz
tar zxvf apr-1.6.3.tar.gz
tar jxvf apr-util-1.6.1.tar.bz2
报错:
tar (child): bzip2:无法 exec: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
yum -y install bzip2
安装apr
cd apr-1.6.3/
./configure --prefix=/usr/local/apr
报错:
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
yum install gcc
echo $?
make && make install
echo $?
安装apr-util
cd ../apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录
解决:缺失expat-devel包
yum install expat-devel
echo $?
支持动态扩展模块
--enable-so\
安装apache2.4
cd ../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
报错:error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
yum list |grep pcre
yum install -y pcre-devel
echo $?
make && make install
echo $?
bin 下面表示可执行文件,核心二进制文件
conf 配置文件所在目录
htdocs 默认存放访问网页页面目录
logs 日志目录,错误日志、访问日志
man 帮助文档目录
modules 扩展模块目录
查看apache加载了那些模块
/usr/local/apache2.4/bin/httpd -M(/usr/local/apache2.4/bin/apachectl -M)
static 表示绑定在一起
shared 表示扩展模块
启动apache
/usr/local/apache2.4/bin/apachectl start
查看服务是否启动
ps aux |grep httpd
查看端口是否监听
netstat -lntp
6、安装PHP5
进入/usr/local/src目录
cd /usr/local/src
wget下载php5
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
解压php
tar zxf php-5.6.30.tar.gz
进入php目录
cd php-5.6.30
编辑php
--prefix=/usr/local/php,安装目录
--with-apxs2=/usr/local/apache2.4/bin/apxs,它是apache的一个工具,自动的帮你去把扩展的模块放到Apache中的modules目录里,并且在它的配置文件里加上一行load module
--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 ,指定mysql的路径
--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,指定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
报错:
configure: error: xml2-config not found. Please check your libxml2 installation.
错误一:缺少 libxml2 库
解决办法:用yum list |grep xml2查看,并安装安装 libxml2-devel 包
yum install -y libxml2-devel
继续编译php
报错:
error: Cannot find OpenSSL's <evp.h>
错误二:缺少openssl-devel库
解决办法:yum安装openssl-devel
yum install -y openssl-devel
继续编译php
报错:error: Please reinstall the BZip2 distribution
错误三:缺少bzip2 bzip2-devel库
解决办法:yum install -y bzip2-devel
继续编译php
报错:error: jpeglib.h not found.
错误四:缺少libjpeg-devel包
解决办法:yum install -y libjpeg-devel
继续编译php
报错:error: jpeglib.h not found.
错误五:缺少libpng-devel包
解决办法:yum install -y libpng-devel
继续编译php
报错:error: freetype-config not found.
错误六:缺少 freetype-devel 库
解决办法:yum install -y freetype-devel
继续编译php
报错:error: mcrypt.h not found. Please reinstall libmcrypt.
错误七:缺少 libmcrypt-devel 库
解决办法:先安装eprl扩展源yum install -y epel-release,再来安装 libmcrypt-devel 包
继续编译php
查看是否编译成功 echo $?
make && make install
查看是否编译成功
查看 php目录和核心文件
查看核心目录文件大小
扩展模块
查看php加载的模块有哪些
/usr/local/php/bin/php -m
查看apache加载的模块有哪些
/usr/local/apache2.4/bin/httpd -M
查看模块文件
编辑apache配置文件
vim /usr/local/apache2.4/conf/httpd.conf
查看php参数
/usr/local/php/bin/php -i |less
拷贝php参考配置文件到配置文件所在路径
cp php.ini-production /usr/local/php/etc/php.ini
查看php参数
/usr/local/php/bin/php -i |less
7、安装PHP7
进入/usr/local/src目录
cd /usr/local/src/
下载php7
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
解压php7
tar jxf php-7.1.6.tar.bz2
进入php-7.1.6目录
cd php-7.1.6
编译php参数
./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
查看运行结果是否正确
echo $?
查看php7lib配置文件目录
ls /usr/local/apache2.4/modules/libphp5.so
查看大小
查看php7加载的模块
/usr/local/php7/bin/php -m
查看apache加载的php几
/usr/local/apache2.4/bin/apachectl -M
编辑apache配置文件
vim /usr/local/apache2.4/conf/httpd.conf
8、apache和php结合
配置httpd支持php目录概要
去掉#号
将php7加#
Telnet IP+80
端口不通,需要开启iptables防火墙
更改require
更改配置后需要操作才能生效
重新加载服务
增加一行php进行解析
页面显示
结果访问的是源代码
如果遇到php无法解析,需要检查相关的apache的配置文件
(1)检查apache的php
有没有加载php5
查看是否有libphp5.so文件
如果有此文件,但没有加载,则查看apache的配置文件
然后检查apache的配置文件AddType
中间有空格,在/x-httpd-php .php
每次更改配置文件后,对配置文件进行加载和检查