Jun 16
占位
参考资料:
http://wiki.ubuntu.org.cn/Nginx
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
Jun 16
目标:只通过扩展服务器/应用,就能提高处理能力
负载均衡,四层交换机/LVS将请求按规则分发到多台应用服务器,负载可均摊,多机可写作,可以提升整体处理能力
mysql通过复制技术,实现多台数据库的数据同步,通过mysql proxy,可实现mysql读写分离,可解决读多写少,写锁表造成的性能问题,并且可以实现mysql的负载均衡,不修改应用的情况下 ,提升mysql整体处理能力
Memcached集群,通过客户端hash策略,可将memcached缓存数据均分到N台memcached集群上,提升整体处理能力
图片服务器分离,附件上传、下载,图片处理,数据搜索,计划任务,备份等耗时操作分离出去,降低应用压力,提升常用操作的响应时间
Jun 16
知识点:
apache:采用gzip压缩输出静态文件,设置静态文件过期时间,浏览器缓存减少服务器请求
Squid:将请求输出缓存到内存/磁盘中,减少应用处理过程,降低数据库压力
高速缓存:Memcached 分布式缓存
PHP:accelerater,开启opcode缓存,绕过编译解析
MYSQL:Sphinx,全文索引
Jun 8
1.虚拟主机设置
1.1创建目录
>> mkdir -p /usr/local/www/mysite/svn
1.2创建虚拟主机配置文件
>> cd /etc/apache2/sites-available
>> pico -w mysite
输入:

<VirtualHost 192.168.1.106:*>
DOcument /usr/local/www/mysite/svn
ServerName mysite
</VirtualHost>

1.3 添加配置
>>a2ensite mysite
1.4 重要的一步  设置文件访问权限 避免403错误
>>vi default
加入下面几行

<Directory /usr/local/www>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all  
</Directory>  

1.5.在hosts文件里加入
192.168.1.106 mysite

再添加一个虚拟主机:
1.6  vi /etc/apache2/sites-available/tp
输入:

<VirtualHost 127.0.0.1:*>
DOcument /var/www
ServerName tp
</VirtualHost>


1.7 在hosts文件里加入
127.0.0.1 tp

1.9 重启apache2
>>/etc/init.d/apache2 restart

注:如果还出现403错误,将文档访问权限设置为755。

2. SVN设置
2.1 安装svn
apt-get install subversion subversion-tools --fix-missing
apt-get install libapache2-svn

2.2创建一个svn 服务器 版本库
svnadmin create /usr/local/svn/mysvn

2.3从服务器版本库 迁出一个工作副本
cd /root
svn checkout file:///usr/local/svn/mysvn

2.4 向版本库提交原始版本
svn import /root/www file:///usr/local/svn/mysvn

这时候,SVN服务器的版本库已经更新来版本,去工作目录update看看
cd /root/mysvn
svn update
可以看到  2.4中提交的www可以更新下来了。
以后在/root/mysvn 中便可以修改文件并commit了

2.5 设置apache对svn的访问功能
vi /etc/apache2/apache2.conf
往最后面插入:

  DAV svn
  SVNPath /usr/local/svn/mysvn


2.6 重启apache2
/etc/init.d/apache2 restart

ok
输入:mysite/svn/mysvn 看到的是神码?



Jun 8

<div id='mydoc'>
111
</div>
<script>
  function EditInPlaceField(id,parent,value){
    this.id=id;
    this.value=value||'default';
    this.parentElement=parent;
    
    this.createElements(this.id);
    this.attachEvents();
  };
  EditInPlaceField.prototype={
    createElements:function(id){
      this.containerElement = document.createElement('div');
      this.parentElement.appendChild(this.containerElement);
      
      this.staticElement = document.createElement('span');
      this.containerElement.appendChild(this.staticElement);
      this.staticElement.innerHTML = this.value;
      
      this.fieldElement = document.createElement('input');
      this.fieldElement.type = 'text';
      this.fieldElement.value = this.value;
      this.containerElement.appendChild(this.fieldElement);
      
      this.saveButton = document.createElement('input');
      this.saveButton.type = 'button';
      this.saveButton.value = 'save';
      this.containerElement.appendChild(this.saveButton);
      
      this.cancelButton = document.createElement('input');
      this.cancelButton.type = 'button';
      this.cancelButton.value = 'cancel';
      this.containerElement.appendChild(this.cancelButton);
      
      this.convertToText();
    },
    attachEvents:function(){
      var that=this;
      addEvent(this.staticElement,'click',function(){ that.convertToEditable();});
      addEvent(this.saveButton,'click',function(){ that.save();});
      addEvent(this.cancelButton,'click',function(){ that.cancel();});
    },
    convertToEditable:function(){
      this.staticElement.style.display='none';
      this.fieldElement.style.display='inline';
      this.saveButton.style.display='inline';
      this.cancelButton.style.display='inline';
      this.setValue(this.value);
    },
    save:function(){
      this.value=this.getValue();
      var that=this;
      var callback = {
        success:function(){that.convertToText();},
        failure:function(){alert('SAVE ERROR!');}
      };
      //下面一般是ajax访问服务器脚本,保存数据
      //如 ajaxRequest('get','save.php?id='+this.id+'&value='+this.value);
      alert('do save');
    },
    cancel:function(){
      this.convertToText();
    },
    convertToText:function(){
      this.staticElement.style.display='inline';
      this.fieldElement.style.display='none';
      this.saveButton.style.display='none';
      this.cancelButton.style.display='none';
      this.setValue(this.value);
    },
    setValue:function(value){
      this.fieldElement.value=value;
      this.staticElement.innerHTML=value;
    },
    getValue:function(){
      return this.fieldElement.value=this.value;
    }
  };
  //添加事件@F
  function addEvent( obj, type, fn ) {    
    if ( obj.attachEvent ) {      
      obj['e'+type+fn] = fn;      
      obj[type+fn] = function(){
        obj['e'+type+fn]( window.event );
      }      
      obj.attachEvent( 'on'+type, obj[type+fn] );    
    } else {
      obj.addEventListener( type, fn, false );
    }
  }  
  //删除事件@F
  function removeEvent( obj, type, fn ) {    
    if ( obj.detachEvent ) {    
      obj.detachEvent( 'on'+type, obj[type+fn] );    
       obj[type+fn] = null;    
    } else {      
      obj.removeEventListener( type, fn, false );
    }
  }
  //根据ID获取对象@F
  var $=function(doc){
    return document.getElementById(doc);
  }
  var titleClass=new EditInPlaceField('titleClass',$('mydoc'),'Title here');
  var currentTitleText = titleClass.getValue();
  
</script>


分页: 9/61 第一页 上页 4 5 6 7 8 9 10 11 12 13 下页 最后页 [ 显示模式: 摘要 | 列表 ]