在Godaddy购买VPS心得

由于无法继续忍受和千军万马共挤虚拟主机。近日,我为阳光部落(http://www.sunbloger.com/)从Godaddy(http://www.godaddy.com/)上购买了VPS主机,下面是我在购买和使用中的一些感受和心得。

在Godaddy主页的All Products菜单中,选择Hosting & Servers,再在弹出的菜单中选择VPS项目,就可以进入VPS主机的选购页面了,后面的购买和付款流程与买虚拟主机没有区别,就不详细说了。但需要注意的是机房会被默认到Godaddy新加坡数据中心,从这几年的经验来看,新加坡机房的效果不如美国本土好。

vps01

目前Godaddy的VPS提供三种操作系统供用户选择,分别是CentOS、Fedora和Windows,对于服务器来说,特别是打算用Linux作为服务器操作系统时,CentOS是最好的选择。

vps02

购买后的VPS需要在Godaddy上开通,在开通过程中需要提供一个账号和密码,用于通过SSH登录到服务器上。但Godaddy的VPS不支持直接root登录,需要以预先设置的账号登录后,再su切换到root。

我购买的CentOS系统的VPS十分精简,如果喜欢自己编译安装的方式去部署一些软件,经常会遇到提示缺少某某组件,直接通过yum安装所需组件即可。

在我安装并启动Nginx时,提示我80端口已被占用,用netstat –tulpn命令查询后发现VPS中已经安装有httpd,占用了80端口。停掉httpd,再次启动Nginx,一切正常了!

基于 RHEL 的 CentOS 6.4 发布

CentOS Logo

CentOS(Community ENTerprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。

CentOS 6.4 功能改进:

  • 支持Parallel NFS (pNFS)
  • 增强了Vmware和Hyper-V的虚拟机支持及性能
  • 增强了身份管理
  • 支持cgroups及PMU
  • 更多的新工具等

软件包的变化:

  • 增加了Haproxy
  • 引入Samba4作为技术预览
  • 增加了 Keepalived(无需在EPEL里找了)
  • SystemTap升级到1.8
  • 增加了lscpu和chcpu用于CPU操作
  • 增加了SciPy
  • 增加了libjpeg-turbo、redhat-lsb-core,并升级了createrepo等

官方网址:http://www.centos.org/

Nginx构建负载均衡集群的配置方法

假设我们有3台服务器,IP地址分别为:
192.168.0.1 / 192.168.0.2 / 192.168.0.3

我们将192.168.0.1作为前端主服务器,192.168.0.2和192.168.0.3作为负载均衡的后端服务器。

下面是192.168.0.1主服务器上Nginx的配置方法:
worker_processes 1;

events {
worker_connections 1024;
}

http {
upstream serverlist {
server 192.168.0.2:8000 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.0.3:8000 weight=7 max_fails=3 fail_timeout=20s;
}

server {
listen 80;
server_name www.sunbloger.com;
location / {
proxy_pass         http://serverlist;
proxy_set_header   HOST             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}
}
}

配置说明:
upstream serverlist{}可以理解为一个服务器池,通过proxy_pass http://serverlist命令,可将访问www.sunbloger.com的请求分配给位于池内的服务器192.168.0.2和192.168.0.3。
weight=3和weight=7为服务器的权重,权重越高,被分配到的请求就越多。
max_fails=3和fail_timeout=20s的含义是,当请求失败次数达到3次时,这个服务器将被暂时下线20秒。

技巧:主服务器可负责静态内容,将所有php的请求分配到后端服务器处理。

转载请注明:阳光部落原创,更多内容请访问http://www.sunbloger.com/

PHP官方框架 Zend Framework 2.1 发布

Zend Framework

Zend Framework (简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。

在2012年9月5日正式发布了2.0版本,简称为ZF2,该版本的主打口号则是“高性能”。目前的最新版本为 Zend Framework 2.1,是ZF2里的首个正式版本。最新版本除了对原有组件功能进行大幅提升外,还新添两个新成员:

  • ZendService_Apple_Apns:专为iOS系统提供通知功能。
  • ZendService_Google_Gcm:为Android提供通知功能。

阅读更多

开源社区九大最不想承认的事实

你可能认为,一群聪明人不会有什么忌讳藏着掖着,比如像自由和开源软件(FOSS)社区的成员。你还可能觉得,这样一群知识分子不会觉得什么想法是禁止讨论的或让人不舒服的;但要是你果真这么想,那就大错特错了。

与任何亚文化一样,FOSS也是由共同的信念维系在一起。共同的信念有助于形成一种共同的归属感,这意味着对这些信念提出质疑,无异于对这个归属感提出质疑。

其中一些忌讳话题可能会颠覆20年或更长时间以来秉承的公理。另一些忌讳话题则是新的,质疑公认的真理。不过,尽管细细打量忌讳可能让人不舒服,但 这么做往往是必要的。许多信念已不再适用,或者已经沦为半真半假的话之后,还流行很长一段时间。有时考虑一下无法想象的事情大有意义,只有这样才能让信念 重新接受现实的考验。

基于这个道理,我列出了个人针对当下开源社区的九点看法;至于这些看法正确与否,有待各位评论。

阅读更多

PHP 5.4 内置Web服务器使用说明

PHP

PHP是一种脚本语言,它需要PHP解释器来分析运行PHP文件。当把PHP做为CGI服务Web请求时,它需要被嵌入到某种Web服务器里,最常见的是集成到Apache或IIS里,这就是说,在使用PHP前,你需要安装Apache或IIS,并且正确的配置它们和PHP集成的参数。虽然这种配置已经很规范,文档非常丰富,但我们还是经常在安装Apache和PHP集成时遇到问题,而且,有时候我们只想测试一个简单的PHP特征,不想就为此安装、启动Apache服务。

但据官方文档上说,这个内置的Web服务器只是提供开发测试使用,不推荐使用中生产环境中。因为这个服务器接受处理请求时顺序执行的,不能并发处理。

阅读更多

PHP重置JPG图片尺寸的函数

代码如下:

<?php
/**
 * 重置Jpg图片尺寸
 * 
 * @param string $path
 * @param string $filename 源文件名
 * @param int $maxwidth
 * @param int $maxheight
 * @param string $newname 新文件名
 */
function reSizeJpg($path, $filename, $maxwidth, $maxheight, $newname)
{
    $jpg = imagecreatefromjpeg($path.'/'.$filename);
    if ($jpg) {
        $width = imagesx($jpg);
        $height = imagesy($jpg);
    } else {
        return false;
    }
    
    if (($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)) {
        if ($maxwidth && $width > $maxwidth) {
            $widthratio = $maxwidth / $width;
            $resize_width = true;
        }
        if ($maxheight && $height > $maxheight) {
            $heightratio = $maxheight / $height;
            $resize_height = true;
        }
        if ($resize_width && $resize_height) {
            if ($widthratio < $heightratio) {
                $ratio = $widthratio;
            } else {
                $ratio = $heightratio;
            }
        } elseif ($resize_width) {
            $ratio = $widthratio;
        } elseif ($resize_height) {
            $ratio = $heightratio;
        }
        $newwidth = $width * $ratio;
        $newheight = $height * $ratio;
        if (function_exists("imagecopyresampled")) {
            $newim = imagecreatetruecolor($newwidth, $newheight);
            imagecopyresampled($newim, $jpg, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        } else {
            $newim = imagecreate($newwidth, $newheight);
            imagecopyresized($newim, $jpg, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
        }
        imagejpeg($newim, $path.'/'.$newname);
        imagedestroy($newim);
    } else {
        imagejpeg($jpg, $path.'/'.$newname);
    }
    imagedestroy($jpg);
    return true;
}
?>

分享PHP为图片添加水印的函数

代码如下:

<?php
/**
 * 追加水印
 * 
 * @param string $source_img 原始图片url
 * @param string $water_map 水印图片url
 */
function addWaterMap($source_img, $water_map)
{
    $img = imagecreatefromjpeg($source_img); //读取原图
    $img_x = imagesx($img); //原图宽
    $img_y = imagesy($img); //原图高
    imagealphablending($img, true);//设置为混合填色模式
    //$img_water_map = imagecreatefromjpeg($water_map); //读取水印图片
    $img_water_map = imagecreatefrompng($water_map);
    $water_x = imagesx($img_water_map); //水印宽
    $water_y = imagesy($img_water_map); //水印高
    $wimg_x = $img_x - $water_x - 10; //水印x坐标
    $wimg_y = $img_y - $water_y - 10; //水印y坐标
    imagecopy($img, $img_water_map, $wimg_x, $wimg_y, 0, 0, $water_x, $water_y); //分别为原图,水印,水印x坐标,水印y坐标,水印图片横轴开始点,水印图片纵轴开始点,水印横轴结束,水印纵轴结束
    imagejpeg($img, $source_img, 95); //输出到目标文件
    imagedestroy($img); //销毁内存数据流
    imagedestroy($img_water_map); //销毁内存数据流
    return true;
}
?>

通过索引优化MySQL语句的实现方法(转载)

使用索引,可以优化含有ORDER BY的MySQL语句,下文就将为您详细介绍这种优化MySQL语句的方法,希望对您学习MySQL语句优化方面有所帮助。

关于建立索引的几个准则:

1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。

2、索引越多,更新数据的速度越慢。

3、尽量在采用MyIsam作为引擎的时候使用索引(因为MySQL以BTree存储索引),而不是InnoDB。但MyISAM不支持Transcation。

4、当你的程序和数据库结构/SQL语句已经优化到无法优化的程度,而程序瓶颈并不能顺利解决,那就是应该考虑使用诸如memcached这样的分布式缓存系统的时候了。

5、习惯和强迫自己用EXPLAIN来分析你SQL语句的性能。

阅读更多

简朝阳:MySQL性能调优最佳实践经验(转载)

简朝阳认为,对于排序的优化,最有效的办法就是借助索引的帮助,让索引的有序特性自动带给你有序的数据,这在 MySQL 中是非常常见的优化方式,屡试不爽。当然,对于其他数据库如 Oracle 等也同样奏效。

以前数据库的性能瓶颈大多时候都出现在 IO 层面,现在经常也遇到 CPU 成为瓶颈的时候,而且并不是在使用高性能IO设备如SSD之类的场景下。对于 CPU 成为瓶颈的数据库优化,目前遇到的场景大多是排序和重复读取过多造成。

阅读更多