您的位置:

内核安装以及php(内核tiaojiao)

本文目录一览:

PHP如何安装及配置?

将下载的压缩包解压到纯英文目录下;

2.因为PHP是被动型的服务,目的就是为apache提供了处理php代码的服务。因此我们要做的配置就是告诉apache,PHP在哪?需要它处理什么样的文件。

所以,打开apache的配置文件,httpd.conf。

搜索LoadModule,找到之后按照相同的格式加载php模块,输入:

接着搜索mime_module,找到后按照相同格式在该标签内,输入:

放的位置是没什么要求,最好是能跟好队形,好修改。

上面添加的配置,分别是告诉php的位置,然后告诉服务器.php的文件会被当作“application/x-httpd-php”格式处理,而服务器里处理application/x-httpd-php格式的就是php。这样配置之后,一旦是.php的文件服务器都会调用我们的php来处理。

到这里php代码就可以正常使用了。

3.php的配置以及添加扩展

php本身的配置是要自己创建的。

首先,在解压的php目录下找到php.ini-development文件,这是php提供的配置模版,复制并修改文件名为php.ini。

由于php是被动服务,它的配置文件也一样是apache来调用,所以还是要到apache的配置文件httpd.conf里添加:

接着,如果要添加扩展,可以在php的配置文件php.ini里搜索extension_dir,找到下图:

php配置文件的注释是靠“;”,这项配置是说明扩展文件的所在目录。

按格式加上:extension_dir = "你的扩展文件目录"

你的扩展文件目录就是php解压目录下的ext文件夹,即:"解压目录/ext"。

接着需要告诉php加载哪些扩展:

在php.ini里添加:extension=你要添加的扩展名字

php是什么意思

php通常指超文本预处理器,用于面向对象、命令式编程,是一种通用开源脚本语言。

主要特点:

为开源性和免费性、快捷性、数据库连接的广泛性、面向过程和面向对象并用。优点是利于学习,使用广泛。此外,php还可以指菲律宾比索的标准货币代码符号,MPLS网络中的倒数第二跳弹出功能。是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种HTML 内嵌式的语言,是一种在服务器端执行嵌入HTML文档的脚本语言,语言风格有些类似于C语言,被广泛的运用。  

简介:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

特性包括:

1、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法

2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现

3、 PHP支持几乎所有流行的数据库以及操作系统。

4、最重要的是PHP可以用C、C++进行程序的扩展!

语言特点:

开源免费

PHP是一个受众大并且拥有众多开发者的开源软件项目,Linux + Nginx + Mysql + PHP是它的经典安装部署方式,相关的软件全部都是开源免费的,所以使用PHP可以节约大量的正版授权费用。不过PHP作为一个开源软件,它缺乏大型科技公司的支持背景,网络上对它的唱衰也是经久不衰,不过它的持续迭代和性能持续增强的现实却是鼓舞人心的,PHP社区用实际行动给予各种质疑强有力的回击。

快捷高效

PHP的内核是C语言编写的基础好效率高,可以用C语言开发高性能的扩展组件;PHP的核心包含了数量超过1000的内置函数,功能应有尽有很全面,开箱即用程序代码简洁; PHP数组支持动态扩容,支持以数字、字符串或者混合键名的关联数组,能大幅提高开发效率; PHP是一门弱类型语言,程序编译通过率高,相对其他强类型语言开发效率快;PHP天然热部署,在php-fpm运行模式下代码文件覆盖即完成热部署;PHP经过20多年的发展,在互联网上可以搜到海量的参考资料供参考学习。

性能提升

PHP版本越高它的整体性能越高,根据官方介绍,PHP7.0.0 对比PHP5.6性能就提升了2倍,PHP7.4已经比PHP7.0快了约30%,PHP8.0在性能上又相对PHP7.4大约改进了10%。PHP 8.0 引入了 JIT编译器特性,同时加入多种新的语言功能,例如命名参数、联合类型、注解、Constructor Property Promotion、match 表达式、nullsafe 运算符以及对类型系统、错误处理和一致性的改进。PHP拥有自己的核心开发团队,保持5年发布一个大版本、1个月发布2个小版本的频率,最新的版本是PHP8.08 。

跨平台

每个平台都有对应的php解释器版本,指针对不同平台均编译出目标平台的二进制码(PHP解释器),php开发的程序可以不经修改运行在windows、linux、unix等多个操作系统上。

常驻内存

php-cli模式下可以实现程序常驻内存,各种变量和数据库连接都能长久保存在内存实现资源复用,比较常用的做法是结合swoole   组件编写cli框架。

页面生命周期

在php-fpm模式下,所有的变量都是页面级的,无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空,对程序员水平要求低,占用内存非常少,特别适合中小型系统的开发。

运行机制:

