LAMP架构

174 阅读6分钟

LAMP架构

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Teb站点服务及其应用开发环境。
LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MysQL数据库服务器、PHP(或Perl、Python)网页编程语言。

各组件作用

  • Linux:(平台)作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性 (AMP组件也支持Windows、UNIX等平台)
  • Apache:(前台)作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务供用户访问网页,处理静态页面请求。
  • MySQL:(后台)作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。
  • PHP/Perl/Python:(中间连接)作为三种开发动态网页的编程语言,处理动态页面的请求,解释动态网页文件;作为中间件负责沟通web服务器和后端数据库的协同工作。用户连接到apache服务的web页面发送请求,通过php代码连接mysql的api接口管理数据库中的数据。

在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序,PHP环境的安装放到最后安装,负责沟通Web服务器和数据库系统以协同工作。

安装顺序:Linux > apache/mysql > php

编译安装Apache httpd服务

  1. 关闭防火墙 image.png

  2. 安装环境依赖包 image.png

依赖包作用
gccC语言的编译器
gcc-c++C++的编译器
make源代码编译器(源代码转换成二进制文件)
pcrepcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-develperl的接口开发包
expat-devel用于支持网站解析HTML、XML文件
perlperl语言编译器
  1. 在opt目录下新建apache目录,将所需数据包移到apache目录下 image.png image.png

  2. 解压,移动解压后文件全到http-2.4.29下 image.png

    配置软件模块 image.png

  3. 编译与安装 image.png

  4. 优化配置文件路径,方便操作 image.png image.png

    并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别 image.png

  5. 添加httpd系统服务

    • 方法一

      • 复制文件,用于service服务管理,并赋予文件权限 image.png

      • 修改该文件 image.png

      • 将httpd服务加入到service管理器 image.png

      • 启动服务systemctl start httpd.service或service httpd start image.png

    • 方法二 image.png image.png

  6. 修改httpd 服务配置文件,建议先备份,以免出错后不好还原 image.png

    • 修改 image.png image.png

    • 其余配置作用,这里不用修改 image.png image.png

    修改完后,检查配置文件的配置项是否有误 image.png

    首页文件的内容 image.png

    重新启动服务 image.png

  7. 浏览器访问验证 image.png image.png image.png image.png

    访问的页面存放在/usr/local/httpd/htdocs/下,在里面新编写一个html文件 image.png image.png

    在浏览器中,域名或地址后跟上该文件就能访问到内容 image.png image.png

编译安装mysqld 服务

  1. 在opt目录下新建mysql目录,将所需数据包移到mysql目录下 image.png

  2. 安装环境依赖包 image.png

依赖包作用
ncurses字符终端下图形互动功能的动态库
ncurses-develncurses开发包
bison语法分析器
cmakemysql需要用cmake编译安装
  1. 解压,并移动重命名boost目录 image.png

  2. 移动到mysql-5.7.17目录下,配置软件模块 image.png

    • 存储引擎选项:
      MYISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装。
      静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1
      可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)

注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

  1. 编译及安装 image.png

  2. 创建mysql用户useradd -M -s /sbin/nologin mysql image.png

  3. 修改mysql 配置文件/etc/my.cnf,删除原配置项,再重新添加内容 image.png

sql_mode常用值作用
NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER禁止GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZEROmysql中的自增长列可以从0开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE不允许日期和月份为零
NO_ZERO_DATEmysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MySQL返回NULL
PIPES_AS_CONCAT将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
ANSI_QUOTES启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
  1. 更改mysql安装目录和配置文件的属主属组 image.png

  2. 设置路径环境变量 image.png image.png

  3. 初始化数据库 image.png

  4. 添加mysqld系统服务 image.png

  5. 修改mysql 的登录密码 image.png

  6. 授权远程登录 image.png image.png image.png

编译安装PHP 解析环境

  1. 在opt目录下新建php目录,将所需数据包移到php目录下 image.png

  2. 安装GD库和GD库关联程序,用来处理和生成图片 image.png

  3. 解压,配置软件模块 image.png

  4. 编译及安装 image.png

  5. 复制模板文件作为PHP的主配置文件,并进行修改 image.png image.png image.png image.png

  6. 优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别 image.png

  7. 修改httpd 服务的配置文件,让apache支持PHP image.png image.png

    检查支持php7的模块是否存在,156行有这两个模块就代表能和apache协同工作,若没有则代表搭建失败,需要重装apache和php。 image.png

  8. 验证PHP 测试页,需要先删除原有的index.html首页,然后重启服务 image.png

    浏览器访问 image.png

安装论坛

  1. 创建数据库,并进行授权 image.png image.png image.png image.png

  2. 解压论坛压缩包unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis(-d指定解压到的位置) image.png image.png

  3. 更改论坛目录的属主
    ps aux查看发现论坛进程的用户名是daemon,如果不是,需在/usr/local/httpd/htdocs/bbs目录下更改目录属主 image.png

  4. 浏览器访问验证
    论坛页面访问
    数据库服务器:localhost(本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号)
    数据库名字:bbs
    数据库用户名:bbsuser
    数据库密码:admin123
    管理员账号:admin
    管理员密码:admin123
    image.png image.png

    论坛后台管理员页面 image.png