linux之LAMP服务架构概述(LAMP架构 网站服务器端的架构 LAMP = Linux + Apache + Mysql/Mariadb + Php/Python/Perl)

概述 网站服务器端的架构

LAMP = Linux + Apache + Mysql/Mariadb + Php/Python/Perl

 

 

 

 

Apache属于网站架构中的前端web服务器,不负责处理后台数据,只负责处理前台的静态资源。不负责处理动态资源。

静态资源:客户端获得的资源和服务器端的表现形式一样(例如html  xhtml  htm  xml  js  css  MIME资源)

动态资源:服务器的资源表现形式和客户端请求到资源的表现形式不一样,通常为程序文件,需要通过执行之后将执行结果通过前端web服务封装成http的响应报文返回客户端。

PHP(解释型语言).php  .jsp(基于JAVA的servilt)  .asp(基于.net) .py(基于Python解释器) ....

动态站点的运行速率要远低于静态站点

 

 

 

 

 

根据上图中访问数据流可知,处理一次动态页面请求,服务器主要经历:Apache处理请求——通过CGI接口访问PHP的的应用程序——PHP应用程序调用PHP解释器执行PHP代码——PHP程序访问调用数据库——最后给客户处理结果。

 

故在LAMP的环境机构中,apache、mariadb和php的主要功能分别如下。

apache主要实现如下功能

    第一:处理http的请求、构建响应报文等自身服务;

    第二:配置让Apache支持PHP程序的响应(通过PHP模块或FPM);

    第三:配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理。

 mariadb主要实现如下功能:

    第一:提供PHP程序对数据的存储;

    第二:提供PHP程序对数据的读取(通常情况下从性能的角度考虑,尽量实现数据库的读写分离)。

 php主要实现如下功能:

    第一:提供apache的访问接口,即CGI或Fast CGI(FPM);

    第二:提供PHP程序的解释器;

    第三:提供mairadb数据库的连接函数的基本环境。

由此可知,要实现LAMP在配置每一个服务时,安装功能需求进行配置,即可实现LAMP的架构,当然apache、mariadb和php服务都可配置为独立服务,安装在不同服务器之上。

 

LAMP架构的技术点

1)CGI:通用网关接口

CGI协议:前台进程和后台处理动态资源的程序进行交互的协议

apache默认支持CGI模块

 

2httpd+php的结合方式

    modules:通常情况下php和apache要在同一台主机,通过加载apache的php模板支持php语言

    cgi: fastcgi,一般是通过fpm实现的,fpm是fastcgi的进程管理工具(想象为一种服务  service xxx start)

PHP和apache结合要工作在httpd的prefork的模型下

 

3)MySQL/mariadb:关系型数据管理系统的一种解决方案

MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被 sun公司收购,2009年sun公司被oracle公司收购

MySQL官网https://www.mysql.com

Mariadb为MySQL的一个分支,官网https:mariadb.com

MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领原班人马创立

community 社区版本,enterprise 企业版,GA(Generally Available)指通过版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版本,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本

动态资源请求后台程序             

1.)Centos 7.4 架设LAMPLAMP安装

1.挂载光盘,安装软件包

1.配置yum 环境,挂载光盘

 

 

 

 

 

 

 

 

2.安装httpd服务,更改配置,编写测试页验证静态服务是否可行

yum -y install httpd   

 

 

 

 

测试:

去创建测试网页  

vim   /var/www/html/index.html   

添加主机名字

vim /etc/httpd/conf/httpd.conf

 

 

 

 

3.验证http是否和php有联系

ls /etc/httpd/modules/libphp5.so

 

 

 

 

 

 

 

4.安装php以及mariadb数据库,php结合数据库的驱动模块

yum -y install php php-mysql mariadb mariadb-server mysql-devel

 

 

 

 

 

 

 

 

5.安装php所依赖的库和相关工具包 更改yum为联网模式(本来的模式)

yum -y install php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt

修改yum 源,回复原来的yum配置

 

 

 

 

 

 

其中,红色的包安装不了,

解决方法:将服务器使用桥接模式或者nat连接到公网,可以访问公网。