PHP常见的运行模式有2种,分别是php-fpm 和php-cli 。当PHP 选择运行在php-fpm模式下,所有的变量都是页面级的,无论是全局变量还是类的静态成员,都会在页面执行完毕后被清空。运行在php-cli模式下可以实现程序常驻内存,各种变量和数据库连接都能长久保存在内存 实现资源复用,性能可以得到很大的提升,php-cli开发比较复杂能但是能够获取更高的性能,对开发者的要求比较高需要比较高的开发水平,比较常用的模式是结合swoole 组件编写cli框架,各种变量能保存在跨进程的高性能共享内存 Table ,可以开发出支持热启动的php-cli可靠各类应用系统。

php-fpm在PHP 5.3.3 版本成为了官方正式组件(2010-07-22),它提供了稳定可靠的进程管理服务,进程不足时候可以智能扩充数量,闲置时候可以自动回收销毁多余的进程,同时它对程序的容错能力很强大运行非常稳定,可以应付企业级的开发需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互联网协议下进行的用户的输入输出,页面级生命周期各种资源用完即释放,不存在内存泄漏的问题。php-fpm也提供有一些常驻内存的技术支持,例如PHP 7.4引入的opcache.preload也能实现局部的PHP类和函数的常驻内存,不过这个方法不够灵活,和服务器配置捆绑的太死了。

php-cli因为能实现各类资源的常驻内存,所以可以资源复用,更高效完成多进程编程和异步编程,可以开发出负载能力更高的应用系统。但是相对php-fpm的简单编程开发,开发者要注意很多的事项和需要做很多附加的控制器开发,否则就无法实现期待中的高性能。

首先开发者需要去实现可靠的进程管理服务,保证系统进程遇到各类错误退出运行后能够自动创建新的进程,只有这样才能保证后续的服务请求有足够空闲进程可分配。每个业务代码段都要做异常处理,让进程遇到非致命错误时候不会退出,因为进程重启意味程序和各类资源需要再次加载,这个过程性能消耗不小,所以只有进程稳定运行了常驻内存才有意义。

其次因为常驻内存,编写的新的程序必须重启服务才能生效,这一点习惯了fpm模式的开发者会感到比较陌生。另外开发者需要手工释放内存,否则系统长时间运行后会出现内存泄露。同时在cli模式下,我们不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 进行编程工作,需要自己去解析各种互联网通讯协议完成用户的输入输出。要实现多进程编程利用多核CPU计算,还有学习使用pcntl和posix编程,这里涉及到了异步编程逻辑,这块难度还是比较大的。比较常用的模式是结合swoole 组件编写cli框架。

PHP是一个活跃的社区开发语言,有专业的核心开发团队在持续不断的迭代,最近一个版本就是PHP 8.0.8 引入了很多的新特性。

语言参考:

内置函数

PHP 有很多标准的函数和结构。还有一些函数需要和特定的扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用 image 函数中的 imagecreatetrue,需要在编译 PHP 的时候加上 GD 的支持。或者要使用 mysqli_connect函数,就需要在编译 PHP 的时候加上 MySQLi 支持。有很多核心函数已包含在每个版本的 PHP 中如字符串和变量函数。调用 phpinfo或者 get_loaded_extensions可以得知 PHP 加载了那些扩展库。同时还应该注意,很多扩展库默认就是有效的。

静态网站与动态网站的区别

静态网站:web1.0 时代

动态网站:web2.0 时代

静态网站特点:

1、网页内容一经发布到网站服务器,无论是否有用户访问,每个静态页面的内容都是保存在网站服务器上的。也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件。

2、静态网页的内容相对稳定,因此容易被搜索引擎检索。

3、 静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。

4、静态网页的交互性较差,在功能方面有较大的限制。

动态网站特点:

1、交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后web发展的潮流。

2、自动更新:即无须手动更新HTML文档,便会自动生成新页面,可以大大节省工作量

3、因时因人而异:即当不同时间、不同用户访问同一网址时会出现不同页面。

动态网页是与静态网页相对应的,静态网页的后缀是以 .htm , .html , .shtml , .xml ,动态网页的后缀是以 .asp , .jsp , .php , .perl , cgi 等形式。在动态网页网址中有一个标志性的符号"?"

Centos7下PHP7最新版怎么安装

步骤 1:检查已安装的内核版本 # uname -sr 步骤 2:在 CentOS 7 中升级内核 接下来,安装最新的主线稳定内核: # yum --enablerepo=elrepo-kernel install kernel-ml 最后,重启机器并应用最新内核,接着运行下面的命令检查最新内核版本还有一些代码我不想打了,楼主就自己去后盾人看看吧对你很有帮助的

有谁知道如何安装配置安全的freeBSD还有php.ini怎么配置

我的FreeBSD5.3配置笔记(相同于5.4\6.0)

