冷月葬花魂 发表于 2015-1-16 11:55:27

给大家带来用DNSPod和Squid打造本人的CDN (五) 安装Squid的后期筹办

要多动手,不要怕什么搞坏了怎么办,你不搞坏,不去动手,就永远不会有收获,既然你在linux中是自由的,那就发挥自己的权利;
第5章安装Squid的后期筹办

从本章入手下手,人人将会学到怎样在Linux上面安装、编译程序,还会学到程序编译的优化办法,最初会经由过程源代码编译的体例把Squid安装上。

1.Linux上面程序安装的基础常识

A.程序安装包的分类
平常人人在Windows上面安装程序,一样平常都是间接运转安装程序,然后安装程序会把编译好的二进制文件拷贝到体系内里,终极完成安装历程。
Linux上面,安装程序的自在度比Windows要年夜。由于Linux上面年夜部分器材都是开源的,以是程序的供应体例通常为二进制包大概源代码包。
二进制包,一样会有分歧的打包和办理体例(相似于zip、rar,但加倍先辈)。最多见的两种软件包为rpm(redhat、suse等体系接纳的包)和deb(debian、ubuntu)。呆板下面安装的软件包多了,天然必要一个软件来举行办理、更新。以是就有了yum(rpm)、apt(deb)如许的软件保证理、晋级软件。
源代码包,如许的包对照复杂,一样平常都是间接把源代码打包成一个紧缩文件,后缀通常为tar.gz大概tar.bz2
经由过程保证理软件安装软件对照复杂,设置好软件的安装源后,可使用上面的命令安装软件:
yuminstallphp(yum)
apt-getinstallphp5(apt)
假如不晓得必要安装的软件包切实名字,可使用上面的办法搜刮:
yumsearchphp(yum)
apt-cachesearchphp(apt)
本文章次要切磋源代码包的安装。
B.经由过程源代码包安装程序
一样平常情形下,程序从源代码到能一般利用,必要经由三个步骤:1.依据体系情况对源代码举行设置(configure);2.编译程序(make);3.安装程序(makeinstall)。
a.源代码设置
经由过程运转configure剧本,能够对所必要编译的程序的一些基础情况、所利用到的命令、库等文件举行主动查找,而且天生用于编译文件所必要的Makefile文件。由于Linux有太多的刊行版本了,每一个版本的情况都纷歧样,以是必要用到这个剧本。经由过程configure剧本还能够对程序的模块举行自界说,能够禁用大概激活某个功效。
b.编译程序
依据configure剧本天生的Makefile文件,对源代码举行编译、链接,天生二进制文件。但这个时分的二进制文件一样平常来讲还不克不及利用。
c.安装程序
经由过程makeinstall命令,把编译好的二进制文件安装到响应的路径,这个时分程序才真正可使用。
C.程序安装到那里?
一样平常编译安装的程序城市安装到/usr/local上面。好比php就会被安装到/usr/local/bin/php,php.ini会被安装到/usr/local/lib/php.ini,等等。假如必要指定安装目次,在configure的时分指定--prefix参数,会把一切文件都安装到prefix目次中。好比./configure--prefix=/usr/local/php。那末会把一切文件都安装到这个目次,最初看起来会是/usr/local/php/bin/php和/usr/local/php/lib/php.ini
D.怎样失掉configure的参数?
经常使用的configure参数有--prefix,能够经由过程./configure--help失掉更多的参数。一样平常带有--enable-、--with-开首的参数都是启用某个功效,--disable-、--without-开首的都是禁用某个功效。
E.怎样删除安装好的程序?
Linux删除程序跟Windows不太一样。Windows倡议利用卸载功效卸载程序,Linux下经由过程保证理软件安装的程序也能够间接用命令删除,比方:
yumremovephp(yum)
apt-getremovephp5(apt)
假如经由过程源代码包安装的程序,一样平常会带有makeuninstall,经由过程这个命令能够删除所安装的文件。假如不带有makeuninstall,那末能够间接把程序安装目次删除。
注重:假如是依附库(好比php假如要利用到mysql的功效,必需要先安装mysql,然后在设置php的时分指定mysql库的路径,那末php就是依附了mysql),删除被依附的程序,那末用到依附库的程序都将会没法利用(好比删除mysql后,php将没法一般利用mysql部分的功效)。
F.另有个makeclean是干甚么用的?
makeclean用来扫除疆场。把一切编译时留下的一时文件、编译后的二进制文件等都清算失落。一样平常倡议在makeinstall后makeclean,便利下次从头编译和节俭空间。
2.源代码编译时的优化
用Windows的伴侣都晓得,平常最头痛的事变就是程序占用CPU太高,并且损耗内存出格年夜。这是由于Windows的程序都是一些“通用”程序,并没有针对特定的平台和特定的CPU举行优化。在Linux下,经由过程源代码来编译二进制文件,这个成绩将失掉无效的改良。我们能够经由过程增加优化参数,让程序针对某个CPU型号和某个体系举行最年夜优化,削减文件巨细、CPU利用率、内存利用率。
可是,经由过程指定优化参数来编译的程序,将不再具有跨体系跨平台的才能。就算两台呆板体系版本一样,只需CPU纷歧样,程序都没法运转。程序只能在所编译的呆板上运转。
一样平常情形下,优化参数都是经由过程export命令设定CFLAGS和CXXFLAGS,然后configure的时分会主动读进,make的时分会主动利用所选的优化参数。
比方,一般Pentium4的CPU(显现的型号为Intel(R)Pentium(R)4CPUXXXXMHz,cpufamily:15,model:0/1/2)就能够输出上面的命令
exportCHOST="i686-pc-linux-gnu"
exportCFLAGS="-march=pentium4-O2-pipe-fomit-frame-pointer"
exportCXXFLAGS="${CFLAGS}"

