Http协议详解

2014/09/13 | 星期六 分类:建站优化 | 没有评论 标签: , | 作者: | 958 views

什么是HTTP协议?这真是一个大学问,相信有很大一拨人从事互联网开发多年,虽然知道是怎么回事,但一问起其原理,概念都会懵了,俺就是其中一个,故特地查看写资料,收集了此篇文章,作为知识储备:

HTTP协议(HyperText Transfer Protocol,超文本传输协议)从WWW服务器传输超文本到本地浏览器的传送协议。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP的定义和历史
在网络中,传输数据需要面临的几个问题:
1.客户端如何知道所求内容的位置?统一资源定位符(Uniform Resource Locator,缩写为URL)
2.当客户端知道所求内容位置后,将如何获取所求内容?超文本传输协议(HTTP)
3.所求内容以何种形式组织以便被客户端识别?超文本标记语言(HTML)

HTTP版本:HTTP0.9 HTTP1.0 HTTP1.1

HTTP协议的主要特点可概括如下:
1、支持客户/服务器模式。
2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
阅读全文

减少HTTP请求-前端优化一

2014/09/10 | 星期三 分类:建站优化 | 没有评论 标签: , | 作者: | 1,022 views

关于前端性能优化的问题,分几篇讲解,对于难理解将另写Blog,后续不断加链接更新

前端优化军规,罗列如下:
1.减少HTTP请求
2.正确理解重绘Repaint 和 重排Reflow
3.减少对DOM的操作
4.使用JSON格式来进行数据交换
5.高效使用HTML标签和CSS样式 
6.使用CDN加速(算是前端一种).
7.将CSS和JS放到外部文件中引用,CSS放头,JS放尾;
8.精简CSS和JS文件(文件压缩)
9.图片优化,压缩图片和使用图片Sprite技术
10.注意控制Cookie大小和污染
11.使得 Ajax 可缓存 (Make Ajax Cacheable)
12.延迟载入组件 (Post-load Components)
13.预载入组件 (Preload Components)
14.避免重定向 (Avoid Redirects)
15.杜绝 http 404 错误
16.最小化 iframe 的数量 (Minimize the Number of iframes)

标注:
11.响应时间对 Ajax 来说至关重要,否则用户体验绝对好不到哪里去。提高响应时间的有效手段就是 Cache 。其它的一些优化规则对这一条也是有效的。
12.13 这两条属于异步这个思想灵活运用。
14.不是绝对的避免,尽量减少。另外,应该注意一些不必要的重定向。比如对 Web 站点子目录的后面添加个 / (Slash) ,就能有效避免一次重定向。http://www.seedpaddy.com/blog 与 http://www.dbanotes.net/blog/ 二者之间是有差异的。如果是 Apache 服务器,通过配置 Alias 或mod_rewrite 或是 DirectorySlash 能够消除这个问题。
15.对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪能有效减少 404 错误,亦能提升用户体验。值得一提的是,CSS 与 Java Script 引起的 404 错误因为定位稍稍”难”一点而往往容易被忽略。
16.熟悉 SEO 的朋友知道 iframe 是 SEO 的大忌。针对前端优化来说 iframe 有其好处,也有其弊端,请一分为二看此问题。.

前端优化之一 减少HTTP请求:

在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出。
阅读全文

MySQL主从读写分离(复制)配置

2013/11/13 | 星期三 分类:数据库 | 没有评论 标签: | 作者: | 1,147 views

MySQL主从读写分离(复制)配置
主机A:192.168.1.101
从机B:192.168.1.102

1、先登录主机 A
mysql>GRANT REPLICATION SLAVE ON *.* TO slave_user@192.168.1.101 IDENTIFIED BY ‘admin888’;
#赋予从机权限,有多台丛机,就执行多次.
#slave_user@192.168.1.101 用户名@主机
#admin888 密码