接触FreeBSD时间不长,我发现配置FreeBSD对于象我这样的新手还是很有些困难,经过几天的研究取得了一点进展,现在我的配置方法写出来希望新手能少走一些弯路。

1.安装完成配置xorg,命令如下:

#Xorg -configure

这时,当前目录下就多了一个xorg.conf.new的文件,把它cp到/etc/X11/下:

#cp xorg.conf.new /etc/X11/xorg.conf

然后,编辑xorgcfg -textmode,修改一下屏幕的分辨率.

2.启动gnome

在用户主目录下创建.xinitrc文件,加入以下内容:

exec gnome-session

#startx 即进入gnome

3.启动KDE

方法1:

在用户主目录下创建.xinitrc文件,加入以下内容:

exec startkde

方法2:

修改一下/usr/X11R6/1ib/X11/xinit/xinitrc文件

拉到文件最后...看到..twm了吗...从这里起..后最后前面都加#吧..

然后加上一句:

startkde

方法3:

直接输入

# echo "/usr/local/bin/startkde" ~/.xinitrc 就行了

4.打开声音

修改/boot/defaults/loader.conf

将下面两项的NO改为YES

sound_load="NO"

snd_driver_load="NO"

5.汉化图形界面

1.安装kde-i18n-zh_CN:

#cd /usr/ports/chinese/kde3-i18n-zh_CN

#make install clean

2.安装字体

在/usr/X11R6/lib/X11/fonts/下建立TrueType目录

将windows下的SIMSUN.TTC复制到TrueType目录

双击SIMSUN.TTC,字体就安装好了

3.更改语言环境为中国,简体中文

4.在KDE的控制中心》外观和主题》字体 中修改字体为SIMSUN

6.安装fcitx输入法

1.通过ports安装fcitx

#cd /usr/ports/chinese/fcitx

#make install

2.修改~/.xinitrc,添加:

export LANG=zh_CN.eucCN

export LC_CTYPE=zh_CN.eucCN

export XMODIFIERS='@im=fcitx'

fcitx

exec startkde

6.#qtconfig

然后选择--Interface---XIM Input Style 选Over the Spot(上面的复选框也选上)--File--Save

7.挂载windows分区并支持中文文件名

1.建立挂载点,在/mnt/下建立文件夹C,D,E,F

2.修改/etc/fstab文件,加入windows分区,并把分区挂载到刚才建好的目录上,设置权限为读写,语言为中文并自动挂载

/dev/ad0s1 /mnt/C msdos rw,-L=zh_CN.eucCN,auto 0 0

/dev/ad0s5 /mnt/D msdos rw,-L=zh_CN.eucCN,auto 0 0

/dev/ad0s6 /mnt/E msdos rw,-L=zh_CN.eucCN,auto 0 0

/dev/ad0s7 /mnt/F msdos rw,-L=zh_CN.eucCN,auto 0 0

8.激活鼠标滚轮

修改/etc/xorg.conf

在"Mouse"中加入

Option "ZAxisMapping" "4 5"

保存推出,重启X。

9.调整屏幕偏移

开个终端窗口运行xvidtune,调整好之后现不要退出,点一下那个“Show”按钮,终端窗口中会显示几行类似于这样的信息:

hsync range 0: 31.50 - 48.50

vsync range 0: 40.00 - 70.00

"1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync

打开/etc/X11/XF86Config或者xorg.conf文件,找到Section "Monitor"段,在EndSection前面加入一行:

# 这里填入上面显示的第3行信息,前面加上ModeLine

ModeLine "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync

保存退出,重启X。

FreeBSD配置:

更新FreeBSD

完成了安装、配置,FreeBSD基本上就算装完了。不过,目前为止没有哪个通用操作系统能够保证“bug-free”,FreeBSD也一样。在重新启动之后,我们需要做一些调整;并且,通过重新配置内核,我们可以得到一个更小、更快的操作系统。

第一步要做的是同步源代码。FreeBSD是一套开放源代码的操作系统,它的全部源代码都可以通过cvsup与中央cvsup服务器,或它的某个镜像同步。

cvsup是一个可选的package,同样的,它也可以从ports里面安装(/usr/ports/devel/cvsup和 /usr/ports/devel/cvsup-nogui)。考虑到许多应用程序都依赖X的库文件,在前面安装的部分我安装了它,并且直接安装了 cvsup的package。不过,如果你有足够的耐心去一个一个地make需要的ports,那么先安装ports collection,然后make cvsup-nogui也是一个不错的主意,尽管这需要比较长的时间。

创建一个用于cvsup(1)的supfile,命名为stable-supfile:

(default host中选定的cvsup服务器——对访问的IP进行了限制,笔者只在北京工业大学校内使用过,因此如果您无法连接这个服务器,请尝试,或cvsup.freebsd.org)

*default host=

