2014年2月14日星期五

Linux 的软件管理器

    Linux 有类似 Windows 控制面板下面的“添加或删除程序”软件管理器。在 Linux 上面至少就有两种常见的这方面的软件管理器,分别是 Red Hat 的 RPM 与 Debian 的 dpkg 。

dpkg

    这个机制最早是由Debian Linux 社群所开发出来的,透过dpkg 的机制, Debian 提供的软体就能够简单的安装起来,同时还能提供安装后的软体资讯,实在非常不错。 只要是衍生于Debian 的其他 Linux distributions 大多使用dpkg 这个机制来管理软体的, 包括B2D, Ubuntu 等等。

RPM 

   这个机制最早是由Red Hat 这家公司开发出来的,后来实在很好用,因此很多distributions 就使用这个机制来作为软体安装的管理方式。 包括Fedora, CentOS, SuSE 等知名的开发商都是用它。



distribution 代表 软件管理机制 使用命令 在线升级机制(命令)
Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
Debian/Ubuntu DPKG dpkg APT (apt-get)

下面我们来谈谈软件管理机制 RPM ,在线升级的方式为 yum 的相关说明。

RPM 与 SRPM

    RPM 全名是『 RedHat Package Manager 』简称则为 RPM 。顾名思义,当初这个软体管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是一种以数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。

优点:


  • 由于已经编译完成并且打包完毕,所以软体传输与安装上很方便 (不需要再重新编译);
  • 由于软体的资讯都已经记录在 Linux 主机的资料库上,很方便查询、升级与卸载。


劣势:


  • 软件安装的环境必须与打包时的环境需求一致或相当;
  • 需要满足软件的依赖属性需求;
  • 卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!


    SRPM 是什么呢?顾名思义,它是 Source RPM 的意思,也就是这个 RPM 文件里面含有源代码。SRPM 所提供的软件内容并没有经过编译。安装该软件时必须要:


  • 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
  • 然后将编译完成的 RPM 文件安装到 Linux 系统当中。



文件格式文件名格式直接安装与否內含程序类型可否修改参数并编译
RPMxxx.rpm可已编译不可
SRPMxxx.src.rpm不可未编译的源代码可


下一篇:RPM 软件管理程序命令详解

2014年1月21日星期二

PHP curl_init 设置HTTP服务器认证

    使用 PHP 的 cURL 库去抓取网页时,有时会遇到 HTTP 服务器需要进行身份验证的情况,这时候该怎么设置呢?

需要进行身份验证

<?php

    $url = "http://192.168.0.100:8080/JM-PLATFORM/sms/MobsetSendSMS/sysId/oa/mobileNum/{$mobile_phone}/message/{$message}";

    $tmp = sys_get_temp_dir();
    $cookieDump = tempnam($tmp, 'cookies');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //设置存放 Cookie 的文件
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieDump);
    //设置 Http 身份验证的方法,这里有多个选项可以选择,可参考 php 手册
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    //设置 用户名和密码
    curl_setopt($ch, CURLOPT_USERPWD,'User:Password');
    $output = curl_exec($ch);
    curl_close($ch);
    echo $output;

?>

2013年9月3日星期二

Windows下 Apache 搭建和配置Subversion服务器

一、软件下载


  到 http://www.collab.net/downloads/subversion 下载相关软件。



 

二、安装软件


    Subversion 1.8.3 版本的安装包自带了Apache 2.2.8,所以无需额外安装Apache服务器。一路默认安装,如果需要修改仓库根目录或者Apache2.2.8端口可以自行修改为自己的信息,Apache默认端口为80,Subversion 默认仓库存储路径为 C:svn_repository 可自由设定仓库存储路径(D:\svn_repository)。

    安装的过程中会自动将 Subversion 和 Apache 注册成服务,安装完成后重启一下电脑,运行services.msc查看服务,可以看到 “Apache2.2”和“Subversion Server”两个服务已经自动启动,如果不想让他们自动启动,可以修改为手动启动。

三、配置


1、修改 Apache 的配置文件,在 conf/httpd.conf 中注册 Subversion 浏览库和权限控制模块:

LoadModule dav_svn_module     modules/mod_dav_svn.so

2、打开 mod_dav.so 和 mod_dav_fs.so 模块,去掉开头的注释关键字“#”

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

3、在 conf/httpd.conf 文件末尾添加以下代码

 <Location /svn>
   DAV svn  #告诉 Apache 哪个模块负责服务像那样的URL
   SVNParentPath D:\svn_repository   #配置库路径
   AuthType Basic #启用基本的验证,用户名/密码验证
   AuthName "svn repos" #当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
   AuthUserFile D:\svn_repository\.htpasswd  #身份验证文件的路径
   Require valid-user  #禁止匿名访问
   SVNListParentPath on #允许访问/svn目录

</Location>

4、用 apache htpasswd 建立用户密码文件,并添加用户密码到密码文件中。打开命令行提示符,进入到 Apache 的 bin 目录中,

htpasswd -c D:\svn_repository\.htpasswd harry

#创建一个新的认证文件并在其中添加一条用户 harry 的记录,密码将被提示输入。

以后想添加用户或者修改密码,只需键入以下命令

