LAMP架构 1

LAMP架构介绍

 

  • LAMP是Linux、Apache(httpd)、MySQL、PHP的简写,就是把Apache、MySQL、以及PHP安装在Linux上面,组成一个环境来运行PHP的脚本语言,通常是网站。
  • PHP网站 Goole、淘宝、百度等
  • 3个角色可以在一台机器、也没有分开(httpd和PHP要在一起)。例如可以把Apache+PHP安装在一台机器上,再把MySQL安装在另一台机器上,也可以将3者安装在同一台机器上。但是Apche与PHP需要在同一机器上。这是因为PHP是作为Apache的一个模块存在的,它们必须在一起。
  • 3者之间的关系

1.Apache不能直接与MySQL相互的打交道,必须通过PHP这个模块去拿数据,PHP将数据结果交给Apache,Apache再交给用户。

 

2. 动态请求.:PHP与MySQL相连去取数据的行为。

例如当登录一个网站时,在浏览器中输入账号与密码,点击登录将请求交给了Apache,之后Apache检查请求是动态的还是静态的请求。Apache拿到用户密码后,通过PHP查到MySQL中保存的用户密码是什么,PHP再进行2个用户密码的对比。如果结果一致Apache返回给用户登录后的界面

3. 静态的请求:当浏览网站时,访问到的logo图片都是静态文件,也就是在linux系统上某个目录下拿到的图片再返回给用户。

4.看Apache是否与MySQL打交道可以知道用户的请求是动态请求还是静态请求。

5.MySQL中不能存图片或是文件,存的是数据。

 

MySQL_MariaDB介绍

 

 

MySQL安装

 

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

MySQL通常是通过rpm(使用yum安装)、源码(源码的二进制包与Apache的源码安装不同)、、二进制免编译(不用配置,不用编译,rpm类似。但是rpm是无法定义安装路径,默认就是安装在/usr/下面,而二进制免编译包是可以选择安装位置的。)

 

1. 安装MySQL 二进制免编译

cd /usr/local/src 自定义安装到/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

tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz 解压

 

2. 将解压后的目录移动到/usr/local/目录下并改名为mysql

mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql

 

3. 切换到/usr/local/mysql/目录下,先ls查看是否有文件或者目录。

创建mysql用户但禁止登陆  useradd -s /sbin/nologin mysql 

创建/data/目录, mkdir /data/

然后初始化 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

报错显示缺少perl-Data-Dumper.x86_64这个包和libaio

yum install -y perl-Data-Dumper

yum install -y libaio

安装后再次执行

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

如果不确定是否执行过程是对的,可以查看过程中是否出现了2次OK。也执行echo $?看是否显示0

 

4. 拷贝模板配置文件

因为centos7系统默认安装了mariadb-libs这个包而创建了/etc/my.cnf。这里直接覆盖

cp support-files/my-default.cnf /etc/my.cnf

 

如果使用系统中默认的/etc/my.cnf 需要做以下更改

datadir=/data/mysql

socket=/tmp/mysql.sock

注释掉:

includedir /etc/my.cnf.d

log-error=

pid-file=

 

5. 拷贝mysql启动脚本

cp support-files/mysql.server /etc/init.d/mysqld

vim/etc/init.d/mysqld 修改这2个地方

 

6. 启动服务

修改权限为755 chmod 755 /etc/init.d/mysqld

加入到开机启动列表 chkconfig --add mysqld

开机启动     chkconfig mysqld on

启动服务 service mysqld start 也可以启动脚本 /etc/init.d/mysqld start

ps aux |grep mysqld 查看进程

netstat -lnp |grep mysqld 查看监听端口3306

 

如果没有启动脚本可以用命令行的方式来启动

/usr/local/mysql/bin/mysql_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql 、

该命令就是进程中出现的命令

7. 设置PATH,否则不能直接调用mysql

修改 vim /etc/profile 文件,在文件末尾添加

export PATH=/usr/local/mysql/bin:$PATH   

[root@localhost mysql]# source /etc/profile   //使配置文件生效

验证

[root@localhost mysql]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.36 Source distribution

kill命令用来停掉服务,可能会造成数据丢失。killall命令更加安全。

yum install -y psmisc 安装killall

如果以后的工作中遇到mysqld的进程杀不死,ps还会有进程,那说明将数据慢慢写入到磁盘中,千万不能使用kill -9来杀进程,否则很可能丢数据。

 

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
  • 解压安装包: 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
  • 创建用户(与mysql共用,因为之前已创建可以不用再创建):useradd mysql
  • 移动至安装目录: cd /usr/local/mariadb
  • 创建datadir目录:mkdir /data/mariadb (为了与mysql区分,在data下再创建一个目录)
  • 初始化mariadb:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/data/mariadb (防止初始化错误与mysql冲突,需指定basedir的路径)
  • 在目录/usr/local/mariadb/support-files下有多个配置文件模板,最大的差异是它们的缓存大小不同,根据你的内存大小选择配置模板,此处我们选择最小缓存的配置文件:my-small.cnf
  • 复制配置文件正常是放在/etc/my.cnf 下为防止与mysql的配置文件冲突不放在/etc/目录下: cp my-small.cnf /usr/local/mariadb/my.cnf 若不在此处指定datadir的路径,当系统装有mysql时会调用mysql配置文件中的datadir路径
  • 复制脚本文件:cp support-files/mysql.server /etc/init.d/mariadb
  • 编辑配置文件:设置basedir和datadir的目录,因为自定义配置文件的缘故还要在加注一条配置文件的路径(若默认在etc下则不用)。

 

  • 在配置文件的启动项处,添加配置文件的启动路径:

  • 启动mariadb服务(启动前需关闭mysql):/etc/init.d/mariadb start
  • 当系统装有mysql和mariadb两个数据库文件时,安装mysql的配置文件会影响的mariadb,如未在mariadb的配置文件下为datadir指定目录时,就会导致mariadb会去mysql的配置文件下寻找datadir的路径。

 

 