*default base=/usr

*default prefix=/usr

*default release=cvs tag=RELENG_4

*default delete use-rel-suffix

src-all

ports-all tag=.

随后执行

cvsup -g -L 2 stable-supfile

这里需要稍微解释一下FreeBSD的几种版本。

FreeBSD包括3类分支:-RELEASE,-STABLE和-CURRENT。FreeBSD 3.x、4.x和5.0是目前受到维护的版本,如果你期待稳定运行,那么,可以选择的最新版本将是FreeBSD 4.6-STABLE(如果你是在4.6.2-RELEASE发行之后更新的,那么它实际上比4.6.2-RELEASE新,并且,它正式的CVS tag是RELENG_4,即FreeBSD 4-STABLE)。

那么,三类分支有什么区别呢?

FreeBSD的开发是非常活跃的。系统中可能会随时引入一些新的特性。最新的代码是在-CURRENT分支中引入的。-CURRENT的修改非常频繁,每天都可能有数百处修改。使用-CURRENT分支的FreeBSD需要耐心和勇气,因为你的系统随时可能崩溃(随着FreeBSD 5.0开发尾声的接近,这种现象已经越来越少),make world也可能空手而归(没有人保证-CURRENT分支能够正常编译),此外,这个分支的性能也不好(因为调试的原因,这个分支引入了大量的调试选项,这意味着运行速度不会太快)。当然,正像它的名字那样,-CURRENT分支的版本也是最新的5.0,而且,一切FreeBSD的错误和漏洞的修正都是首先在-CURRENT分支引入的。目前,-CURRENT分支硕果仅存的只有FreeBSD 5-CURRENT(指定cvs tag时写“.”),这个分支包括了FreeBSD 5.0开发的最新进展。

FreeBSD 5中将引入大量的新特性,包括核心级线程(目前FreeBSD中的线程支持仅限于用户级线程,这在多处理器的环境下性能不够好,当然,目前使用fork ()来支持的多进程线程模拟能够提供类似核心级线程的功能,但并不是所有的程序员都知道如何使用fork)、完整的Soft Updates(这一变化将提供更好的文件系统性能,同时提供更好的稳定性),等等。如果你有快速的Internet连接,一台或一些空余的机器(当然,不是生产用的服务器),并且希望为FreeBSD的开发作贡献,或者你关心操作系统的最新发展,那么,-CURRENT分支是最好的选择。此外,

由于-CURRENT分支性能不好、稳定性不够等这些缺点,对于生产的服务器来说,通常运行的应该是FreeBSD-STABLE。如同它的名字那样, FreeBSD-STABLE的目的是“稳定地运行”。-CURRENT分支中的代码,在经过一段时间(通常是7到90天,但安全更新属于特例,通常会在几个小时)的验证之后,符合版本条件(有些新特性只能用于FreeBSD 5.0)的代码会被FreeBSD-STABLE吸收,这个操作称作MFC(Merge From -CURRENT,不是Microsoft Foundation Classes:P)。

由于FreeBSD 5.0的第一个RELEASE至今仍然没有发布,因此,目前还没有5.0-STABLE。目前,FreeBSD-STABLE有两个版本,FreeBSD 3-STABLE和FreeBSD 4-STABLE,分别对应3.x和4.x的最新稳定版代码(对应的cvs tag分别是RELENG_3和RELENG_4)。由于版本的更新换代,其中3.x的-STABLE正在逐渐消亡。FreeBSD-STABLE每天平均会修改10个左右的文件。

每隔一段时间,FreeBSD的发行工程组(Release Engineering Team)会对FreeBSD-STABLE的源代码树进行锁定。这段时间(目前的规定是30天,之前还有30天准备)内,所有的MFC操作都需要发行工程组的批准,因此,FreeBSD-STABLE在这个阶段基本不会引入任何新的特性。经过这段时间之后,发行工程组会在最后锁定ports树,并 build一份所有的package,之后,这份锁定的-STABLE,可能经过若干RC(Release Candidate),被命名为RELEASE,并制作光盘发行。

顾名思义,-RELEASE的设计目标是“发行”。一个版本一旦RELEASE,那么他的功能就不会再增加了。此后的所有维护的目标都只有一个,那就是绝对稳定。如果你和-RELEASE分支同步,那么绝不会出现make无法通过的情况,而且,通常这也可以保证你的系统“绝对”稳定,因为它不会引入任何新功能(例如,4.6就是4.6,如果你想要4.6.2的功能,必须明确地指定4.6.2)。

目前,FreeBSD有很多RELEASE版本,它们的cvs tag如下。我个人建议使用最新的4.6.2-RELEASE。

