LAMP架构(上)
一、LAMP架构介绍
二、MySQL/Mariadb介绍
三、安装的MySQL
四、安装mariadb
五、安装Apache
六、安装PHP5
七、安装PHP7
八、配置httpd支持php
一、LAMP架构介绍
Linux+Apache(httpd)+MySQL+PHP
Linux:操作系统
Apache(httpd):web服务软件
Mysql:存储软件(数据)
PHP:脚本语言
三个角色可以在一台机器、也可以分开,但Apache和PHP必须在一起
httpd、PHP、MySQL三者如何工作
Apache和PHP是一个整体,PHP是以一个模块的形式和Apache结合在一起,Apache不能直接和Mysql打交道,只能通过PHP模块去Mysql里面拿数据,拿到数据后,PHP把结果交给Apache,Apache再交给用户,以上行为为动态请求。
二、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内部测试版本
三、安装的MySQL
MySQL的几个常用安装包:rpm、源码、二进制免编译(无需配置编译),mysql常用的两个引擎:innodb、myisam。
cd /usr/local/src //进入目录,将下载的软件包发在此目录
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz //下载MySQL的二进制免编译包 (失效后,可前往r.aminglinux.com找最新的下载地址)
tar zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz //解压软件包
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql //将解压的目录该名为mysql,并移动到/usr/local/
cd /usr/local/mysql/ //进入目录
useradd mysql //创建用户
mkdir /data/ //创建datadir的目录
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化mysql
执行初始化报错,由错误提示知道缺少Perl模块及Dumper
yum list |grep perl |grep -i dumper //模糊查询包含perl、dumper的包,不确定的情况下,可以2个安装包都安装
yum install -y perl-Data-Dumper //这里缺少的依赖包为第一个
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //重新初始化mysql,无报错
验证初始化是否成功,输出0,表示初始化执行成功
ls /etc/my.cnf //系统在/etc/目录底下自带my.cnf配置文件
rpm -qf /etc/my.cnf //查询该配置文件是哪个安装包的
vim /etc/my.cnf //可以在原来的配置文件修改参数,这里使用的是在原来的配置文件修改参数
或者
cp support-files/my-default.cnf /etc/my.cnf //拷贝mysql模板配置文件到/etc/目录,并命名为my.cnf
cp support-files/mysql.server /etc/init.d/mysqld //复制启动脚本到/etc/init.d/目录并命名为mysqld
vim /etc/init.d/mysqld //编辑启动脚本,增加如下参数
chmod 755 /etc/init.d/mysqld //将脚本文件的权限更改为755(一般默认为755)
chkconfig --add mysqld //加入系统服务列表,开机启动
service mysqld start //启动mysql服务,或者用命令/etc/init.d/mysqld start启动服务
如果没有启动脚本的模板时,可以使用命令行的方法启动进程
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql & //指定mysqld_safe的路径,配置文件,用户以及datadir的路径,再使用&符号丢至后台。该方式启动的mysql服务,只能通过 killall mysqld (该命令相对kill更加安全)命令来结束。
killall 数据库时先停止当前的读写操作,把未写入磁盘的数据慢慢写入直到写完,才把进程杀死。
四、安装mariadb
https://downloads.mariadb.org/ //官网下载地址,选择对应的版本下载
cd /usr/local/src/ //将下载好的安装包放置在该目录
tar zxvf mariadb-10.2.19-linux-glibc_214-x86_64.tar.gz //解压软件包
mv mariadb-10.2.19-linux-glibc_214-x86_64 /usr/local/mariadb //移动软件包到/usr/local/目录下,并命名为mariadb
cd /usr/local/mariadb/ //进入mariadb目录下
保证已经有创建mysql用户和/data/目录
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb //初始化数据库
验证初始化是否成功
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf //拷贝配置文件,配置文件不需要修改
cp support-files/mysql.server /etc/init.d/mariadb //拷贝启动脚本
vim /etc/init.d/mariadb //进入启动脚本修改如下内容
查找到启动命令指定conf
ps aux |grep mysql //先确认无启动mysql服务
/etc/init.d/mariadb start //启动mariadb服务,报错
rpm -qa | grep mariadb //过滤出mariadb的安装包
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64 //卸载系统原本的安装包,重新查询确认唔该安装包,重新启动服务
ps aux |grep mariadb //查询服务进程是否启动
netstat -ltnp //查询服务端口
当有多个数据库存在的时候,如果没有在配置文件修改datadir的路径,服务默认还是会调用系统/etc/my.conf的配置文件
vim /usr/local/mariadb/my.cnf //进入mariadb的配置文件路径
killall mysqld //关闭服务
/etc/init.d/mariadb start //重新启动服务,就会调用定义的配置文件
五、安装Apache
Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache
Apache官网www.apache.org
apr和apr-util是一个通用的函数库,它让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.37.tar.gz //下载源码包
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz //下载apr
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz //下载apr-util
tar -zxvf httpd-2.4.37.tar.gz //解压源码包
tar zxvf apr-1.4.5.tar.gz //解压源码包
tar zxvf apr-util-1.3.12.tar.gz //解压源码包
cd apr-1.4.5 //进入apr目录
./configure –prefix=/usr/local/apr //安装apr
make && make install //编译安装
cd apr-util-1.3.12 //进入apr-util目录
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ //安装apr-util
make && make install //编译安装
cd /usr/local/src/httpd-2.4.37 //进入解压目录
./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 //过滤出包含pcre的包
yum install -y pcre-devel //安装依赖包
重新执行命令安装成功
make && make install //编译安装
编译安装完执行echo $? 输出0,表示安装成功
cd /usr/local/apache2.4/ //进入httpd安装目录
bin:可执行文件
conf:配置文件目录
htdocs:存放默认访问网站
logs:日志
man:帮助文档
modules:扩展模块存放目录
/usr/local/apache2.4/bin/httpd -M //查看加载的模块
其中static(静态模块)会直接编译进httpd主脚本下(即/usr/local/apache2.4/bin/httpd)
而shared(扩展模块):保存在modules目录下
/usr/local/apache2.4/bin/apachectl start //启动httpd服务
六、安装PHP5
PHP官网www.php.net
当前主流版本为5.6/7.1
cd /usr/local/src/ //进入下载目录
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz //下载链接
tar zxf php-5.6.30.tar.gz //解压软件包
cd php-5.6.30 //进入解压文件目录
./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
yum list |grep xml2 //过滤出包含xml2的包
yum install -y libxml2-devel //安装依赖包
重新执行命令安装
yum install -y openssl-devel //安装依赖包
继续重新执行命令安装
yum install -y bzip2-devel //安装依赖包
继续重新执行命令安装
yum install -y libjpeg-devel //安装依赖包
继续重新执行命令安装
yum install -y libpng-devel //安装依赖包
继续重新执行命令安装
yum install -y freetype-devel //安装依赖包
继续重新执行命令安装
yum install -y epel-release //先安装扩展源
yum install -y libmcrypt-devel //安装依赖包
继续重新执行命令安装,显示安装成功
make && make install //编译安装,安装完,输入echo $? 看输出为0,表示编译安装成功
安装成功后会在apache的模块目录下生成一个php的模块文件,此时删除php也不影响apache,只要该模块依旧存在,php和apache结合起来是通过libphp5.so文件实现的
/usr/local/php/bin/php -m //查看php所加载的模块, 默认状态只有静态模块,但也可以扩展模块
vim /usr/local/apache2.4/conf/httpd.conf //进入httpd配置文件,查看生成的php模块
/usr/local/php/bin/php -i |less //-i参数查看php具体信息
php.ini-production //参考配置文件,适用于线上环境
php.ini-development //参考配置文件,适用于开发环境、测试环境
cp php.ini-production /usr/local/php/etc/php.ini //拷贝配置参数
/usr/local/php/bin/php -i |less //查看php具体参数
七、安装PHP7
cd /usr/local/src/ //进入下载目录
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2 //下载源码包
tar jxf php-7.1.6.tar.bz2 //解压源码包
报错,原因是未安装bzip,安装命令:yum -y install bzip2
重新解压成功
cd php-7.1.6 //进入解压目录
./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 //编译安装
验证是否执行成功
生成libphp7.so模块
/usr/local/apache2.4/bin/apachectl -M //查看Apache加载的模块
vim /usr/local/apache2.4/conf/httpd.conf //进入apache配置文件,不使用哪个版本的就在前面加#注释
八、配置httpd支持php
/usr/local/apache2.4/bin/apachectl restart //重启apachec
vim /usr/local/apache2.4/conf/httpd.conf //进入httpd配置文件,修改如下内容
继续重启httpd服务
vim /usr/local/apache2.4/conf/httpd.conf //进入httpd配置文件,修改如下内容
由于系统安装了5和7两个版本的php,需注释掉其中一个版本,否则系统不知道调用哪个版本的php模块
先停止服务,再开启服务,正常,没有出现报错,检查服务是否启动,确认服务端口
vim /usr/local/apache2.4/conf/httpd.conf //进入配置文件修改如下内容,防止打开虚拟主机配置文件时显示403
正常访问服务器IP
之所以能正常服务是配置文件指定请求方式为granted
vim /usr/local/apache2.4/conf/httpd.conf //进入配置文件修改如下内容
/usr/local/apache2.4/bin/apachectl -t //检查配置文件语法是否正确
/usr/local/apache2.4/bin/apachectl graceful //重新加载配置文件
重新服务服务器IP,显示403 forbidden ,无权限访问
AddType application/x-httpd-php .php //支持解析php
vim /usr/local/apache2.4/conf/httpd.conf //进入配置文件修改如下内容
DirectoryIndex index.html index.php //增加索引页
vim /usr/local/apache2.4/conf/httpd.conf //进入配置文件修改如下内容
检测配置文件,没错误再重新加载配置文件
验证apache是否可以解析php
编辑一个测试的php脚本,放在/usr/local/apache2.4/htdocs/目录下
vim /usr/local/apache2.4/htdocs/1.php //编辑如下内容
访问该测试脚本,显示出php的详细信息
apache无法解析php的解决思路
a、/usr/local/apache2.4/bin/apachectl -M //看是否有加载php模块
如果没有加载模块,看下是否有libphp5.so这个文件
ls /usr/local/apache2.4/modules/libphp5.so
如果有配置文件,没加载模块,就要检查配置文件是否有加载LoadModule php5_module modules/libphp5.so 这行配置
继续检查配置文件是否增加解析php这行
最后检查配置文件是否增加索引页
更改php版本,
重新加载配置文件
正常解析到php7
/usr/local/php7/bin/php -i |less //文本形式显示
转载于:https://my.oschina.net/u/3991860/blog/2966782
- 点赞
- 收藏
- 分享
- 文章举报
- LAMP架构部署——编译安装PHP
- LAMP网站架构方案分析
- LAMP架构客户端请求PHP(带有mysql)页面处理的流程
- [转]LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构
- LAMP架构部署
- salt搭建lamp架构
- LAMP架构协同应用的实例——phpMyAdmin
- 基于LAMP架构的主流论坛和博客搭建过程详解
- 架构-LAMP特级学习(网站服务器监控)
- LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构(转)
- 手动编译安装LAMP架构,并且实现nagios图形化监控(四)
- LAMP架构部署文件
- LAMP架构之httpd+php(module)+mariadb
- LAMP架构应用实战—Apache服务介绍与安装02
- 部署web架构(LAMP)和部署论坛
- lamp架构
- Wikipedia 的 LAMP 架构
- LAMP网站架构方案分析
- LAMP架构网站搭建
- linux下单机LAMP网站架构