更改电脑管理服务vmware  DHCP和NAT开启 ,增加虚拟机网络适配器,虚拟网络开启DHCP  然后再安装这两个

yum -y install epel-release

yum -y  install   php-imap php-mcrypt libmcrypt

 

 

 

 

 

 

 

6.再次验证php的模块

ls /etc/httpd/modules/libphp5.so

 

 

 

 

7.更改httpd主配置文件,让索引页支持php

vim /etc/httpd/conf/httpd.conf   --主配置文件  插入index.php

 

 

 

 

8.重启服务,使其php模块生效

systemctl restart httpd    

netstat -anutlp | grep :80

 

 

 

 

9.编写PHP测试页,验证php和httpd的连接效果

apache 网站根目录下创建  vim /var/www/html/index.php

<?php

   phpinfo();

?>

10.在浏览器验证

 

 

 

 

 

11.将mariadb数据库的主配置文件做修改

cat /usr/share/mysql/my-medium.cnf > /etc/my.cnf  --覆盖

 

 

 

 

12.启动mariadb数据库服务

systemctl start mariadb.service    

netstat -antulp | grep :3306   3306是否监听

ls /var/lib/mysql/mysql.sock

 

 

 

 

13.进入数据库的命令行界面设置用户密码  (解读)

mysql

 

 

 

 

修改数据库的账号和密码(一定要在mysql的解释器窗口)

[root@client html]# mysql                   命令行进入mysql

MariaDB [(none)]>delete from mysql.user where user='';     删除空用户

mysql.user表里面    user这个字段空  则删除

MariaDB [(none)]>update mysql.user set password=password('123456') where user='root';    root用户设置密码   

update 更新    mysql.user  set password这个字段的值为123456

但是这个1234536需要 password来加密 是一个函数   where查询或更新的条件

MariaDB [(none)]>grant all on *.* to 'root'@'%' identified by '123456';

设置权限   允许root用户在任何地方连接数据库  可不写,但只能在本机登录

 *.*所有库的 ,所有表的    all 所有权限  都给'root'   '%'root用户可以在任何地方登录    identified所有主机终端  by '123456'; 以这个密码登录   '%相当于任意字符*

MariaDB [(none)]> flush privileges;           刷新权限

 

 

 

 

quit  退出

重新登录

mysql -u root -p        指定用户 密码

show databases;        -查看数据库有几个

 

 

 

 

14.退出数据库,并将数据库进行重新重启

systemctl restart mariadb

systemctl restart httpd

15.验证php和mariadb数据库的连接

编写测试页  vim /var/www/html/test_mysql.php

<?php

        $link=mysqli_connect('192.168.10.40','root','123456');

        if($link)

                echo "^_^ ok ^_^";

        else

                echo "T_T not ok T_T";

?>

 

测试    ip   192.168.10.40     root'用户        密码123456

必须跟前面指定的要一样

 

 

 

 

16.网页访问验证php和mariadb数据库的连接效果

http://192.168.10.41/test_mysql.php

 

 

 

 

 

2.)在网页根路径部署discuz论坛项目,验证LAMP架构可用性

1.进行unzip解压

unzip Discuz_X3.1_SC_UTF8.zip    解压

解压之后出现  upload目录  ,将其重命名并移动到网页根路径

cp -rf  upload /var/www/html/discuz

 

 

 

 

 

 

 

2.为discuz项目提供后台数据库,以便于项目数据的便捷存储

进入mariadb数据命令行界面  

mysql -u root -p             --进入mysql

create database bbs;              --创建bbs数据库

 

 

 

 

3.创建普通用户来管理discuz对应的bbs数据的所有数据

grant all on bbs.* to 'runbbs'@'%' identified by '123456';

bbs .* 数据库里面 所有的表  给一个'runbbs'  all所有的权限  '%使这个用户可以从任何终端登录   identified 主机    密码是1234536    

flush privileges;                       刷新

quit

 

 

 

 

3.更改php主配置文件,使其支持短格式选项

可在网页 php  那里找到php的主配置文件

 

 

 

 

vim /etc/php.ini

211 short_open_tag = On       --支持短格式

 

 

 

 

 

重启httpd服务

