网站建设有微信的关系哈尔滨 微网站设计
LAMP架构详解+构建LAMP平台之Discuz论坛
- 1、LAPM架构简介
 - 1.1动态资源与语言
 - 1.2LAPM架构得组成
 - 1.3LAPM架构说明
 - 1.4CGI和astcgi
 - 1.4.1CGI
 - 1.4.2fastcgi
 - 1.4.3CGI和fastcgi比较
 
- 2、搭建LAMP平台
 - 2.1编译安装apache httpd
 - 2.2编译安装mysql
 - 2.3编译安装php
 - 2.4安装论坛
 
1、LAPM架构简介
1.1动态资源与语言
WEB资源类型:
- 静态资源:原始形式与响应内容一致,在客户端浏览器执行
 - 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
注意:静态和动态的区别,不在于网页是否能动态变化,而在于服务端的页面文件和客户端得到页面文件是否一致 
范例:静态资源
vim   test.html
#客户端主机现在的时间:
<script type="text/javascript">
document.write(new Date());
</script>
 
1.2LAPM架构得组成

- L:linux
 - A:apache (httpd)
 - M:mysql, mariadb
 - P:php, perl, python
 
1.3LAPM架构说明

工作过程:
1、当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端
2、当客户端请求的是动态资源时,http的php模块会进行相应的动态资源运算,如果此过程还需要数据的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算结果转为静态资源由web服务器返回到客户端。
apache主要实现如下功能:
- 第一:处理http的请求、构建响应报文等自身服务;
 - 第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);
 - 第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。
 
mysql 主要实现如下功能:
- 第一:提供PHP程序对数据的存储;
 - 第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。
 
php主要实现如下功能:
- 第一:提供apache的访问接口,即CGI或Fast CGI(FPM);
 - 第二:提供PHP程序的解释器;
 - 第三:提供mysql数据库的连接函数的基本环境。
 
1.4CGI和astcgi
1.4.1CGI
CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
请求流程:
 Client – (http协议) --> httpd – (cgi协议) --> application server (program file) – (mysql协议) --> mysql
1.4.2fastcgi
fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出
请求流程:
 Client – (http协议) --> httpd – (fastcgi协议) --> fastcgi服务器 – (mysql协议) --> mysql
1.4.3CGI和fastcgi比较
CGI: 兼职, 一次性的过河拆桥式的服务
 FASTCGI: 专职,全周期的持续式的服务
 
2、搭建LAMP平台
2.1编译安装apache httpd
关闭防火墙
systemctl disable --now firewalld #开机自动关闭防火墙
setenforce 0
 

 安装环境依赖包
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre   //安装依赖环境包
 

 拷贝软件包
[root@localhost /]# cd data
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# rz -E
rz waiting to receive.
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 
 

 解压软件包
[root@localhost data]# tar xf apr-1.6.2.tar.gz 
[root@localhost data]# tar xf apr-util-1.6.0.tar.gz 
[root@localhost data]# tar xf httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2         apr-util-1.6.0         httpd-2.4.29
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 
 

 移动apr包 apr-util包到安装目录中,并切换到 httpd-2.4.29目录中
[root@localhost data]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost data]# 
[root@localhost data]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# cd httpd-2.4.29
[root@localhost httpd-2.4.29]# 
 

 
 编译安装
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
 