2、 打开主机A的my.cnf,输入
server-id = 1 #主机标示,整数
log-bin = /var/log/mysql/mysql-bin.log #确保此文件可写
#read-only =0 #主机,读写都可以
binlog-do-db =test #需要备份数据,多个写多行
binlog-ignore-db =mysql #不需要备份的数据库,多个写多行

3、打开从机B的my.cnf,输入
server-id = 2
log-bin = /var/log/mysql/mysql-bin.log.
#(master-host =192.168.1.101(注意:MySQL5.1以后master-*形式废弃了,采用change master to)
# master-user =backup
# master-pass =123456
# master-port =3306)
#master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库

mysql> change master to master_host=’192.168.1.101′,master_user=’master_name’,master_password=’admin888′,master_port=3306,
master_log_file=’mysql-bin.000001′,master_log_pos=107;
#注意:(master_log_file和master_log_pos)的值你可以在服务器上运行 show master status; 来得到。

4、同步数据库
不用太费事,只把主从库都启动即可自动同步,如果不嫌麻烦的话可以把主库的内容导出成SQL,然后在从库中运行一遍

5、先重启主机A的mysql,再重启从机B的mysql

6、验证

#在主机A中,mysql>show master status\G;
#在从机B中,mysql>show slave status\G;
#能看到大致这些内容.
File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
#可以在主机A中,做一些INSERT, UPDATE, DELETE 操作,看看主机B中,是否已经被修改。

mysql> show slave status\G;

如下是工作环境下两台win7桌面云电脑成功运行主从配置:
# —主从复制 (主机设置) —
[mysqld]
log-bin = “D:/xampp/mysql/data/mysql-bin.log”
binlog-do-db = nextsite #需要备份数据,多个写多行
binlog-ignore-db = mysql #不需要备份的数据库,多个写多行.
mysql>GRANT REPLICATION SLAVE ON *.* TO slave_user@192.168.1.101 IDENTIFIED BY ‘admin888′;

# 从机配置
[mysqld]
# read-only = 1
log-bin = “/xampp/mysql/data/mysql-bin.log”
replicate-do-db = nextsite
replicate-ignore-db = mysql
mysql> change master to master_host=’192.168.1.101′,master_user=’master_name’,master_password=’admin888′,
master_port=3306,master_log_file=’mysql-bin.000001′,master_log_pos=107;
mysql> stop slave;
mysql> start slave;

Window与Fedora下Mongodb安装启动配置

2013/09/07 | 星期六 分类:数据库 | 没有评论 标签: | 作者: | 1,471 views

++++++++++++++++Window+++++++++++++++++
A.win安装好mongodb
1.命令行进入安装目录,比如:
D:\>cd MongoDB
2.启动mongo并配置数据库存放路径
D:\>MongoDB>mongod –dbpath D:\MongoDB\data
3.完成,若关闭命令窗口则关闭了mongodb数据库。

B.php安装mongo扩展
1.下载对应版本的php_mongo.dll (可以从php.net官方手册,mongo模块获取安装dll)
2.php.ini加入如下语句
extension=php_mongo.dll
3.重启apache(php) ok.

C.安装rockmongo 可以从rockmongo.com获取(一个类似phpmyadmin管理mysql,管理mongodb数据库客户端)

D.配置mongo
1.启动mongo,然后cmd进入安装目录
mongo
db.addUser(“root”,”123456″)
db.auth(“root”,”123456″)
db.system.users.find()
超级管理的账号已添加成功,其他数据库也是同样的操作的。

++++++++++++++++Fedora+++++++++++++++++
#Fedora 本地环境下安装mongoDB 简单,并配置客户端连接mongo
#安装命令
yum install mongo*

# start mongod (mongodb daemon)
systemctl start mongod.service

#verify mongod is running
systemctl status mongod.service
tail /var/log/mongodb/mongodb.log

#命令行进入mongo running client
mongo

#插入一条记录,并查询 MongoDB shell version:2.0.2 connecting to:test
>db.test.save({a:1})
> db.test.find()
{ “_id” : ObjectId(“51a797fbadbd8c109311dcc2”), “a” : 1 }

