LAMP架构编译

  • LAMP架构简介
  • LAMP工作原理:
  • 1.编译安装Apache
  • 准备工作
  • 编译及安装
  • 访问测试
  • 2.编译安装MySQL数据库
  • 准备工作
  • 编译及安装
  • 测试验证
  • 3.编译安装PHP
  • 准备工作
  • 配置模块说明
  • 编译及安装
  • 测试验证
  • 4.编译安装phpMyadmin
  • 编译及安装
  • 数据库与php的联通
  • 测试验证


LAMP架构简介

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

LAMP工作原理:

lamp系统架构 lamp架构搭建_lamp系统架构

1.编译安装Apache

  • 安装Apache所需软件

准备工作

首先准备Apache源码包,安装apr和prel,是Apache支持跨平台应用和正则必不可少的

安装依赖包:
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz

解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2

[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
 
安装环境:
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
  • 依赖环境包说明:

gcc ###C语言的编译器
gcc-c++ ###C++的编译器
make ###源代码编译(源代码转换成二进制文件)
pcre-devel ###支持正则表达式
expat-devel ###网站解析HTML文件
perl ###perl编译器

configure配置

[root@localhost ~]# cd /opt/httpd-2.4.29/

[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
  • 配置模块说明

–prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
–enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码
–enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。

编译及安装

[root@localhost ~]# make && make install    
优化执行路径:
[root@localhost ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
设置系统服务:
[root@localhost bin]# cp apachectl /etc/init.d/httpd	'//将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd'
[root@localhost bin]# cd /etc/init.d/
[root@localhost init.d]# ls
functions  httpd  netconsole  network  README
[root@localhost init.d]# vim /etc/init.d/httpd 
#!/bin/sh	        '//在行首插入下两行内容,并保存退出'
\# chkconfig: 35 85 21 	 '//35级别自动运行  第85个启动 第21个关闭' (85和21数字可以自定义,35指字符和图形终端)
\# description: Apache is a World Wide Web server
[root@localhost init.d]# chkconfig --add httpd 	  '//将httpd加入到SERVICE管理器'   
[root@localhost init.d]# chmod +x /etc/init.d/httpd
[root@localhost init.d]# service httpd start
[root@localhost init.d]# netstat -anutp |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      127730/httpd

lamp系统架构 lamp架构搭建_apache_02

修改主配置文件:
[root@localhost bin]# vi /etc/httpd.conf 
ServerName www.aa.com:80  ##要想域名访问,这里需要修改
[root@localhost bin]# apachectl -t   //-t检查语法错误做过启动服务优化后httpd -t同样效果
Syntax OK
[root@localhost bin]# systemctl restart httpd

lamp系统架构 lamp架构搭建_mysql_03

访问测试

lamp系统架构 lamp架构搭建_mysql_04

2.编译安装MySQL数据库

准备工作

依赖包:
mysql-boost-5.7.20.tar.gz

安装:
[root@localhost opt]# yum -y install \
ncurses \      ##字符终端的处理库,是一种计算机语言
ncurses-devel \
bison \
cmake     ##mysql只支持cmake安装
创建程序账号:
[root@localhost opt]# useradd -s /sbin/nologin mysql  //新增mysql作为禁止登入的程序账号
[root@localhost opt]# tail -1 /etc/passwd  //查看新增用户
mysql:x:1001:1001::/home/mysql:/sbin/nologin
[root@localhost opt]# tar xf mysql-boost-5.7.20.tar.gz  //解压源码包
[root@localhost opt]# ls  查看解压后目录文件
 mysql-5.7.20  mysql-boost-5.7.20.tar.gz  
[root@localhost opt]# cd /opt/mysql-5.7.20
[root@localhost mysql-5.7.20]# 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

配置模块说明

1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,如目录/usr/local/ mysql。
2、DMYSQL_UNIX_ADDR:指定套接字文件的存储路径,数据库连接的文件
3、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
5、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安装INNOBASE存储引擎
7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安装FEDERATED存储引擎

编译及安装

[root@localhost mysql-5.7.20]# make && make install

数据库目录进行权限调整
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/  ##将mysql下的所有目录及文件属主和属组改为mysql

建立调整配置文件:

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/mysql.pid   #进程文件
socket = /usr/local/mysql/mysql.sock
server-id = 1


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
设置环境变量:
[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# source /etc/profile
初始化MySQL数据库:
[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \   ##初始化的命令
--user=mysql \   ##指明用户
--basedir=/usr/local/mysql \   ##指定了工作目录
--datadir=/usr/local/mysql/data  ##在指定了数据存放的位置

编译启动文件:
[root@localhost mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service   //将服务文件拷贝到系统服务目录下
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost ~]# netstat -ntap|grep 3306
tcp6     0    0  ::3306       ::: *              LISTEN      50925/mysqld        
[root@localhost ~]# mysqladmin -u root -p password "123123"	'//给root用户设置密码'
##mysqladmin -u用户名 -p旧密码 password 新密码,初次设置时没有旧密码,因此直接回车就可以了, password后面跟的新密码
[root@localhost mysql]# mysqladmin -u root -p password    
##password 后面不跟新密码,则需要进入交互模式中手动输入两次

登录:
[root@localhost ~]# mysql -u root -p
Enter password:

测试验证

lamp系统架构 lamp架构搭建_php_05

3.编译安装PHP

准备工作

依赖包:
php-7.1.10.tar.bz2
phpMyAdmin-4.7.6-all-languages

安装:
[root@localhost ~]# yum -y install \
gd \   ##gd图像处理库
libjpeg \   ##jepg图像识别
libjpeg-devel \   
libpng \   ##png图像识别,截图格式
libpng-devel \
freetype \   ##字体识别
freetype-devel \
libxml2 \     ##xml文件识别
libxml2-devel \
zlib \     ##压缩库
zlib-devel \
curl \
curl-devel \
openssl \    ##安全链接,即身份验证
openssl-devel

[root@localhost ~]#  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@localhost ~]#  ls -lh
[root@localhost ~]#  tar jxvf php-7.1.10.tar.bz2

[root@localhost php-7.1.10]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \    ##指定安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \      #apx2可以让PHP功能模块加载给Apache使用,若不配置这条,Apache将不显示PHP的图像
--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

配置模块说明

./configure
–prefix=/usr/local/php #安装路径
–with- apxs2=/usr/ local/ht tpd/bin/apxs#让apache支持php,
–with-mysql-sock=/usr/ local/mysql/mysql. sock \ #指明mysq1的套接字路径
–with-mysqli . #调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
–with-zlib \ #打开zlib函式库
–with-curl \ #调用curl规则
–with-gd #打开gd库,gd库是为了创建新图像或处理已有的图像
–with-jpeg-dir \ #让gd库支持jpeg格式
–with-png-dir #让gd库支持png格式
–with- freetype-dir #打开字体引擎
–with-openssl \ #打开ss1安全套接字功能
–enable-mbstring \ #开启mbstring扩展,有了这个功能可设置其支持utf-8编码
–enable-xml \ #支持XML文件格式
–enable-session \ #开启会话保持功能
–enable-ftp #开启ftp扩展
–enable-pdo#PD0作用是统–各种数据库的访问接口
–enable- tokenizer \ #分词器,Tokenizer实际上只是生成了一个字典,并且统计了词频等信息
–enable-zip #打开对zip文件的支持

编译及安装

[root@localhost php-7.1.10]# make && make install
[root@localhost php-7.1.10]# ls -lh

复制php.ini-development开发样板:
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini

修改php.ini-development开发样板:
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini 

mysqli.default_socket = /usr/local/mysql/musql.sock
date.timezone = Asia/Shanghai

lamp系统架构 lamp架构搭建_mysql_06


lamp系统架构 lamp架构搭建_apache_07

修改Apache配置文件:
[root@localhost opt]# vi /etc/httpd.conf 

    AddType application/x-httpd-php .php    //插入这两行文字  ,是Apache支持PHP
    AddType application/x-httpd-php-source .phps   //插入这行文字

<IfModule dir_module>
 DirectoryIndex index.html
 DirectoryIndex index.php index.html  //插入这行文字 ,添加支持index.php格式的首页文件
</IfModule>

lamp系统架构 lamp架构搭建_linux_08

lamp系统架构 lamp架构搭建_apache_09

修改主页内容:
[root@localhost opt]# vi /usr/local/httpd/htdocs/index.php  //新增php首页
<?php
phpinfo();        ##一种PHP底层的函数
?>
重启Apache服务
[root@mysql3 htdocs]# service httpd stop
[root@mysql3 htdocs]# service httpd start

lamp系统架构 lamp架构搭建_linux_10

测试验证

lamp系统架构 lamp架构搭建_php_11


lamp系统架构 lamp架构搭建_php_12

4.编译安装phpMyadmin

编译及安装

上传phpMyadmin压缩包至/opt目录下并解压缩:
[root@localhost ~]# cd /opt
[root@localhost opt]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/

将内容拷贝至Apache服务站点主页:
[root@localhost opt]# mv /opt/phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm

修改服务站点:
[root@localhost ~]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
[root@localhost ~]# cp /usr/local/httpd/htdocs/myadm/config.sample.inc.php /usr/local/httpd/htdocs/myadm/config.inc.php 
[root@localhost ~]# vi /usr/local/httpd/htdocs/myadm/config.inc.php 
$cfg['Servers'][$i]['host'] = '20.0.0.10';

lamp系统架构 lamp架构搭建_lamp系统架构_13

数据库与php的联通

[root@localhost ~]# mysql -uroot -p123123
mysql> create database myadm;  创建一个数据库
mysql> grant all privileges on myadm.* to 'myadm'@'localhost' identified by 'admin123'; 本地授权
mysql> grant all privileges on myadm.* to 'myadm'@'%' identified by 'admin123';   远程授权
%:表示范围,任意
[root@localhost ~]# mysql -uroot -pabc123
mysql> grant all privileges on *.* to 'root'@'www.aa.com' identified by '123123';
mysql> flush privileges; 刷新
mysql> exit

lamp系统架构 lamp架构搭建_mysql_14

修改php的网页:
[root@localhost ~]# vi /usr/local/httpd/htdocs/index.php

<?php
$link=mysqli_connect('192.168.200.60','myadm','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!";
?>

'192.168.200.60':本机地址 
'myadm':数据库登录名 
'admin123':  登录密码

lamp系统架构 lamp架构搭建_mysql_15

测试验证

lamp系统架构 lamp架构搭建_linux_16

登录

lamp系统架构 lamp架构搭建_apache_17


lamp系统架构 lamp架构搭建_php_18