htpasswd D:\svn_repository\.htpasswd harry

5、重启 Apache 服务器,使用 http://svn服务器IP/svn/svndemo 连接服务器

2013年7月6日星期六

Windows 7 下安装 Nginx 和 PHP

       Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,相较于Apache、lighttpd具有占有内存少,并发能力强,稳定性高等优势。

       由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。

        目前中国大陆使用 Nginx 网站用户有:新浪、网易、 腾讯,另外知名的微网志 Plurk 也使用 Nginx。

安装 Nginx

        点击 这里 下载 Nginx(这里以 nginx 1.5.2 为例)。下载完成后,只需解压即可,勿需安装。打开 DOS,切换到该目录下,运行以下语句即可

start nginx   #启动 Nginx


      在浏览器输入:http://localhost/ ,出现欢迎页面,说明以成功运行。也可运行命令行来查看 Nginx 进程。

tasklist /fi "imagename eq nginx.exe"

   
Nginx 基本命令

nginx -s stop #快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。 
nginx -s reopen   #重新打开日志文件。  


运行 PHP


首先在 CMD 切换到 PHP(这里以 php5.3.8 为例) 的根目录下,启动 PHP FastCgi ,输入以下命令

php-cgi.exe -b 127.0.0.1:9000 -c php.ini

再打开另一个 DOS 窗口,输入命令:

netstat -a    

查询到以下信息,说明 php-cgi 启动成功。

TCP    127.0.0.1:9000         3dns-2:0               LISTENING



配置 Nginx 支持 PHP 

打开 Nginx 的配置文件 conf/nginx.conf ,找到以下源码

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}


修改如下:

location ~ \.php$ {
    #    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME D:/
nginx-1.5.2/html$fastcgi_script_name;
    include        fastcgi_params;
}


注意上面的代码  D:/nginx-1.5.2/html  是你想运行 php 的目录。然后在 CMD 运行以下命令:

nginx -s reload

这样 Nginx  就能运行 PHP 了。


安装 PHP 开发环境的文章: 一键安装PHP开发环境





Windows 平台下一键安装驱动的工具

        今天用 Windows 7 的正版系统碟重装系统后才发现硬件的驱动要自己去安装。但是丫的现在网卡都没驱动,网都上不了。

        本来打算在同学那里下载个网卡驱动先装上,解决上网问题就好办了。但是他给我一个快捷安装驱动的工具——驱动精灵。

        驱动精灵是由驱动之家研发的一款集驱动自动升级、驱动备份、驱动还原、驱动卸载、硬件检测等多功能于一身的专业驱动软件。您可以彻底扔掉驱动光盘,把驱动的下载、安装、升级、备份全部交给驱动精灵来搞定!驱动精灵通过了Windows7(Win7)兼容认证,支持包含Windows 2000、XP、Vista、7、8在内的所有微软32/64位操作系统。

        原来驱动精灵扩展版已经内置了多种网卡的驱动,只要一安装,就帮你安装了网卡的驱动,再去检测还没安装的硬件驱动,再通过联网下载,最后安装就搞定了。确实挺方便的。

2013年6月22日星期六

大文件上传解决方案

    传统的HTML方式已经难已满足超大文件的上传。别说是100MB,50MB对服务器来说都是非常大的,服务不仅要专门开一个链接等待这个文件上传完毕,还要分配同等大小的内存来保存这个文件对服务器来讲压力相当的大。

    在实际网络环境中一般10MB左右的文件都需要借助于控件来实现。一方面是因为国内的网络环境不太稳定,另一方面是从服务器的负载方面考虑。

    像QQ邮箱中的超大附件上传功能,115网盘中的超大附件上传控件,华为网盘(DBank),金山快盘他们都是使用控件来实现超大文件上传功能的。

    他们通过控件将一个大文件,比如1G划分成许多的小块,每一小块大约是128KB,然后循环上传,直到上传完。

    服务器端每接受一小块,相当于接受到一个单独的文件,会直接写入硬盘里。最后,把接受的所有文件给组合起来。

    这样做的优点就是减轻了服务端的压力,提高了服务端的负载能力,使得服务端能够处理的用户请求数多了。

jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传、取消、删除和断点续传,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。

2013年6月13日星期四

多台服务器实现Session的共享

    我们知道,Session是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。
    访问网站的来客会被分配一个唯一的标识符,即所谓的会话 ID。它要么存放在客户端的 cookie,要么经由 URL 传递。
    Session 的存储方式默认是以文件的形式存放在本地的一个硬盘目录中,所以当Session比较多时,磁盘读取文件会比较慢。还有一点就是对于大站点,它无法实现多台服务器会话的共享。
    一个解决方案是用数据库来存取 Session ,就能在不同服务器之间共享 session 信息了。
    实现代码下载
    引擎 MyISAM 最好替换成 MEMORY 引擎,因为 MEMORY 采用内存表,所有数据存储在内存,操作速度快,对于 Session 这种形式的数据正好适用。
    在大流量的网站中,session 入库存在效率不高、占据数据库 connection 资源等问题。针对这种情况,可以使用 Memcached、Redis 等 Key-Value 数据存储方案实现高并发、大流量的 Session 存储。