#配置启动文件 customize configuration
vim /etc/mongodb.conf
systemctl restart mongod.service

#开机启动 make mongodb service automatically start at boot
systemctl enable mongod.service

#管理mongoDB 使用 RockMongo
#RockMongo是一个PHP5写的MongoDB管理工具

Redis使用总结之与Memcached异同

2013/09/07 | 星期六 分类:Redis | 数据库 | 没有评论 标签: | 作者: | 2,183 views

这是一篇转帖文,写得很好很详细,让人快速了解了redis.

Redis是什么?两句话可以做下概括:
1. 是一个完全开源免费的key-value内存数据库
2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets

Redis不是什么?同样从两个方面来做下对比:
1. 不是sql server、mySQL等关系型数据库,主要原因是:
. redis目前还只能作为小数据量存储(全部数据能够加载在内存中) ,海量数据存储方面并不是redis所擅长的领域
. 设计、实现方法很不一样.关系型数据库通过表来存储数据,通过SQL来查询数据。而Redis通上述五种数据结构来存储数据,通过命令 来查询数据
2. 不是Memcached等缓存系统,主要原因有以下几个:
.网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能
.内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache
.数据的一致性方面:Memcached提供了cas命令来保证.而Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断
. 存储方式方面:Memcached只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能

一句话小结一下:Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

Redis有什么用?只有了解了它有哪些特性,我们在用的时候才能扬长避短,为我们所用:
1. 速度快:使用标准C写,所有数据都在内存中完成,读写速度分别达到10万/20万
2. 持久化:对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上,主要有两种策略,一是根据时间,更新次数的快照(save 300 10 )二是基于语句追加方式(Append-only file,aof)
3. 自动操作:对不同数据类型的操作都是自动的,很安全
4. 快速的主–从复制,官方提供了一个数据,Slave在21秒即完成了对Amazon网站10G key set的复制。
5. Sharding技术: 很容易将数据分布到多个Redis实例中,数据库的扩展是个永恒的话题,在关系型数据库中,主要是以添加硬件、以分区为主要技术形式的纵向扩展解决了很多的应用场景,但随着web2.0、移动互联网、云计算等应用的兴起,这种扩展模式已经不太适合了,所以近年来,像采用主从配置、数据库复制形式的,Sharding这种技术把负载分布到多个特理节点上去的横向扩展方式用处越来越多。

这里对Redis数据库做下小结:
1. 提高了DB的可扩展性,只需要将新加的数据放到新加的服务器上就可以了
2. 提高了DB的可用性,只影响到需要访问的shard服务器上的数据的用户
3. 提高了DB的可维护性,对系统的升级和配置可以按shard一个个来搞,对服务产生的影响较小
4. 小的数据库存的查询压力小,查询更快,性能更好

写到这里,可能就会有人急不可待地想用它了,那怎么用呢?可以直接到官方文档,里面帮我们整理好了各个语言环境下的客户端,主要有Ruby、Python、 PHP、Perl、Lua、Java、C#….有几种语言,我也没见过,所以就不多说了,你懂的….

最后,把我使用过程中的一些 经验与教训,做个小结:
1. 要进行Master-slave配置,出现服务故障时可以支持切换。
2. 在master侧禁用数据持久化,只需在slave上配置数据持久化。
3. 物理内存+虚拟内存不足,这个时候dump一直死着,时间久了机器挂掉。这个情况就是灾难!
4. 当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片大
5. 当达到最大内存时,会清空带有过期时间的key,即使key未到过期时间.
6. redis与DB同步写的问题,先写DB,后写redis,因为写内存基本上没有问题
阅读全文

Cenos 6.4 常用安装配置命令技巧大全

2013/09/06 | 星期五 分类:命令文档 | 一条评论 标签: | 作者: | 4,101 views

Centos 6.4 统安装配置
说明:”# ” 单个”#”后面带一个空格 说明此行是一条命令
“##”,”//”都是注释,若前面没连续行代表,编辑文档里面的内容或者PHP代码。

