任务列表:
11.1 LAMP架构介绍
11.2 MySQL、MariaDB介绍
11.3/11.4/11.5 MySQL安装
11.6 MariaDB安装
11.7/11.8/11.9 Apache安装
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
11.14/11.15 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.csdn.net/u013785951/article/details/60876816
查看编译参数 http://ask.apelearn.com/question/1295php
设置apache(httpd)开机自启动https://blog.csdn.net/aerchi/article/details/80859894html
将默认的yum源更换为阿里云的源:https://my.oschina.net/u/2449787/blog/778145mysql
mysql5.7版本和以前版本初始化的不一样: ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
mysql5.7版本更改用户密码:update user set authentication_string=password('123333') where user='root';
关于版本的小常识:http://www.05bk.com/520.html
mariadb官方yum源安装
wget -O - https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |sh
yum list |grep MariaDBlinux
apache https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/git
1、LAMP架构介绍web
Linux+Apache(httpd)+MySQL+PHPsql
习惯上,apache通常是指httpd,固然Apache还有不少的其余软件。Apache是最经常使用的web服务软件,而MySQL是比较小型的数据库软件,MySQL存储用户名、密码和数据,图片之类的放在静态文件里。 这两个软件及PHP均可以安装到windows机器上。shell
三个角色能够在一台机器、也能够分开(httpd和PHP要在一块儿),Apache和PHP须要安装到同一台机器上,由于PHP是做为Apache的一个模块存在的,两个必须在一块儿。数据库
httpd、PHP、MySQL三者如何工做:apache
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(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本。
3、MySQL安装
MySQL的几个经常使用安装包:rpm、源码、二进制免编译
cd /usr/local/src 进入该目录
使用uname -a或-i查看Linux系统是多少位的,这里是64位,下载对应的64位MySQL包
3.1下载MySQL软件包
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
3.2 初始化Mysql
tar zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz 把以前下载的包,解压
mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql 移到/usr/local/下,且更名为mysql
cd /usr/local/mysql 进入该目录
useradd mysql 添加用户mysql
mkdir /data/ 须要建立数据库目录,若是/data/已经存在,那就直接初始化;
mysql用到的安装包:yum install -y epel-release wget perl-Module-Install.noarch libaio*
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
--user=mysql 指定用户为mysql
--datadir=/data/mysql 指定数据库目录
所以执行此步前,必须建立用户,指定目录
初始化时发现上面有错误,缺乏Perl模块,缺乏Dumper的支持;谷歌或百度查询安装
或yum list |grep perl |grep -i dumper 模糊搜索出可能会须要的包去安装,进行安装
此处须要安装的是 yum install -y perl-Data-Dumper
此处报错,缘由是由于少了libaio库文件
yum install -y libaio-devel 安装便可,在初始化./scripts/mysql_install_db --user=mysql --datadir=/data/mysql便可成功
判断是否初始化成功,有两个OK,或 echo $? 必需要在初始化完成后当即使用不要作任何操做 ,检验上一条命令是否正确,0表明成功
3.3 配置文件
ls support-files/ 放配置文件和启动脚本的目录
ls support-files/my-default.cnf mysql的模板配置文件
cp support-files/my-default.cnf /etc/my.cnf 此时须要把模板配置文件复制到其余地方,并更名叫my.cnf,可是my.cnf已经存在,不执行
mysql的配置文件就是my.cnf,固定放在/etc/下,若是想放到其余目录下,须要在启动的时候作一个指定,否则默认去etc下找my.cnf
ls /etc/my.cnf 这里有自带的配置文件my.cnf
rpm -qf /etc/my.cnf 查看这个配置文件的来源,来自mariadb,能够继续使用,前提是该其中的设置,以下
vi /etc/my.cnf
ls support-files/ //mysql的启动脚本也在此目录下
cp support-files/mysql.server /etc/init.d/mysqld //把mysql.server复制到mysqld这个新目录
自定义启动脚本:
1.脚本放到/etc/init.d/中
2.vi /etc/init.d/mysqld 编辑此脚本
basedir=/usr/local/mysql //指定mysql 的程序目录
datadir=/data/mysql //指定日期目录
定义mysqld为755权限 ,ls -l /etc/init.d/mysqld 查看是否是755,默认是755权限
设置开机启动 : 增长到系统列表服务:chkconfig --add mysqld
chkconfig mysqld on
service mysqld stop
service mysqld start
chkconfig --list //查看系统列表
3.4 启动与关闭服务
**常规启动 **
启动:service mysqld start 或 - /etc/init.d/mysqld start
关闭:service mysqld stop
ps aux |grep mysql 查看mysql进程已经启动
netstat -lntp 端口为3306
用命令行启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/
--defaults-file=/etc/my.cnf 定义默认的配置文件
--user=mysql 定义用户
--datadir=/data/mysql/ 定义数据目录
先关闭进程service mysqld stop,查看已关闭
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/ & //用命令行启动,须要加上&,把它放入后台
在查看进程,已经开启,查看网络连接,有3306端口,说明mysql启动成功
使用命令行启动的进程,须要使用killall 杀进程进行关闭,尽可能不要用kill PID,更加安全
使用killall会先中止当前的写读操做,把正在写入的数据写入完成后,在杀死进程,若是一直没法杀死,说明数据量大,慢慢等完成后便可,不然有可能会丢失数据
mysql的引擎innodb和 myisam(了解)
MariaDB和mysql同源,所以安装方式也是如出一辙的;
下载MariaDB包
cd /usr/local/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
解压,并移到/usr/local/mariadb下
tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb //移到local下面,更名为mariadb
cd /usr/local/mariadb 进入mariadb目录
初始化,此处和mysql同样
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
echo $? //检测上一步正确:0
把mariadb的默认配置文件与启动脚本文件复制一份,并改以下名称
进入目录
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf //把配置文件拷贝到/usr/local/mariadb/目录下,更名为my.cnf,路径和mysql不同,为了区分
cp support-files/mysql.server /etc/init.d/mariadb //启动脚本文件
按下图编辑配置文件和启动脚本:
vi /usr/local/mariadb/my.cnf
更改配置,主要针对mysqld修改,目前不须要修改
更改启动脚本 :vim /etc/init.d/mariadb
conf 自定义参数,指定配置文件所在路径
经过start搜索
启动mariadb服务:/etc/init.d/mariadb start
ps aux |grep mysql //查看有没有mysql进程,二者会相冲突
etc/init.d/mariadb start //启动服务
ps aux |grep mariadb //再次查看进程,确认启动
netstat -lntp //查看网络连接,有3306端口
有个小问题:进程中:--datadir=/data/mysql 这里仍是mysql而不是--datadir=/data/mariadb
解决:那是由于刚才没有修改配置文件 /usr/local/mariadb/my.cnf;在那里面没有指定相应的目录;它会自动加载mysql的配置文件目录;
在配置文件按下图添加目录
先中止服务,在杀掉mysqld进程,再次开启mariadb服务
/etc/init.d/mariadb stop
killall mysqld
ps aux |grep mariadb
/etc/init.d/mariadb start
ps aux |grep mariadb
5、Apache安装
先进到目录 cd /usr/local/src/
分别下载:2.4.39源码包,apr-1.6.5,apr-util-1.6.1;后面两个是通用函数库;
依次解压包
tar zxvf apr-1.6.5.tar.gz
tar zxvf apr-util-1.6.1.tar.gz
tar zxvf httpd-2.4.39.tar.gz
5.2 安装apr-1.6.5
到apr-1.6.5目录下cd apr-1.6.5/
安装包: ./configure --prefix=/usr/local/apr
安装apr-1.6 rm cannot remove `libtoolT'报错(没有影响) :https://jingyan.baidu.com/article/b907e627611f6b46e7891cb6.html
echo $? 为0没问题
执行 make && make install
完成后生成4个目录 ls /usr/local/apr/
5.3 安装apr-util-1.6.1
进入cd /usr/local/src/apr-util-1.5.4目录
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
此时发现错误,缺乏expat.h包
执行 yum install -y expat*
再次make && make install
生成目录 ls /usr/local/apr-util/
5.4 安装apache2.4
cd /usr/local/src/httpd-2.4.39 进到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
此时报错:按提示,查找安装包:yum list |grep pcre
安装 yum install -y pcre-devel
再次执行安装./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 \ //这里的反斜杠是脱义字符,加上它咱们能够把一行命令写成多行
--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,若是出现此报错,从新安装apr和apr-util便可
安装成功,查看apache2.4目录下的目录
cd /usr/local/apache2.4/
ls modules/ //默认模板
/usr/local/apache2.4/bin/httpd -M //查看加载的模块 或者使用/usr/local/apache2.4/bin/apachectl -M 效果同样(shell文件,去调用了二进制文件)
5.5 启动httpd服务
启动httpd服务:/usr/local/apache2.4/bin/apachectl start (此提示可在配置文件关闭)
查看有关httpd的进程
6、安装PHP5
虽然目前最新版本的PHP为PHP7,可是还有批量的PHP5在使用,并且一些论坛软件不支持PHP7,所以也须要掌握PHP5和PHP7;
在/usr/local/src/目录下,下载源码
cd /usr/local/src/ 进入目录
下载源码 wget http://cn2.php.net/distributions/php-5.6.39.tar.bz2
解压 php-5.6.32.tar.bz2
tar -xvjf php-5.6.39.tar.bz2
进入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/bin/apxs 该文件是Apache的一个工具,能够将扩展模块添加到Apache的module文件;
–with-config-file-path=/usr/local/php/etc 指定配置文件所在路径;
–with-mysql=/usr/local/mysql 指定mysql的路径;
–with-mysqli=/usr/local/mysql/bin/mysql_config
–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相关的一些模块(通用)。
执行配置后,报错
安装 yum install -y libxml2-devel 继续执行配置
继续报错:缺乏openssl相关的库,直接安装便可
yum install -y openssl-devel 完成后继续执行配置
继续报错:yum -y install bzip2-devel
php编译常见错误: https://blog.csdn.net/u011608531/article/details/50756112
Configure: error: freetype.h not found 错误解决方法以下:
使用: yum install freetype-devel
使用yum命令安装
yum install php-mcrypt libmcrypt libmcrypt-devel
此时安装成功
而后安装 make 和make install
查看php5下有哪些模块:/usr/local/php/bin/php 核心文件在此目录下
/usr/local/php/bin/php -m
php做为httpd的模块存在;所以php 不须要启动;
查看httpd的模块;此时能看到 php5_module (shared) 此模块很重要
查看模块libphp5.so文件的权限
ls -l /usr/local/apache2.4/modules/libphp5.so
vim /usr/local/apache2.4/conf/httpd.conf //进入httpd的配置文件
此时为配置文件里面的模块,增减#能够随用随取,用哪一个模块就去掉前面的#,不用就加上#
php的参考配置文件
php.ini-production 生产环境用
php.ini-development 开发环境和测试环境下用
/usr/local/php/bin/php -i |less
cp php.ini-production /usr/local/php/etc/php.ini
7、PHP7的安装
cd /usr/local/src/ 进目录
在/usr/local/src/目录下,下载php7源码
wget http://cn2.php.net/distributions/php-7.1.25.tar.bz2
tar jvxf php-7.1.25.tar.bz2 解压
进入 cd php-7.1.25目录
./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 && make install
查看php7的模块,和php5基本 同样
查看httpd的模块;此时能看到 php5_module (shared)和 php7_module (shared);再次说明php是做为httpd的模块存在;
/usr/local/apache2.4/bin/apachectl -M
php5_module (shared)
php7_module (shared)
存在多个php版本时,经过修改配置文件,选择使用哪一个版本,不用的注释掉便可
8、 Apache和PHP结合
Apache(httpd)主配置文件/usr/local/apache2.4/conf/httpd.conf
在启动httpd服务的时候,总会有如下警告;经过更改配置文件,能够取消;
/usr/local/apache2.4/bin/apachectl start
按下图更改配置文件:/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
这个也须要不要让php7加载,由于不能同时调用两个php
关闭服务,再次启动,就没有加载警告信息
此时咱们没法网页192.168.200.3
此时咱们开始排查问题:
第一步:在windows上ping 192.168.112.168 是否通畅;
第二步:IP通畅,那么咱们检查端口,先在window启用telnet,只选择客户端,服务端危险;
第三步:开始检查端口;
第四步:iptables -nvL查看无故口,指定80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
第五步:再次用telnet测试端口;已经通了,ctrl+]退出
第六步:此时咱们再浏览器再访问192.168.200.3
此时可以显示,那是由于在配置文件里面
把 Require all granted 改成Require all denied;保存配置文件
此时咱们为了安全起见,不重启配置文件;用如下命令检测配置、加载配置验证;
/usr/local/apache2.4/bin/apachectl -t //检查更改配置是否语法错误
/usr/local/apache2.4//bin/apachectl graceful //加载配置文件
此时咱们再浏览器再访问192.168.112.168,显示:禁止访问
在 配置文件httpd.conf 还须要把此处更改成granted;不然会出现403状态码,通常为200;
检测配置,加载配置
/usr/local/apache2.4/bin/apachectl -t
usr/local/apache2.4//bin/apachectl graceful
在配置文件里面增长以下内容,意思解析php
AddType application/x-httpd-php .php
添加以下内容,就会直接跳转到主页,添加完成后,检查和从新加载
DirectoryIndex index.html index.php
新建一个1.php
vim /usr/local/apache2.4/htdocs/1.php
<?php
phpinfo(); //打印php的全部函数
?>
此时咱们再浏览器中,看是否解析PHP (在配置中增长内容,不须要重启php)
php可以支持解析;那么把它加上#AddType application/x-httpd-php .php,表明不加载
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
此时打开浏览器,咱们发现不解析php,只是源代码;
问题总结:
若是浏览器不能解析php,那么须要从如下几点来入手:
第一步:查看有没有加载php模块;
第二步:查看没有php模块文件
第三步:前面两项有,在httpd.con的配置文件中,有加载模块;
第四步:以前都有,在httpd.con的配置文件中,有没有此项;
第五步:在httpd.con的配置文件中,下面加 index.php
由于php7与php5不能同时加载,此时须要在httpd.con的配置文件中,把php7模块加载,把php5注释掉
检查,加载配置文件httpd.conf
此时再次经过浏览器,查看