Web服务(04)——LAMP的简介与搭建+DISCUZ论坛

LAMP的简介与搭建+DISCUZ论坛

前言

WEB 服务器也称为 WWW(WORLD WIDE WEB 万维网)服务器,主要功能是提供网上信息浏览服务。而常见 web 服务器有:httpd(apache)、nginx+PHPtomcat、jsp+html 、win:IIS。

而其中LAMP的 Apache(HTTPD) 类 LINUX 系统——Linux+Apache+Mysql/MariaDB+Perl/PHP/Python 一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的 Web 应用程序平台。

随着开源潮流的蓬勃发展,开放源代码 的 LAMP 已经与 J2EE 和.net 商业软件形成三足鼎立之势,并且该软件开发的项目在软件方 面的投资成本较低,因此受到整个 IT 界的关注。从网站的流量上来说,50%以上的访问流量 是 LAMP 来提供的,LAMP 是最强大的网站解决方案。

一、LAMP的简介

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

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

其中各组件的主要作用为:

(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台) 。

(前台)Apache:作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容。主要功能:静态页面——发送静态请求;转发动态请求。

(后台)MySQL:作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息。数据库——数据存储/读取。

(中间连接)PHP/Perl/Python:作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。动态页面——动态请求。

而在搭建服务的时候优先选择手工编译安装的方式,其优点为:1.具有较大的自由度,功能可定制。2.可及时获得最新的软件版本3.普遍适用于大多数Linux版本,便于一直使用。

LAMP架构的工作过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OfVlccRo-1658393735801)(https://s2.loli.net/2022/07/19/47cBSnxfoiqUtp2.png)]

1.当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端。

2.当客户端请求的是动态资源时,http的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会链接mysql取得数据然后进行运算,运算的结果为静态资源有web服务器返回到客户端。

二、Apache服务

Apache HTTPD Server 简称 Apache,是 Apache 软件基金会的一个开源的网页服务器, 可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。

它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编 译到服务器中!Apache HTTP 服务器是一个模块化的服务器,各个功能使用模块化进行插拔!目前支持 Windows,Linux,Unix 等平台。

Apache 软件基金会(也就是 Apache Software Foundation,简称为 ASF),是专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件项目就是 Apache 项目。那么我们的 HTTPD 也只是 Apache 的开源项目之一。

主要的开源项目:HTTP Server,Ant,DB,iBATIS,Jakarta,Logging,Maven,Struts,Tomcat,Tapestry,Hadoop 等等。只是最有名的是 HTTP Server,所以现在所说的 Apache 已经就是 HTTPD Server 的代号了! 我们还见的比较多的是 Tomcat,Hadoop 等项目。

Apache的主要特点有:

• 开放源代码、跨平台应用、兼容性好。

• 支持多种网页编程语言、通用网关接口(cgi)、虚拟主机、http认证、服务器包含命令(ssi)、安全socket层、FastCGI、java servlets。

• 模块化设计、运行稳定、良好的安全性。

• 集成perl、集成的代理服务器。

目前的软件最高版本是有1.3(运行稳定、兼容性、缺乏新功能)、2.4(功能多)。

官方网站:http://www.apache.org/httpd:http://httpd.apache.org/

三、LAMP服务的搭建

手工编译安装LAMP服务需要的软件包有:

1.apache——apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz、httpd-2.4.29.tar.bz2

2.MYSQL——mysql-5.7.17.tar.gz、boost_1_59_0.tar.gz

3.PHP——php-7.1.24.tar.gz

1.编译安装apache服务

tar zxf apr-1.6.2.tar.gz  #解压apr压缩包
tar zxf apr-util-1.6.0.tar.gz  #解压apr-util压缩包
tar jxf httpd-2.4.29.tar.bz2  ##解压httpd压缩包
mv apr-1.6.2 httpd-2.4.29/srclib/apr  #将apr目录放入httpd的srclib目录下
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util   #将apr-util目录放入httpd的srclib目录下
#安装所需环境
yum -y install \
gcc \	#C语言的编译器
gcc-c++ \	#C++的编译器
make \	#源代码编译器(源代码转换成二进制文件)
pcre \	#pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \	#perl的接口开发包
expat-devel \	#用于支持网站解析HTML、XML文件
perl	#perl语言编译器
#优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/#在httpd的目录下进行编译安装
./configure \	#该脚本将运行一些测试来猜测一些系统相关的变量并检测你的操作系统的特殊设置,并且最后在制做树中创建一些文件以记录它找到了什么
--prefix=/usr/local/httpd \		#指定 httpd 服务程序的安装路径
--enable-so \	#启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \	#启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \		#启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi	#启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力
make && make install	#编译和安装
#优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd	#便于service管理
vim /etc/init.d/httpd	#编辑开机自启的httpd服务文件

chkconfig --add httpd	#将httpd加入到系统管理器
vim /usr/local/httpd/conf/httpd.conf	#编辑httpd主配置文件

2.编译安装MYSQL服务

tar zxvf mysql-5.7.17.tar.gz -C /opt 			#解压mysql压缩包
tar zxvf boost_1_59_0.tar.gz -C /usr/local/ 	#解压boost压缩包
mv /usr/local/boost_1_59_0 /usr/local/boost
#安装所需环境
yum -y install \
gcc \
gcc-c++ \
ncurses \ 										#字符终端下图形互动功能的动态库
ncurses-devel \	 								#ncurses开发包
bison \	 										#语法分析器
cmake 											#mysql需要用cmake编译安装
#在mysql目录下编译安装
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \			#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \						#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \ 				#指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件
#注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧。
make && make install							#编译安装

存储引擎选项:

MYISAM,MERGE,MEMORY和cSv引擎是默认编译到服务器中,并不需要明确地安装。静态编译一个存储引擎到服务器,使用-DWITH engine STORAGE ENGINE= 1

可用的存储引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,FBDERATBD,IMNOBASB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema)

