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模块
2)httpd+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时会出现找不到包。 安装三个包
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://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