目录

  • 一、LAMP简介
  • 二、Apache
    • 2.1 简介
    • 2.2 特点
    • 2.3 安装Apache
  • 三、MySQL安装
  • 四、编译安装PHP环境
  • 五、编译安装phpMyadmin

一、LAMP简介

LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。

LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定制化的需求。

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

二、Apache

2.1 简介

  • “Apache HTTP Server”是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。
  • Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补丁)后形成的服务器程序”。1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会(Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。
  • ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基金会的官方网站是 http://www.apache.org/。
  • “Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”,均指的是“Apache HTTP Server”。

2.2 特点

1、开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。

2、跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。Apache 服务器的跨平台特性使其具有被广泛应用的条件。

3、支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。

4、模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身并不具有的其他功能。

5、运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很多知名的企业网站都使用 Apache 作为 Web 服务软件。

6、良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为 Apache 的所有使用者提供尽可能安全的服务器程序。

2.3 安装Apache

Apache所需安装包:

  • apr-1.6.2.tar.gz:
    为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。早期apache为了能够处理各种不同的系统平台的时候调用不同的处理函数,现在apache将通用函数独立出来发展成apr项目。
  • apr-util-1.6.0.tar.gz:
    完整的apr开发包包含三个:apr、apr-util、apr-iconv。都是为了完成一个功能就是为上层应用提供运行库,只不过和apr提供的数据结果和接口库不一样而已。
  • httpd-2.4.29.tar.gz

将上面3个包传到opt目录下
解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下

[root@localhost ~]# cd /opt
[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2 ###yum -y install bzip2
[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 opt]# cd /opt/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 脚本程序支持,便于扩展网站的应用访问能力。

编译及安装

make && make install
####先make -j3   然后make install   -j3是你核心数,最大不要超过虚拟机的核心数

优化执行路径

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
httpd -v      ###查看下HTTP版本

修改配置文件

vi /usr/local/httpd/conf/httpd.conf
ServerName www.test.top:80  可访问域名

建立[service].service 配置文件添加系统给服务,可以用systemctl命令管理
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,

[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
[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
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

启动服务

[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service         ###开机自启http
[root@localhost system]# systemctl is-enabled httpd.service   ###检查HTTP单元是否启动

三、MySQL安装

安装环境

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

创建运行账户

useradd -M -s /sbin/nologin mysql

cmake配置

tar zxf /opt/mysql-5.7.20.gz
cd /opt/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存储引擎

编译安装

make && make install

数据库目录进行权限调整

chown -R mysql:mysql /usr/local/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/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_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

调整配置文件权限

chown mysql:mysql /etc/my.cnf

设置环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

初始化数据库

cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

复制启动文件

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

启动数据库并查看状态

systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306

设置root登陆并设置密码

mysqladmin -u root -p password "123123"
刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

登录数据库

mysql -u root -p
回车输入密码

四、编译安装PHP环境

安装环境

yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

上传文件至/opt目录下并解压缩

cd /opt
tar jxf php-7.1.10.tar.bz2

configure配置

cd 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

编译详解

1、prefix=/usr/local/php    ###指定将 PHP 程序安装到哪个目录下
2、with-apxs2=/usr/local/httpd/bin/apxs  ###设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置
3、with-mysql-sock=/usr/local/mysql/mysql.sock  ###指定mysql的mysql.sock位置
4、with-mysqli  ###mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
5、with-zlib    ###支持zlib功能--压缩流
6、with-curl    ###开启curl扩展功能
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法
7、with-gd    ###激活gd库的支持
8、with-jpeg-dir     ###要激活 jpeg 的支持
9、with-png-dir    ###要激活png的支持
10、enable-mbstring    ###启用多字节字符串功能,以便支持中文等代码。

编译安装

make && make install

复制php.ini-development开发样板

cp php-7.1.10/php.ini-development /usr/local/php/lib/php.ini

修改php.ini-development开发样板

vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

修改Apache配置文件

vi /etc/httpd.conf
#新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html

修改php主页内容

rm -f /usr/local/httpd/htdocs/index.html
vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

重启Apache服务

systemctl restart httpd

访问http://192.168.247.130/测试,自己本主机IP
下面测试数据库工作是否正常,数据库授权

mysql -u root -p
CREATE DATABASE myadm;
GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

编辑php测试网页

vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('192.168.32.21','myadm','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

访问http://192.168.247.130/测试下

五、编译安装phpMyadmin

上传phpMyadmin压缩包至/opt目录下并解压缩

cd /opt
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/

将内容拷贝至Apache服务站点主页

mv /opt/phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm

修改服务站点

cd /usr/local/httpd/htdocs/myadm
cp config.sample.inc.php config.inc.php
vi config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP

验证
在浏览器输入:http://192.168.247.130/myadm (自己的IP)
使用root 以及前面为root配置的密码登录管理系统。可以对数据库进行管理操作了

LAMP网站架构的介绍和搭建相关推荐

  1. linux下yum搭建lamp,linux下Yum搭建lamp网站架构

    在上节课我用了源代码和免安装软件的两种方式搭建了LAMP架构的网站,今天我们对上一节做个简单的总结: 源代码安装软件是我们Linux下常用的安装方法共分四个步骤: 在上一节我们的数据库就是免安装的.直 ...

  2. 【转】LAMP网站架构方案分析【精辟】

    [转]LAMP网站架构方案分析[精辟] http://www.cnblogs.com/mo-beifeng/archive/2011/09/13/2175197.html Xubuntu下LAMP环境 ...

  3. LAMP网站架构简介

    LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编 ...

  4. LAMP网站架构方案分析

    LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编 ...

  5. 大型网站架构演变和知识体系

    存爱好,作为收藏,原地址:http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html ,同时向原创致敬 之前也有一些介绍大型网站架构 ...

  6. 大型网站架构演变和知识体系--转

    之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不 ...

  7. 大型网站 linux,大型网站架构演变

    之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不 ...

  8. [转载]大型网站架构演变和知识体系

    之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不 ...

  9. 大型网站架构演变和知识体系(转)

    之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不 ...

最新文章

  1. 使用ReaderWriterLock优化文件缓存
  2. 测试Infineon车载LED驱动芯片TLD2131
  3. hdu 1251 统计难题(trie树入门)
  4. java代码执行流程
  5. Androi App缓存管理
  6. Scala 内部类及外部类
  7. LinearLayout和RelativeLayout 区别
  8. LabVIEW设计模式系列——移位寄存器
  9. 产品经理有哪些类型?
  10. ssh 介绍 和使用 程序不挂起
  11. JS对象与JSON串互转
  12. 在UWP的XAML中使用原始类型
  13. 数据库学习笔记1-事务 transaction
  14. C++ WinExec system 隐藏黑框;清空文件
  15. spring扩展点四:SmartInitializingSingleton的应用
  16. java程序的入口点_Java程序的入口点
  17. 统一服务消息 【公众号和小程序 模板消息下发统一openId解惑】
  18. Spring Boot cache backed guava/caffeine
  19. R语言灰色关联分析法
  20. js如何遍历map类型

热门文章

  1. 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
  2. 简报 | 井通公链实现商业应用真实用户数突破百万
  3. NLP在线医生(三)
  4. 室内空气质量类毕业论文文献包含哪些?
  5. #175-【线段树与树状数组】砍树
  6. 1718 Cos的多项式
  7. 购物搜索引擎/比较购物网站
  8. 网站(B/s)架构发展探索、分析
  9. Mobileye在耶路撒冷启动自动驾驶测试,挑战极限路况
  10. 新加坡金融科技节 | 蚂蚁金服CTO程立:面向全球开放,与合作伙伴共赢