make -j2&&make install
 

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
//将文件拷入/etc/init.d/httpd
ln -s /usr/local/httpd/conf/httpd.conf /etc/
//建立配置文件软连接放入etc目录下
ln -s /usr/local/httpd/bin/* /usr/local/bin/
//将启动文件放入/usr/local/bin/目录下可以直接使用
 

 添加httpd系统服务
vim /etc/init.d/httpd   //进入配置文件
在开头行加入
# chkconfig: 35 85 21                //35级别自动运行  第85个启动 第21个关闭
 

chkconfig --add httpd     //将httpd加入service管理器
 

vim /usr/local/httpd/conf/httpd.conf  //#修改主机地址
 

 
service httpd start  //启动httpd服务
 

 在浏览器输入ip地址,发现http启动成功
 
2.2编译安装mysql
解压安装包
[root@localhost httpd-2.4.29]# cd /data
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# 
[root@localhost data]# rz -E
rz waiting to receive.
[root@localhost data]# ls
apr-1.6.2.tar.gz       httpd-2.4.29          mysql-boost-5.7.20.tar.gz
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost data]# 
[root@localhost data]# tar xf mysql-boost-5.7.20.tar.gz 
[root@localhost data]# ls
apr-1.6.2.tar.gz       httpd-2.4.29          mysql-5.7.20
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  mysql-boost-5.7.20.tar.gz
[root@localhost data]# 
[root@localhost data]# 
 

 安装依赖包
yum install -y ncurses-devel autoconf cmake
 

[root@localhost data]# cd mysql-5.7.20/
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# ls
boost            dbug                 libmysql     rapid          testclients
BUILD            Docs                 libmysqld    README         unittest
client           Doxyfile-perfschema  libservices  regex          VERSION
cmake            extra                man          scripts        vio
CMakeLists.txt   include              mysql-test   sql            win
cmd-line-utils   INSTALL              mysys        sql-common     zlib
config.h.cmake   libbinlogevents      mysys_ssl    storage
configure.cmake  libbinlogstandalone  packaging    strings
COPYING          libevent             plugin       support-files
[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
//配置编译选项
 

make -j2 && make install
 

[root@localhost mysql-5.7.20]# useradd -s /sbin/nologin  mysql
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# 
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
 

vim /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
 

[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile //加入PATH中,使其可以补全
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile //声明这个变量为全局变量
 

[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# 
[root@localhost mysql]# 
[root@localhost mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
 

[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# 
[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# 
[root@localhost mysql]# 
[root@localhost mysql]# systemctl start mysqld.service
[root@localhost mysql]# 
[root@localhost mysql]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      77743/mysqld        
 

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

quit;   //退出
 

2.3编译安装php
安装依赖环境
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
 

 配置软件模块
cd /data
tar xf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--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
 

 
 make -j2 && make install //编译与安装
 

cp /data/php-7.1.10/php.ini-development /usr/local/php7/php.ini	
//复制模版文件作为PHP 的主配置文件,并进行修改
 

 
vim /usr/local/php7/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock   --1170行--修改 1170 G,大写的G,直接跳转
date.timezone = Asia/Shanghai --939行
 

 
ln -s /usr/local/php7/bin/* /usr/local/bin/
把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
php -m   //查看PHP 加载了哪些模块
 

vim /etc/httpd.conf   //修改httpd 服务的配置文件,让apache支持PHP
 
AddType application/x-httpd-php .php       --393行--插入以下内容(插在下面,原行不删)
AddType application/x-httpd-php-source .phps   ##这里的点前面空格一定要加,否则报错
 

DirectoryIndex index.html index.php    --255行--修改首页文件名设置
 

 
验证PHP 测试页
vim /usr/local/httpd/htdocs/index.php  //进入配置文件
添加
<?php
phpinfo();
?>
 

systemctl restart httpd
 

2.4安装论坛
[root@localhost data]# mysql -u root -p
Enter password: 
 

mysql> CREATE DATABASE bbs;  //创建一个数据库//mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';   //把bbs数据库里面所有表的权限授予给bbsuser,并设置密码//
 

show databases;//查看是否创建成功
 

select user,host from mysql.user;
 

 unzip /opt/Discuz_X3.4_SC_UTF8.zip
 
cp -r upload/ /usr/local/httpd/htdocs/bbscd /usr/local/httpd/htdocs/bbschown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data
 

在浏览器输入192.168.190.254/bbs
 

 
 
 
 
 
 