##安装ssh vim 方便远程控制机器,安装软件
# yum install vim
# yum install openssh
# vim /etc/sysconfig/iptables
##允许80 && 3306端口通过防火墙.
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
##添加到22端口后面,保存退出
# service iptables restart

##关闭SELINUX
# vim /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
##注释如上两行,在文件后面添加如下一行
SELINUX=disabled
##保存系统,重启机器
# shutdown -h now

1.安装Apache
# yum install httpd
# service httpd start

##备注:Apache启动之后会提示错误:
Starting httpd: httpd: apr_sockaddr_info_get() failed for paddy
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

# vim /etc/httpd/conf/httpd.conf .
##找到 #ServerName www.example.com:80
##修改为 ServerName localhost:80
:wq! //保存退出
# chkconfig httpd on //设为开机启动

##配置apache 文件,根据需要修改
# vim /etc/httpd/conf/httpd.conf 编辑文件
ServerTokens OS 
//在44行 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On 
//在536行修改为:ServerSignature Off (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks 
//在331行 修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi 
//在796行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AllowOverride None 
//在338行修改为:AllowOverride All (允许.htaccess)
AddDefaultCharset UTF-8 
//在759行 修改为:AddDefaultCharset GB2312 (添加GB2312为默认编码) 不建议修改。
Options Indexes MultiViews FollowSymLinks
//在554行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var
//在402行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)
KeepAlive Off
//在76行 修改为:KeepAlive On (允许程序性联机)
MaxKeepAliveRequests 100
//在83行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数)
:wq! #保存退出,并重启apache

2.安装mysql
# yum install mysql mysql-server
# chkconfig mysqld on
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
##拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
##设置新密码
# mysqladmin -u root -p password “123”
# /usr/bin/mysql_secure_installation
##根据提示设置新密码
# mysql -u root -p
##输入刚刚设置的秘密,登录mysql

3.安装PHP5 & PHP扩展,其他扩展需要再安装
# yum install php
# yum install php-mysql php-gd php-mbstring php-mcrypt php-bcmath libmcrypt
阅读全文

Ubuntu常用安装配置命令技巧大全

2013/09/06 | 星期五 分类:命令文档 | 没有评论 标签: | 作者: | 1,367 views

Ubuntu 进入命令行模式:Ctrl+Alt+T

Ubuntu 12.04默认是不允许root登录的,
1.以普通身份登陆Ubuntu后输入: sudo -s.
2.然后输入普通用户登陆的密码,回车即可进入root用户权限模式。
3.然后执行: vi /etc/lightdm/lightdm.conf.
4.增加如下两行
#greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
#allow-guest=false #不允许guest登录
5.然后我们启动root帐号:
#sudo passwd root
#根据提示输入roott帐号密码。
OK:重启ubuntu,登录窗口会有“登录”选项,这时候我们就可以通过root登录了。

++++++++++++++++环境:ubuntu12.04LTS 安装SVN++++++++++++++++
1.安装 apt-get install subversion
2.查看安装命令 svnserve –version(更多命令直接键入svnserve –help可查看到)
3.查看svnserver是否已启动 netstat -ntlp,可看到svn对应的端口3690 .
(如果没有看见,则证明服务未启动,可使用svnserve -d启动svn服务,还可以通过 svnserve -d -r /var/svn/trunk来指定启动目录)
4.创建项目 svnadmin create trunk (trunk为项目名称,且目录存在,路径/var/svn/trunk )
5.配置文件,/var/svn/trunk/下,可针对conf文件夹中的authz、passwd、svnserve.conf进行设置,svnserve.conf主要设置整体的安全策略,passwd则设置用户名和密码,authz则是设置具体的用户有什么权限。
6.常用svn命令:
#checkout(co)命令:
#svn co url –username user –password password
#根据提示可以输入yes来保存帐号和密码;

