zoukankan      html  css  js  c++  java
  • 实现LAMP架构

    LAMP

     L: linux

    A: apache (httpd)

    M: mysql, mariadb M:memcached

    P: php, perl, python

    WEB资源类型:

      静态资源:原始形式与响应内容一致,在客户端浏览器执行

    ~]#cd /var/www/hmtl
    /var/www/html]# vim test.php 
    <script type="test/javascript">
    documwnt.write(new date());
    </script>

      动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行 结果返回给客户端

    ~]#cd /var/www/html
    /var/www/html]# vim test.php 
    <?php
    echo date("Y/m/d H:i:s");
    phpinfo();
    ?>

    Web相关语言

      客户端技术: html,javascript

      服务器端技术:php, jsp,python,asp

    CGI

    CGI:Common Gateway Interface

      可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程 序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

    请求流程: Client -- (httpd) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql

    php: 脚本编程语言、嵌入到html中的嵌入式web程序语言

      基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)

    LAMP工作原理

    常见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

     快速部署LAMP

    1)默认centos系统

     ~]# yum install httpd mariadb-server php php-mysql
     ~]# systemctl start httpd
     ~]# systemctl start mariadb
     ~]# mysql -uroot -pcentos -e "grant all on *.* to test@'192.168.130.%' identified by 'centos';"
    ~]#mysql_secure_installation #设置mysql数据库的root密码

    2)下载安装phpzamin

    下载:https://www.phpmyadmin.net/downloads/
     ~]#wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.zip ~]# tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.gz -C /var/www/html/
     ~]# cd /var/www/html/
     ~]# mv phpMyAdmin-4.0.10.20-all-languages/ phpadmin
     ~]#cd phpadmin/
     ~]#cp config.sample.inc.php config.inc.php
     ~]# yum -y install php-mbstring

    3)使用pdo测试php是否已经连接数据库

    ~]#cd /var/www/html
     ~]# vim test.php
      <?php
      try {
      $user='test';
      $pass='centos';
      $dbh = new PDO('mysql:host=192.168.130.8;dbname=mysql', $user, $pass);
      foreach($dbh->query('SELECT user,host from user') as $row) {
      print_r($row);
      }
      $dbh = null;
      } catch (PDOException $e) {
      print "Error!: " . $e->getMessage() . "<br/>";
      die();
      }
      ?>
     ~]#systemctl restart httpd

    4)网站访问http://192.168.130.8/test.php,连接成功即可

    wordpress博客搭建

     官网:https://cn.wordpress.org/

    搭建好LANM后,下载安装wordpress,更改配置文件

    ~]#wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
    ~]#tar xvf wordpress-4.9.4-zh_CN.tar.gz  -C /var/www/html/
    ~]#cd /var/www/html/wordpress/  #进到此目录下找到配置文件并复制一份改名原理同上
    ~]#cp wp-config-sample.php wp-config.php
     mysql> create database wpdb;
     mysql> grant all privileges on wpdb.* to wpuser@'%' identified by "centos"; 

    ~]#vim wp-config.php

    捕获

    注意wordpress目录权限 Setfacl –R –m u:apache:rwx wordpress

    http://192.168.60.4/wordpress #在浏览器上打开界面

     编译安装xcache加速php

    官网:http://xcache.lighttpd.net/wiki/ReleaseArchive
     ~]# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
     ~]#  yum install 'Development tools'
     ~]# yum install php-devel
     ~]# tar xf xcache-3.2.0.tar.gz 
     ~]# cd ./xcache-3.2.0/
     ~]# phpize #生成编译环境
    ~]# ./configure --enable-xcache --with-php-config=/usr/bin/php-config ~]# make && make install #会生成xcache.so文件 ~]# cp xcache-3.2.0/xcache.ini /etc/php.d/ ~]# ll /usr/lib64/php/modules/ total 5844 -rwxr-xr-x 1 root root 74776 Apr 13 03:04 curl.so -rwxr-xr-x 1 root root 2713464 Apr 13 03:04 fileinfo.so -rwxr-xr-x 1 root root 345168 Apr 13 03:04 gd.so -rwxr-xr-x 1 root root 44784 Apr 13 03:04 json.so -rwxr-xr-x 1 root root 1305776 Apr 13 03:04 mbstring.so -rwxr-xr-x 1 root root 146096 Apr 13 03:04 mysqli.so -rwxr-xr-x 1 root root 58032 Apr 13 03:04 mysql.so -rwxr-xr-x 1 root root 33256 Apr 13 03:04 pdo_mysql.so -rwxr-xr-x 1 root root 116408 Apr 13 03:04 pdo.so -rwxr-xr-x 1 root root 29240 Apr 13 03:04 pdo_sqlite.so -rwxr-xr-x 1 root root 272112 Apr 13 03:04 phar.so -rwxr-xr-x 1 root root 51472 Apr 13 03:04 sqlite3.so -rwxr-xr-x 1 root root 700928 Jun 24 00:38 xcache.so -rwxr-xr-x 1 root root 58496 Apr 13 03:04 zip.so ~]# cp xcache.ini /etc/php.d/ ~]#systemctl restart httpd

    PHP

    官网:http://www.php.net/

    PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚 本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此, 其也可以在大多数系统上作为一个独立的shell来使用。

     fastcgi模式

    php配置

    php:脚本语言解释器

    配置文件:/etc/php.ini, /etc/php.d/*.ini 

    配置文件在php解释器启动时被读取

    对配置文件的修改生效方法 Modules:重启httpd服务 FastCGI:重启php-fpm服务 

      /etc/php.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
    fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
    连接池:
    pm = static|dynamic
    static:固定数量的子进程;pm.max_children
    dynamic:子进程数量以动态模式管理
    pm.max_children
    pm.start_servers
    pm.min_spare_servers
    pm.max_spare_servers
    pm.max_requests = 500

    确保运行php-fpm进程的用户对session目录有读写权限

    mkdir /var/lib/php/session
    chown apache.apache /var/lib/php/session

    配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件

    yum安装lamp

    ~]# yum install php-fpm php-mysql httpd mariadb-server
    ~]# systemctl start httpd
    ~]# systemctl start mariadb

     配置数据库账户

    mysql> grant all on *.* to test@'192.168.130.%'identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    测试php-fpm是否连上数据库,提供以下php页面,访问http://192.168.130.8/test.php

    ~]# cd /var/www/html/
    ~]# vim test.php 
    <?php
    try {
     $user='test';
     $pass='centos';
     $dbh = new PDO('mysql:host=192.168.130.8;dbname=mysql', $user, $pass);
     foreach($dbh->query('SELECT user,host from user') as $row) {
     print_r($row);
     }
     $dbh = null;
    } catch (PDOException $e) {
     print "Error!: " . $e->getMessage() . "<br/>";
     die();
    }
    ?>

    配置apache服务并支持php

    ~]# vim /etc/httpd/conf/httpd.conf #在此配置文件中修改以下内容
    DocumentRoot "/data/www"
    <Directory "/var/www">
        AllowOverride None
        # Allow open access:
        Require all granted
    </Directory>
    ~]# vim /etc/httpd/conf/http.conf
    DocumentRoot "/data/www"
    <Directory "/var/www">
        AllowOverride None
        # Allow open access:
        Require all granted
    </Directory>
    ~]# systemctl restart httpd
    ~]# systemctl restart php-fpm

    php常见应用discuz(论坛),wordpress(博客)

     ~]# wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
     ~]#unzip Discuz_X3.3_SC_UTF8.zip 
     ~]#cd upload/
    ~]# cp -ar * /data/www/ ~]# cd /data/www/ ~]# setfacl -R -m u:apache:rwx /data/www/ #授权
    在数据库编写完成后执行下面命令,收回权限为保安全 ~]# setfacl -R -b /data/www/

     访问http://192.168.130.8

    实现LAMP fastcgi模式多虚拟主机blog和bbs

    bbs 目录权限
    setfacl -R -m u:apache:rwx /data/www/
    ~]#vim /etc/httpd/conf.d/vhost.conf <virtualhost *:80> servername www.bbs.com #论台 documentroot /data/www DirectoryIndex index.php ProxyRequests Off ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/data/www/$1 <directory /data/www> require all granted #授权 </directory> </virtualhost> <virtualhost *:80> servername www.blog.com #博客 documentroot /var/www/hmtl DirectoryIndex index.php ProxyRequests Off ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/data/www2/$1 <directory /var/www/html> require all granted #授权 </directory> </virtualhost>
    ~]# apachectl restart

     在浏览器访问 www.bbs.com和www.blog.com

    编译安装LAMP

    环境:

    linux:CentOS7.5

    Apache:apr-1.6.3、apr-util-1.6.1、httpd-2.4.33

    MariaDB:mariadb-10.2.15

    PHP:php-7.1.18

    ​ 1)检查环境并准备安装包

    [root@centos7 src]# yum -y groupinstall "Development Tools"
    [root@centos7 src]# yum -y install openssl-devel expat-devel pcre-devel libxml2-devel  bzip2-devel libmcrypt-devel bison-devel boost-devel cmake gnutls-devel libaio-devel libarchive-devel libcurl-devel libevent-devel ncurses-devel  #注意:需要配置epel源
    [root@centos7 src]# wget http://mirror.bit.edu.cn/apache//apr/apr-1.6.3.tar.gz
    [root@centos7 src]# wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
    [root@centos7 src]# wget http://mirrors.shu.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
    [root@centos7 src]# wget http://sfo1.mirrors.digitalocean.com/mariadb//mariadb-10.2.15/source/mariadb-10.2.15.tar.gz
    [root@centos7 src]# wget http://mirrors.sohu.com/php/php-7.1.18.tar.gz

    ​ 2)编译安装Apache,并配置

    [root@centos7 src]# useradd -r -s /sbin/nologin apache #创建系统用户并指明shell类型
    [root@centos7 src]# tar xf apr-1.6.3.tar.gz 
    [root@centos7 src]# tar xf apr-util-1.6.1.tar.gz 
    [root@centos7 src]# tar xf httpd-2.4.33.tar.gz 
    [root@centos7 src]# cp -a apr-util-1.6.1 httpd-2.4.33/srclib/apr-util
    [root@centos7 src]# cp -a apr-1.6.3 httpd-2.4.33/srclib/apr
    [root@centos7 src]# cd httpd-2.4.33
    [root@centos7 httpd-2.4.33]# ./configure --prefix=/lamp/application/httpd24 
    > --enable-so 
    > --enable-ssl 
    > --enable-cgi 
    > --enable-rewrite 
    > --with-zlib 
    > --with-pcre  
    > --with-included-apr 
    > --enable-modules=most 
    > --enable-mpms-shared=all 
    > --with-mpm=prefork
    [root@centos7 httpd-2.4.33]# make -j 4 && make install
    [root@centos7 httpd-2.4.33]# vim /lamp/application/httpd24/conf/httpd.conf  #修改httpd配置文件
    ServerName www.example.com:80
    User apache
    Group apache
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so  #启用cfgi模块
    LoadModule proxy_module modules/mod_proxy.so  #启用代理模块
    <IfModule dir_module>
        DirectoryIndex index.php index.html  #加入index.php
    </IfModule>
    -----> 插入以下内容 <-----
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    ProxyRequests Off
    ProxyPassMatch  ^/(.*.php)$ fcgi://127.0.0.1:9000/lamp/application/httpd24/htdocs/$1  #注意此处路径
    [root@centos7 src]# echo 'PATH=/lamp/application/httpd24/bin/:$PATH' > /etc/profile.d/httpd.sh
    [root@centos7 src]# . /etc/profile.d/httpd.sh
    [root@centos7 src]# apachectl start
    [root@centos7 src]# curl 127.0.0.1/index.html
     #看到<html><body><h1>It works!</h1></body></html>
    表示工作正常

    ​ 3)编译安装MariaDB,并配置

    [root@centos7 src]# useradd -r -s /sbin/nologin -d /lamp/data/mysqldb mysql
    [root@centos7 src]# mkdir -p /lamp/data/mysqldb
    [root@centos7 src]# chown -R mysql.mysql /lamp/data/mysqldb/
    [root@centos7 src]# tar xf mariadb-10.2.15.tar.gz 
    [root@centos7 mariadb-10.2.15]# cd mariadb-10.2.15/
    [root@centos7 mariadb-10.2.15]# cmake . -DCMAKE_INSTALL_PREFIX=/lamp/application/mysql 
    > -DMYSQL_DATADIR=/lamp/data/mysqldb/ 
    > -DMYSQL_UNIX_ADDR=/lamp/data/mysqldb/mysql.sock 
    > -DSYSCONFDIR=/etc 
    > -DMYSQL_USER=mysql 
    > -DWITH_INNOBASE_STORAGE_ENGINE=1 
    > -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    > -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    > -DWITH_PARTITION_STORAGE_ENGINE=1  
    > -DWITHOUT_MROONGA_STORAGE_ENGINE=1 
    > -DWITH_DEBUG=0 
    > -DWITH_READLINE=1 
    > -DWITH_SSL=system 
    > -DWITH_ZLIB=system 
    > -DWITH_LIBWRAP=0 
    > -DENABLED_LOCAL_INFILE=1  
    > -DDEFAULT_CHARSET=utf8 
    > -DDEFAULT_COLLATION=utf8_general_ci
    [root@centos7 mariadb-10.2.15]# make -j 4 && make install
    [root@centos7 mariadb-10.2.15]# echo 'export PATH=/lamp/application/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
    [root@centos7 mariadb-10.2.15]# . /etc/profile.d/mysql.sh
    [root@centos7 mariadb-10.2.15]# cd /lamp/application/mysql/
    [root@centos7 mysql]# scripts/mysql_install_db --datadir=/lamp/data/mysqldb/ --user=mysql --basedir=/lamp/application/mysql/
    [root@centos7 mysql]# cp support-files/my-huge.cnf /etc/my.cnf。d
    [root@centos7 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
    [root@centos7 mysql]# chkconfig --add mysqld
    [root@centos7 mysql]# chkconfig mysqld on
    [root@centos7 mysql]# service mysqld start
    [root@centos7 mysql]# mysql
    Server version: 10.2.15-MariaDB-log Source distribution
    MariaDB [(none)]>  #成功连接mysql

    ​ 4)编译安装php,并配置

    [root@centos7 src]# tar xf php-7.1.18.tar.gz 
    [root@centos7 src]# cd php-7.1.18/
    [root@centos7 php-7.1.18]# ./configure --prefix=/lamp/application/php7 
    > --enable-mysqlnd 
    > --with-mysqli=mysqlnd 
    > --with-openssl 
    > --with-pdo-mysql=mysqlnd 
    > --enable-mbstring  
    > --with-freetype-dir 
    > --with-jpeg-dir 
    > --with-png-dir 
    > --with-zlib 
    > --with-libxml-dir=/usr 
    > --enable-xml 
    > --enable-sockets 
    > --enable-fpm  
    > --with-config-file-path=/etc 
    > --with-config-file-scan-dir=/etc/php.d 
    > --enable-maintainer-zts 
    > --disable-fileinfo
    [root@centos7 php-7.1.18]# make -j 4 && make install
    [root@centos7 php-7.1.18]# cp php.ini-production /etc/php.ini.d
    [root@centos7 php-7.1.18]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    [root@centos7 php-7.1.18]# chmod +x /etc/init.d/php-fpm
    [root@centos7 php-7.1.18]# chkconfig --add php-fpm
    [root@centos7 php-7.1.18]# chkconfig php-fpm on
    [root@centos7 php-7.1.18]# cd /lamp/application/php7/
    [root@centos7 php7]# cp etc/php-fpm.conf.default etc/php-fpm.conf
    [root@centos7 php7]# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
    [root@centos7 php-fpm.d]# vim etc/php-fpm.d/www.conf
    user = apache
    group = apache
    [root@centos7 php7]# echo 'PATH=/lamp/application/php7/bin:/lamp/application/php7/sbin:$PATH' > /etc/profile.d/php-fpm.sh
    [root@centos7 php7]# . /etc/profile.d/php-fpm.sh
    [root@centos7 php7]# service php-fpm start
    [root@centos7 php7]# ss -tnl |grep 9000
    LISTEN     0      128    127.0.0.1:9000  #9000端口已监听

    ​ 5)测试lamp

    [root@centos7 ~]# vim /lamp/application/httpd24/htdocs/test.php
    <?php
    $dsn='mysql:host=127.0.0.1;dbname=mysql';
    $username='root';
    $passwd='';
    $dbh=new PDO($dsn,$username,$passwd);
    var_dump($dbh);
    ?>
    [root@centos7 ~]# curl 127.0.0.1/test.php
    object(PDO)#1 (0) {}  #如果返回PDO则说明成功
    [root@centos7 ~]# rm -f /lamp/application/httpd24/htdocs/test.php

    用yum install一键安装LAMP

    vim yum.sh
    #!/bin/bash # kernel: 3.10.0-862.el7.x86_64 # linux: CentOS 7.5 # Apache: 2.4.6 # MariaDB: 5.5.56 # PHP: 5.4.16 # xcache: 3.2.0 # Way of working: Modules check() { if [ $? -eq 0 ]; then echo -e "e[32mOK!e[0m" else echo -e "e[34mError!e[0m" exit fi } #install sortware yum install -y httpd php php-mysql mariadb-server check #start service systemctl start mariadb httpd check #make and make install php-xcache yum -y groupinstall "Development Tools" check yum -y install php-devel check mkdir /root/src cd /root/src wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz check tar xf xcache-2.0.1.tar.gz cd xcache-2.0.1/ phpize ./configure --enable-xcache --with-php-config=/usr/bin/php-config make && make install cp -n xcache-ini /etc/php.d/ systemctl restart httpd #output info log echo -e "e[32mInstall LAMP Completed!e[0m"
  • 相关阅读:
    【软件测试】软件缺陷粗浅认识及白盒测试举例
    【软件测试】等价类划分
    【软件测试】对本门课程粗浅理解
    阿里云服务器本地ping超时,远程可以正常ping通
    不忘初心
    开源框架、控件、组件、插件记录
    Flex中窗口可随意拖拽功能实现
    初探数据类型相关问题
    [TSCTF-J 2021] 解题报告
    指针
  • 原文地址:https://www.cnblogs.com/yaun1498078591/p/9216430.html
Copyright © 2011-2022 走看看