对于多数人来说,-RELEASE是一个比较极端的选择。无论何时出现版本升级,如果你想跟进,那都必须修改supfile,如果你选择不跟进,那么就可能造成ports工作异常。如果经常更新,-RELEASE可以保证操作系统本身的安全性,但同其他分支一样,如果ports出了问题,那么也得一块 make,而既然这样,还不如使用-STABLE。

如果你符合下面的条件,那么RELEASE分支可能比-STABLE分支更适合你

* 你使用的软件对于操作系统的变化非常敏感,比如,它只能FreeBSD 4.5,而无法在4.6上运行;同时,你不打算采用它的更新版本,或者它的作者拒绝更新

* 操作系统的更新对于你来说没有任何意义,比如,你打算把FreeBSD当作一个相对固定的嵌入式操作系统来使用,例如,作为防火墙的一部分

* 更新会对你造成困扰,操作系统的绝大多数新特性对于你来说除了增加烦恼之外,不能带来任何其他东西。

-并且,符合以下的全部条件-

* 你每天察看FreeBSD,以及使用的全部软件的安全公告

* 你的Internet连接比较通畅

目前我本人维护的所有主机,除了作为防火墙的那台之外,使用的都是FreeBSD-STABLE。

一旦同步完源代码,就应该对整个系统进行更新。如果你没有每天察看安全公告的习惯,那就应该关心一下cvsup到底更新了哪些代码。nectar是目前 FreeBSD的Security Officer。如果你发现他一下子更新了许多代码,那么对你来说立即make world和kernel很可能是必需的。

为了更新整个系统,在/usr/src中执行

make world

以及

make kernel KERNCONF=内核配置文件名

当然,也可以连起来执行:

make world kernel KERNCONF=内核配置文件名

如果你的计算机运行速度较慢,那么,对于基本系统的更新(相当于不包括库的一次world),可以用

make most

替代make world,但make world是一个不错的主意,因为它能够保证对C运行环境的改变应用到所有的程序中,如果修正的不是动态连接的C函数库,那么make world可以保证代码的一致性。

make kernel是一个需要重新启动的操作。如果你的make world修改了系统的关键服务,那么最好也重新启动一下。我很少有耐心看完make world和kernel的执行,根据系统的运行速度不同,这需要一个小时到一天的时间,而且,不是所有的SSH客户端都能够长时间正确的执行,例如, SecureCRT的多个版本都有内存泄漏问题。

为了解决这个问题,我用下面的命令来完成更新:

make world kernel KERNCONF=内核配置文件名 clean /var/log/world,out reboot

这个命令能够记录更新的全过程,如果在什么地方编译失败,你可以很快地找到原因。对于多数人来说,由于后面的,只需要察看uptime就能知道便以是否成功。

需要说明的是,FreeBSD的make world并不总能成功。有时需要修改一些环境变量才能成功完成make。为了保证make成功,在/usr/src中执行任何make操作之前,建议你看一眼UPDATING中是否有特殊的要求(这种要求并不是在FreeBSD Release的时候才会出现,很多时候他会在某个CURRENT中引入,然后随着MFC进入-STABLE分支),并且,在进行大的版本升级之前(跨 RELEASE,甚至主版本号),首先执行下面的命令

mergemaster -p

并在make world之后执行

mergemaster -i

运行mergemaster脚本需要一定的Unix配置知识,不过,由于配置文件中包含很多帮助信息,因此,只要master.passwd、group 这样的文件不出大问题(如果cvsup更新了master.passwd,那么就需要留神,因为master.passwd标准配置是root口令为空,这时需要用m来合并,而不是使用i安装),mergemaster并不会引入什么新的问题。

前一条命令是更新make的配置(/etc/defaults/make.conf和/etc/make.conf)。对于多数人来说,除非进行跨版本升级,否则一般情况下是不需要这样做的。后一条命令是同步全部配置,并安装以前不存在的配置文件,而不进行提示。

笔者曾经遇到过FreeBSD因为系统日期不正确而无法make的情况,因此,再次特别提醒大家,如果你的系统日期不正确,最好是用date命令修改一下,或者干脆用ntpdate或ntpd来同步时间。关于如何使用ntp,将在以后说明。

以后我们将讲解FreeBSD内核的配置,以及如何配置make.conf来优化FreeBSD的编译结果。

“简单的东西不容易出问题。”

至理名言!事实上,削减操作系统中那些对你没用的功能是一件非常重要的事情。这不仅仅意味着一个更小的操作系统,占用更少的磁盘空间(现在的硬盘少说也有几十GB,几兆的空间根本就是九牛一毛),而且意味着你被攻击的可能性也更低——简而言之,你不需要担心操作系统中没有安装的模块存在问题会对你造成影响。

这篇文章中,我们将一起对FreeBSD-i386的内核进行优化配置。这篇文章是针对FreeBSD4.7-STABLE写的,并且,FreeBSD 4.x的配置不会和这篇文章有太大出入。如果你要优化FreeBSD 5或FreeBSD 2/3的内核的话,则需要仔细参考它们的LINT文件了(后面将会提到)。