#update(up)命令:
#进入到需要更新的目录,输入:svn up;

#commit(ci)命令:
#进入需要提交的目录,输入:svn ci -m “修改信息”

#add命令:
#进入需要提交的目录,输入:svn add filename or path
#添加完之后需要用commit命令提交。

#另外,在vi中也可以不退出编辑的文件来提交文件,
#使用shell命令::! svn ci -m “commit information..”
更多详细安装步骤见:ubuntu下svn服务器安装

##添加svn管理用户及subversion组
# adduser svnuser
# addgroup subversion
# addgroup svnuser subversion

##创建项目目录(结合4点看,#创建SVN文件仓库)
# mkdir /var/svn
# cd /var/svn
# mkdir trunk
# svnadmin create /var/svn/trunk

##访问方式及项目导入:
# svn co file:///var/svn/trunk
# svn co svn://127.0.0.1/trunk
#如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
#下面的命令用于将项目导入到SVN 文件仓库:.
# svn import -m “New import” /var/www/paddy file:///var/svn/trunk
#注意:要注明导入信息,其中(/var/www/paddy 初始化导入目录)
阅读全文

Drupal目录结构说明与开发技巧

2013/09/06 | 星期五 分类:资源 | 没有评论 标签: | 作者: | 1,504 views

1.Drupal系统文件夹中每一项的细节如下:

include目录包含Drupal使用的库和公共函数;

misc目录存储Drupal安装时使用的javascript和杂项的图标、图片。

modules目录包含核心模块,里面的每个模块都有一个自己的目录。别往里加任何东西,或任何其他目录,除了profiles和sites,你应该将扩展模块加到sites目录。

profiles目录中包含了不同的站点安装profile。

scripts目录包含检查语法、清理代码、命令行运行Drupal、处理cron特别情况、运行测试包(D7)等所需要的脚本。这个目录不在drupal请求生命周期内使用,它们是shell及perl实用脚本。
1-5

sites目录(图1-5)包含了你在设置表单中对设置、主题、模块的修改。当你从贡献模块仓库或写一个模块时,你应当将它们加入到-sites/all/modules中,这是保存所有你的Drupal变更的单独目录。在sites目录中有一个名叫default的子目录,保存一个你的Drupal站点默认的配置文件default.settings.php,Drupal安装器将在你提供的信息基础上修改这些初始设置并且为你的站点生成一个settings.php文件,默认的目录是典型地拷贝并重命名为你的站点的URL,你最终的设置文件将是sites/www.example.com/settings.php。
sites/default/files目录包含Drupal默认基本安装信息,它需要用来存储那些上传到你的站点以备后用的任何文件。一些例子是用来存放用户logo,激活用户头像或其他上传的媒体文件。这些子目录需要drupal运行的服务器的可读可写的权限,如果有权限,Drupal安装器将创建子目录。此外sites/default/files,一个sites/default/private目录可能建立用来存储比较敏感的和不应展示的文件,除非有适当的证明。你可以通过浏览Configuration>FileSystem并进入你想保存私有文件的方式来创建私有文件目录,文件路径就是标题是Private的文本域的文件系统路径。

themes目录包含模板引擎和Drupal默认的主题,你下载的和创立的附加主题不应该放在这里,将它们放到sites/all/themes中。

cron.php用来执行周期性的任务,例如修剪数据库表和计算统计等。
index.php是服务请求的主入口点。
install.php是Drupal安装器的主入口点。
update.php在Drupal版本更新后更新数据库关系模式。
xmlrpc.php接收XML-RPC请求,不打使用XML-RPC时可以从部署中删除。
robots.txt默认的机器人排除规则。
authorize.php运行授权文件操作的管理脚本,例如从drupal.org下载并安装一个新的主题或模块。

2.服务一个请求
对于Drupal接收到一个请求时发生了什么有个概念上的框架非常有帮助。如果你要自己跟踪,那么使用一个好的debugger,在index.php处开始,它接收大多数它的请求。这个序列对于显示简单网页来说比较复杂,但它具有普遍的灵活性。

