Web服务器群集--部署LAMP平台及LAMP架构的应用(Apache、MySQL、PHP)

LAMP前言

  • LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。
  • 在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作。

1.Apache网站服务基础

1.1 Apache简介

Apache HTTP Server 是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在Web服务领域中长期保持着超过半数的份额。Apache服务器可以运行在Linux、UNIX、Windows 等多种操作系统中。

Apache的起源:

  • 源于A Patchy Server,著名的开源Web服务软件
  • 1995年时,发布Apache服务程序的1.0版本
  • 由Apache软件基金会(ASF) 负责维护
  • 最新的名称为“Apache HTTP Server”
  • 官方站点: htp://ttpd.apache.org/

1.2 Apache 版本与特点

  • 主要特点:
    开放源代码、跨平台应用;支持多种网页编程语言
    模块化设计、运行稳定、良好的安全性

  • 软件版本
    1.X:目前最高版本是1.3,运行稳定。向下兼容性较好, 但缺乏一些较新的功能;
    2.X:目前最高版本是2.4,具有更多的功能特性。与1.X相比, 配置管理风格存在较大差异。

1.3 编译安装的优点

现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。编译安装具有以下优点:

  • 具有较大的自由度,功能可定制;
  • 可及时获得最新的软件版本;
  • 普遍适用于大多数Linux版本,便于一直使用。

2.Apache编译安装

2.1 环境准备

1)VMware虚拟机软件
2)CentOS7操作系统
3)Apache服务的源码包
4)Apache跨平台组件包

在这里插入图片描述

2.2 源码编译及安装

2.2.1 准备工作

[root@localhost ~]# rpm -e httpd --nodeps      //为了避免冲突,先卸载使用RPM方式安装的httpd

2.2.2 解包并配置安装

  • 将下载获得的 httpd 源码包解压并释放到 /usr/src 目录下,且切换到展开后的源目录中进行相关配置安装。
[root@localhost ~]# tar zxvf apr-1.6.2.tar.gz
[root@localhost ~]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost ~]# tar zxf httpd-2.4.29.tar.gz -C /usr/src
[root@localhost ~]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost ~]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost ~]# yum -y install pcre-devel expat-devel perl
		//pcre-devel ,支持正则表达式的工具
		//expat-devel ,使网站能解析标签语言的工具
		//perl ,Perl语言工具
