精华内容
下载资源
问答
  • 总共2w,每张图片大概10个不同尺寸缩略图,总共20几w个文件,全部存在一个文件夹里面。 现在一批图片上来,大概50w,加上缩略图就是500w文件数量,现在如何做文件系统是个问题,不能存在一个文件夹里面...
  • 想要为每个用户提供 1G 网络存储空间。...但事实上你这么分配了,你会发现每个用户平时根本不会上传 1G 东西将容量占漫漫有多又少,但平均用户平时只上传 50M 文件,也就是说,你将 1000G 硬盘分给...

    想要为每个用户提供 1G 的网络存储空间。
    如果服务器上有一颗 1000G 的硬盘可以全部为用户提供数据储存,如果每个用户分配 1G 的最大储存空间,那么能非配给多少个用户使用呢?
    你一定说是 1000/1=1000 个用户。
    但事实上你这么分配了,你会发现每个用户平时根本不会上传 1G 的东西将容量占的漫漫的,有多又少,但平均用户平时只上传 50M 的文件,也就是说,你将 1000G 的硬盘分给 1000个 人使用,但只有效利用了其中的 50M*1000=50G 的空间,剩余 950G 的空间基本都完全浪费了。

    那么怎么解决呢?
    你可以变通一下,将这 1000G 的空间分配给 20000个 用户使用,每个人的上传上限容量还是 1G,但每人平时还是平均上传 50M 的数据,那么 2000050M=1000G,这下子就把宝贵的服务器上的存储空间充分利用了。但你又怕这样分配给 20000个 人后,万一某一刻人们突然多上传点数据,那么用户不是就觉察出来你分给人家的 1G 空间是假的了吗?所以可以不分配那么多人,只分配给 19000 人,剩下一些空间做应急之用。
    突然发现一下子将可分配的用户数量翻了 19倍啊,了不起。那还有买有办法更加有效的利用一下呢?
    如果我有 1000个 以上的服务器,一个服务器上有 1000G 空间,那么我们个服务器上都要留下 50G 的空白空间以备用户突然上传大数据时导致数据塞满的情况,呢么我这 1000个服务器上就空出了 1000台
    50G=50000G 的空间被浪费了,所么可惜。所以我们发明了计存储集群,使得一个用户的数据可以被分配在多个服务器上存储,但在用户那看起来只是一个 1G 的连续空间,那么就没必要在每个服务器上预留出应急的空间了,甚至可以充分的将前一个服务器塞满后,在将数据往下一个服务器中塞。这样保证了服务器空间的最大利用,如果某一刻管理员发现用户都在疯狂上传数据(在一个大规模用户群下,这样的概率少之又少)导致我现有提供的空间不够了,没关系,只需要随手加几块硬盘或者服务器就解决了。
    好吧,这下子我们的服务器空间利用高多了,可以将一定量的空间分配给最多的用户使用了。但有没有更好的改进方案呢?

    管理员有一天发现,即使每个用户平局下来只存储 50M 的东西,但这 50M 也不是一蹴而就的,是随着1-2年的使用慢慢的达到这个数量的,也就是说,一个新的用户刚刚注册我的网络空间时,不会上传东西,或者只上传一点非常小的东西。那么我为每一个用户都初始分配了 50M 的空间,即使将来2年后他们会填满这 50M ,但这期间的这空间就有很多时浪费的啊。所以聪明的工程师说:既然我们可以分布式、集群式存储,一个用户的数据可以分布在多个服务器上,那么我们就假设一开始就给一个新注册的用户提供 0M 的空间,将来他用多少,我就给他提供多少存储空间,这样就彻底的保证硬盘的利用了。但用户的前端还是要显示 1G 的。

    工程师的这个点子,使得我在建立网盘初期能用 1台 1000G 的服务器提供了大约 1000000 人来注册和使用,随着注册的人多了,我也有钱了,也可以不断增加服务器以提供他们后期的存贮了。同时因为一部分服务器完了一年多购买,我的购买成本也下来了。

    那么…这结束了吗?
    若是邮箱提供商的话,这样的利用率够高了。但网盘就不一样了。
    聪明的工程师发现:不同于邮箱,大家的内容的附件绝大多数都是自创的和不同的。但网盘上大家上传的东西很多都是重复的。

    比如:张三 今天下载了一部《TOKYO HOT》上传上传到了自己的网盘上,李四在三天后也下载了一模一样的《TOKYO HOT》上传到了网络硬盘上,随着用户的增多,你会发现总计有 1000个人 上传了 1000份 一模一样的文件到你宝贵的服务器空间上,所以工程师想出一个办法,既然是一样的文件,我就只存一份不久好啦,然后在用户的前端显示是没人都有一份不久行啦。当某些用户要删除这个文件的时候,我并不真的删除,只需要在前端显示似乎删除了,但后端一直保留着以供其他拥有此文件的用户下载。直到所有使用此文件的用户都删除了这个文件我再真的将其删除吧。

    这样子随着存储的数据越来越多,注册的用户越来越多,其上传的重复数据越来越多。你发现这样的检测重复文件存储的效率越来越大。这样算下来似乎每个人上传的不重复的文件只能平均 1M/用户。这下子你可以提供超过 50倍 的用户使用您这有限的空间了。

    但伴随这使用,你又发现一个规律:
    张三上传的《TOKYO HOT N0124》和李四上传的《TH n124》是同一个文件,只不过文件名不一样,难道我就不能识别出他们是一个文件,然后只将其分别给不同的用户保存成不同的文件名不久行啦?确实可行,但这要利用一些识别文件相同性的算法,例如 MD5 值等。只要两个文件的 MD5 值一样,文件大小一样,我就认为它们是相同的文件,只需要保存一份文件并给不同的用户记作不同的文件名就好了。

    有一天你发现,因为每一个文件都需要计算 MD5 值,导致 CPU 负荷很大,而且本来一样的文件非要浪费带宽上传回来才可以检测一致性,能改进一下吗?

    聪明的工程师写了个小软件/.小插件,美其名曰“上传控件”,将计算 MD5 的工作利用这个软件交给了上传用户的点老来完成,一旦计算出用户要上传的数据和服务器上已经存储的某个数据是一样的,就干脆不用上传了,直接在用户那里标记上这个文件已经按照 XX 文件名上传成功了。这个过程几乎是瞬间搞定了,并给其起了个高富帅的名字“秒传”!

    通过以上这么多步骤,你发现本来你只能给 1000用户 提供网络空间的,这么多改进办法后,在用户端显示 1G 空间不变的情况下,近乎可以为 1000000个用户 提供网络空间了。

    这样若是您哪天心情好,对外宣传说:我要将每个用户的存储空间上限提升到 1TB。那么每个用户平均还是只上传 50M 数据,只有极个别极个别的用户上传了突破 1G 原始空间的数据,你会发现所付出的成本近乎是微乎其微的。

    展开全文
  • 由于很数据采集系统采集的数据比较,因此对系统的存储容量就较高的要求,一般EPROM或者FLASH的容量达不到要求,而采用SmartMedia卡就能很好解决问题。SmartMedia卡具有以下特点:  ●容量。一股目前的...
  • 我们一个项目是 Windows 2003系统, 我计划给系统分区15G,剩下用作数据存储和备份(数据分区)。 大家认为一般给系统分区多大比较合适? 此外,我想把Tomcat和数据库(Sybase Adaptive Anywhere,文件型...
    我们有一个项目是 Windows 2003的系统, 我计划给系统分区15G,剩下的用作数据存储和备份(数据分区)。 大家认为一般给系统分区多大比较合适? 此外,我想把Tomcat和数据库(Sybase Adaptive Anywhere,文件型数据库) 安装在系统分区,而降他们的数据存储在数据分区。

    我这么估算数据分区的大小:
    日志文件;
    备份文件;
    数据以及数据可能的增长;

    除此以外,大家还考虑一些其他因素么?
    展开全文
  • 该项目的主要思想是使用现有的IMAP服务器存储文档:IMAP服务器已经提供了“对象”(在本例中为文档)的存储和复杂的搜索。 存在许多可用于备份IMAP帐户的工具。 通过使用这种方法,可以重复使用现有的IMAP帐户和...
  • 1.前端需支持更大的访问,单台Web服务器已无法满足需求了,则需扩容Web服务器; 2.虽然动态内容可交由后端PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着台Web服务器都需要在各自系统...

    需求

    需求分析:

    1.前端需支持更大的访问量,单台Web服务器已无法满足需求了,则需扩容Web服务器;

    2.虽然动态内容可交由后端的PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着多台Web服务器都需要在各自的系统中都存有一份静态页面数据呢?

    其实这样也不是不可以,毕竟文件本地访问,速度还是有优势的,但这却涉及到多台Web服务器间内容的一致性问题,这种问题也不可避免;

    那么如果能将静态页面集中存放,所有Web服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;

    文件共享有多种方式,FTP,NFS,Samba等,而其中NFS作为网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,这种近似访问本地文件系统的架构貌似很符合我们的需求,我们现在就来实现这个需求!

    需求实现:

    1.web1充当http服务器和DNS解析服务器,客户端到web1和web2的请求,如果是静态资源请求通过php主机的NFS服务挂载的存储返回结果

    2.web1和web2对于客户端动态资源请求都反向代理到后端php服务器进行执行后返回结果

    3.web1和web2实现DNS轮询,客户端访问博客网站是负载均衡的。

    4.建立wordpress博客

    5.数据库存储wordpress博客的各种数据

    实验架构:

    部署实现

    一.DNS服务器在web1上的实现

    开发环境配置

    # yum –y groupinstall Development Tools

    配置DNS服务器:

    安装DNS服务器软件bind

    #yum –y install bind

    配置DNS主配置文件:

    # vim /etc/named.conf

    //

    //named.conf

    //

    //Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

    // serveras a caching only nameserver (as a localhost DNS resolver only).

    //

    // See/usr/share/doc/bind*/sample/ for example named configuration files.

    //

    options {

    //      listen-on port 53 { 127.0.0.1; };

    //      listen-on-v6 port 53 { ::1; };

            directory       "/var/named";

            dump-file      "/var/named/data/cache_dump.db";

            statistics-file"/var/named/data/named_stats.txt";

            memstatistics-file"/var/named/data/named_mem_stats.txt";

    //      allow-query     { localhost; };

            recursion yes;

    //      dnssec-enable yes;

    //      dnssec-validation yes;

    //      dnssec-lookaside auto;

            /* Path to ISC DLV key */

            /*bindkeys-file"/etc/named.iscdlv.key";

            managed-keys-directory"/var/named/dynamic";

            */

    };

    logging {

            channel default_debug {

                    file"data/named.run";

                    severity dynamic;

            };

    };

    zone"." IN {

            type hint;

            file "named.ca";

    };

    include"/etc/named.rfc1912.zones";

    include "/etc/named.root.key";

    配置主区域文件:只是在文件尾部添加正向区域

    # vim /etc/named.rfc1912.zones

    zone"stu31.com" IN {

            type master;

            file "stu31.com.zone";

    };

    配置正向区域解析库文件:

    这里让客户端查询http服务器时能轮换查询到两台web服务器。

    # vim/var/named/stu31.com.zone

    $TTL 600

    $ORIGINstu31.com.

    @       IN     SOA     ns.stu31.com.   root.stu31.com. (

                            2014122301

                            1H

                            3M

                            5D

                            6H )

    @       IN     NS      ns

            IN     MX  5   mail

    ns      IN     A       172.16.31.30

    www     IN     A       172.16.31.30

    www     IN     A       172.16.31.31

    mail    IN      A      172.16.31.30

     配置文件语法检查:

    #named-checkzone  stu31.com /var/named/stu31.com.zone  

    zonestu31.com/IN: loaded serial 2014122301

    OK

    启动DNS服务:

    # servicenamed start

    Generating/etc/rndc.key:                                 [  OK  ]

    Starting named:                                            [ OK  ]

    测试全部区域解析:

    # dig -taxfr stu31.com @172.16.31.30

    ;<<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -taxfr stu31.com @172.16.31.30

    ;; globaloptions: +cmd

    stu31.com.              600     IN     SOA     ns.stu31.com. root.stu31.com.2014122301 3600 180 432000 21600

    stu31.com.              600     IN     NS      ns.stu31.com.

    stu31.com.              600     IN     MX      5 mail.stu31.com.

    mail.stu31.com.         600    IN      A       172.16.31.30

    ns.stu31.com.           600    IN      A       172.16.31.30

    www.stu31.com.          600     IN     A       172.16.31.30

    www.stu31.com.          600     IN     A       172.16.31.31

    stu31.com.              600     IN     SOA     ns.stu31.com.root.stu31.com. 2014122301 3600 180 432000 21600

    ;; Querytime: 1 msec

    ;;SERVER: 172.16.31.30#53(172.16.31.30)

    ;; WHEN:Wed Dec 24 02:44:40 2014

    ;; XFR size: 8 records (messages 1, bytes 210)

     DNS服务器安装完毕!这里是最简单的正向区域的实现,果有不清楚的话,我前面的博文有详细介绍。

    二.      apache服务器在web1和web2上的实现

    httpd的安装同时在web1和web2上安装:

    将DNS服务器地址指向172.16.31.30

    开发环境配置:

    # yum –y groupinstall Development Tools

    # yum install -ypcre-devel openssl-devel

    编译安装apr:

    # tar xf apr-1.5.0.tar.bz2

    # cd apr-1.5.0

    # ./configure--prefix=/usr/local/apr

    # make && make install

    编译安装apr-util

    # tar xf apr-util-1.5.3.tar.bz2

    # cd apr-util-1.5.3

    # ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr

    # make && make install

    编译安装httpd-2.4.10

    # tar xf httpd-2.4.10.tar.bz2

    # cd httpd-2.4.10

    # ./configure --prefix=/usr/local/apache  --sysconfdir=/etc/httpd24 --enable-so--enable-ssl --enabletc/httpd24 --enable-so --enable-ssl --enable-rewrite--with-z --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --enable-modules=most--enable-mpms-shared=all --with-mpm=event

    #make && make install

    Apache服务脚本创建:

    复制一个系统上原有的httpd的脚本更改如下:

    #cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24

    加入系统服务:

    #chkconfig –add httpd24

    #chkconfig  httpd24 on

    启动httpd服务:

    # servicehttpd24 restart

    Stoppinghttpd:                                           [  OK  ]

    Startinghttpd:                                           [  OK  ]

        Web服务器基础部分搭建完成,只需要后续虚拟主机配置与PHP结合。

    三.      MariaDB数据库服务器安装

    MariaDB服务器的DNS指向172.16.31.30

    开发环境配置:

    # yum groupinstall Development Tools

    # yum -y install pcre-devel openssl-devel

    XFS文件系统支持:

    # yum install xfsprogs

    服务器数据库数据文件存储考虑到安全性,我将创建一个LVM进行数据库数据文件的存储,并采用新型文件系统XFS来提高数据库服务器的性能。

    格式化磁盘:

    #  echo -n -e"n\np\n3\n\n+10G\nt\n3\n8e\n\w\n" |fdisk /dev/sda

    # partx -a /dev/sda

    创建LVM:

    # pvcreate/dev/sda3

    # vgcreate myvg/dev/sda3

    # lvcreate -L 10G -n mylv myvg

    创建xfs文件系统:

    # mkfs -t xfs /dev/myvg/mylv

    # blkid /dev/myvg/mylv

    自动挂载,在/etc/fstab文件尾部添加:

    # vim /etc/fstab

    UUID="ba4e1e6c-3b7f-4f66-95b1-f51f8792288d"  /mydata xfs  defaults     0  0

    创建数据库管理用户:

    # useradd -M -s /sbin/nologin -d /mydata/data -r mysql

    创建数据库数据文件存储目录:

    # mkdir /mydata/data

    并给予mysql用户数据库数据文件存储目录管理权限:

    # chown -R mysql:mysql /mydata/data/

    解压数据库二进制源码包:

    # tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/

    # cd /usr/local/

    创建软链接:

    # ln -s mariadb-10.0.10-linux-x86_64/  mysql

    # cd mysql/

    初始化安装MariaDB:

    # scripts/mysql_install_db --user=mysql--datadir=/mydata/data

    mariadb配置文件创建及更改,有模版

    安装系统的时候,/etc/路径下有一个my.cnf的,这里换个路径

    # mkdir /etc/mysql

    # cp support-files/my-huge.cnf /etc/mysql/my.cnf

    # vim /etc/mysql/my.cnf

    [mysqld]

    datadir = /mydata/data

    port            = 3306

    socket          =/tmp/mysql.sock

    skip-external-locking

    key_buffer_size = 384M

    max_allowed_packet = 1M

    table_open_cache = 512

    sort_buffer_size = 2M

    read_buffer_size = 2M

    read_rnd_buffer_size = 8M

    myisam_sort_buffer_size = 64M

    thread_cache_size = 8

    query_cache_size = 32M

    innodb_file_per_table = on

    # Try number of CPU's*2 for thread_concurrency

    thread_concurrency = 8

    mariadb服务脚本创建

    # cp support-files/mysql.server /etc/rc.d/init.d/mysqld

    # chkconfig --add mysqld

    # chkconfig mysqld on

    # service mysqld start

    Starting MySQL.                                           [  OK  ]

    # ls /mydata/data/

    aria_log.00000001 ib_logfile0        mysql             mysql.stu31.com.pid

    aria_log_control  ib_logfile1       mysql-bin.000001 performance_schema

    mysqld服务的一些设置

    设置环境变量:

    # vim /etc/profile.d/mysqld.sh

    export PATH=/usr/local/mysql/bin:$PATH

    加载环境变量:

    # source /etc/profile.d/mysqld.sh

    输出mysql的头文件至系统头文件路径/usr/include。

    # ln -sv /usr/local/mysql/include /usr/include/mysql

    输出mysql的库文件给系统库查找路径,系统重新加载:

    # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

    # ldconfig

    测试客户端启动:

    # mysql

    Welcome to the MariaDB monitor. Commands end with ; or \g.

    Your MariaDB connection id is 4

    Server version: 10.0.10-MariaDB-log MariaDB Server

    Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current inputstatement.

    MariaDB [(none)]> select version();

    +---------------------+

    | version()           |

    +---------------------+

    | 10.0.10-MariaDB-log |

    +---------------------+

    1 row in set (0.00 sec)

    MariaDB [(none)]> \q

    Bye

    给数据库设置一个密码。

    # mysqladmin -u root password

    New password:

    Confirm new password:

    MariaDB安装完毕,只是基本的数据库环境,后面还需要数据库与博客网站结合

    四.PHP服务器上安装基于FastCGI的实现

    PHP服务器的DNS设置成172.16.31.30

    开发环境配置:

    # yumgroupinstall Development Tools

    #yum install  –y pcre-devel openssl-devellibxml2-devel php-gd freetype-devel mbstring

     编译安装php-5.6.4

    #tar xf php-5.6.4.tar.xz -C /usr/src/

    # cd/usr/src/php-5.6.4/

    #./configure --prefix=/usr/local/php --with-mysql=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --with-gd --enable-xml --enable-sockets --enable-fpm--with-mcrypt --with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

    安装:

    #make&& make install

    为PHP服务器提供配置文件:

    #cp php.ini-production /etc/php.ini

    为php提供Sys启动控制脚本,加入开机启动。

    # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

    # chmod +x /etc/rc.d/init.d/php-fpm

    # chkconfig --list php-fpm

    service php-fpm supports chkconfig, but is not referenced in anyrunlevel (run 'chkconfig --add php-fpm')

    # chkconfig --add php-fpm

    # chkconfig php-fpm on

    为php-fpm提供配置文件,编辑php-fpm配置文件,修改监听端口,默认是127.0.0.1。

    # cp /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf

    # vim /usr/local/php/etc/php-fpm.conf

    pm.max_children = 50

    pm.start_servers = 5

    pm.min_spare_servers = 2

    pm.max_spare_servers = 8

    pid = /usr/local/php5/var/run/php-fpm.pid

    listen = 172.16.31.22:9000

    启动php-fpm,检查php监听端口。

    # service php-fpm start

    Starting php-fpm  done

    # ss -tunl |grep 9000

    tcp  LISTEN  0  128  172.16.31.22:9000    *:*

    环境变量设置:

    # vim /etc/profile.d/php.sh

    export PATH=/usr/local/php/bin:$PATH

    # source /etc/profile.d/php.sh

    # php -v

    PHP 5.4.26 (cli) (built: Dec 21 2014 01:53:51)

    Copyright (c) 1997-2014 The PHP Group

    Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

    PHP部分配置完成,基本的php服务器环境,后面需要与web服务器结合。

    五.      PHP服务器上启用NFS服务

    创建一个目录或者提供一个特定的文件系统;亦可以参考上面的为数据库数据文件存储创建的特定文件系统:

    # mkdir /web

    创建wordpress博客的网站存放目录,我们将其共享出去让web服务器使用:

    #mkdir /web/blog

    查看NFS软件是否安装:

    # rpm -qanfs-utils

    nfs-utils-1.2.3-54.el6.x86_64

    NFS服务的配置文件为/etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

    # cat /etc/exports

    /web/blog 172.16.31.30(rw,async,no_root_squash)172.16.31.31(rw,async,no_root_squash)

    # 配置共享目录为可读写,客户端root用户权限不压缩

    /etc/exports文件内容格式:

    <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

    开启nfs服务:

    [root@php ~]# service nfs restart

    Shutting down NFS daemon:                                  [  OK  ]

    Shutting down NFS mountd:                                  [  OK  ]

    Shutting down NFS quotas:                                  [  OK  ]

    Shutting down NFS services:                                [  OK  ]

    Shutting down RPC idmapd:                                  [  OK  ]

    Starting NFS services:                                     [  OK  ]

    Starting NFS quotas:                                       [  OK  ]

    Starting NFS mountd:                                       [  OK  ]

    Starting NFS daemon:                                       [  OK  ]

    Starting RPC idmapd:                                       [  OK  ]

    查看本地NFS文件系统共享的目录:

    # showmount -e 172.16.31.32

    Export list for 172.16.31.32:

    /web/blog 172.16.31.31,172.16.31.30

    NFS文件系统建立完成。

    六.      在web1和web2上挂载NFS文件系统到本地目录

    NFS客户端配置

    这里的客户端就是前端的2台Web服务器,先挂载共享目录,然后测试其读写功能

    在客户机上执行mount命令,它向服务器上的端口映射器发出一个RPC调用来获得服

    务器上安装守护程序的端口号。客户和端口映射器交互既可以使用TCP也可以使用UDP,但一般使用UDP。

    将NFS文件系统挂载到web服务器上

    我们现在web服务器上查看NFS文件系统共享的目录:

    # showmount -e172.16.31.32

    Export list for172.16.31.32:

    /web/blog172.16.31.31,172.16.31.30

    我们先在web服务器上创建本地目录:/web/blog

    [root@web1 ~]#mkdir /web/blog -pv

    挂载NFS共享的文件目录到本地:

    可以使用临时挂载:

    [root@web1 ~]#mount -t nfs 172.16.31.32:/web/blog /web/blog

    也可使用开机系统自动挂载:

    [root@web1 ~]#vim /etc/fstab

    172.16.31.32:/web/blog  /web/blog               nfs     defaults,_netdev 0 0

    这里的_netdev选项是为了防止远程NFS服务器关闭后本地系统不能启动

    挂载完成后查看挂载是否成功:

    [root@web1 ~]#mount

    /dev/mapper/vg0-rooton / type ext4 (rw)

    proc on /proctype proc (rw)

    sysfs on /systype sysfs (rw)

    devpts on/dev/pts type devpts (rw,gid=5,mode=620)

    tmpfs on/dev/shm type tmpfs (rw)

    /dev/sda1 on/boot type ext4 (rw)

    /dev/mapper/vg0-usron /usr type ext4 (rw)

    /dev/mapper/vg0-varon /var type ext4 (rw)

    none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw)

    sunrpc on/var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

    172.16.31.32:/web/blog on/web/blog type nfs (rw,vers=4,addr=172.16.31.32,clientaddr=172.16.31.30

    七.安装wordpress博客系统

    1.配置web服务器的虚拟主机支持:

    开启FastCGI模块和PHP支持及开启虚拟主机。

    #vim /etc/httpd24/httpd.conf

    LoadModuleproxy_module modules/mod_proxy.so

    LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so

     <IfModuledir_module>

        DirectoryIndex index.php index.html

    </IfModule>

    AddTypeapplication/x-compress .Z

    AddType application/x-gzip.gz .tgz

    AddTypeapplication/x-httpd-php .php

    AddTypeapplication/x-httpd-php-source .phps

    Include/etc/httpd24/extra/httpd-vhosts.conf

    配置虚拟主机配置文件:

    #vim/etc/httpd24/extra/httpd-vhosts.conf

    <VirtualHost 172.16.31.30:80>

    DocumentRoot"/web/blog"

    ServerName www.stu31.com

    ProxyRequests Off

    ProxyPassMatch^/(.*\.php)$ fcgi://172.16.31.32:9000/www/blog/$1

    ErrorLog"/web/blog/logs/error_log"

    CustomLog"/web/blog/logs/access_log" common

    <Directory"/web/blog/logs">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

    </VirtualHost>

    注意:

    A.需要在nfs共享文件目录中创建日志文件目录logs

    #mkdir/web/blog/logs/

    B.web服务器的静态资源请求是到nfs共享文件目录/web/blog中返回结果,而涉及到动态资源的请求是反向代理到php服务器上的网站目录/www/blog中执行后返回结果。

    C.前端2台web服务器都需要配置好虚拟主机。

    2.在NFS共享服务器上安装wordpress博客系统

    在php服务器上创建动态资源存放目录:

    #mkdir  /www/blog

    解压wordpress博客程序:

    # unzip wordpress-3.2.1-zh_CN.zip

    移动程序到NFS文件共享目录:

    # mv wordpress/* /web/blog/

    3.配置wordpress博客系统与数据库结合

    创建wordpress的配置文件:

    #cd /web/blog

    # cp wp-config-sample.php wp-config.php

    写入数据库名称,用户名,密码及数据库服务器IP地址:

    #vim wp-config.php

    // **MySQL 设置 - 具体信息来自您正在使用的主机 ** //

    /**WordPress 数据库的名称 */

    define('DB_NAME','wpdb');

    /** MySQL数据库用户名 */

    define('DB_USER','wpadmin');

    /** MySQL数据库密码 */

    define('DB_PASSWORD','Oracle');

    /** MySQL主机 */

    define('DB_HOST','172.16.31.33');

    /** 创建数据表时默认的文字编码*/

    define('DB_CHARSET','utf8');

    /** 数据库整理类型。如不确定请勿更改 */

    define('DB_COLLATE', '');

    切换到数据库服务器,在数据库添加库,授权,添加授权密码

    [root@mysqlmysql]# mysql -u root -p

    Enter password:

    Welcome to the MariaDB monitor.  Commands end with ; or \g.

    Your MariaDB connection id is 8

    Server version: 10.0.10-MariaDB-log MariaDB Server

    Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current inputstatement.

    MariaDB [(none)]> create schema wpdb;

    Query OK, 1 row affected (0.04 sec)

    MariaDB [(none)]> grant all on wpdb.* to 'wpadmin'@'172.16.%.%'identified by 'oracle';

    Query OK, 0 rows affected (0.05 sec)

    MariaDB [(none)]> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> \q

    Bye

    4.重新启动httpd服务

    # servicehttpd24 restart

    Stoppinghttpd:                                           [  OK  ]

    Startinghttpd:                                           [  OK  ]

    八.      实现测试

    我们通过浏览器访问博客网站,我这里是一个在虚拟机上访问,一个在实体机上访问:

    上图的访问是在web1完成的

    下图的访问是在web2完成的

    结果非常完美哦!o(∩_∩)o

    九.我们在此基础上安装Drupal网站

    实现创建drupal网站:

    DNS服务器需要添加域名解析:

    [root@web1 ~]# vim/var/named/stu31.com.zone

    $TTL 600

    $ORIGIN stu31.com.

    @      IN      SOA     ns.stu31.com.   root.stu31.com. (

                            2014122302

                            1H

                            3M

                            5D

                            6H )

    @      IN      NS      ns

           IN      MX  5  mail

    ns     IN      A       172.16.31.30

    www    IN      A       172.16.31.30

    www    IN      A       172.16.31.31

    web    IN      A       172.16.31.30

    web    IN      A       172.16.31.31

     mail   IN      A       172.16.31.30

    重启named服务:

    [root@web1 ~]# service named restart

    Stopping named:                                            [  OK  ]

    Starting named:                                           [  OK  ]

    测试解析:

    [root@web2 ~]# dig -t A web.stu31.com@172.16.31.30

    ; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A web.stu31.com@172.16.31.30

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 60232

    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1

    ;; QUESTION SECTION:

    ;web.stu31.com.                 IN      A

    ;; ANSWER SECTION:

    web.stu31.com.          600     IN     A       172.16.31.30

    web.stu31.com.          600     IN     A       172.16.31.31

    ;; AUTHORITY SECTION:

    stu31.com.              600     IN     NS      ns.stu31.com.

    ;; ADDITIONAL SECTION:

    ns.stu31.com.           600     IN     A       172.16.31.30

    ;; Query time: 4 msec

    ;; SERVER: 172.16.31.30#53(172.16.31.30)

    ;; WHEN: Wed Dec 24 08:16:36 2014

    ;; MSG SIZE rcvd: 96

    在php服务器上创建NFS文件目录共享,以存放drupal网站的静态资源:

    [root@php ~]# mkdir /web/drupal

    [root@php ~]# showmount -e 172.16.31.32

    Export list for 172.16.31.32:

    /web/blog 172.16.31.31,172.16.31.30

    [root@php ~]# vim /etc/exports

    /web/blog 172.16.31.30(rw,async,no_root_squash)172.16.31.31(rw,async,no_root_squash)

    /web/drupal 172.16.31.30(rw,async,no_root_squash) 172.16.31.31(rw,async,no_root_squash)

    重启NFS共享文件系统:

    [root@php drupal]# service nfs restart

    Shutting down NFS daemon:                                  [  OK  ]

    Shutting down NFS mountd:                                  [  OK  ]

    Shutting down NFS quotas:                                  [  OK  ]

    Shutting down NFS services:                                [  OK  ]

    Shutting down RPC idmapd:                                  [  OK  ]

    Starting NFS services:                                     [  OK  ]

    Starting NFS quotas:                                       [  OK  ]

    Starting NFS mountd:                                       [  OK  ]

    Starting NFS daemon:                                       [  OK  ]

    Starting RPC idmapd:                                       [  OK  ]

     在NFS共享服务器端查看共享的文件目录:

    [root@php drupal]# showmount -e172.16.31.32

    Export list for 172.16.31.32:

    /web/drupal 172.16.31.31,172.16.31.30

    /web/blog  172.16.31.31,172.16.31.30

     准备好drupal程序包:包含中文语言包

    [root@php ~]# ll

    -rw-r--r-- 1 root root  3229858 Dec 22 08:21drupal-7.34.tar.gz

    -rw-r--r-- 1 root root   582727 Dec 21 21:48drupal-7.34.zh-hans.po

     解压程序包:

    [root@php ~]# tar xf drupal-7.34.tar.gz

    [root@php ~]# mv drupal-7.34/* /web/drupal/

    [root@php ~]# cd /web/drupal/

    [root@php drupal]# cp sites/default/default.settings.phpsites/default/settings.php

    [root@php drupal]# chmod a+w sites/default/

    将中文语言包放置到指定目录:

    [root@php drupal]# cp/root/drupal-7.34.zh-hans.po profiles/standard/translations/

     创建drupal动态资源存放目录,并且将drupal网站目录复制一份到动态资源存放目录:

    [root@php drupal]# mkdir /www/drupal

    [root@php drupal]# cp -a * /www/drupal/

     下面配置NFS客户端,将NFS服务器共享的drupal网站目录映射到web服务器:

    切换到web服务器:

    我们需要创建网站目录:

    [root@web1 ~]# mkdir /web/drupal

    实现自动挂载:

    [root@web1 ~]# vim /etc/fstab

    172.16.31.32:/web/drupal  /web/drupal          nfs    defaults,_netdev 0 0

    [root@web1 ~]# mount -a

    [root@web1 ~]# mount

    /dev/mapper/vg0-root on / type ext4 (rw)

    proc on /proc type proc (rw)

    sysfs on /sys type sysfs (rw)

    devpts on /dev/pts type devpts(rw,gid=5,mode=620)

    tmpfs on /dev/shm type tmpfs (rw)

    /dev/sda1 on /boot type ext4 (rw)

    /dev/mapper/vg0-usr on /usr type ext4 (rw)

    /dev/mapper/vg0-var on /var type ext4 (rw)

    none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)

    sunrpc on /var/lib/nfs/rpc_pipefs typerpc_pipefs (rw)

    172.16.31.32:/web/blog on /web/blog typenfs (rw,vers=4,addr=172.16.31.32,clientaddr=172.16.31.30)

    172.16.31.32:/web/drupal on /web/drupaltype nfs (rw,vers=4,addr=172.16.31.32,clientaddr=172.16.31.30)

    web2服务器做同样的操作即可。

    [root@web2 ~]# ls /web/drupal/

    authorize.php  index.php          INSTALL.txt      profiles    themes

    CHANGELOG.txt  INSTALL.mysql.txt  LICENSE.txt      README.txt  update.php

    COPYRIGHT.txt  INSTALL.pgsql.txt  MAINTAINERS.txt  robots.txt UPGRADE.txt

    cron.php      install.php        misc            scripts    web.config

    includes      INSTALL.sqlite.txt  modules          sites      xmlrpc.php

    PHP服务器上NFS共享文件内的网站的内容就挂载到本地了!!!

    web1服务器的虚拟主机配置:

    [root@web1 ~]# vim/etc/httpd24/extra/httpd-vhosts.conf

    <VirtualHost 172.16.31.30:80>

       DocumentRoot "/web/drupal"

       ServerName web.stu31.com

       ProxyRequests Off

       ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.31.32:9000/www/drupal/$1

       ErrorLog "/web/drupal/logs/drupal-error_log"

       CustomLog "/web/drupal/logs/drupal-access_log" common

       <Directory "/web/drupal">

           Options none

           AllowOverride none

           Require all granted

       </Directory>

    </VirtualHost>

    测试配置文件语法:

    [root@web1 ~]# httpd -t

    (2)No such file or directory: AH02291:Cannot access directory '/web/drupal/logs/' for error log of vhost defined at/etc/httpd24/extra/httpd-vhosts.conf:38

    (2)No such file or directory: AH02291:Cannot access directory '/web/blog/logs/' for error log of vhost defined at/etc/httpd24/extra/httpd-vhosts.conf:24

    AH00014: Configuration check failed

    提示的错误是日志文件目录未创建!创建日志目录:

    [root@web1 ~]# mkdir /web/drupal/logs

    [root@web1 ~]# httpd -t             

    Syntax OK

    web2的虚拟主机配置:注意只需要改变一下虚拟主机的地址即可了!

    [root@web2 ~]# mkdir /web/drupal

    <VirtualHost 172.16.31.31:80>

       DocumentRoot "/web/drupal"

       ServerName web.stu31.com

       ProxyRequests Off

       ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.31.32:9000/www/drupal/$1

       ErrorLog "/web/drupal/logs/drupal-error_log"

       CustomLog "/web/drupal/logs/drupal-access_log" common

       <Directory "/web/drupal">

           Options none

           AllowOverride none

           Require all granted

       </Directory>

    </VirtualHost>

    虚拟主机配置完成!

    切换到数据库服务器为drupal网站创建数据库及数据库管理用户及密码:

    [root@mysql ~]# mysql -uroot -p

    Enter password:

    Welcome to the MariaDB monitor.  Commands end with ; or \g.

    Your MariaDB connection id is 32

    Server version: 10.0.10-MariaDB-log MariaDBServer

    Copyright (c) 2000, 2014, Oracle, SkySQL Aband others.

    Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.

    MariaDB [(none)]> create databasedrupal;

    Query OK, 1 row affected (0.00 sec)

    MariaDB [(none)]> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | drupal             |

    | information_schema |

    | mysql              |

    | performance_schema |

    | test               |

    | wpdb               |

    +--------------------+

    6 rows in set (0.02 sec)

    MariaDB [(none)]> grant all on drupal.*to 'drupal'@'172.16.%.%' identified by 'oracle';

    Query OK, 0 rows affected (0.03 sec)

    MariaDB [(none)]> flush privileges;

    Query OK, 0 rows affected (0.01 sec)

    MariaDB [(none)]> \q

    Bye

    重启httpd服务:

    [root@web1 ~]# service httpd24 restart

    Stopping httpd:                                           [  OK  ]

    Starting httpd:                                           [  OK  ]

    [root@web2 ~]# service httpd24 restart

    Stopping httpd:                                           [  OK  ]

    Starting httpd:                                           [  OK  ]

     开始去客户端安装drupal:

    输入web.stu31.com访问drupal网站:

    选择标准安装:

    选择简体中文:

    检查安装条件是否通过:

    出现不可写,需要对sites目录赋予写权限:

    需要同时更改NFS共享目录和php服务器本地的/www/drupal目录:

    [root@php ~]# chmod -R a+w/web/drupal/sites/

    [root@php ~]# chmod -R a+w /www/drupal/sites/

     再次刷新安装成功进入下一步:

    设置数据库,填入我们在上面设置的数据库名称和用户名及密码

    安装模块:

    设置网站:

    完成安装:

    进入网站首页:

    安装完成后将sites/default/settings.php的权限更改为只读权限,考虑到安全:

    [root@php ~]# chmod 444/web/drupal/sites/default/settings.php

    [root@php ~]# chmod 444/www/drupal/sites/default/settings.php

    到这里drupal网站安装就完成了!!!

    本文转载于:

    https://www.linuxidc.com/Linux/2014-12/110943p3.htm

    展开全文
  • path=/tmp,则是将session数据保存在/tmp目录下,如果并发用户,在这个目录下就会存在大量类似sess_xxxxxxsession文件,导致性能下降,不少朋友可能都没有注意到php.ini里面Session设置部分中这样一项: ...

    在PHP中SESSION默认是用文件来进行保存的,如session.save_path=/tmp,则是将session数据保存在/tmp目录下,如果并发用户量很大,在这个目录下就会存在大量类似sess_xxxxxx的session文件,导致性能下降,不少朋友可能都没有注意到php.ini里面Session设置部分中有这样一项:

      ; session.save_path = "N; MODE; /path"

      这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,“MODE”表示目录的权限属性,默认为600,在WINDOWS上基本是不用设置的,*NIX上也可以不用设置,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式

      session.save_path = "2; d:/php5/tmp"

      上面的设置表示我们把d:/php5/tmp目录作为php的session文件存放根目录,在该目录下进行两级目录散列,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。

      需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建,网上找到这样的自动创建目录的代码,大家可以做个参考。下面的代码自动创建3级子目录,可以自己动手根据需要进行修改。

    set_time_limit(0);
    $string = '0123456789abcdefghijklmnopqrstuvwxyz';
    $length = strlen($string);
    function makeDir($param)
    {
    if(!file_exists($param)) {
    makeDir(dirname($param));
    mkdir($param);
    }
    }
    for($i = 0; $i < $length; $i++) {
    for($j = 0; $j < $length; $j++) {
    for($k = 0; $k < $length; $k++) {
    makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
    }
    }
    }
    ?>
    多服务器共享session的方法:

      1.通过NFS文件共享的方式,多台WEB服务器共享保存session文件的磁盘

      2.保存在数据库中,这种方式的扩展性很强,可以随意增加WEB而不受影响

      3.可以将session数据保存在memcached中,memcached是基于内存存储数据的,性能很高,用户并发量很大的时候尤其合适,参考PHP实现多服务器session共享之memcache共享

      4.文件方式保存session时,可以采用php的扩展eaccelerator来存储sesion,参考

      eaccelerator 应用之“使用共享内存存储Session”

      首先创建表,用来保存session数据

    CREATE TABLE `sessions` (              
          `sessionid` varchar(32) NOT NULL default '',    
          `data` mediumtext NOT NULL,            
          `lastvisit` int(10) unsigned NOT NULL default '0', 
          PRIMARY KEY (`sessionid`)             
         ) ENGINE=MyISAM DEFAULT CHARSET=gbk

      主要的代码如下:

      session_mysql.class.php

    class session
    {
    var $lifetime = 1800;
      var $op = '';
      
      function __construct($op = '')
      {
        $this -> op = $op;
      session_set_save_handler(array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc'));
        $this->debug('session_id:' . COOKIE[session_name()]);
        //确保读写session时session id保存在同一个域下,否则有可能会每次重新生成一个session id
        ini_set('session.cookie_domain', '.chf.com');
     session_start();
      }
      
      function debug($str) {
        //echo $str . "
    n";
        $file = dirname(__FILE__) . '/session.log';
        $content = date("Y-m-d H:i:s") . ' operate:' . $this -> op . ' ' . $str . "n";
        $fp = @fopen($file, "ab");
        if (!$fp) die("Open file $file failed!");
        @fwrite($fp, $content);
        if ($fp) @fclose($fp);
      }
      
      function session()
      {
     $this->__construct();
      }
      
      /**
       * 这个函数被session处理程序调用来作初始化工作。
       * @param string $save_path 参数$sess_path对应php.ini文件中的session.save_path选项
       * @param string $session_name 参数$session_name对应php.ini中的session.name 选项。
       */
      function open($save_path, $session_name)
    {
        $this->debug('opening...');
     global $db;
       $this->lifetime = 20; //session超时时间
       $this->time = time();
     $this->sess = &$db;
        $this->pre = '';
     return true;
      }
      
      /*
      sess_close();
      这个函数在页面结束执行并且session处理程序需要关闭时被调用
      */
      function close()
    {
        $this->debug('closing...');
     $this->gc($this->lifetime);
        return $this->sess->close();
      }
      
      //根据session id取出指定的session数据是否为空,然后判断用户登录与否或操作是否超时
      /*
      这个函数在session处理程序读取指定session键值($key)时,检索并返回标识为$key的session数据.(注意:序列化是将变量或对象在程序结束或需要时保存在文件中,在下次程序运行或需要时再调入内存的技术,有别于只保存数据的方法。)
      
      例如读session数据时会调用此函数
      $name = SESSION['name'];
      echo "name:$name";
        SESSION['name'] = 'caihf';
      
      @param string $id session id通常通过cookie来保存用户的session id,如650fcm4p8aodn1cfrusc5ehql0
      */
      function read($id)
    {
        $this->debug('reading...');
        $sql = "SELECT data FROM `{$this->pre}sessions` WHERE sessionid='$id'";
     $r = $this->sess->get_one($sql);
        $this->debug("sql:$sql");
     return $r ? $r['data'] : '';
      }
      
      /*
      这个函数据在session处理程序需要将数据保存时调用,这种情况经常在程序结束时发生。它负责将数据保存在下次能用sess_read($key)函数检索的地方。
      例如给session赋值时(SESSION['name'] = 'caihf';)会调用此函数
      @param string $id session id通常通过cookie来保存用户的session id,如650fcm4p8aodn1cfrusc5ehql0
      @param string $sess_data sessoin数据,一般是自动序列化以后保存在数据库中的,如name|s:5:"caihf";
      */
      function write($id, $sess_data)
    {
        $this->debug('writing...');
        $sql = "REPLACE INTO `{$this->pre}sessions` (sessionid, data, lastvisit) VALUES('$id', '".addslashes($sess_data)."', '".time()."')";
        $this->sess->query($sql);
        $this->debug("sql:$sql");
     return true;
      }
      
      /*
      这个函数在需要消毁session时。它负责删除session并且清除环境。
      @param string $id session id通常通过cookie来保存用户的session id,如650fcm4p8aodn1cfrusc5ehql0
      */
      function destroy($id)
    {
        $this->debug('destroying...');
        $sql = "DELETE FROM `{$this->pre}sessions` WHERE sessionid='$id'";
     $this->sess->query($sql);
        $this->debug("sql:$sql");
     return true;
      }
      
      //删除超时的session数据
      /*
      这个函数负责清理碎片。在这种情况下,它负责删除过时的session数据。session处理程序会偶尔调用它们。
      */
      function gc($maxlifetime)
    {
        $this->debug("gcing...n");
     $expiretime = $this->time-$maxlifetime;
        $sql = "DELETE FROM `{$this->pre}sessions` WHERE lastvisit<$expiretime";
     $this->sess->query($sql);
        $this->debug("sql:$sql");
     return true;
      }
    }
      
    /*
    给session赋值时的log,如
    SESSION['name'] = 'caihf';
    2008-09-17 03:35:35 operate:write session_id:650fcm4p8aodn1cfrusc5ehql0
    2008-09-17 03:35:35 operate:write opening...
    2008-09-17 03:35:35 operate:write reading...
    2008-09-17 03:35:35 operate:write sql:SELECT data FROM `sessions` WHERE sessionid='650fcm4p8aodn1cfrusc5ehql0'
    2008-09-17 03:35:35 operate:write writing...
    2008-09-17 03:35:35 operate:write sql:REPLACE INTO `sessions` (sessionid, data, lastvisit) VALUES('650fcm4p8aodn1cfrusc5ehql0', 'name|s:5:"caihf";', '1221622535')
    2008-09-17 03:35:35 operate:write closing...
    2008-09-17 03:35:35 operate:write gcing...
    2008-09-17 03:35:35 operate:write sql:DELETE FROM `sessions` WHERE lastvisit<1221622515
      
    从session中读数据时的log,如$name = SESSION['name'];echo "name:$name";
    2008-09-17 03:44:24 operate:read session_id:650fcm4p8aodn1cfrusc5ehql0
    2008-09-17 03:44:24 operate:read opening...
    2008-09-17 03:44:24 operate:read reading...
    2008-09-17 03:44:24 operate:read sql:SELECT data FROM `sessions` WHERE sessionid='650fcm4p8aodn1cfrusc5ehql0'
    2008-09-17 03:44:24 operate:read writing...
    2008-09-17 03:44:24 operate:read sql:REPLACE INTO `sessions` (sessionid, data, lastvisit) VALUES('650fcm4p8aodn1cfrusc5ehql0', 'name|s:5:"caihf";', '1221623064')
    2008-09-17 03:44:24 operate:read closing...
    2008-09-17 03:44:24 operate:read gcing...
    2008-09-17 03:44:24 operate:read sql:DELETE FROM `sessions` WHERE lastvisit<1221623044
    */
    ?>


      session_test1.php

    include_once('session_mysql.class.php');
    include_once('db_mysql.class.php');
      
    $db = new db_mysql();
    $db -> connect('localhost', 'root', 'home', 'test');
    $session = new session('write');
    SESSION['name'] = 'caihf';
    //echo "name:" . SESSION['name'] . "n";
    echo 'Assign value to session over!';
    ?>

      session_test2.php

    include_once('session_mysql.class.php');
    include_once('db_mysql.class.php');
      
    $db = new db_mysql();
    $db -> connect('localhost', 'root', 'home', 'test');
    $session = new session('read');
      
    function is_login() {
      return strlen(SESSION['name']) > 0 ? 1 : 0;
    }
      
    if (is_login()) {
      echo "Hello {SESSION['name']}n";
    } else {
      echo "User not loggined!
    n";
    }
    //unset(SESSION['name']);
    /*
    执行完unset(SESSION['name']);操作,然后再刷新此页面时,字段data的值就变为空了
    sessionid         data lastvisit
    am1dmhbd2dsq9fpglpdh81u0d6 1221634486
    */
    ?>

    展开全文
  • 1.前端需支持更大的访问,单台Web服务器已无法满足需求了,则需扩容Web服务器; 2.虽然动态内容可交由后端PHP服务器执行,但静态页面还需要Web服务器自己解析,那是否意味着台Web服务器都需要在各自系统...
  • 下次作为现实读取,现在这样设计问题就是我以后多的图片存储到我项目里面,占用项目所在磁盘大量空间,我应该怎么解决以后不断扩展目录。。让我磁盘均分我使用负荷? 还请各位帮忙,本人刚刚...
  • web cookie 的存储大小问题

    千次阅读 2019-07-17 23:37:52
    前辈问我cookie的存储量有多大,我按部就班的回答 4k左右; 前辈又问,那么cookie能存储多少个汉字? 4k 大概 4000字节,一个汉字 2 个字节,那差不多 2000个吧; 前辈又问:确定么 到此就困惑了; 下面通过 ...
  • 前阵子笔者写了一篇《自己动手轻松打造5000G洋量存储服务器》,发表之后引来很存储感兴趣的朋友的关注,许多人来信和笔者探讨自己组装大型存储服务器的实用性和可行性,给笔者提出很中肯意见,并希望将这个...
  • 从目前发展态势看,服务器虚拟化渐成主流,存储可能成为下一个因虚拟化而发生重要变革IT构件。 叫好不叫座  事实上,存储虚拟化概念并不新鲜,它是伴随大型计算机发展而出现一个经典概念。早在上...
  • 快乐的Git仓库都是一样的。 每个不满意的Git存储库都以自己的方式不满意。... 最好将单个文件存储在您的存储库中,或将存档存储在其他位置。 存储库中是否引用(分支和/或标签)? 即使您的克隆是最新的,
  •  在当今服务器的配置中,磁盘的种类还是非常的,而且可利用的存储空间也越来越多样化。一般常见的磁盘类型主要以下几个方面。  第一,HDD硬盘。  HDD硬盘是最基本的电脑存储盘,也是最传统的服务器采用的...
  • 某气象局,大量的资料如卫星云图、天气预报等需要保存,在以前,这些资料保存在台服务器上。...另外,由于气象云图等资料比较,导致服务器的空间一直比较“紧张”,经常需要为服务器“扩容”。为了解决这...
  • 从网上查询是数据了,用DBMS_OUTPUT.ENABLE(BUFFER=>NULL)可以解除内存使用限制,但是这样数据的话就会将数据库服务器内存耗尽的风险。 从这点可以看出,带游标的存储过程(或者说所有的存储过程...
  • 虽然给每个员工电脑都设置pop3登录但是他们程序设定保存服务器副本,所以大量邮件使得服务器存储占用巨大。 删除服务器天前邮件 实现: 使用 Python poplib 进行删除查看操作 使用email.parser 进行...
  • 其实云计算是一种按使用付费模式,这种模式提供可用、便捷、按需网络访问,进入可配置计算资源共享池(资源包括网络、服务器存储、应用软件、服务),这些资源能够被快速提供,只需投入很少管理工作...
  • 1.现有数据 2.日增长数据 3.中间计算结果 4.各阶段数据存储时长 ...数据盘不用做raid,因为hadoop备份数据功能。 如果计算任务复杂且,CPU需要高配。如果使用大数据组件吃内存内存需要高配。 ...
  • 大型网站是技术和业务结合,一个满足某些用户需求网站只要技术和业务二者一方难度很,必然会让企业投入更多的、更优秀人力成本实现它,那么这样网站就是所谓大型网站了。 服务器部署 分开部署Web...
  • 虽然给每个员工电脑都设置pop3登录但是他们程序设定保存服务器副本,所以大量邮件使得服务器存储占用巨大。 删除服务器天前邮件 实现: 使用 Python poplib 进行删除查看操作 使用email.parser 进行....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,708
精华内容 683
关键字:

服务器的存储量有多大