systemctl restart httpd

4.开始部署安装配置 discuz论坛项目

chmod -R 777  /var/www/html/discuz        设置权限

在浏览器输入http://192.168.10.41/discuz/install/

 

 

 

 

 

 

 

选择全新安装,点击下一步,

 

 

 

 

输入数据库ip地址:192.168.10.40,数据库的名称:bbs,数据库用户名:runbbs,管理员的密码:123456

 

 

 

 

 

 

 

http://192.168.10.41/discuz/admin.php           登录管理员

 

 

 

 

管理员页面:http://192.168.10.200/discuz/admin.php?,输入admin的密码,登录

 

去修改install目录  更改名字 使客户不能查看

cd /var/www/html/discuz/

 

 

 

 

 

3.)在 7.4上配置phpMyAdmin使其远程登录

phpMyAdmin  myscql的图形界面

先安装epel,不然安装pgpmyadmin时会出现找不到包。    安装三个包

 

yum install epel-release

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

          联网现在                                这个安装包  然后在安装

i等于 install    v显示安装过程    h以#的方式显示进度

yum -y install phpmyadmin

 

安装-需要连外网

yum install epel-release

 

 

 

 

 rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

 

 

 

 

yum -y install phpmyadmin

 

 

 

 

 

2.更改phpmyadmin的配置文件使数据库可以远程登录

CentOS 7上的phpMyAdmin只允许从回环地址(127.0.0.1)访问。

为了能远程连接,改动它的配置。

phpMyAdmin的配置文件(路径:/etc/httpd/conf.d/phpMyAdmin.conf),

找出并注释掉带有"Require ip XXXX"字样的代码行。

会有四处这样的代码行,用"Require all granted"取而代之。

更改配置文件

vim /etc/httpd/conf.d/phpMyAdmin.conf

修改后的文件内容          6更改2.2版本    7更改7.7版本

<Directory /usr/share/phpMyAdmin/>

   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>

     # Apache 2.4

     <RequireAny>

      # Require ip 127.0.0.1  #注释掉     ipv4 可以访问的ip

      # Require ip ::1         #注释掉     ipv6 可以访问的ip

      Require all granted     #新添加     是使所有人都能服务

     </RequireAny>

......................................

 </IfModule>

</Directory>

<Directory /usr/share/phpMyAdmin/setup/>

   <IfModule mod_authz_core.c>

     # Apache 2.4

     <RequireAny>

      #Require ip 127.0.0.1  #注释掉    ipv4 可以访问的ip

      #Require ip ::1         #注释掉    ipv6 可以访问的ip

      Require all granted    #新添加     是使所有人都能访问

     </RequireAny>

  ....................

</Directory>

 

 

 

 

 

 

 

3.更改数据库配置文件使其可以连接数据库 用户名和密码

控制用户

vim /etc/phpMyAdmin/config.inc.php    

 

$cfg['Servers'][$i]['host']    = '192.168.10.41'; // MySQL hostname or IP address

                 mysql的主机 IP   如果是主机,就只有主机可以访问

$cfg['Servers'][$i]['controluser']   = 'root';         mysql的登录用户(之前设置的)

$cfg['Servers'][$i]['controlpass']   = '123456';      mysql的用户的密码

 

 

 

 

systemctl restart httpd   重启服务

 

4.登录数据库测试

格式:    http://ip/phpmyadmin

http://192.168.10.41/phpmyadmin

 

 

 

 

输入数据库的用户:root,密码:666666(改为自己的密码)

 

源码

部署phpmyadmin利用web图形化来管理数据库

phpmyadmin压缩包拖拽到服务器,然后解压,并重命名为phpmyadmin

将其移动到网页根路径

先拷贝phpmyadmin主配置文件

cp config.sample.inc.php config.inc.php

修改其cookie随机数

vim config.inc.php     

 

 

 

 

 

开始在页面上进行访问phpmyadmin

http://xxx.xxx.xxx.xxx/phpmyadmin

 

php的加速器php-xcache

yum -y install php-xcache     systemctl restart httpd

 

posted @ 2020-08-01 15:07  浅唱I  阅读(460)  评论(0编辑  收藏  举报