Apache安装

Apache是一个基金会的名字,httpd才是我们要安装的软件包,早期它的名字就叫apache。Apache官网www.apache.org 。安装httpd时用到的apr和apr-util是一个通用的函数库,它可以让httpd可以不关心底层的操作系统平台,可以很方便地移植(从linux移植到windows)

 

下载httpd和aprapr-util

cd /usr/local/src/

wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.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.gz

 

解压

tar zxvf httpd-2.4.34.tar.gz

tar zxvf apr-1.6.3.tar.gz

tar zxvf apr-util-1.6.1.tar.gz

 

  •  
  • 按先后顺序安装编译apr、apr-util、apache
  • 编译需要用gcc yum install -y gcc gcc-c++
  • cd apr-1.6.3/ 目录并编译后安装:./configure --prefix=/usr/local/apr && make && make install
  • 生成apr-util的安装目录并编译后安装:./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 )
  • 生成httpd的安装目录并编译后安装./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most 其中--enable-so选项为开启动态模块、--enable-mods-shared=most尽可能多的安装常用的动态模块

报错 缺少pcre 库

yum install pcre-devel -y

报错 error: ld returned 1 exit status make

yum install libtools-ltdl-devel 并重新编译安装apr-util

  • /usr/local/apache2.4/常用的几个目录
  1. bin:启动进程的目录
  2. conf: 配置文件所在目录
  3. htdocs:访问网站时,默认网站会放置在这个目录下
  4. logs:日志目录
  5. man:帮助文档
  6. modules:扩展模块
  • 查看httpd开启的模块命令:/usr/local/apache2.4/bin/httpd -M 或 /usr/local/apache2.4/bin/apachectl -M
  • 其中static(静态模块)会直接编译进httpd主二进制文件里/usr/local/apache2.4/bin/httpd
  • 而shared(扩展模块):保存在modules目录下
  • 启动httpd(apache):/usr/local/apache2.4/bin/apachectl start 不用定义启动脚本

启动后查看进程 ps aux |grep httpd

查看监听端口 netstat -lnp|grep httpd http默认80端口

 

安装PHP5

  • cd /usr/local/src/
  • 下载源码包:wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
  • 解压源码包: tar -jxvf php-5.6.32.tar.bz2
  • 移至解压后的cd 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
  • 报错

error: xml2-config not found. Please check your libxml2 installation.

yum install -y libxml2-devel

error: Cannot find OpenSSL's <evp.h>

yum install -y openssl-devel

error: Please reinstall the BZip2 distribution

yum install -y bzip2-devel

error: jpeglib.h not found.

yum install -y libjpeg-turbo-devel

error: png.h not found

yum install -y libpng-devel

error: freetype-config not found

yum install -y freetype-devel

error: mcrypt.h not found. Please reinstall libmcrypt (这个包在epel扩展源里)

yum install -y libmcrypt-devel

安装完成显示下面图片

  • make && make install
  • 其中/usr/local/apache2.4/modules/libphp5.so就是我们想要的模块,php与apache结合起来就是用的libphp5.so这个文件。即使把php目录删除也不影响Apache调到php,如果删除了libphp5.so的文件就无法调用php
  • 查看加载的模块 /usr/local/php/bin/php -m

php是最为httpd的扩展模块存在的

 

查看到php的信息 路径编译参数等

/usr/local/php/bin/php -i

-将参考配置文件拷贝到/etc/目录下

cp php.ini-production /usr/local/php/etc/php.ini

(php.ini-development测试环境 php.ini-production生产环境用的 )

 

 

安装PHP7

  • 下载php7的源码包:wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
  • 解压源码包: tar -jxvf php-7.1.6.tar.bz2
  • 移至解压后的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
  • 根据自己的需求使用php5还是php7在配置文件vi /usr/local/apache2.4/conf/httpd.conf 中注释掉

 

Apache和PHP结合

/usr/local/apache2.4/bin/apachectl start 启动时报错

修改vi /usr/local/apache2.4/conf/httpd.conf 去掉 ServerName www.example.com:80去掉注释

因为之前下载了两个php所以需要注释掉一个否则也会报错

 

如果在浏览器中输入ip地址不能访问 开始排查错误

1.检查能否ping通和80端口

 

检查iptables防火墙将80端口开放

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

打开浏览器ip显示

 

如果显示403错误

Require all denied该为granted 允许访问

增加一行用来支持php的配置 AddType application/x-httpd-php .php

再增加一个php索引页

最后检查语法有没有错误 /usr/local/apache2.4/bin/apachectl -t

重新加载服务 /usr/local/apache2.4/bin/apachectl graceful

 

编辑一个php文件检查是否解析php

vi /usr/local/apache2.4/htdocs/1.php

显示页面解析成功如果没有解析需要排查问题

1. /usr/local/apache2.4/bin/apachectl -M 看最后有没有加载php模块

2.如果没有加载需要看有没有这个模块 ls /usr/local/apache2.4/modules/libphp5.so 有该文件但是没有显示,这时就要查看配置文件 vi /usr/local/apache2.4/conf/httpd.conf有没有加载libphp5.so这一行的配置

3.检查配置文件 vi /usr/local/apache2.4/conf/httpd.conf是否添加有AddType application/x-httpd-php .php这一行。(注意php前的空格)

4.检查配置文件 vi /usr/local/apache2.4/conf/httpd.conf 中这一行DirectoryIndex index.html index.php(index.php有没有添加)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值