1、LAMP介绍
LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python
WEB资源类型:
静态资源:原始形式与响应内容一致
动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端,这个程序文件通常是一段代码,就像脚本语言一样,需要一个程序去处理这段代码,比如脚本语言需要/bin/bash程序去一行一行的处理才能识别,PHP程序代码需要PHP程序来处理,把这段代码转化为静态资源。
Web相关语言
客户端技术:javascript,html
服务器端技术:php, jsp,python
2、CGI
CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准,http程序要想和PHP程序连接,之间就需要一个接口就是CGI,解决不同协议之间的通讯。
程序=指令+数据
指令:代码文件
数据:数据存储系统、文件
请求流程:
Client --(http协议) --> httpd--(cgi) --> application server (php) --> mysql
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
3、LAMP工作原理
4、PHP简介
官网:http://www.php.net/
PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
PHP Zend Engine
Zend Engine是开源的、PHP脚本语言的解释,Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode。
5、PHP配置和设置
- 配置
php:脚本语言解释器
配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解释器启动时被读取
[root@centos6 html]#rpm -qf /etc/php.ini ---php的配置文件来源于下面的rpm包,在yum安装php包时会因为依赖关系自动安装这个包
php-common-5.3.3-49.el6.x86_64
对配置文件的修改生效方法
Modules:重启httpd服务
FastCGI:重启php-fpm服务
PHP的两种工作模式,一种是做为httpd服务的一个小的模块和httpd服务一起启动,另外一种工作模式就是做为一个独立的服务,也会监听端口
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注释符:较新的版本中,已经完全使用;进行注释
#:纯粹的注释信息
;:用于注释可启用的directive,如果把;去掉可以启动后面的内容
- 设置
max_execution_time= 30 最长执行时间30s,php程序在后台运行的最长时间,避免PHP程序长时间不用占用cpu
memory_limit 128M最大占用内存。 生产不够,可调大
display_errors off 展示错误信息,调试使用,不要打开,否则可能暴露重要信息,比如客户端访问网站的时候,如果服务器发生错误,可能在客户端显示暴露一些重要信息
display_startup_errors off 展示开始的启动错误信息,建议关闭
post_max_size 8M 最大上传数据大小,不管是什么格式,可能是文件也可能是二进制的一些数据等,生产可能临时要调大,比下面项要大
upload_max_filesize 2M 最大上传文件,生产可能要调大
max_file_uploads = 20 同时上传最多文件数
date.timezone =Asia/Shanghai 指定时区
short_open_tag=on 开启短标签,是一种新的php编程格式如
6、PHP代码
php程序来源于php包
yum install php ---这种方法安装php程序,是把PHP程序做为httpd程序的一个小模块,也就是PHP程序的第一种工作模式
[root@centos6 html]#rpm -ql php
/etc/httpd/conf.d/php.conf ---成为httpd服务的一个配置文件,这个配置文件中规定了加载这个模块,及php程序的主目录网页文件的格式index.php,也就是在httpd服务的主目录中如果创建了一个这样的文件,访问网站时会自动访问这个页面
/usr/lib64/httpd/modules/libphp5.so ---php程序做为httpd程序的一个小模块
/var/lib/php/session
/var/www/icons/php.gif
php代码的格式
格式1
[root@centos6 html]#vim a.php ---此种格式为html标签里面嵌入PHP程序
[root@centos6 html]#service httpd restart
测试:http://192.168.74.128/a.php
格式2
[root@centos6 html]#vim b.php ---此种格式为php代码中嵌入html语言
Hello world!php2"
?>
测试:http://192.168.74.128/b.php
两种格式中第一种比较常用,先是前段的html开发人员写好html标签后,后端的PHP开发人员再将php代码写到预留的php语句块中
php代码测试,可以显示时间和php的版本信息
[root@centos6 html]#vim c.php
vim /etc/php.ini ---修改php的配置文件中的时区
date.timezone = Asia/Shanghai
service httpd restart
http://192.168.74.128/c.php
修改php默认主站点的网页文件
方法一
vim /etc/httpd/conf/httpd.conf ---要在httpd的配置文件里修改
DirectoryIndex index.php index.html index.html.var
[root@centos6 html]#ls
a.php b.jpg b.php index.html index.php
http://192.168.74.128/
方法二
[root@centos6 html]#rm -f index.html
[root@centos6 html]#vim /etc/httpd/conf.d/php.conf ----或者修改php的配置文件
DirectoryIndex index.php --默认这一行是有的
http://192.168.74.128/ ---这样访问时就会寻找默认的主网页文件
7、php连接到mysql数据库
- 使用mysql扩展连接数据库
1、yum install php-mysql ---安装php-mysql包
[root@centos6 html]#rpm -ql php-mysql ---我们发现mysql做为php的一个模块连接到数据库,有三种模块方式mysql、mysqli、pdo_mysql
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so
2、在另外一台主机上(192.168.74.132)创建一个mysql数据库,创建一个zhangdb的数据库和[email protected].%的一个用户
连接数据库的测试代码
vim /var/www/html/index.php
----html标签,表示PHP代码镶嵌在html里面。html是一种文本格式,这种格式会使客户端看到的字体变大并且加粗,变的美观,不加这种格式字体就很小
测试:http://192.168.74.128/
- php使用mysqli扩展连接数据库的测试代码
前两步同上
vim /var/www/html/index.php
close(); ---关闭数据库连接,释放资源
?>
8、常见LAMP应用
PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库
WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把WordPress当作一个内容管理系统(CMS)来使用
PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、CMS、博客、SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团
Crossday Discuz! Board(简称Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议
ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。2006年6月,ECShop推出第一个版本1.0
9、布署phpMyadmin来管理mysql数据库
1、安装各种,并启动服务
yum -y install httpd mysql-server php php-mysql
service httpd start
service mysqld start
mysql_secure_installation ---初始化mysql,设置用户和密码等
2、下载phpmyadmin源码并解压缩
下载:https://www.phpmyadmin.net/downloads/ ---注意下载的版本,rpm包安装的php为5.3版本,因此下载phpmyadmin时要支持php5.3这个版本才可以,这里下载的是phpMyAdmin-4.0.10.20-all-languages.zip
cd /var/www/html/ ---注意一定要在httpd服务的主目录下解压缩
unzip /app/phpMyAdmin-4.0.10.20-all-languages.zip
3、创建软连接
ln -s phpMyAdmin-4.0.10.20-all-languages/ pma ---创建一个软连接,便于客户端访问时输入太长的目录名
4、创建phpmyadmin的配置文件
cd /var/www/html/pma
cp config.sample.inc.php config.inc.php ---把一个例子复制一下
vim config.inc.php ---修改一下这个例子制作成配置文件
$cfg['blowfish_secret'] = 'a8b7c6ddddsaadasfdfsfsf'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ ---注意单引号里面要填充,默认是填充的,如果没有要填充,填充什么都可以
5、测试
yum -y install php-mbstring ---要安装这个包才能访问网站,否则会报错
service httpd reload
http://192.168.74.128/pma,然后输入初始化mysql过程中设置的用户名和密码就可以登录到网站,用web页面点鼠标的方式来管理mysql数据库了,我们可以创建一个wpdb数据库和一个wpadmin@'192.168.74.%'的用户并授权,然后在字符界面登录去验证一下网页方式管理mysql数据库是否可行。
[root@centos6 pma]#mysql -uwpadmin -p'123456' -h192.168.74.128 ---我们发现可以登录上,说明用web方式管理mysql数据库是成功的
10、布署wordpress搭建属于自己的博客
1、环境准备
准备两台主机a和b
在a上操作
yum install httpd php php-mysql
systemctl start httpd
在b上操作
yum install mariadb
systemctl start mariadb
2、在b上创建数据库及用户
mysql> create database wpdb;
mysql> grant all on wpdb.* to wpadmin@'192.168.74.%' indentified by '123456'
3、下载wordpress源
https://cn.wordpress.org/
在a上操作
cd /app
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html/
cd /var/www/html/
ln -s wordpress/ blog
setfacl -R -m u:apache:rwx /var/www/html/wordpress/ ----打开下面的网站进行安装的时候会在/var/www/html/wordpress/ 目录下创建一个新的文件也就是wordpress的配置文件,所以要设置一个acl权限,当安装完毕后记得把权限删除
setfacl -R -b /var/www/html/wordpress/ ---清空acl权限
以上两步也可以不设置权限,直接编辑以下这个文件
cd /var/www/html/blog/
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wpadmin');
/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');
/** MySQL主机 */
define('DB_HOST', '192.168.74.128');
4、打开http://192.168.74.132/blog/进行页面安装,安装完毕后登陆就可以发现自己创建的博客了
5、在b上的操作
mysql -uwpadmin -p'123456' -h192.168.74.128
mysql> use wpdb;
mysql> show tables; ---发现在数据库里在搭建博客的过程中已经自动创建了很多表,以后我们写的文章也会放到这里
+-----------------------+
| Tables_in_wpdb |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
总结:httpd服务,当用户访问的是静态页面的时候,httpd服务到磁盘上去访问资源,然后将数据直接返回给客户端,当访问的是动态页面,比如以.php结尾的文件时,因为这个文件里面都是php的代码,所以httpd程序把这个文件发给php程序来处理,将这些源代码转化成静态文件传给用户。并且php程序需要连接数据库。