5.7LAMP-安装

 

任务列表:
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(了解)

4、MariaDB安装

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

configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解决办法

使用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

关闭服务,再次启动,就没有加载警告信息

8.1 修改denied

此时咱们没法网页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;

8.2 解析php

检测配置,加载配置

 /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

8.3 加载php7

由于php7与php5不能同时加载,此时须要在httpd.con的配置文件中,把php7模块加载,把php5注释掉

检查,加载配置文件httpd.conf

此时再次经过浏览器,查看

相关文章
相关标签/搜索