• linux-LAMP


    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

    测试页:

    1. phpinfo.php 
    2. phpinfo();
    3. ?>

    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

    1. mysql [OPTIONS]
    2. -hSERVER
    3. -uUSERNAME
    4. -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

    1. [mysqld]
    2. skip_name_resolve = ON
    3. innodb_file_per_table = ON

    首次启动时,配置安全选项:

    mysql_secure_installation 

    php测试代码

    1. phpinfo();
    2. ?>

    php连接mysql的测试代码:

    1. $conn=mysql_connect('172.0.0.1','testuser','passwd');
    2. if($conn)
    3. echo "ok";
    4. else
    5. echo "fail";
    6. ?>

    快速部署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操作:

    1. mysql -h127.0.0.1 -uroot -proot
    2. GRANT ALL ON ultrax.* TO 'dzuser'@'127.0.0.1' IDENTIFIED BY 'dzpass';
    3. GRANT ALL ON ultrax.* TO 'dzuser'@'localhost' IDENTIFIED BY 'dzpass';
    4. CREATE DATABASE ultrax;

    更改root密码:

    1. use mysql
    2. UPDATE user SET password=PASSWORD('root') WHERE user='root';
    3. 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/ 目录下创建一个虚拟主机配置文件

    1.         ServerName dis.nineven.com
    2.         DocumentRoot /web/apps/dis
    3.         
    4.                 Options None
    5.                 AllowOverride None
    6.                 Require all granted
    7.         
    8.         ServerName wp.nineven.com
    9.         DocumentRoot /web/apps/wp
    10.         
    11.                 Options None
    12.                 AllowOverride None
    13.                 Require all granted
    14.         

    自签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

    1. [global]
    2. pid = /run/php-fpm/php-fpm.pid
    3. error_log = /var/log/php-fpm/error.log
    4. log_level = notice
    5. daemonize = no
    6. [pool_id]
    7. listen = 127.0.0.1:9000  #监听端口
    8. listen.backlog = -1
    9. listen.allowed_clients = 127.0.0.1  #允许访问的ip地址
    10. user = apache
    11. group = apache
    12. pm = dynamic     #定义processor管理机制:static, dynamic
    13. pm.max_children      #最大子进程数量;连接池的最大容量;
    14. pm.start_servers         #服务启动时所启动的子进程数量;
    15. pm.min_spare_servers
    16. pm.max_spare_servers
    17. rlimit_files = 1024
    18. rlimit_core = 0
    19. pm.status_path = /status   #状态信息
    20. ping.path = /ping
    21. ping.response = pong
    22. php_value[session.save_path] = /var/lib/php/session     #session的存储位置
     
    

    配置示例:

    vim /etc/httpd/conf.d/fcgi.conf
    1.         ServerName www.xixi.com
    2.         DocumentRoot "/vhosts/www"
    3.         "/vhosts/www">
    4.                 Options None
    5.                 AllowOverride None
    6.                 Require all granted
    7.         
    8.         ProxyRequests Off
    9.         ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhosts/www/$1
    10.         ProxyPassMatch ^/(ping|status)/?$ fcgi://127.0.0.1:9000/$1
    11.         DirectoryIndex index.php
    vim /etc/php-fpm.d/www.conf
     
    

    status输出:

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

    其它格式的输出:

    • /status?json
    • /status?xml
    • /status?html
    • /status?full

    full格式的输出:

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

    注意:部署需要用到session的应用时,其session的默认存储位置 ,确保此目录存在,且运行用户有写入权限;

    fcgi协议反代:

    1. ProxyRequests Off
    2. ProxyPass 
    3. 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;

    项目官方:

    二进制格式程序包:展包即用;

    源代码:编译安装;

    通用二进制格式包的安装步骤:

    1. groupadd -r mysql
    2. useradd -g mysql -r mysql
    3. tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local 
    4. cd /usr/local
    5. ln -sv mariadb-VERSION-linux-x86_64 mysql
    6. cd mysql
    7. chown -R root:mysql ./*
    8. mkdir /mydata/data -pv
    9. chown mysql:mysql /mydata/data
    10. scripts/mysql_install_db --user=mysql --datadir=/mydata/data
    11. cp support-files/my-large.cnf  /etc/my.cnf

    修改配置:

    1. [mysqld]
    2. ...
    3. datadir = /mydata/data #修改数据存储位置
    1. cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
    2. chmod +x /etc/rc.d/init.d/mysqld
    3. chkconfig --add mysqld
    4. service mysqld start

    安装httpd-2.4

    1. yum groupinstall "Development Tools" "Server Platform Development" 
    2. yum install pcre-devel openssl-devel libevent-devel  apr-devel apr-util-devel
    1. ./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
    2. make -j 4 # 4颗cpu编译,多cpu编译可以加快速度
    3. make install
    4. apachectl start

    安装php5:

    yum install gd-devel freetype-devel libmcrypt-devel libxml2-devel
    1. ./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/
    2. make -j 4 #如果电脑多核心,可以加快编译速度
    3. make install
    1. cp php.ini-production /etc/php.ini 
    2. 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配置文件中:

    1. AddType application/x-httpd-php .php 
    2. 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