[注意:FreeBSD 5.0预定将于2002年11月20日发布。FreeBSD的开发组非常重视发行版本的质量,并认为这比发行版本的计划还重要,但由于同样的原因,我们往往会发现FreeBSD实际发行的版本比预定计划晚一些,通常在半个月之内。FreeBSD 5.0作为FreeBSD近期最为重要的发行版本,很可能也会延后发表,但笔者个人认为无论如何我们在今年年底之前肯定是可以看到最终的发行版本的。 FreeBSD 5.0对系统进行了大量的修改,这一系列的文章将在FreeBSD 5.0发布当天发表针对5.0的修订版本,而现有版本将保留,但进入维护阶段,不再引入新的内容。]

FreeBSD的源代码可以直接从中央cvsup服务器同步,也可以作为系统的一部分在安装的时候一兵装上。前面已经说过如何同步源代码,在此不再赘述。 FreeBSD的源代码(通常在/usr/src)包含建造基本系统的全部代码,而在/usr/src/sys中则有若干个目录,对应不同的计算机体系结构(4.x只支持i386和alpha)。i386是一个泛指的名字,包含了与Intel 80386兼容的所有机器,并不是特指80386。

简单介绍一下FreeBSD的内核文件。在4.x系统中,/kernel这个文件是默认的内核,通常正常启动使用的就是它。 /kernel.GENERIC这个文件是兼容性较强的内核,如果/kernel无法引导系统,就得靠这个文件来引导。/kernel.old是本次make kernel之前的内核,通常如果你的kernel坏掉,也可以考虑使用/kernel.old来引导系统。

/modules/是内核的模块,而/modules.old/是对应/kernel.old的模块。这些文件在每次替换kernel的时候都会同时替换。

在5.0中,内核以及内核的模块都被保存在/boot/kernel中。

在/usr/src/sys/i386/conf中有两个配置文件,GENERIC和LINT。其中GENERIC是make kernel的默认配置文件,直接make kernel生成的是GENERIC内核,但安装时命名为/kernel。系统在安装时会安装一个kernel.GENERIC,以后,这个文件不会跟随系统的make kernel更新,因此,如果你认为这个文件有必要更新的话,需要手工make kernel,并把/kernel改名为kernel.GENERIC。当然,通常并不需要这样做。

LINT是包括几乎所有内核编译配置详细信息的文件。这个配置并不是用来真正建立kernel的,他的主要用途是向用户展示可用的内核编译配置。在修改内核编译配置时,最好先参考这个文件。

为了配置自己的内核,应将GENERIC复制为一个另外的文件。习惯上这个文件和主机名相同。例如,我把自己的这台Web机器命名为apache.intranet.frontfree.net,就把配置文件命名为APACHE:

cd /usr/src/sys/i386/conf

cp GENERIC APACHE

随后,用ee APACHE编辑它。我们拿一个实际的GENERIC文件来说明。

为了节省篇幅,这个文件头上的注释被删掉了一部分。

machine i386 # 体系模型为i386

cpu I386_CPU # 支持80386

cpu I486_CPU # 支持80486

cpu I586_CPU # 支持Pentium

cpu I686_CPU # 支持Pentium Pro以及更高

ident GENERIC # 内核文件的名字

maxusers 0 # 自动检测同时允许的最大用户数

#makeoptions DEBUG=-g # 包含调试符号。通常只有current版本打开

options MATH_EMULATE #支持协处理器模拟

options INET #支持互联网

options INET6 #IPv6通讯协议

options FFS #伯克利快速文件系统

options FFS_ROOT #FFS作为根设备[必须保留]

options SOFTUPDATES #打开FFS soft updates支持

options UFS_DIRHASH #提高大型目录的支持

options MFS #内存文件系统

options MD_ROOT #MD作为根设备

options NFS #Network Filesystem

options NFS_ROOT #NFS作为根设备(需要NFS)

options MSDOSFS #MSDOS文件系统

options CD9660 #ISO 9660文件系统(光盘)

options CD9660_ROOT #CD-ROM作为根设备(需要CD9660)

options PROCFS #进程文件系统

options COMPAT_43 #兼容4.3BSD[必须保留]

options SCSI_DELAY=15000 #检测SCSI设备前的延时(ms)

options UCONSOLE #用户可以夺取控制台

options USERCONFIG #boot -c编辑器 editor

options VISUAL_USERCONFIG #菜单式boot -c编辑器

options KTRACE #ktrace(1)支持

options SYSVSHM #SYSV-风格的共享内存

options SYSVMSG #SYSV-风格的消息队列

options SYSVSEM #SYSV-风格的信号量(semaphores)