CPU型号等信息能够经由过程输出上面的命令失掉
cat/proc/cpuinfo
将会输入相似上面的信息
processor:0
vendor_id:AuthenticAMD
cpufamily:15
model:47
modelname:AMDAthlon(tm)64Processor3200+
stepping:2
cpuMHz:2000.336
cachesize:512KB
fdiv_bug:no
hlt_bug:no
f00f_bug:no
coma_bug:no
fpu:yes
fpu_exception:yes
cpuidlevel:1
wp:yes
flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36clflushmmxfxsrssesse2syscallnxmmxextfxsr_optlm3dnowext3dnowuppnilahf_lmtsfidvidttptmstc
bogomips:4002.57
下面的信息显现了这是一颗AMDAthlon643200+的CPU。
CPU优化参数能够从上面地点取得(有些cpufamily和model没有,能够用不异型号的取代)
http://gentoo-wiki.com/Safe_Cflags

3.编译Squid的后期筹办
我们必要先懂得一个叫做“文件形貌符”的器材。我们晓得,人能同时干的事变是无限的。文件形貌符就是一个限定最年夜下限的器材。文件形貌符用来限定一个程序能同时翻开的文件数量,默许是1024。也就是说,假如不修正文件形貌符,那末一个程序只能同时翻开1024个文件。1024这个数字,一样平常程序已够用了,但Squid不可。Squid会同时翻开不计其数个文件,以包管最高的效力和呼应速率。
设想一下上面两种情形:a.用户每次会见squid,squid会依照必要翻开文件,然后读取文件内容再前往给用户。b.squid事后翻开会见频次高的文件,用户会见squid,squid间接把内容前往给用户。绝对来讲,前面的办法能够对用户的哀求举行加倍快的反响。
要变动文件形貌符的巨细,必需要修正两个文件。
/usr/include/bits/typesizes.h
/usr/include/linux/posix_types.h
用vi翻开下面的文件(假如健忘怎样利用,请参考后面章节),查找
#define__FD_SETSIZE1024
把1024改成65536,然后保留。
为何是65536,不是加倍年夜?由于这是Linux能承受的最年夜数值。
方才编纂的这两个文件是C/C++程序内里的头文件,编译squid的时分会被主动援用。除这两个文件之外,我们还必要对以后情况举行设置。
情况,也就是你用ssh登录到体系时的一些设定。每一个登录历程都能够举行独自的设置,在没有把设置写进情况设置文件(.profile,.bash_rc)的情形下,封闭登录历程后情况设置会丧失。
举个例子,你利用pietty开了两个窗口,利用统一个帐号暗码,同时登录到统一台服务器下面,然后在个中一个登录历程中利用export命令,那末只会在这个登录历程中失效,对别的一个登录历程不起感化。
分明后,我们说一下ulimit命令。ulimit用来设置以后情况的一些资本限定。方才所说的,这个命令是对情况举行设置,以是加入以后登录历程后命令将会生效。
我们输出上面的命令
ulimit-Hs65536
ulimit-n65536
H参数是硬性限定,s是仓库下限,n是文件形貌符下限。
最初,我们利用wget把squid的源代码下载返来。
wgethttp://www.squid-cache.org/Versi...2.6.STABLE13.tar.gz
wget是unix下一个撑持断点续传的下载工具。会有一些对照有用的功效,好比把他人全部网站都下载返来(像平常用的小偷吧?)。

常用的linux命令,尤其是一些能帮你提高开发效率的命令,(eg:grep,awk,sed,split等);

仓酷云 发表于 2015-1-16 19:53:24

给大家带来用DNSPod和Squid打造本人的CDN (五) 安装Squid的后期筹办

有疑问前,知识学习前,先用搜索。

admin 发表于 2015-1-18 22:52:08

老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。

爱飞 发表于 2015-1-27 21:53:41

我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。

变相怪杰 发表于 2015-2-5 15:38:21

可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?

小魔女 发表于 2015-2-12 19:54:26

再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?

愤怒的大鸟 发表于 2015-3-3 08:43:36

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

再现理想 发表于 2015-3-11 10:25:38

一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?

柔情似水 发表于 2015-3-18 11:50:20

工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。

谁可相欹 发表于 2015-3-26 01:52:27

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
页: [1]
查看完整版本: 给大家带来用DNSPod和Squid打造本人的CDN (五) 安装Squid的后期筹办