3.web服务器规则
Drupal运行于web服务器之上,通常是Apache。如果web服务器遵循Drupal的。.htaccess文件,有些PHP这是初始设置的,并且URL是被检查的。差不多所有对Drupal的调用都是通过index.php,例如一个到http://example.com/foo/bar的调用经历下列流程:
a.Drupal的.htaccess文件的mod_rewrite规则查看送入的URL并从路径中分离出基本URL,本例中,路径是foo/bar。
b.路径被指派为URL请求操作符q的参数、
c.结果URL是http://example.com/index.php?q=foo/bar。
d.Drupal像内部路径一样处理foo/bar并且交由index.php开始处理。
如同这个处理结果,Drupal精确地一同样方式处理http://example.com/index.php?q=foo/bar和http://example.com/foo/bar,因为这两种情况内部路径相同,这可以使Drupal不使用怪异的URL字符,而使用Clean URL。

在作为替代的其它web服务器,如微软的IIS,clean URL可以使用ISAPI模块像ISAPI重写那样取得。IIS 7 和后面版本支持直接重写。如果你的站点运行于IIS7或更高版本,你应当校验用于激活clean URL的web.config文件,并且使它不能被窥探到,像.install, .module, .test, .theme, .profile, .info和.inc 文件一样。
阅读全文

subversion权限控制

2013/09/03 | 星期二 分类:资源 | 没有评论 标签: | 作者: | 1,231 views

假设svn仓库目录是/var/local/svn/trunk
##启动subversion
# svnserve -d -r /var/local/svn/trunk
# vim /var/local/svn/trunk/conf/svnserve.conf
##找到:
anon-access = none
auth-access = write
##将上两行前面的注释去掉,并将read 改为:none.
##即anon-access = none 表示匿名登陆下的用户权限为空。即:系统不支持匿名登陆
##若anon-access = read 则匿名登陆下只读文件,即:文件修改后无法提交到服务器
##通过验证的用户可以读和写
##用户保存文件,密码保存文件,找到如下两行,并去掉注释
password-db = password
authz-db = authz
##权限管理文件这个是非常重要的,如果我们要对整个工程的文件进行权限分配的时候,就必须将这个行文件前面注释掉,否咋即使我们在权限配置文件里面进行再多的配置都是无效的
:wq 保存退出

##设置subversion用户权限,权限只有”rw=读写”,”r=读”
# vim /var/local/svn/trunk/conf/authz
[/]
jacking = rw
paddy = rw
##表明用户”jacking paddy”拥有全部权限
[/zip]
zip = rw
##表明用户”zip”对于”/zip”目录,他有rw的权限。
##在权限分配的时候要注意的问题:.
>>>对某个用户,如果只赋给他某个目录的权限,但对上级目录没有赋给,则他不能有上级目录的任何权限比如”zip”用户
>>>对于所有的目录,都优先处理设置在这个目录上的权限设置。
##例如sai用户:
[/repository]
sai = rw
[/repository/project1]
sai = r
##对于repository下的project1目录,他只有r权限。则,这个sai用户只有project1的r权。而repository下其他目录有rw权。
>>>权限分配,只可以分配到某个目录,而不能到某个文件
>>>如果某个目录上没有对某个用户设置权限,则一直向上级目录查找,看是否有权限
##例如sai用户
[/repository]
sai=rw
[/repository/project1]
saiya=rw
##则sai用户一样拥有/repository/project1的读写权限
>>>分配权限时,= 的左边为用户,不能想当然的以,号分开加入多个用户
>>>如果想设置某用户都没有rw的权限,只要 = 号的右边这空即可
>>>如果某一个文件夹,对于人任何用户都没有权限
* =
##其中*代表所有的人