options P1003_1B #Posix P1003_1B实时扩展

options _KPOSIX_PRIORITY_SCHEDULING

options ICMP_BANDLIM #对恶意ICMP请求进行限制

options KBD_INSTALL_CDEV # 在/dev安装一个CDEV设备

# 下面两项在制作对称多处理器(SMP)内核时需要

#options SMP #对称多处理器内核

#options APIC_IO #对称(APIC) I/O

device isa

device eisa

device pci

# 软驱

device fdc0 at isa? port IO_FD1 irq 6 drq 2

device fd0 at fdc0 drive 0

device fd1 at fdc0 drive 1

#

# 如果使用东芝Libretto以及他的Y-E Y-E Data PCMCIA软驱

# 不要使用上面的fdc0,而应使用

#device fdc0

# ATA以及ATAPI设备

device ata0 at isa? port IO_WD1 irq 14

device ata1 at isa? port IO_WD2 irq 15

device ata

device atadisk # ATA 磁盘驱动器(IDE硬盘)

device atapicd # ATAPI 光驱

device atapifd # ATAPI 软驱

device atapist # ATAPI 磁带机

options ATA_STATIC_ID #静态设备编号

# SCSI控制器

device ahb # EISA AHA1742 family

device ahc # AHA2940 板载AIC7xxx设备

device amd # AMD 53C974 (Tekram DC-390(T))

device isp # Qlogic family

device ncr # NCR/Symbios Logic

device sym # NCR/Symbios Logic (较新的芯片组)

options SYM_SETUP_LP_PROBE_MAP=0x40

# 使用ncr可以在配置了sym和ncr的情况下挂接旧的NCR设备

device adv0 at isa?

device adw

device bt0 at isa?

device aha0 at isa?

device aic0 at isa?

device ncv # NCR 53C500

device nsp # Workbit Ninja SCSI-3

device stg # TMC 18C30/18C50

# SCSI 外设

device scbus # SCSI 总线(如果使用SCSI设备,必须有)

device da # Direct Access (硬盘)

device sa # Sequential Access (磁带,等等)

device cd # CD

device pass # Passthrough device (直接 SCSI 访问)

# 通过SCSI子系统接口的RAID控制器

device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID

device dpt # DPT Smartcache - See LINT for options!

device iir # Intel Integrated RAID

device mly # Mylex AcceleRAID/eXtremeRAID

device ciss # Compaq SmartRAID 5* series

# RAID控制器

device aac # Adaptec FSA RAID, Dell PERC2/PERC3

device aacp # SCSI passthrough for aac (requires CAM)

device ida # Compaq Smart RAID

device amr # AMI MegaRAID

device mlx # Mylex DAC960 family

device twe # 3ware Escalade

# atkbdc0 控制键盘和PS/2鼠标

device atkbdc0 at isa? port IO_KBD

device atkbd0 at atkbdc? irq 1 flags 0x1

device psm0 at atkbdc? irq 12

device vga0 at isa?

# 启动画面和屏幕保护程序

pseudo-device splash

# syscons 是默认的控制台驱动,类似SCO控制台

device sc0 at isa? flags 0x100

# 对于pcvt vt220控制台,启用这个和PCVT_FREEBSD

#device vt0 at isa?

#options XSERVER # 在vt控制台支持X服务器

#options FAT_CURSOR # 使用大光标

# 如果你是用ThinkPad,将下面的一行和其他PCVT相关设备的注释去掉

#options PCVT_SCANSET=2 # IBM使用非标准键盘

# 浮点运算支持 - 请勿禁用

device npx0 at nexus? port IO_NPX irq 13

# 电源管理支持

device apm0 at nexus? disable flags 0x20 # Advanced Power Management

# PCCARD (PCMCIA) 支持

device card

device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000

device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable

# 串口(COM)

device sio0 at isa? port IO_COM1 flags 0x10 irq 4

device sio1 at isa? port IO_COM2 irq 3

device sio2 at isa? disable port IO_COM3 irq 5

device sio3 at isa? disable port IO_COM4 irq 9

# 并口

device ppc0 at isa? irq 7

device ppbus # 并口总线 (所有并口设备都需要)

device lpt # 打印机

device plip # 并口TCP/IP

device ppi # 并口接口设备

#device vpo # 需要scbus和da

# PCI 以太网适配器

device de # DEC/Intel DC21x4x (``Tulip'')

device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman'')

device txp # 3Com 3cR990 (``Typhoon'')

device vx # 3Com 3c590, 3c595 (``Vortex'')

# 使用公共的MII总线控制器代码的PCI以太网适配器

# 注意:一定要保留'device miibus'以确保可用

device miibus # MII总线支持

device dc # DEC/Intel 21143 and various workalikes

device fxp # Intel EtherExpress PRO/100B (82557, 82558)

