zoukankan      html  css  js  c++  java
  • apache和LAMP架构

    资源池:

    httpd依赖包:apr 和 apr-util 下载:点击这里
    httpd 下载:点击这里
    mysql 下载:点击这里
    php 下载: 点击这里
    本章资源: 点击这里 资源提取码:u2jv


    1、apache简介

    Apache(Apache HTTP Server)是Apache软件基金会的一个开放源码的网页服务器,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

    端口:http对应80端口 https对应443端口

    2、apache的三种工作模式

    Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式;它们分别是:prefork workerevent;它们同时也代表这Apache的演变和发展

    prefork

    prefork是一个非线程型的、预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高,但内存使用比较大。

    优点:适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求;且成熟稳定,兼容所有新老模块。

    缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理;不擅长处理高并发请求

    worker

    worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。

    优点:线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发,高流量的场景下会比prefork有更多可用的线程,表现会更优秀一些;

    缺点:如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)

    event

    Apache最新的工作模式,它和worker模式很像

    优点:不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题(HTTP的Keepalive方式能减少TCP连接数量和网络负载),在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理

    缺点:不支持https

    3、常见服务器返回返回状态值

    200:ok,请求下载成功
    201:create ok,上传成功
    403:forbidden,表示客户端没有权限访问所请求的资源
    404:Not Found,表示客户端所请求的资源不存在
    500:Internal Server Error,服务器内部错误
    502:Bad Gateway,代理服务器从上游服务器获取到的是伪响应

    4、编译安装的优点

    • 源码编译安装的软件的版本较yum一键安装的版本更新;
    • 源码编译安装可控性较强,按需安装;

    5、编译安装apache

    第一步:上传安装包(安装包共三个(apr、apr-util、httpd)可在本章开头资源池下载)

    ╭─root@localhost.localdomain ~  
    ╰─➤  rz         #基于lrzsz软件(用于Windows和linux之间文件传输);可yum下载
    
    ╭─root@localhost.localdomain ~  
    ╰─➤  ls
    anaconda-ks.cfg  apr-1.5.2.tar.gz  apr-util-1.5.4.tar.gz  httpd-2.4.20.tar.gz
    

    第二步:解压包

    ╭─root@localhost.localdomain ~  
    ╰─➤  tar -xf apr-1.5.2.tar.gz 
    ╭─root@localhost.localdomain ~  
    ╰─➤  tar -xf apr-util-1.5.4.tar.gz 
    

    第三步:解决依赖包

    ╭─root@localhost.localdomain ~  
    ╰─➤  yum install gcc gcc-c++ ncurses-devel ncurses pcre  pcre-devel openssl-devel zlib-devel -y 
    
    

    第四步:编译安装apr

    ╭─root@localhost.localdomain ~  
    ╰─➤ cd /apr-1.5.2
    ╭─root@localhost.localdomain ~/apr-1.5.2  
    ╰─➤  ./configure --prefix=/usr/local/apr  && make  && make install
    

    第五步:编译安装apr-util

    ╭─root@localhost.localdomain ~/apr-1.5.2 
    ╰─➤  cd ..                                  
    ╭─root@localhost.localdomain ~  
    ╰─➤  cd apr-util-1.5.4/
    ╭─root@localhost.localdomain ~/apr-util-1.5.4  
    ╰─➤  ./configure --with-apr=/usr/local/apr 
    --prefix=/usr/local/apr-util && make && make install
    

    编译安装httpd的常见报错解决

    第六步:编译安装httpd

    ╭─root@localhost.localdomain ~/apr-util-1.5.4  
    ╰─➤  cd ..      
    ╭─root@localhost.localdomain ~  
    ╰─➤  tar -xf httpd-2.4.20.tar.gz 
    ╭─root@localhost.localdomain ~  
    ╰─➤  cd httpd-2.4.20 
    ╭─root@localhost.localdomain ~/httpd-2.4.20  
    ╰─➤  ./configure --help                     #查看
    ╭─root@localhost.localdomain ~/httpd-2.4.20  
    ╰─➤  ./configure                        
    > --with-apr=/usr/local/apr 
    > --with-apr-util=/usr/local/apr-util  
    > --with-mpm=event   
    > --prefix=/usr/local/httpd2.4 
    > --enable-so 
    > --enable-ssl 
    > --enable-cache 
    > --enable-deflate 
    > --enable-rewrite 
    > && make && make install
    
    

    第七步:启动apache

    ╭─root@localhost.localdomain ~/httpd-2.4.20  
    ╰─➤  cd /usr/local/httpd2.4/bin
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  ls
    ab         apxs      dbmmanage  envvars-std  htcacheclean  htdigest  httpd      logresolve
    apachectl  checkgid  envvars    fcgistarter  htdbm         htpasswd  httxt2dbm  rotatelogs
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  ./apachectl start
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  ss -tnl | grep 80
    LISTEN     0      128          *:80                       *:*                  
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  
    

    第八步:在任何路径下执行apachectl(执行命令1和命令2即可)

    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin
    ╰─➤  vim /etc/profile.d/httpd.sh        #命令1
    ...
    export PATH=/usr/local/httpd2.4/bin:$PATH
    ...
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  cat /etc/profile.d/httpd.sh                  
    export PATH=/usr/local/httpd2.4/bin:$PATH
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin   
    ╰─➤  echo $PATH           #PATH为环境变量
    /usr/local/httpd2.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  export /etc/profile.d/httpd.sh
    export: not valid in this context: /etc/profile.d/httpd.sh
    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  source /etc/profile.d/httpd.sh     #命令2
    
    

    拓展PATH环境变量讲解https://www.cnblogs.com/hust-chenming/p/4943268.html

    6、apache主配置文件简介

    ServerRoot "/usr/local/httpd2.4"
      ##主配置文件的目录
    Listen 80
      ##监听的端口
    ServerAdmin you@example.com
      ##指定管理员邮箱
    ServerName www.example.com:80
       ##指定域名
    DocumentRoot "/usr/local/httpd2.4/htdocs"
       ##指定网络根目录
    DirectoryIndex index.html
      ##网站首页文件
    ErrorLog "logs/error_log"
       ##错误日志
    

    7、基于端口创建虚拟主机

    第一步:修改配置文件

    ╭─root@localhost.localdomain /usr/local/httpd2.4/bin  
    ╰─➤  cd /usr/local/httpd2.4/conf
    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  ls
    extra  httpd.conf  magic  mime.types  original
    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  vim httpd.conf       #找到httpd的主配置文件,并编辑
    
    #文件末尾添加内容:
    ...
    <VirtualHost *:81>
    documentroot /usr/local/httpd2.4/htdocs/du1
    directoryindex index.html
    </VirtualHost>
    
    <VirtualHost *:82>
    documentroot /usr/local/httpd2.4/htdocs/du2
    directoryindex index.html
    </VirtualHost>
    ...
    
    /Listen      #找到Listen 并监听81、 82端口
    
    ...
    #Listen 12.34.56.78:80
    Listen 80
    Listen 81
    Listen 82
    ...
    

    第二步:创建网站根目录

    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  mkdir /usr/local/httpd2.4/htdocs/du1
    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  mkdir /usr/local/httpd2.4/htdocs/du2
    

    第三步:写入测试文件

    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  echo "hello word" >> /usr/local/httpd2.4/htdocs/du1/index.html
    ╭─root@localhost.localdomain /usr/local/httpd2.4/conf  
    ╰─➤  echo "good" >> /usr/local/httpd2.4/htdocs/du2/index.html
    

    第四步:重启apache

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  apachectl restart                      
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    

    第四步:测试

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  curl 192.168.80.3:81
    hello word
    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  curl 192.168.80.3:82
    good
    
    

    8、基于域名创建虚拟主机

    第一步:修改配置文件

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  vim /usr/local/httpd2.4/conf/httpd.conf 
    
    ...
    <VirtualHost 192.168.80.3>
    documentroot /usr/local/httpd2.4/htdocs/du1
    directoryindex index.html
    servername www.du1.com
    </VirtualHost>
    
    <VirtualHost 192.168.80.3>
    documentroot /usr/local/httpd2.4/htdocs/du2
    directoryindex index.html
    servername www.du2.com
    </VirtualHost>
    ...
    

    第二步:解析域名

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  vim /etc/hosts
    
    #添加一行
    ...
    192.168.80.3 www.du1.com  
    192.168.80.3 www.du2.com
    ...
    #windows中的域名解析文件:Windows(C:)> windows > system32 > drivers > etc > HOSTS 文件
    

    第三步:重启apache

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  apachectl restart
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    

    第四步:测试

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  curl www.du1.com
    hello word
    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  curl www.du2.com
    good
    
    

    9、上线静态网站

    第一步:上传软件包至网站根目录 (资源池中下载game.zip包)

    ╭─root@localhost.localdomain /usr/local/httpd2.4  
    ╰─➤  cd  /usr/local/httpd2.4/htdocs 
    ╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs  
    ╰─➤  rz            #上传game.zip
    
    ╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs  
    ╰─➤  unzip game.zip 
    
    ...   #解压内容略
    
    ╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs  
    ╰─➤  cd game
    ╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs/game  
    ╰─➤  ls
    images  jquery-1.8.3.min.js  readme.xls  sky_fight.html  sky.php
    
    

    第二步:访问

    10、上线动态网站 (资源池中下载wordpress-3.3.1-zh_CN.zip)

    LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:

    • Linux,操作系统
    • Apache,网页服务器
    • MariaDB或MySQL,数据库管理系统(或者数据库服务器)
    • PHP、Perl或Python,脚本语言

    注意:由于手动安装的apache和PHP结合步骤繁琐本章不做介绍,故本章用yum源安装的apache做LAMP架构演示。

    第一步:部署LAMP架构

    ╭─root@localhost.localdomain ~
    ╰─➤  yum install httpd php-mysql mariadb-server php -y
    ╭─root@localhost.localdomain ~
    ╰─➤  apachectl stop
    

    第二步:启动数据库

    ╭─root@localhost.localdomain ~
    ╰─➤  systemctl restart mariadb  
    
    

    第三步:上传安装包并配置文件

    ╭─root@localhost.localdomain ~
    ╰─➤  cd /var/www/html
    ╭─root@localhost.localdomain /var/www/html  
    ╰─➤  rz             #上传wordpress-3.3.1-zh_CN.zip
    
    ╭─root@localhost.localdomain /var/www/html  
    ╰─➤  unzip wordpress-3.3.1-zh_CN.zip
    ╭─root@localhost.localdomain /var/www/html 
    ╰─➤  cp -a wordpress/* .  
    ╭─root@localhost.localdomain /var/www/html
    ╰─➤  ls
    
    index.php    wp-activate.php     wp-comments-post.php  wp-cron.php        wp-login.php     wp-settings.php
    license.txt  wp-admin            wp-config.php         wp-includes        wp-mail.php      wp-signup.php
    readme.html  wp-app.php          wp-config-sample.php  wp-links-opml.php  wp-pass.php      wp-trackback.php
    wordpress    wp-blog-header.php  wp-content            wp-load.php        wp-register.php  xmlrpc.php
    
    ╭─root@localhost.localdomain /var/www/html
    ╰─➤  cp wp-config-sample.php wp-config.php       
    ╭─root@localhost.localdomain /var/www/html
    ╰─➤  vim wp-config.php 
    
    ...
    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
    /** WordPress 数据库的名称 */
    define('DB_NAME', 'du');
    
    /** MySQL 数据库用户名 */
    define('DB_USER', 'du');
    
    /** MySQL 数据库密码 */
    define('DB_PASSWORD', '123');
    
    /** MySQL 主机 */
    define('DB_HOST', 'localhost');
    ...
    
    

    第四步:配置数据库

    ╭─root@localhost.localdomain /var/www/html
    ╰─➤  mysql -uroot                                                            
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 2
    Server version: 5.5.52-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> create database du;
    Query OK, 1 row affected (0.01 sec)
    
    MariaDB [(none)]> grant all on *.* to du@'localhost' identified by '123';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> exit
    Bye
    
    

    第五步:修改主配置文件,指定首页默认文件

    ╭─root@localhost.localdomain /var/www/html  
    ╰─➤  vim /etc/httpd/conf/httpd.conf 
    
    ...
    <IfModule dir_module>
        DirectoryIndex index.php  index.html
    </IfModule>
    ...
    
    ╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs  
    ╰─➤  systemctl restart httpd
    
    

    第六步:访问


    参考文献:
    http://xin.kendd.cn/?p=56
    https://www.cnblogs.com/qiujun/p/6861773.html

  • 相关阅读:
    Java多线程、并发
    Java I/O系统
    Java注解
    Arthas(Java诊断工具)
    Java泛型
    Java内部类
    libpcap使用
    python文件服务器
    设计模式
    protobuf
  • 原文地址:https://www.cnblogs.com/du-z/p/10917936.html
Copyright © 2011-2022 走看看