Linux学习82 互联网架构-LAMP入门进阶
一、LAMP
1、概述
a、CGI(Common Gateway Interface):通用网关接口,客户端向服务器端请求资源时服务器端将相应的资源在程序运行后将结果返回给客户端
2、概念
a、a:apache(httpd)
b、m:mysql,mariadb
c、p:php,perl,python
3、WEB资源类型
a、静态资源:原始形式与响应内容一致
b、动态资源:原始形式通常为程序文件,需要在服务器执行之后,将执行结果返回给客户端
c、客户端技术:javascript
d、服务器端技术:php,jsp
4、CGI:Common Gateway Interface
a、可以让一个客户端,从网页浏览器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
b、程序=指令+数据
(1)、数据模型:
1)、层次模型
2)、网状模型
3)、关系模型:表(行+列)
(2)、关系模型:IngreSQL,Oracle,Sybase,Infomix,DB2,SQL Server,MySQL,PostgreSQL,MariaDB
c、指令:代码文件
d、数据:数据存储系统、文件
5、请求流程:
Client -- (httpd) -- httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql
6、php:脚本编程语言、嵌入到html中的嵌入式web程序开发语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
二、关于PHP
1、PHP简介
2、PHP Zend Engine
3、PHP的Opcode
4、php的加速器
5、PHP源码目录结构
三、LAMP
1、httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,对此类资源的请求将交由php来运行。处理动态资源有两种方式,第一种为自己安装处理php的模块,动态资源交由自己的php模块处理,不过这种方式在并发量太大的时候性能不是很好。另一种是专门启一个fpm进程,动态资源直接交给这个进程处理然后处理完了过后再放回给http服务器,服务器再返回给客户端即可。
2、php:运行php程序
3、MariaDB:数据管理系统
4、http与php结合的方式
a、CGI
b、FastCGI
c、modules(把php编译成为httpd的模块)
(1)、prefork:libphp5.so
(2)、event,worker:libphp5-zts.so
5、安装lamp
a、CentOS 6:httpd,php,mysql-server,php-mysql(这是php连接mysql的一个适配器)
service httpd start
service mysqld start
b、CentOS7:httpd,php,php-mysql,mariadb-server
systemctl start httpd
systemctl mariadb
(1)、安装相应的包
[root@www ~]# yum install -y php php-mysql mariadb-server
[root@www ~]# rpm -ql php /etc/httpd/conf.d/php.conf #关于php的配置文件 /etc/httpd/conf.modules.d/10-php.conf /usr/lib64/httpd/modules/libphp5.so #可以看到此模块文件 /usr/share/httpd/icons/php.gif /var/lib/php/session
(2)、我们查看我们httpd中php的模块。以及我们httpd关于php的处理的配置文件
[root@www ~]# httpd -M|grep php php5_module (shared)
[root@www ~]# cat /etc/httpd/conf.d/php.conf |grep -Ev "^$|^#" <FilesMatch \.php$> #匹配以.php结尾的文件 SetHandler application/x-httpd-php #启用这个内建的处理器,即libphp5.so这个模块来处理代码 </FilesMatch> AddType text/html .php #将.php结尾的文件标记为纯文本格式的内容,我们加以处理 DirectoryIndex index.php php_value session.save_handler "files" #传递给php的变量,我们将php程序中用于保存用户会话的方式持久保存在files格式文件中,文件就在下面这一行中 php_value session.save_path "/var/lib/php/session"
(3)、我们重启httpd服务后就可以连接我们php了,然后我们在前面对应的web资源路径中创建对应的php文件,然后我们访问时就能看到php了
[root@www ~]# cat /data/web/wohaoshuai1/index.php <html> <title>PHP Test Page</title> <body> <h1>PHP Info Page</h1> <?php phpinfo(); ?> </body> </html>
(4)、我们可以看到我们的phpinfo中有mysql和mysqli两个信息,这个需要安装了mysql服务才会有,并且我们要启动mysql服务才能去访问
(5)、我们现在启动mysql服务,并且创建相应的连接mysql的php文件,然后访问,发现是可以连接成功的
[root@www ~]# systemctl start mariadb
[root@www ~]# netstat -anpt|grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4127/mysqld
[root@www ~]# cat /data/web/wohaoshuai1/php-mysql.php <?php $conn = mysql_connect('127.0.0.1','root',''); if ($conn) echo "OK"; else echo "FxxK"; ?>
(6)、我们可以下载一个博客自己部署上去。cn.wordpress.org中可以免费下载 。或者也可以去下载Discuz论坛进行部署。还有phpwind也是。可以百度关键词然后下载即可。
c、MYSQL的命令行客户端程序:mysql
(1)、-u
(2)、-h
(3)、-p
(4)、支持SQL语句对数据管理
(5)、授权能远程的连接用户
GRANT ALL PRIVILEGES ON db_name.tbl_name TO username@host IDENTIFIED BY 'password';