device pcn # AMD Am79C97x PCI 10/100 NICs

device rl # RealTek 8129/8139

device sf # Adaptec AIC-6915 (``Starfire'')

device sis # Silicon Integrated Systems SiS 900/SiS 7016

device ste # Sundance ST201 (D-Link DFE-550TX)

device tl # Texas Instruments ThunderLAN

device tx # SMC EtherPower II (83c170 ``EPIC'')

device vr # VIA Rhine, Rhine II

device wb # Winbond W89C840F

device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

device bge # Broadcom BCM570x (``Tigon III'')

# ISA以太网适配器

# 'device ed' 需要 'device miibus'

device ed0 at isa? port 0x280 irq 10 iomem 0xd8000

device ex

device ep

device fe0 at isa? port 0x300

# Xircom Ethernet

device xe

# PRISM I IEEE 802.11b wireless NIC.

device awi

# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really

# exists only as a PCMCIA device, so there is no ISA attachment needed

# and resources will always be dynamically assigned by the pccard code.

device wi

# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will

# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP

# mode (the factory default). If you set the switches on your ISA

# card for a manually chosen I/O address and IRQ, you must specify

# those parameters here.

device an

# The probe order of these is presently determined by i386/isa/isa_compat.c.

device ie0 at isa? port 0x300 irq 10 iomem 0xd0000

#device le0 at isa? port 0x300 irq 5 iomem 0xd0000

device lnc0 at isa? port 0x280 irq 10 drq 0

device cs0 at isa? port 0x300

device sn0 at isa? port 0x300 irq 10

# 伪设备 - 数字表示分配多少个

pseudo-device loop # 环回网络

pseudo-de

想测试PHP网站,需要哪些软件并如何安装

下个xampp,一次安装好环境

最简单的是appserv集成环境.

上面两个软件集成了apache+mysql+PHPmyadmin+php属于集成开发环境,直接把你的文件放到WWW里,就可以测试了,如果这些软件全部重新装的话要好长时间的,可以用上面这两种集成环境其中一种就可以,直接就可以运行PHP了!

PHP环境安装

下载PHP5:

下载apache:

一.php的安装与调试

由于php是一个zip文件(非install版),安装较为简单,解压就行。把解压的 php5.2.1-Win32重命名为 php5。并复制到C盘目录下。即安装路径为 c:\php5

1 找到php目录下的 php.ini-dist或 php.ini.recommended文件,重命名为 php.ini

并复制到系统盘的windows目录下(以c:\windows为例).

2 再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下。

3 把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下

如果没有加载 php_gd2.dll php将不能处理图像。没有加载php_mysql.dll php将不支持mysql函数库

php_mbstring.dll在后面使用phpmyadmin时支持宽字符。

4 打开c:\windows\php.ini文件(关联到mysql)

设置扩展路径

查找 extension_dir 有这么一行extension_dir = "./"

将此行改成

extension_dir = "C:\php5\ext"

其中C:\php5是你安装php的路径。路径不正确将无法加载dll

(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)

查找 extension

extension=php_mbstring.dll

extension=php_gd2.dll

extension=php_mysql.dl

把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了

当然前面我们也把这些dll复制到system32下了l

php5时差问题

?php echo date("Y-m-d H:i:s");?时间相差八小时

为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时

查找date.timezone有这么一行

;date.timezone =

将;去掉,改成

date.timezone = PRC

二.apache的调试和整合

1.修改网站根目录

查找 DocumentRoot有这么一行

DocumentRoot"C:/Program Files/Apache Group/Apache2/htdocs"

这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误

查找 This should be changed to whatever you set DocumentRoot to

在它下面两行有

Directory "C:/Program Files/Apache Group/Apache2/htdocs"

把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录

2.让apache支持*.php(网页)

查找 DirectoryIndex index.html index.html.var

修改成

DirectoryIndex index.html index.html.var index.php

这样index.php 可以充当默认页面了

3.Apache中模块化安装php

查找 # LoadModule foo_module modules/mod_foo.so

在此行后加入一行

LoadModule php5_module C:/php5/php5apache2.dll //注意:其中C:/php5/php5apache2.dll是你安装php的相应路径.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,就可能会出现"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."或者:"The requested operation has failed"

4.查找 AddType application/x-gzip .gz .tgz

在此行后加入一行

AddType application/x-httpd-php .php (记住:前边有一个空格哦!!!)

这样apache就可以解释php文件了

5.测试

在网站根目录下创建一个 phpinfo.php 文件

?php

phpinfo();

?

在浏览器打开

5.测试php和mysql数据库的关联

在网站根目录下创建一个test.php 文件

?php

$link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密码

if(!$link) echo "失败!";

else echo "成功!";

mysql_close();

?

在浏览器打开

如果输出成功,则说明大功告成了

以上回答你满意么?