[root@localhost ~]# cd /usr/src/ttpd-2.4.29/
[root@localhost httpd-2.4. 29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewriteb
--enable-charset-lite --enable-cgi

//--prefix= 指定安装路径
//enable-so 开启核心功能模块
//enable-rewrite 开启重写功能,一般用于防盗链
//enable-charset-lite 指定字符集
//enable=cgi 底层网关的通用接口

[root@localhost httpd-2.4. 29]# make && make install  //完成配置后进行编译安装

2.2.3 确认安装结果

  • 由于指定的安装目录为 /usr/local/httpd ,因此 httpd 服务的各种程序、模块、帮助文件等都将辅助到此目录下
[root@localhost ~]# ls /usr/local/httpd
bin cgi-bin error icons logs manual
build conf htdocs include man modules

2.2.4 优化执行路径

[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin		//添加链接,为了使服务在使用时更方便
[root@localhost ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx 1 root root 30 510 06:20 /usr/local/bin/apachectl ->/usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 510 06:20 /usr/local/bin/httpd ->/usr/local/httpd/bin/httpd

2.2.5 添加httpd系统服务

  • 通过systemctl 进行管理系统服务
[root@localhost ~]# vim /lib/systemd/system/httpd.service	//让Apache开机自启动
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RetartSec=42s
[Install]
WantedBy=graphical.target
[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost ~]# vi /etc/init.d/httpd
#chkconfig: 35 85 21	//添加,35级别自动运行 第85个启动 第21个关闭
#description: Apache is a World Wide Web server	//添加
[root@localhost ~]# chkconfig --add httpd	//将httpd加入到SERVICE管理器
[root@localhost ~]# chkconfig --list
[root@localhost ~]# systemctl enable httpd.service

2.2.6 web站点部署过程

  • 确定网站名字、IP地址:例如在Web服务器本机中,将IP地址设置为192.168.140.15,将主机名称设置为 www.aa.com ; 并修改 /etc/hosts 文件,添加相应的映射记录以提高本地解析速度。
  • 配置并启动httpd服务
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
......	//省略部分信息
ServerName www.aa.com
Listen 80
......
[root@localhost ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# echo "<h1>this is my web site.</h1>" > /usr/local/httpd/htdocs/index.html	
									//部署网页文档
[root@localhost ~]# netstat -anpt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      85501/httpd 
[root@localhost ~]# curl http://localhost
<h1>this is my web site.</h1>
  • 在客户机中访问Web站点

在这里插入图片描述

2.3 httpd配置文件

主要目录和文件

  • 服务目录: /usr/local/httpd/
  • 主配置文件: /usr/local/httpd/conf/httpd.conf
  • 网页目录: /usr/local/httpd/htpdocs/
  • 服务脚本: /usr/local/httpd/bin/apachectl
  • 执行程序: /usr/local/httpd/bin/httpd
  • 访问日志: /usr/local/httpd/log/access_log
  • 错误日志: /usr/local/httpd/log/err_log

2.3.1 httpd.conf 全局配置项

  • 决定httpd服务器的全局运行参数
ServerRoot "/usr/local/httpd"
Listen 80     //修改项
User daemon
Group daemon
ServerAdmin webmaster@kgc.com
ServerName www.kgc.com   //修改项
DocumentRoot "/usr/local/httpd/htdocs" 
DirectoryIndex index.html index.php
ErrorLog logs/error_ log
LogLevel warn
CustomLog logs/access_log common
PidFile logs/httpd.pid
CharsetDefault UTF-8
Include conf/extra/httpd-default.conf
......
  • httpd.conf常用的全局配置参数 (用于优化)含义如下
ServerRoot:服务目录
Listen:监听的IP地址、端口号
User:运行服务的用户身份
Group:运行服务的组身份
ServerAdmin:管理员邮箱
ServerName:网站服务器的域名
DocumentRoot:网页文档的根目录
DirectoryIndex:默认的索引页文件
ErrorLog:设置错误日志文件的路径
LogLevel:记录日志的级别,默认为warn
CustomLog:访问日志文件的位置
PidFile: 保存httpd进程PID号的文件
AddDefaultCharset:设置站点中网页默认的字符集编码
Timeout:网络连接超时,默认为300秒
KeepAlive:是否保持连接,可选On或Off
MaxKeepAliveRequests:每次连接最多请求文件数
KeepAlive Timeout:保持连接状态时的超时时间
Include:需要包含进来的其他配置文件

2.3.2 区域配置项

  • 使用一对组合标记,限定了配置项的作用范围
<Directory />                //标记起点,定义目标区域的开始
Options FollowSymLinks		//控制选项允许使用符号链接
AllowOverride none			//不允许隐含控制文件中的覆盖配置
Order deny,allow			//访问控制策略的应用顺序
Require all denied			//禁止任何人访问此区域
</Directory>                //标记终点,定义目录区域的结束

3.MySQL服务源码编译安装

  • 需要准备MySQL组件包,如图

在这里插入图片描述

3.1 环境准备

  • 在apache编译环境下进行如下配置
[root@server ~]# yum -y install ncurses-devel autoconf cmake 
    //ncurses-devel是字符终端下屏幕控制的基本库
    //autoconf生成可以自动配置软件源代码
    //cmake跨平台编译安装工具
[root@server ~]# useradd -s /sbin/nologin mysql
[root@server ~]# tar zxvf mysql-boost-5.7.20.tar.gz
[root@server ~]# cd mysql-5.7.20/

3.2 cmake安装

[root@server mysql]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

3.3 make编译和make install

[root@server mysql]# make && make install
······		//编译时间较长,请耐心等待
[root@server mysql]# cd
[root@server ~]# chown -R mysql:mysql /usr/local/mysql/		//设置属主和数组

3.4 配置MySQL系统 /etc/my.cnf 文件

[root@server ~]# vi /etc/my.cnf		//删除原有配置,并添加以下配置
[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server = utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1	//区分数据库,与UUID类似
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

3.5 设置环境变量

[root@server ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile 
				//改变环境变量,对环境变量进行赋值
[root@server ~]# echo 'export PATH' >> /etc/profile		
[root@server ~]# source /etc/profile	//使配置立即生效

3.6 初始化数据库

[root@server ~]# mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

3.7 添加并启动系统服务

[root@server ~]# cd /usr/local/mysql/
[root@server ~]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
[root@server ~]# systemctl daemon-reload	 //守护进程重新加载
[root@server ~]# systemctl start mysqld
[root@server ~]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      1039/mysqld
[root@server ~]# systemctl enable mysqld

3.8 访问MySQL数据库

3.8.1 登录到MySQL服务器

[root@server ~]# mysql -uroot -p	//初始化密码,第一次以空密码登录

在这里插入图片描述

  • 也可以更改设置登录密码
[root@server ~]# mysqladmin -uroot -p password 'abc123'  //给root账号设置密码为abc123
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@server ~]# mysql -uroot -pabc123

在这里插入图片描述

在这里插入图片描述

3.8.2 执行MySQL操作语句

[root@server ~]# mysql -uroot -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>show databases;	//查看当前mysql服务器中包含的库

在这里插入图片描述

mysql>use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>show tables;  //查看当前所在库中包含的表

在这里插入图片描述

  • 退出"mysql>"操作环境
mysql> exit
Bye
[root@server ~]# 

4.构建PHP运行环境

4.1 PHP概述

  • PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域;
  • PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统。

4.2 源码编译过程

  • 准备相关软件包,如图

在这里插入图片描述

4.2.1 配置环境

[root@server ~]# yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
[root@server ~]# tar jxvf php-7.1.10.tar.bz2

4.2.2 configure配置

[root@server ~]# cd php-7.1.10
[root@server php-7.1.10]# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

4.2.3 编译安装并调整 php.ini 配置

[root@server php-7.1.10]# make && make install
[root@server php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@server php-7.1.10]# vi /usr/local/php/lib/php.ini
······		//省略部分信息
mysqli.default_socket = /usr/local/mysql/mysql.sock  //填入的配置文件
date.timezone = Asia/Shanghai	//php里面";"表示注释,这里去掉开头的分号
[root@server php-7.1.10]# cd
[root@server ~]# /usr/local/php/bin/php -m  	//验证安装的模块
[root@server ~]# vi /etc/httpd.conf		//在合适位置新增(在AddType后添加)
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html		//将DirectoryIndex index.html修改为改配置

4.3 测试LAMP的协同工作

[root@server ~]# rm -f /usr/local/httpd/htdocs/index.html	//删除原有的html文件
[root@server ~]# vi /usr/local/httpd/htdocs/index2.php		//编写一个".php"格式的测试网页文件
<?php
phpinfo(); 	//PHP格式<?...?>
?>
[root@server ~]# vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('192.168.140.15','myadm','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
[root@server ~]# systemctl restart httpd 
[root@server ~]# netstat -anpt | grep httpd		//注意:如果查不到80端口,需 pkill httpd,再重启httpd服务
[root@server ~]# httpd -t
  • 通过浏览器访问测试网页

1)测试PHP网页能否正常显示

在这里插入图片描述

2)测试PHP网页能否正常访问MySQL数据库

在这里插入图片描述

5.部署phpMyadmin系统

5.1 解包并复制到网站目录

[root@server ~]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
[root@server ~]# cd /opt/
[root@server opt]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm

5.2 建立配置文件config.inc.php

[root@server opt]# cd /usr/local/httpd/htdocs/myadm
[root@server myadm]# cp config.sample.inc.php config.inc.php
[root@server myadm]# vi config.inc.php
$cfg['Servers'][$i]['host'] = '192.168.140.15';

5.3 访问phpMyadmin的Web管理界面

在这里插入图片描述

  • 登录后即可对数据库进行管理

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页