LAMP:
l:linux
a:apache(httpd)
m:mysql,mariadb
p:php,jsp
WEB资源类型:
静态资源:原始形式与响应结果一致;
动态资源:原始形式通常是程序文件(某种编程语言开发的程序文件),需要运行后将运行生成的结果呈现给用户;
客户端技术:js
服务端技术:php, jsp, ...
CGI:Common Gateway Interface
CIG是一种协议,定义了客户端(httpd)与服务端(特定的应用程序服务进程)交换数据的一种规范;
服务器端技术框架:
web server:httpd, ...
application server:php, perl, python, ruby, java(jsp), ...
data server:
SQL:Oracle, SQL Server, MySQL, PostgreSQL, SQLite, ...
NoSQL:
K/V
Document
Column
Graph
开源领域:
httpd+php+mysql: amp
httpd+jsp+mysql: amt
jsp:tomcat, resin, jetty, websphere, weblogic, ...
php编程语言,基于此语言存在很多开源应用程序;嵌入式编程语言,可直接嵌入至html文档中,而非由php代码生成html标签;
wordpress, ...
httpd:接受用户的web请求,静态资源则直接响应,动态资源为php脚本,对此类资源的请求将交由php来运行
php:运行php程序
MariaDB:数据管理系统
http与php结合的方式:
CGI
FastCGI
modules(把php编译成为httpd的模块)
MPM:
prefork;libphp5.so
event,worker,libphp5-zts.so
CentOS 7:
yum install php php-mysql mariadb-server httpd
测试页:
- phpinfo.php
-
- phpinfo();
- ?>
httpd+php:
module
httpd的MPM分两类:
进程式:prefork
线程式:worker, event
CGI:
FastCGI: fcgi
httpd+fcgi(module)
php-fpm (server)
部署应用:
discuzX, phpMyAdmin
MySQL:
C/S架构
Server: mysqld_safe, 3306/tcp
Client: mysql
- mysql [OPTIONS]
- -hSERVER
- -uUSERNAME
- -pPASSWORD
mysql> 提示符下的可用命令
客户端命令:
help可获取命令列表
\?
服务端命令:通过mysql协议发往服务端运行,并收取其响应结果;
此类命令都必须有命令结束符;通常可称为SQL语句;
DDL:Data Defination language
CREATE, ALTER, DROP
DML:Data Manipulating language
INSERT, DELETE, SELECT, UPDATE
grant/revoke
授权命令:
GRANT ALL [PRIVILEGES] ON db.tbl TO 'username'@'host' IDENTIFIED BY 'password';
db.tbl:
db:数据名字,可用*通配;
tbl:表名称,可用*通配;
wpdb.*:wpdb数据库的所有表;
*.*:所有库的所有表;
wpdb.users:wpdb库的users表;
username@host:
username:用户名,字符串;
host:用户可通过哪些客户端主机连接当前mysql server;可使用通配符;
%:任意长度的任意字符;
_:任意单个字符;
dzuser@'10.1.%.%'
配置文件:ini风格的配置文件
/etc/my.cnf, /etc/my.cnf.d/*.cnf
- [mysqld]
- skip_name_resolve = ON
- innodb_file_per_table = ON
首次启动时,配置安全选项:
mysql_secure_installation
php测试代码
-
- phpinfo();
-
- ?>
php连接mysql的测试代码:
- $conn=mysql_connect('172.0.0.1','testuser','passwd');
- if($conn)
- echo "ok";
- else
- echo "fail";
- ?>
快速部署amp
Centos 7:
Modules: (1)程序包:httpd,php,php-mysql,mariadb-server
FastCGI: (2)程序包:httpd,php-fpm,php-mysql,mariadb-server
Centos 6:
httpd,php,php-mysql,mysql-server
php:
脚本语言解释器
配置文件: /etc/php.ini,/etc/php.d/*.ini
配置文件在php解释器启动时被读取,因此,对配置文件的修改如何生效?
Modules : 重启httpd服务
FastCGI : 重启php-fpm服务
ini:
[foo]:Section Header
directive=value
注释符:较新的版本中,已经完全使用;进行注释
# : 纯粹的注释信息
; : 用于注释可启用的directive
php.ini 的核心配置选项文档: http://php.net/manual/zh/ini.core.php
php.ini 配置选项列表: http://php.net/manual/zh/ini.list.php
mariadb(mysql):
数据模型:层次模型,网状模型,关系模型
关系模型:
二维关系:
表:row,column
索引:index
视图:view
SQL接口:Structured Query Language
类似于OS的shell接口,也提供了编程功能;
ANSI : SQL标准,SQL-86,SQL-03
DDL : Data Defined Language
CREATE,ALTER,DROP
DML : Data Manapulating Language
INSERT,DELETE,UPDATE,SELECT
编程接口:选择,循环
SQL代码:
存储过程: procedure
存储函数: function
触发器: trigger
事件调度器: event scheduler
例程: routine
用户和权限:
用户:用户名和密码
权限:管理类,数据库,表,字段级别
DBMS : DataBase Manager System
RDBMS : Relational
MySql : 单进程,多线程
用户连接:通过线程来实现的
线程池:
MYSQL操作:
- mysql -h127.0.0.1 -uroot -proot
-
-
-
- GRANT ALL ON ultrax.* TO 'dzuser'@'127.0.0.1' IDENTIFIED BY 'dzpass';
-
- GRANT ALL ON ultrax.* TO 'dzuser'@'localhost' IDENTIFIED BY 'dzpass';
-
- CREATE DATABASE ultrax;
更改root密码:
- use mysql
-
- UPDATE user SET password=PASSWORD('root') WHERE user='root';
-
- FLUSH PRIVILEGES;
练习:分别使用CentOS 7和CentOS 6实现以下任务
(1) 配置三个基于名称的虚拟主机;
(a) discuzX
(b) wordpress
(c) https: phpMyAdmin
(2) 对discuzX的主页做压测;
分别给出并发10, 100, 200, 500等每秒的响应数;
Centos 7:

在 /etc/httpd/conf.d/ 目录下创建一个虚拟主机配置文件
- ServerName dis.nineven.com
- DocumentRoot /web/apps/dis
-
- Options None
- AllowOverride None
- Require all granted
-
- ServerName wp.nineven.com
- DocumentRoot /web/apps/wp
-
- Options None
- AllowOverride None
- Require all granted
-

自签CA证书

在http服务器上创建key

将httpd.scr 传到CA服务器去签证

修改ssl配置文件
vim /etc/httpd/conf.d/ssl.conf

创建对应的目录











然后开始安装dis论坛







安装wp的过程和这一样,先创建数据库和用户,然后安装






php相关信息
php配置文件:
/etc/php.ini, /etc/php.d/*.ini
ini:
[foo]:Section Header
directive = value
注释符:#, ;
php.ini的核心配置选项文档:PHP: php.ini 核心配置选项说明 - Manual
php.ini配置选项列表:PHP: php.ini 配置选项列表 - Manual
php-fpm : fastcgi process manager
安装配置:
yum install php-fpm
Unit file:/usr/lib/systemd/system/php-fpm.service
配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
主程序:/usr/sbin/php-fpm
配置:
路径 : /etc/php-fpm.conf
- [global]
- pid = /run/php-fpm/php-fpm.pid
- error_log = /var/log/php-fpm/error.log
- log_level = notice
- daemonize = no
- [pool_id]
- listen = 127.0.0.1:9000 #监听端口
- listen.backlog = -1
- listen.allowed_clients = 127.0.0.1 #允许访问的ip地址
- user = apache
- group = apache
- pm = dynamic #定义processor管理机制:static, dynamic
- pm.max_children #最大子进程数量;连接池的最大容量;
- pm.start_servers #服务启动时所启动的子进程数量;
- pm.min_spare_servers
- pm.max_spare_servers
- rlimit_files = 1024
- rlimit_core = 0
- pm.status_path = /status #状态信息
- ping.path = /ping
- ping.response = pong
- php_value[session.save_path] = /var/lib/php/session #session的存储位置
配置示例:
vim /etc/httpd/conf.d/fcgi.conf
- ServerName www.xixi.com
- DocumentRoot "/vhosts/www"
-
"/vhosts/www"> - Options None
- AllowOverride None
- Require all granted
-
- ProxyRequests Off
- ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhosts/www/$1
- ProxyPassMatch ^/(ping|status)/?$ fcgi://127.0.0.1:9000/$1
- DirectoryIndex index.php
vim /etc/php-fpm.d/www.conf


status输出:
- pool: www #连接池名称
- process manager: dynamic #进程管理器类型
- start time: 14/Oct/2016:11:16:24 +0000 #启动日期时间
- start since: 147 # 运行时长
- accepted conn: 9 # 连接池已经处理过的请求数
- listen queue: 0 # 请求队列长度
- max listen queue: 0 # 请求队列的最大长度
- listen queue len: 128 # socket等待队列的长度
- idle processes: 4 # 空闲进程数量
- active processes: 1 # 活跃的进程数量
- total processes: 5 # 连接池中的总进程数量
- max active processes: 2 # 连接池中最大的活跃进程数量
- max children reached: 0 # 达到连接池中最大进程数量限制的上限的次数
- slow requests: 0 :启用了slow-log时,记录慢请求的数量

其它格式的输出:
- /status?json
- /status?xml
- /status?html
- /status?full
full格式的输出:

可以通过 & 符号组合输出信息

注意:部署需要用到session的应用时,其session的默认存储位置 ,确保此目录存在,且运行用户有写入权限;
fcgi协议反代:
- ProxyRequests Off
-
- ProxyPass
-
- ProxyPassMatch ^(URL_PATTERN)$ fcgi://fcgi_server:port/PATH/TO/DIR/$1
php配置文件:/etc/php.ini, /etc/php.d/*.ini
fpm配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
编译安装lamp:
(1) 系统环境:CentOS 6, 7
httpd依赖于apr和apr-util
apache portable runtime
(2) 开发环境;
Development Tools, Server Platform Development
(3) 各程序的版本:
httpd: 2.2, 2.4
php:5.x
mysql:5.1, 5.5, 5.6, 5.7, 5.8,
mariadb: 5.x, 10.x
(4) httpd+php
modules: --with-apxs=
prefork:libphp5.so
worker, event:libphp5-zts.so
fpm:
5.3.3-, 手动打上fpm patch;
5.3.3+:自带了fpm, 编译时只需要使用--fpm选项;
过程:
安装MySQL:
预制的二进制程序包:
os vendor:mariadb-devel或mysql-devel;
项目官方:
二进制格式程序包:展包即用;
源代码:编译安装;
通用二进制格式包的安装步骤:
- groupadd -r mysql
- useradd -g mysql -r mysql
- tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
- cd /usr/local
- ln -sv mariadb-VERSION-linux-x86_64 mysql
- cd mysql
- chown -R root:mysql ./*
-
-
-
- mkdir /mydata/data -pv
- chown mysql:mysql /mydata/data
-
- scripts/mysql_install_db --user=mysql --datadir=/mydata/data
-
- cp support-files/my-large.cnf /etc/my.cnf
修改配置:
- [mysqld]
-
- ...
-
- datadir = /mydata/data #修改数据存储位置
- cp support-files/mysql.server /etc/rc.d/init.d/mysqld
- chmod +x /etc/rc.d/init.d/mysqld
-
-
- chkconfig --add mysqld
- service mysqld start
安装httpd-2.4
- yum groupinstall "Development Tools" "Server Platform Development"
- yum install pcre-devel openssl-devel libevent-devel apr-devel apr-util-devel
- ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr --with-apr-util=/usr
-
- make -j 4 # 4颗cpu编译,多cpu编译可以加快速度
- make install
-
-
- apachectl start
安装php5:
yum install gd-devel freetype-devel libmcrypt-devel libxml2-devel
- ./configure --prefix=/usr/local/php --with-mysql --with-openssl --with-mysqli=/usr/bin/mysql_config --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php.ini --with-config-file-scan-dir=/etc/php.d/
-
- make -j 4 #如果电脑多核心,可以加快编译速度
- make install
- cp php.ini-production /etc/php.ini
- mkdir /etc/php.d/
注意:如果httpd使用线程模型MPM,需要额外的--enable-maintainer-zts选项;
注意:如果要以fpm方式运行php,需要编译时移除--with-apxs选项,额外添加--enable-fpm选项;
注意:如果是独立安装的mysql-server, 假设安装在/usr/local/mysql目录下,则需要使用类似如下的.configure命令:
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php.ini --with-config-file-scan-dir=/etc/php.d/
整合php至httpd上:
httpd.conf配置文件中:
- AddType application/x-httpd-php .php
-
- DirectoryIndex index.php index.html
-
相关阅读:
Jmeter性能测试四--HTTP协议
java-net-php-python-ssm巴音学院本科部校园网站计算机毕业设计程序
java详解队列
【SHELL】推箱子游戏
(二)安装SVN服务器,web管理界面
[iOS开发]iOS中的相关锁
Excel 函数教程之VLOOKUP实用教程与10个适用于初学者和高级用户的VLOOKUP案例(教程含数据excel)
PMP每日一练 | 考试不迷路-9.15(包含敏捷+多选)
基于javaweb的酒店客房预订管理系统
我与Java的故事
-
原文地址:https://blog.csdn.net/ly1358152944/article/details/126367758