##关于用户组的问题,设置权限类似用户
# vim /var/local/svn/trunk/authz
[groups]
admin = admin,sally
user = seed,joe,hurry
##groups是指用户组,上面的配置说明存在两个组:admin和user,其中admin组中有两个用户admin & sally,而user中有三个用户seed & joe & hurry
##设置组的权限,类似用户
[/]
@admin = rw
@user = r
##与普通用户不同的是,前面加上”@”符号
:wq 保存退出

##设置subversion用户密码
# vim /var/local/svn/trunk/conf/
##对用户设置密码,比如上面所列到的5个用户的密码都设置为”123456“.
[users]
jacking = 123
paddy = 123456
zip = 123456
sai = 123456
saiya = 123456
:wq 保存退出

Fedora 19 常用安装配置命令技巧大全

2013/09/02 | 星期一 分类:命令文档 | 没有评论 标签: | 作者: | 2,188 views

Fedora 19 系统安装配置,仅供学习,注意“#” 与双“##” :
“##”代表注释
“#” 代表命令,后面跟空格“ ”

1.安装ssh vim 方便远程控制机器,安装软件
# yum install vim
# yum install openssh
# vim /etc/ssh/sshd_config
##重启ssh
# systemctl restart sshd.service || /etc/rc.d/init.d/sshd restart
##开机自动启动ssh
# systemctl enable sshd.service
##这个配置,跟18或者之前的不太一样
# vim /etc/sysconfig/iptables-config
##启动iptables
# systemctl start iptables || chkconfig iptables on
##关闭iptables
# systemctl stop iptables || chkcongif iptables off

2.安装lnmp 直接运行如下命令。
# yum install php
# yum install mysql mysql-server mysql-devel
# yum install php-fpm nginx
# yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
# systemctl start mysqld.service
# mysqladmin -u root password
# systemctl restart nginx.service
# systemctl restart php-fpm.service
# systemctl enable php-fpm.service
# systemctl enable mysqld.service
##关闭apache
# systemctl disable httpd.service.

# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
# vim /etc/nginx/nginx.conf
index index.php index.html index.htm;
##上句中加入 index.php
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
##将以上代码注释去掉,并修改成nginx默认路径/usr/share/nginx/html
##其它设置修改:/etc/nginx/conf.d
##虚拟机配置,模板:/etc/nginx/conf.d/virtual.conf.
每增加一个虚拟主机,只要在virtrual.conf中增加一个片段就行了:
server {
listen 80;
server_name fd.com;
root /usr/share/nginx/html/fd;
index index.php index.html;
include /usr/share/nginx/html/fd/.htaccess;

#支持动态php处理。
location ~ .*\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

#支持静态文件处理
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires 30d;
}
}
##开启防火墙
# systemctl start iptables.service

##安装phpMyAdmin
# yum install phpMyAdmin
# ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpMyAdmin

3.安装memcache
# yum install wget
# wget http://pecl.php.net/get/memcache-3.0.8.tgz
# yum install php-devel //phpize
# yum install gcc //make
# yum install gcc-c++ //使存在makefile的条件下,make可以执行
# chmod 777 ./configure //解决./configure权限问题.
# chmod 777 install-sh //解决make install权限问题
# yum install zlib-devel openssl-devel //解决make 报错问题 debian:apt-get install zlib1g-dev
# phpize
# ./configure
# make
# make install

#上述安装完后会有类似这样的提示:
#Installing shared extensions: /usr/lib64/php/modules/
#把php.ini中的extension_dir = “./”修改为
#extension_dir = “/usr/lib64/php/modules/”
#在php.ini 并加入扩展extension=memcache.so

# vim /etc/php.ini
# vim /etc/rc.d/init.d/memcached

#memcached 参数说明 && 启动脚本
# memcached -d -m 50 -p 11211 -u root
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务.
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助2)安装Memcache客户端

#测试代码如下:
$mem = new Memcache;
$mem->connect(“127.0.0.1”, 11211);
$mem->set(‘key’, ‘This is a memcached test!’, 0, 60);
$val = $mem->get(‘key’);
echo $val;
阅读全文

第 3 页,共 7 页1234567