useradd -s /sbin/nologin mysql			#创建普通用户管理mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf			#更改管理主/组
vim /etc/my.cnf							#修改配置文件

其中最后一行的sql_mode常用值如下:

NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。

STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制。

NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户。

NO_AUTO_VALUE_ON_ZERO:mysql中的自增长列可以从O开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错。

NO_ZERO_IN_DATE:不允许日期和月份为零。

NO_ZERO_DATE:mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL。

PIPES_As_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似。

ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。

#设置环境变量,申明/宣告mysql命令便于系统识别
echo "PATH=$PATH:/usr/local/mysql/bin" >> /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/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -napt | grep 3306       #查看端口
#给root账号设置密码
mysqladmin -u root -p password "123456" 

3.编译安装PHP服务

tar zxvf php-7.1.24.tar.gz						#解压php压缩包
#安装GD库和GD库关联程序,用来处理和生成图片
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
#到php目录下编译安装
./configure \
--prefix=/usr/local/php7 \						#指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \		#指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \	#指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7			#设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \									#添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \									#支持zlib功能,提供数据压缩
--with-curl \									#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \										#激活gd 库的支持
--with-jpeg-dir \								#激活jpeg 的支持
--with-png-dir \								#激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \								#启用多字节字符串功能,以便支持中文等代码
--enable-xml \									#开启扩展性标记语言模块
--enable-session \								#会话
--enable-ftp \									#文本传输协议
--enable-pdo \									#函数库
--enable-tokenizer \							#令牌解释器
--enable-zip									#ZIP压缩格式
make && make install							#编译安装
#复制模板文件,并进行修改
cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini
vim /usr/local/php7/php.ini

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJF2B3n0-1658393735804)(https://s2.loli.net/2022/07/18/A8xsjySHKuXUOCW.png)]

#优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php7/bin/* /usr/local/bin/
#修改Apache配置文件让Apache支持PHP
vim /etc/httpd.conf 

这是我们可以在网页测试index.php页面:

注意:安装httpd服务的时候我们需要一个干净的环境,不然无法识别php网页文件,在编译安装php的时候就会出现警告,例如:

这个时候我们需要通过yum remove命令将之前的httpd服务给删除,并在httpd目录下通过make clean命令清除缓存,再次编译安装apache即可。

四、搭建DISCUZ论坛

搭建bbs论坛的目的是用来完成一个简单的LAMP架构,主要我们通过sql语句来完成:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJzt7ytl-1658393735806)(https://s2.loli.net/2022/07/19/RnteA98UfvV7pCd.jpg)]

此时我们的论坛基本已经搭建完成,可以在网页中进行验证安装:

但是此时的目录文件都不存在,无法进行下一步:

这时需要重新回到Linux系统中去修改论坛目录的属主:

此时我们进行下一步继续安装:

总结

LAMP架构是什么?拿饭店举例:

(1) Apache像极了饭店前台,专门用来接受客户请求,并做一些静态页面处理(只买酒水饮料)。

(2) PHP像极了服务生,他专门用来解析处理由前台不能处理的”订单”,如用户想吃一碗意大利面,服务生就需要和后厨沟通,并做相应的安排处理.然后将处理后的结果返回给前台,由前台再给用户,因为服务生太丑了,见不得人。

(3) MySQL像极了后厨,专门用来存放食材,并且只能由中间的服务生和后厨沟通,来获取什么食材。

专业解释如下

(1) 客户端发送请求连接web服务器的80端口,由Apache相应并处理用户的静态请求。

(2) 如果客户端请求的是动态资源,由Apache加载调用libphpX.so模块(安装php程序带来)进行解析处理。

(3) 如果处理需要和后台数据库沟通,那么由php程序去完成。

(4) Php程序将处理完后的结果再返回给Apache,由Apache返回给客户端。

END

猜你喜欢

转载自blog.csdn.net/tu464932199/article/details/125916274