https://wiki.ubuntu.org.cn/api.php?action=feedcontributions&user=Lxr1234&feedformat=atom
Ubuntu中文 - 用户贡献 [zh-hans]
2024-03-28T21:33:37Z
用户贡献
MediaWiki 1.26.3
https://wiki.ubuntu.org.cn/index.php?title=QQ&diff=152209
QQ
2015-03-03T16:05:01Z
<p>Lxr1234:</p>
<hr />
<div>腾讯QQ是Linux中文用户面对的问题之一,最合适的方式是——直接前往链接<br />
*http://web.qq.com WebQQ<br />
<br />
一般情况下不推荐使用独立软件版本登录QQ:即忽略下文,<br />
<br />
如果你的电脑配置比较好(CPU强大,内存比较多,硬盘比较大,可以看本文第二部分:longene-wine-qq)<br />
<br />
=登入QQ=<br />
官方linux版QQ估计其主要作用是用来打压,luma、eva或其它开源及第三方客户端,当第一个linux测试版发布后,其它第三方客户端纷纷放弃继续开发,之后官方再没有推出过新版linux客户端。<br />
<br />
==腾讯QQ官方桌面版本(已无法使用)==<br />
'''腾讯已停止该版本使用,非很久以前的QQ会员用户将无法登录。'''<br />
'''建议大家到 http://support.qq.com/write.shtml 给腾讯写投诉信,让腾讯知道 Linux user 的需求!'''<br />
<br />
腾讯在2008-11-13日发布了 QQ for Linux 1.0 Preview 3 <br />
<br />
*支持和好友传送文件 <br />
*支持和好友/群发送图片 <br />
*支持群里截屏并传送截图 <br />
*聊天设置中,已经可以设定按回车键发送<br />
[[Image:Qq1.png]] <br />
<br />
=== DEB安装 ===<br />
<br />
官方主页下载 DEB 安装包 <br />
<br />
[http://im.qq.com/qq/linux/download.shtml http://im.qq.com/qq/linux/download.shtml] <br />
<br />
[[Image:Qq.jpg|700px]] <br> <br />
<br />
直接打开就能安装了 <br />
<br />
命令的安装方式是这样 <br />
<pre>sudo dpkg -i 文件名.deb</pre><br />
<br />
=== tar.gz安装 ===<br />
<br />
下载tar.gz包,解压缩后做个脚本直接用。 <br />
<br />
解压tar.gz包,终端下面进入目录,输入&nbsp; ./qq 即可。 <br />
<br />
脚本 <br />
<br />
kate新建个文本文件,输入下面内容,路径要自己改,重命名成linuxqq,去掉txt后缀名. <br />
<pre>!/bin/sh<br />
#.linuxqq是qq程序所在的目录,替换为你的qq在的目录<br />
cd /home/用户名/文档/linuxqq<br />
./qq <br />
</pre> <br />
<br>然后dolphin里右键linuxqq,权限改成“可执行”,以后双击就可以了。<br> <br />
<br />
[[Image:Linuxqq.png]]<br />
<br />
===解决qq崩溃问题===<br />
sudo gedit /usr/bin/qq<br />
<br />
修改为<br />
代码:<br />
<pre><br />
#!/bin/sh<br />
export GDK_NATIVE_WINDOWS=true<br />
cd /usr/share/tencent/qq/<br />
./qq<br />
</pre><br />
这样QQ就不会崩溃了<br />
<br />
==webqq==<br />
浏览器中使用,主页位于 http://web3.qq.com/<br />
<br />
第三版的web QQ支持视频功能,通过Adobe Flash调用摄像头<br />
<br />
==webqq桌面化==<br />
<br />
桌面化webqq可实现将webqq最小化到通知区域并且来消息时提示<br />
<br />
1.安装google chrome浏览器<br />
<br />
2.安装alltray<br />
sudo apt-get install alltray<br />
<br />
3.新建一个启动器,名称随便,命令为<br />
"/usr/bin/alltray" -t 5 -s /opt/google/chrome/google-chrome --app="http://web.qq.com"<br />
<br />
4.若来消息不提示请参考会员wobu的文章<br />
http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=257749&start=0<br />
<br />
==mini webqq==<br />
http://w.qq.com/<br />
已更名为Smart qq, HTML5页面, 目前暂不支持好友管理, 群消息屏蔽等高级功能<br />
不如老版本好用<br />
<br />
==第三方QQ客户端==<br />
===eva===<br />
截至目前(2011年7月)为止,eva早就不可以使用了,eva的网址在:<br />
<br />
http://sourceforge.net/projects/evaq/<br />
<br />
eva已经很久没有更新了,最后一次新版本发布于2006年1月份(Eva 0.4.1)。不过2009年仍有svn活动。<br />
<br />
截图如下:<br />
<br />
[[Image:Eva.png|200px]]<br />
<br />
=== Pidgin ===<br />
<br />
需要在账户管理中设置版本为QQ2008,否则会无法登录或被强制退出。从腾讯官方途径(官方QQ客户端或者WEB版)非正常登出(如系统突然死机重启造成QQ客户端非正常退出)后,再登录Pidgin容易引发腾讯防盗号机制的过敏反应,此时需要激活QQ号。为保证Pidgin的正常工作,请及时更新,并避免从官方客户端非正常退出。<br />
自从旧版QQ协议过期后,原来的OpenQ项目也长期未更新,<br />
所以我打算基于原有LibQQ代码,采用全新的2010版QQ协议<br />
开发出可用的Pidgin下的QQ插件<br />
<br />
项目网站:<br />
http://libqq-pidgin.googlecode.com<br />
--------<br />
'''使用webQQ协议:'''<br />
<br />
安装:<br />
<br />
$ sudo add-apt-repository ppa:lainme/pidgin-lwqq<br />
<br />
$ sudo apt-get update<br />
<br />
$ sudo apt-get install pidgin-lwqq<br />
<br />
$ sudo apt-get install pidgin<br />
<br />
在dash里搜索pidgin点击运行:<br />
<br />
会提示添加帐号,在协议里选择webqq,用户名输入qq号,密码填写qq密码:<br />
<br />
添加之后就会连接并出现qq窗口啦<br />
<br />
UbuntuKylin下安装QQ客户端(pidgin+pidgin-lwqq)成功,其实也很简单<br />
安装QQ:<br />
1、在"Ubuntu软件中心"搜索pidgin,安装。<br />
2、安装pidgin-lwqq,按照这里的指示进行操作: <br />
https://github.com/xiehuc/pidgin-lwqq/wiki/Install-On-Linux<br />
<br />
=== Empathy ===<br />
<br />
在最新的Ubuntu 10.10中带的 Empathy 2.32.0里面,QQ帐号设置和之前的版本一样,需要设置高级选项:client version:qq2005为qq2008就可以正常登录。不过现在已经失效了。<br />
<br />
(我这里是empathy2.32.1,将version改为qq2008后任然无法登录,提示‘network error’。在Ubuntu12.04中把version改成QQ2012就能登陆了。)<br />
<br />
= longene-wine-qq =<br />
该方法目前不可用,因为提供的QQ版本太旧,已经无法使用(2014年12月)<br />
<br />
<br />
这是目前功能较全的解决方案<br />
<br />
如果你的电脑配置比较好,使用 wine 来运行 QQ 是一个不错的选择。但首先得声明一点:千万不要自己使用 wine 来安装 QQ,这样子会遇到许多 BUG,以致于几乎无法正常使用 QQ。<br />
<br />
[http://www.longene.org/forum/viewtopic.php?f=6&t=4700 原文地址]<br />
<br />
<br />
2014-01-02更新说明:<br />
<br />
1.wine版本:官方wine-1.7.9<br />
<br />
2.QQ版本: 由于QQ崩溃频繁,决定采用网上比较热门的QQ改进版:QQ2013正式版SP6.9294 去广告绿色版,该版本相对官方版本要稳定.<br />
<br />
3.修复复制中文页面到QQ聊天窗口乱码的问题.<br />
<br />
<br />
已知问题:<br />
<br />
1.无法使用键盘输入密码,只可以使用软键盘。<br />
<br />
2.QQ表情无法使用,解决中.....<br />
<br />
3.ibus可能存在兼容问题,如果崩溃很频繁,换fcitx试试。<br />
<br />
<br />
'''下载地址:'''<br />
<br />
http://www.longene.org/forum/viewtopic.php?f=6&t=4700<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
| wine qq 2013 for linux Ubuntu 64位兼容<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
| 作者:LongeneTeam<br />
<br />
| 网名:smile,timeboy,wolfstar<br />
<br />
| QQ群:【Longene爱好者群】252714468<br />
<br />
| 新浪微博:http://www.weibo.com/longene<br />
<br />
| Email:zhangcheng@insigma.com.cn<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
=问题=<br />
[[Image:qq-emotion.jpg]] <br />
== QQ空间乱码==<br />
见[[Flash]]<br />
<br />
[[Category:聊天]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=QQ&diff=152208
QQ
2015-03-03T16:02:47Z
<p>Lxr1234:已恢复180.122.99.94(对话)的编辑至107.191.53.149的最后一个修订版本</p>
<hr />
<div>腾讯QQ是Linux中文用户面对的问题之一,最合适的方式是——直接前往链接<br />
*http://web.qq.com WebQQ<br />
<br />
一般情况下不推荐使用独立软件版本登录QQ:即忽略下文,<br />
<br />
如果你的电脑配置比较好(CPU强大,内存比较多,硬盘比较大,可以看本文第二部分:longene-wine-qq)<br />
<br />
=登入QQ=<br />
官方linux版QQ估计其主要作用是用来打压,luma、eva或其它开源及第三方客户端,当第一个linux测试版发布后,其它第三方客户端纷纷放弃继续开发,之后官方再没有推出过新版linux客户端。<br />
<br />
==腾讯QQ官方桌面版本(已无法使用)==<br />
'''腾讯已停止该版本使用,非很久以前的QQ会员用户将无法登录。'''<br />
'''建议大家到 http://support.qq.com/write.shtml 给腾讯写投诉信,让腾讯知道 Linux user 的需求!'''<br />
<br />
腾讯在2008-11-13日发布了 QQ for Linux 1.0 Preview 3 <br />
<br />
*支持和好友传送文件 <br />
*支持和好友/群发送图片 <br />
*支持群里截屏并传送截图 <br />
*聊天设置中,已经可以设定按回车键发送<br />
[[Image:Qq1.png]] <br />
<br />
=== DEB安装 ===<br />
<br />
官方主页下载 DEB 安装包 <br />
<br />
[http://im.qq.com/qq/linux/download.shtml http://im.qq.com/qq/linux/download.shtml] <br />
<br />
[[Image:Qq.jpg|700px]] <br> <br />
<br />
直接打开就能安装了 <br />
<br />
命令的安装方式是这样 <br />
<pre>sudo dpkg -i 文件名.deb</pre><br />
<br />
=== tar.gz安装 ===<br />
<br />
下载tar.gz包,解压缩后做个脚本直接用。 <br />
<br />
解压tar.gz包,终端下面进入目录,输入&nbsp; ./qq 即可。 <br />
<br />
脚本 <br />
<br />
kate新建个文本文件,输入下面内容,路径要自己改,重命名成linuxqq,去掉txt后缀名. <br />
<pre>!/bin/sh<br />
#.linuxqq是qq程序所在的目录,替换为你的qq在的目录<br />
cd /home/用户名/文档/linuxqq<br />
./qq <br />
</pre> <br />
<br>然后dolphin里右键linuxqq,权限改成“可执行”,以后双击就可以了。<br> <br />
<br />
[[Image:Linuxqq.png]]<br />
<br />
===解决qq崩溃问题===<br />
sudo gedit /usr/bin/qq<br />
<br />
修改为<br />
代码:<br />
<pre><br />
#!/bin/sh<br />
export GDK_NATIVE_WINDOWS=true<br />
cd /usr/share/tencent/qq/<br />
./qq<br />
</pre><br />
这样QQ就不会崩溃了<br />
<br />
==webqq==<br />
浏览器中使用,主页位于 http://web3.qq.com/<br />
<br />
第三版的web QQ支持视频功能,通过Adobe Flash调用摄像头<br />
<br />
==webqq桌面化==<br />
<br />
桌面化webqq可实现将webqq最小化到通知区域并且来消息时提示<br />
<br />
1.安装google chrome浏览器<br />
<br />
2.安装alltray<br />
sudo apt-get install alltray<br />
<br />
3.新建一个启动器,名称随便,命令为<br />
"/usr/bin/alltray" -t 5 -s /opt/google/chrome/google-chrome --app="http://web.qq.com"<br />
<br />
4.若来消息不提示请参考会员wobu的文章<br />
http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=257749&start=0<br />
<br />
==mini webqq==<br />
http://w.qq.com/<br />
已更名为Smart qq, HTML5页面, 目前暂不支持好友管理, 群消息屏蔽等高级功能<br />
不如老版本好用<br />
<br />
==第三方QQ客户端==<br />
===eva===<br />
截至目前(2011年7月)为止,eva早就不可以使用了,eva的网址在:<br />
<br />
http://sourceforge.net/projects/evaq/<br />
<br />
eva已经很久没有更新了,最后一次新版本发布于2006年1月份(Eva 0.4.1)。不过2009年仍有svn活动。<br />
<br />
截图如下:<br />
<br />
[[Image:Eva.png|200px]]<br />
<br />
=== Pidgin ===<br />
<br />
需要在账户管理中设置版本为QQ2008,否则会无法登录或被强制退出。从腾讯官方途径(官方QQ客户端或者WEB版)非正常登出(如系统突然死机重启造成QQ客户端非正常退出)后,再登录Pidgin容易引发腾讯防盗号机制的过敏反应,此时需要激活QQ号。为保证Pidgin的正常工作,请及时更新,并避免从官方客户端非正常退出。<br />
自从旧版QQ协议过期后,原来的OpenQ项目也长期未更新,<br />
所以我打算基于原有LibQQ代码,采用全新的2010版QQ协议<br />
开发出可用的Pidgin下的QQ插件<br />
<br />
项目网站:<br />
http://libqq-pidgin.googlecode.com<br />
--------<br />
'''使用webQQ协议:'''<br />
<br />
安装:<br />
<br />
$ sudo add-apt-repository ppa:lainme/pidgin-lwqq<br />
<br />
$ sudo apt-get update<br />
<br />
$ sudo apt-get install pidgin-lwqq<br />
<br />
$ sudo apt-get install pidgin<br />
<br />
在dash里搜索pidgin点击运行:<br />
<br />
会提示添加帐号,在协议里选择webqq,用户名输入qq号,密码填写qq密码:<br />
<br />
添加之后就会连接并出现qq窗口啦<br />
<br />
UbuntuKylin下安装QQ客户端(pidgin+pidgin-lwqq)成功,其实也很简单<br />
安装QQ:<br />
1、在"Ubuntu软件中心"搜索pidgin,安装。<br />
2、安装pidgin-lwqq,按照这里的指示进行操作: <br />
https://github.com/xiehuc/pidgin-lwqq/wiki/Install-On-Linux<br />
<br />
=== Empathy ===<br />
<br />
在最新的Ubuntu 10.10中带的 Empathy 2.32.0里面,QQ帐号设置和之前的版本一样,需要设置高级选项:client version:qq2005为qq2008就可以正常登录。<br />
<br />
(我这里是empathy2.32.1,将version改为qq2008后任然无法登录,提示‘network error’。在Ubuntu12.04中把version改成QQ2012就能登陆了。)<br />
<br />
= longene-wine-qq =<br />
该方法目前不可用,因为提供的QQ版本太旧,已经无法使用(2014年12月)<br />
<br />
<br />
这是目前功能较全的解决方案<br />
<br />
如果你的电脑配置比较好,使用 wine 来运行 QQ 是一个不错的选择。但首先得声明一点:千万不要自己使用 wine 来安装 QQ,这样子会遇到许多 BUG,以致于几乎无法正常使用 QQ。<br />
<br />
[http://www.longene.org/forum/viewtopic.php?f=6&t=4700 原文地址]<br />
<br />
<br />
2014-01-02更新说明:<br />
<br />
1.wine版本:官方wine-1.7.9<br />
<br />
2.QQ版本: 由于QQ崩溃频繁,决定采用网上比较热门的QQ改进版:QQ2013正式版SP6.9294 去广告绿色版,该版本相对官方版本要稳定.<br />
<br />
3.修复复制中文页面到QQ聊天窗口乱码的问题.<br />
<br />
<br />
已知问题:<br />
<br />
1.无法使用键盘输入密码,只可以使用软键盘。<br />
<br />
2.QQ表情无法使用,解决中.....<br />
<br />
3.ibus可能存在兼容问题,如果崩溃很频繁,换fcitx试试。<br />
<br />
<br />
'''下载地址:'''<br />
<br />
http://www.longene.org/forum/viewtopic.php?f=6&t=4700<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
| wine qq 2013 for linux Ubuntu 64位兼容<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
| 作者:LongeneTeam<br />
<br />
| 网名:smile,timeboy,wolfstar<br />
<br />
| QQ群:【Longene爱好者群】252714468<br />
<br />
| 新浪微博:http://www.weibo.com/longene<br />
<br />
| Email:zhangcheng@insigma.com.cn<br />
<br />
+-----------------------------------------------------------------------+<br />
<br />
=问题=<br />
[[Image:qq-emotion.jpg]] <br />
== QQ空间乱码==<br />
见[[Flash]]<br />
<br />
[[Category:聊天]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E6%A0%A1%E5%9B%AD%E7%BD%91%E4%BD%BF%E7%94%A8%E9%94%90%E6%8D%B7%E4%B8%8A%E7%BD%91&diff=149905
校园网使用锐捷上网
2013-03-19T08:58:01Z
<p>Lxr1234:/* MentoHUST */</p>
<hr />
<div>== 锐捷官方客户端 ==<br />
因锐捷官方客户端是32位应用程序,所以本指南,仅面向32位ubuntu Linux操作系统!!<br />
=== 准备工作 ===<br />
<br />
* 前往[http://www.ruijie.com.cn/list.aspx?Downloadcategoryid=%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6&CategoryID=75 官方网站]或者,学校提供的下载点,下载上网客户端官方版本[http://www.ruijie.com.cn/down.aspx?id=207 Supplicant For Linux V1.1.1.rar]。<br />
* 前往[http://packages.ubuntu.com/ Ubuntu packages]站点搜索并下载对应版本的<br />
*# unrar<br />
*# libpcap0.7<br />
*# gcc-3.3-base<br />
*# libstdc++5<br />
<br />
=== 安装 ===<br />
* 依次双击安装已下载的unrar、gcc-3.3-base、libpcap0.7、libstdc++5<br />
* 双击Supplicant For Linux V1.1.1.rar,解压压缩包中的xrgsu和readme<br />
* 按下Alt+F2键,在调出的运行对话框中输入gksu。这样就开启了管理员运行对话框,接着在弹出的运行框中输入nautilus。调出管理员专用的文件管理器,进入目录/usr/local/,并新建目录bin,复制xrgsu到bin中。<br />
* 打开终端,输入命令<br />
sudo ln -s /usr/lib/libpcap.so.0.7.2 /usr/lib/libpcap.so.0.6.2<br />
sudo chmod 744 /usr/local/bin/xrgsu<br />
<br />
== 配置 ==<br />
直接在终端中运行<br />
sudo xrgsu<br />
进入配置模式,认证时的选项如下:<br />
a.please input your user name:<br />
软件请求输入认证用户名<br />
b.please input your password:<br />
软件请求输入认证密码<br />
c.Use DHCP,1-Use,0-UnUse(Default: 0):<br />
如果操作系统使用了DHCP获得动态地址,请选择1,否则请选择0<br />
d.Use default auth parameter,0-Use 1-UnUse(Default: 0):1<br />
是否使用默认的参数进行认证,选择0将使用默认的参数进行认证,并且不在询问后面的参数<br />
e.please input Eap-start Timeout(Default: 30s):30<br />
请输入Eap-start报文的超时时间,单位为秒<br />
f.please input Eap-response Timeout(Default: 30s):30<br />
请输入Eap-Response报文的超时时间,单位为秒<br />
g.please input Eap-packet resend Time(Default: 3):3<br />
请输入报文的重传次数<br />
h.Use Red-Giant private MAC? 1-Use,0-UnUse(Default: 1):1<br />
是否使用星网锐捷的私有组播地址进行认证,选择0将不使用,这时软件使用802.1x标准组播地址进行认证。<br />
=== 运行 ===<br />
* 静态IP环境直接输入命令,可完成认证,注意:如果你使用静态IP的方式,'''请手动指定系统的IP和DNS服务器地址。'''<br />
sudo xrgsu -a<br />
* DHCP动态IP环境下执行认证操作,输入命令<br />
sudo xrgsu -d<br />
sudo xrgsu -a<br />
软件在认证完成后将调用ifup 命令获取IP地址,如果您的设备使用其他的命令获得IP地址,请将相应的命令附加在参数中,例如: ''sudo xrgsu -d ifup eth0'',然后再运行:''sudo xrgsu -a''<br />
* 当你看到,下面的提示时,就证明认证成功,可以上网了。<br />
Searching server...<br />
Connecting server...<br />
Authenticating...<br />
<br />
Authenticate SUCCESSFULLY! //SUCCESSFULLY! 表示锐捷链接成功<br />
Please input 'unauth' to LogOff: // 可以上网了<br />
<br />
== 其它非官方方法 ==<br />
<br />
=== RuijieClient ===<br />
<br />
项目主页:[http://ruijieclient.googlecode.com/ http://ruijieclient.googlecode.com/] <br />
<br />
这个版本能够正确识别服务器消息,伪造客户端版本,还有具有转码的功能。 <br />
<br />
凡 xrgsu 认证能通过的ruijieclient 都可以通过。ruijieclient 还可以被放到启动脚本里认证<br />
<br />
'''目前对于 3.3 以上开启了客户端校验的网络暂时无法支持''' <br />
<br />
无论是源码安装还是包管理器安装,请先阅读安装配置指南[http://code.google.com/p/ruijieclient/wiki/InstallAndConfigure] 如果在安装或者使用过程中出现问题,请参看常见问题FAQ[http://code.google.com/p/ruijieclient/wiki/FAQ] <br />
<br />
'''注意:在 ubuntu 8.04 系统下,源码编译除了基本的编译套件,一般额外需求有下列依赖包: libpcap0.8-dev libxml2-dev'''<br />
<br />
=== MentoHUST ===<br />
见[http://wiki.ubuntu.org.cn/锐捷、赛尔认证MentoHUST<br />
]<br />
<br />
==参考资料==<br />
[http://www.2quanxun.com VIM][http://www.xtutu.com OpenVZ][http://www.weiluoka.com XEN][http://www.anywayanyday.net BurstNet][http://www.transphone.cc Redhat][http://www.imessage.cc CentOS][http://www.onstar.cc lighttpd][http://www.ideapad.cc LVS][http://www.touchpad.cc DSN][http://www.taobaoguanwang.com XEN][http://www.7j7k.com ZEN][http://www.wanglidanni.com Maths][http://www.mashengxi.com SIS][http://www.gourideqq.com TUO][http://www.xiaogege.com AVS][http://www.iipian.com MOQ][http://www.girlfriendvid.net LQP][http://cnzynga.com RIA]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=ClamAV&diff=149644
ClamAV
2013-01-26T11:43:35Z
<p>Lxr1234:/* 手动扫描病毒 */</p>
<hr />
<div>原文出处:官方WIKI<br />
<br />
原文作者:<br />
<br />
授权许可:<br />
* [http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0]<br />
* [http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:drivel (drivelsun@gmail.com)<br />
<br />
校正人员:<br />
<br />
贡献人员:luojie-dune<br />
<br />
适用版本:<br />
文章状态:翻译完成<br />
----<br />
<br />
== ClamAV 简介以及适用范围 ==<br />
<br />
[http://www.clamav.net/ ClamAV]是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是无法清除,至多删除文件。ClamAV可以工作很多的平台上,但是有少数无法支持,这就要取决您所使用的平台的流行程度了。另外它主要是来防护一些WINDOWS病毒和木马程序。另外,这是一个面向服务端的软件。<br />
<br />
=== 需要反病毒软件?免费么? ===<br />
绝大多数的Linux是先进的,所以,很少的病毒能够在linux上运行和繁衍。而且,由于目前PC都使用的是Windows,所以病毒制造者们更愿意去写Windows下的病毒。但是还有很多的原因能致使您使用一些病毒扫描程序的,比如:<br />
<br />
* 扫描在您计算机上的Windows设备<br />
* 扫描在本地网络中的Windows计算机<br />
* 扫描您即将要传送给别人的文件<br />
* 扫描您将要发送给别人的EMAIL<br />
<br />
== ClamAV 安装设置 ==<br />
<br />
=== 安装ClamAV ===<br />
<pre><nowiki><br />
sudo apt-get install clamav<br />
</nowiki></pre><br />
这里有两种的ClamAV供您选择<br />
1.手动:安装ClamAV的安装包<br />
2.自动:安装ClamAV-daemon<br />
这两种都可以安装ClamAV,但是要是使用上面的方法,是手动的。<br />
在您安装完成之后,您可能被程序问及一些问题,比如怎么去升级。这就需要您选择一个离您比较近的服务器来升级。ClamAV的升级程序是很小的,所以很值得去自动升级。<br />
<br />
=== 怎么使用ClamAV ===<br />
'''这部分将会介绍安装之后的使用'''<br />
<br />
==== 升级我的病毒库 ====<br />
<br />
运行 sudo&nbsp; <code><nowiki>freshclam</nowiki></code>.<br />
<br />
<br />
<br><br />
您将会看见以下说明<br />
<br />
<pre>user@ubuntu:/etc/clamav # sudo freshclam<br />
ClamAV update process started at Wed Apr 27 00:06:47 2005<br />
main.cvd is up to date (version: 31, sigs: 33079, f-level: 4, builder: tkojm)<br />
daily.cvd is up to date (version: 855, sigs: 714, f-level: 4, builder: ccordes)<br />
</pre><br />
<br />
==== 使用ClamAV扫描我计算机中的文件 ====<br />
运行 <code><nowiki>clamscan</nowiki></code>.<br />
<br />
这里附带一些例子<br />
<br />
* 扫描所有用户的主目录就使用 clamscan -r /home<br />
* 扫描您计算机上的所有文件并且显示所有的文件的扫描结果,就使用 clamscan -r /<br />
*扫描您计算机上的所有文件并且显示有问题的文件的扫描结果, 就使用 clamscan -r --bell -i / <br />
当clamAV扫描完所有文件的时候,会显示如下的类似报告<br />
<br />
<pre><nowiki><br />
----------- SCAN SUMMARY -----------<br />
Known viruses: 33840<br />
Scanned directories: 145<br />
Scanned files: 226<br />
Infected files: 1<br />
Data scanned: 54.22 MB<br />
I/O buffer size: 131072 bytes<br />
Time: 20.831 sec (0 m 20 s)<br />
</nowiki></pre><br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=info.png ClamAV只会去扫描对于ClamAV可以读取的文件。 果您想扫描所有文件,在命令前加上 <code><nowiki>sudo</nowiki></code> .<br />
<br />
==== 使ClamAV以daemon防护的方式运行 ====<br />
安装clamav-daemon就可以了,clamav-daemon将会建立一个名为'clamav'的帐户,这是为了可以使ClamAV扫描一些系统文件,比如您的Email存放的地方,您可以添加'clamav'为这些文件或者目录的所有者。<br />
<br />
==== 如何知道clamav-daemon是否运行了? ====<br />
查看进程列表就可以了: <code><nowiki>ps ax | grep [c]lamd</nowiki></code><br />
<br />
==== 如何删除病毒文件? ====<br />
在扫描的时候,您可以添加'--remove'就可以了<br />
<br />
<br />
==== 如何知道我现在使用的ClamAV版本? ====<br />
执行 <code><nowiki>clamscan -V</nowiki></code>:<br />
<br />
<pre><nowiki><br />
user@ubuntu:/etc/clamav # clamscan -V<br />
ClamAV 0.83/855/Tue Apr 26 06:40:32 2005<br />
</nowiki></pre><br />
<br />
==== 如何知道更多的参数 ====<br />
使用 <code><nowiki>man clamscan</nowiki></code>.<br />
<br />
==== 如何使ClamAV按计划自动运行 ====<br />
您可以使用'at'命令来使clamscan和freshclam运行,比如<br />
<br />
<pre><nowiki><br />
at 3:30 tomorrow<br />
at>clamscan -i /home/user > mail user@example.com<br />
at> <CTRL-D><br />
job 3 at 2005-04-28 03:30<br />
</nowiki></pre><br />
<br />
或者编辑 /etc/crontab 加入以下内容 <br />
<br />
0 3 * * * root /usr/bin/freshclam --quiet -l /var/log/clamav/clamav.log ##每天3点升级<br />
<br />
== 自动扫描病毒 ==<br />
*请参阅 [[安装ClamAV|如何安装 ClamAV AntiVirus 病毒防制服务器?]]<br><br />
{|border="1" cellspacing="0"<br />
|例如每天子时自动扫描 文件/目录 来搜寻病毒<br>* * * * * 分别代表 分 时 日 月 年<br />
|}<br />
<pre><nowiki><br />
export EDITOR=gedit && sudo crontab -e<br />
</nowiki></pre><br />
*将下面这一行加到文件最后面<br />
<pre><nowiki><br />
00 00 * * * sudo clamscan -r /location_of_files_or_folders<br />
</nowiki></pre><br />
<br />
== 手动扫描病毒 ==<br />
* 请参阅 [[Ubuntu简介]]<br />
* 请参阅 [[安装ClamAV|如何安装 ClamAV AntiVirus 病毒防制服务器?]]<br />
<pre><nowiki><br />
sudo clamscan -r /location_of_files_or_folders<br />
</nowiki></pre><br />
<br />
[[Category:软件]]<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BDWindows%E5%88%86%E5%8C%BA&diff=148225
自动挂载Windows分区
2012-08-09T13:14:56Z
<p>Lxr1234:nosuid</p>
<hr />
<div>== 自动挂载 Windows 分区 ==<br />
<br />
自动挂载 windows 分区执行下列命令, 编辑挂载脚本 autowinfs.<br />
我建议使用一个组来管理,下面的例子是使用<nowiki>winfs</nowiki><br />
创建组<br />
<pre><nowiki>group -r winfs</nowiki></pre><br />
添加当前用户<nowiki>usera</nowiki>到组<br />
<pre><nowiki>usermod user -a -G winfs</nowiki></pre><br />
<pre><nowiki><br />
sudo gedit /usr/sbin/autowinfs</nowiki></pre><br />
复制粘贴以下引用的内容,<br />
保存文件, 退出。<br />
<pre><nowiki><br />
mkdir -p /windows/<br />
rmdir /windows/* 1> /dev/null<br />
grep -v '/windows/' /etc/fstab > /etc/fstab.swp<br />
fdisk -l /dev/[hs]d[a-z] | grep 'NTFS' | cut -d' ' -f1 | cut -d/ -f3 | while read WDISKS<br />
do echo "/dev/$WDISKS /windows/$WDISKS ntfs auto,user,gid=winfs,nls=utf8,umask=007,exec,nosuid 0 0" >> /etc/fstab.swp<br />
mkdir "/windows/$WDISKS"<br />
done<br />
fdisk -l /dev/[hs]d[a-z] | grep 'FAT' | cut -d' ' -f1 | cut -d/ -f3 | while read WDISKS<br />
do echo "/dev/$WDISKS /windows/$WDISKS vfat auto,user,utf8,gid=winfs,umask=007,exec,nosuid 0 0" >> /etc/fstab.swp<br />
mkdir "/windows/$WDISKS"<br />
done<br />
mv /etc/fstab.swp /etc/fstab<br />
mount -a<br />
exit 0<br />
</nowiki></pre><br />
再运行命令:<br />
<pre><nowiki><br />
sudo chmod +x /usr/sbin/autowinfs<br />
sudo /usr/sbin/autowinfs<br />
</nowiki></pre><br />
就可以了,Windows分区将挂载在 /windows/ 下<br />
<br />
<br />
<br />
Ubuntu 9.10版Windows 分区自动挂在(NTFS格式)<br />
<br />
编辑/etc/fstab文件<br />
$sudo gedit /etc/fstab<br />
弹出geidt的文本编辑框,在文件尾部添加如下内容:<br />
<pre><nowiki><br />
1.先用FDISK命令查看一下磁盘的UUID<br />
$sudo fdisk -l<br />
<br />
/dev/sda1 * 1 851 6835626 83 Linux<br />
<br />
/dev/sda2 852 4039 25607610 f W95 Ext'd (LBA)<br />
<br />
/dev/sda5 945 2135 9566676 7 HPFS/NTFS<br />
<br />
/dev/sda6 2136 4039 15293848+ 7 HPFS/NTFS<br />
<br />
2.NTFS分区添加如下内容,重启即可自动挂载NTFS分区了。<br />
<br />
/dev/sda6 /media/my ntfs-3g defaults,locale=zh_CN.UTF-8 0 0<br />
<br />
/dev/sda5 /media/tools ntfs-3g defaults,locale=zh_CN.UTF-8 0 0<br />
<br />
3.用软件也可以实现,即简单有快速:<br />
$sudo apt-get install ntfs-config<br />
安装完成后输入$sudo ntfs-config<br />
</nowiki></pre><br />
然后就会弹出来一个对话框,选择你需要挂载的分区,点应用,再选择“启用内部设备写支持”就搞定了。重启下试试吧。<br />
[[Category:Windows]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BDWindows%E5%88%86%E5%8C%BA&diff=148218
自动挂载Windows分区
2012-08-09T06:24:50Z
<p>Lxr1234:/* 自动挂载 Windows 分区 */ 为安全做点修改</p>
<hr />
<div>== 自动挂载 Windows 分区 ==<br />
<br />
自动挂载 windows 分区执行下列命令, 编辑挂载脚本 autowinfs.<br />
我建议使用一个组来管理,下面的例子是使用<nowiki>winfs</nowiki><br />
创建组<br />
<pre><nowiki>group -r winfs</nowiki></pre><br />
添加当前用户<nowiki>usera</nowiki>到组<br />
<pre><nowiki>usermod user -a -G winfs</nowiki></pre><br />
<pre><nowiki><br />
sudo gedit /usr/sbin/autowinfs</nowiki></pre><br />
复制粘贴以下引用的内容,<br />
保存文件, 退出。<br />
<pre><nowiki><br />
mkdir -p /windows/<br />
rmdir /windows/* 1> /dev/null<br />
grep -v '/windows/' /etc/fstab > /etc/fstab.swp<br />
fdisk -l /dev/[hs]d[a-z] | grep 'NTFS' | cut -d' ' -f1 | cut -d/ -f3 | while read WDISKS<br />
do echo "/dev/$WDISKS /windows/$WDISKS ntfs auto,user,gid=winfs,nls=utf8,umask=007,exec 0 0" >> /etc/fstab.swp<br />
mkdir "/windows/$WDISKS"<br />
done<br />
fdisk -l /dev/[hs]d[a-z] | grep 'FAT' | cut -d' ' -f1 | cut -d/ -f3 | while read WDISKS<br />
do echo "/dev/$WDISKS /windows/$WDISKS vfat auto,user,utf8,gid=winfs,umask=007,exec 0 0" >> /etc/fstab.swp<br />
mkdir "/windows/$WDISKS"<br />
done<br />
mv /etc/fstab.swp /etc/fstab<br />
mount -a<br />
exit 0<br />
</nowiki></pre><br />
再运行命令:<br />
<pre><nowiki><br />
sudo chmod +x /usr/sbin/autowinfs<br />
sudo /usr/sbin/autowinfs<br />
</nowiki></pre><br />
就可以了,Windows分区将挂载在 /windows/ 下<br />
<br />
<br />
<br />
Ubuntu 9.10版Windows 分区自动挂在(NTFS格式)<br />
<br />
编辑/etc/fstab文件<br />
$sudo gedit /etc/fstab<br />
弹出geidt的文本编辑框,在文件尾部添加如下内容:<br />
<pre><nowiki><br />
1.先用FDISK命令查看一下磁盘的UUID<br />
$sudo fdisk -l<br />
<br />
/dev/sda1 * 1 851 6835626 83 Linux<br />
<br />
/dev/sda2 852 4039 25607610 f W95 Ext'd (LBA)<br />
<br />
/dev/sda5 945 2135 9566676 7 HPFS/NTFS<br />
<br />
/dev/sda6 2136 4039 15293848+ 7 HPFS/NTFS<br />
<br />
2.NTFS分区添加如下内容,重启即可自动挂载NTFS分区了。<br />
<br />
/dev/sda6 /media/my ntfs-3g defaults,locale=zh_CN.UTF-8 0 0<br />
<br />
/dev/sda5 /media/tools ntfs-3g defaults,locale=zh_CN.UTF-8 0 0<br />
<br />
3.用软件也可以实现,即简单有快速:<br />
$sudo apt-get install ntfs-config<br />
安装完成后输入$sudo ntfs-config<br />
</nowiki></pre><br />
然后就会弹出来一个对话框,选择你需要挂载的分区,点应用,再选择“启用内部设备写支持”就搞定了。重启下试试吧。<br />
[[Category:Windows]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=147641
Apache虚拟主机指南
2012-06-24T06:49:25Z
<p>Lxr1234:/* 高级配置 */</p>
<hr />
<div>==启用与停用站点的方法==<br />
<pre><nowiki><br />
a2ensite 站点名<br />
a2dissite 站点名<br />
</nowiki></pre><br />
==基于名字的(通过域名来区分)的虚拟主机==<br />
<br />
安装好apache以后默认有一个叫default的虚拟主机。新建虚拟主机时可以直接复制默认虚拟主机的配置文件,在其基础上修改新虚拟主机的配置参数。<br />
<br />
#copy /etc/apache2/site-available/default /etc/apache2/site-available/sitename<br />
<br />
<br />
=== 测试环境 ===<br />
* 操作系统:Ubuntu Server 12.04 LTS<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.example.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(12.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost *:80<br />
<VirtualHost www.example.com:80><br />
ServerName www.example.com<br />
ServerAdmin admin@mail.example.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost :80`:表示我们要做的是一个基于名称的虚拟主机,监听的端口为80.<br />
* `<VirtualHost www.example.com:80> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置。注意如果上面的字段指定了端口号,这里也要指定<br />
* `ServerName www.example.com`:设置虚拟主机的域名<br />
* `ServerAdmin admin@mail.example.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 example.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost edunuke.example.com:80><br />
ServerName edunuke.example.com<br />
ServerAdmin edunuke@mail.example.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.example.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.example.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.example.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost plone.example.com:80><br />
ServerName plone.example.com<br />
ServerAdmin plone@mail.example.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.example.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.example.com 就可以重定向到 Zope+Plone 站点去了。<br />
<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=147640
Apache虚拟主机指南
2012-06-24T06:46:11Z
<p>Lxr1234:/* 基于名字的(通过域名来区分)的虚拟主机 */ 根据apache的新语法修改,删除了可能软广告的内容</p>
<hr />
<div>==启用与停用站点的方法==<br />
<pre><nowiki><br />
a2ensite 站点名<br />
a2dissite 站点名<br />
</nowiki></pre><br />
==基于名字的(通过域名来区分)的虚拟主机==<br />
<br />
安装好apache以后默认有一个叫default的虚拟主机。新建虚拟主机时可以直接复制默认虚拟主机的配置文件,在其基础上修改新虚拟主机的配置参数。<br />
<br />
#copy /etc/apache2/site-available/default /etc/apache2/site-available/sitename<br />
<br />
<br />
=== 测试环境 ===<br />
* 操作系统:Ubuntu Server 12.04 LTS<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.example.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(12.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost *:80<br />
<VirtualHost www.example.com:80><br />
ServerName www.example.com<br />
ServerAdmin admin@mail.example.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost :80`:表示我们要做的是一个基于名称的虚拟主机,监听的端口为80.<br />
* `<VirtualHost www.example.com:80> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置。注意如果上面的字段指定了端口号,这里也要指定<br />
* `ServerName www.example.com`:设置虚拟主机的域名<br />
* `ServerAdmin admin@mail.example.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 example.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost edunuke.example.com:80><br />
ServerName edunuke.example.com<br />
ServerAdmin edunuke@mail.example.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.example.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.example.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.example.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost plone.example.com:80><br />
ServerName plone.firehare.com<br />
ServerAdmin plone@mail.example.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.example.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.example.com 就可以重定向到 Zope+Plone 站点去了。<br />
<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=147549
Apache
2012-06-09T15:55:39Z
<p>Lxr1234:/* 配置apache */</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(这里改为本机),您可以凭您喜好修改,就是必须一致<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,把 NameVirtualHost *:80 改为NameVirtualHost 127.0.0.1:80 , 修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
===启用.htaccess===<br />
这个对pbpbb3这样有附带<code>.htaccess</code>的程序有利,不过其它场合有可能引发问题。<br />
方法:在网站主机配置下加入<code>AllowOverride AuthConfi</code><br />
例子:<br />
<pre><nowiki><br />
vim /etc/apache2/sites_available/default<br />
<Directory /var/www/><br />
...<br />
AllowOverride AuthConfig<br />
...<br />
</Directory><br />
</nowiki></pre><br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==附录==<br />
===apache2配置文件与子目录一览表===<br />
<code>/etc/apache2/apache2.conf</code> 全局配置<br />
<code>/etc/apache2/envvars</code> 环境变量<br />
<code>/etc/apache2/ports.conf</code> httpd服务端口信息<br />
<code>/etc/apache2/conf.d/</code> 一般性配置文件存放地<br />
<code>/etc/apache2/mods-available/</code> 已安装的模块<br />
<code>/etc/apache2/mods-enabled/</code> 已经启用的模块<br />
<code>/etc/apache2/sites-available/</code> 可用站点信息<br />
<code>/etc/apache2/sites-enabled/</code> 已经启用的站点信息,当中的文件是到<code>/etc/apache2/sites-available/</code> 文件的软连接。<br />
<code>/etc/apache2/httpd.conf</code><br />
<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:Yuzh652800&diff=147244
用户讨论:Yuzh652800
2012-05-04T06:50:54Z
<p>Lxr1234:以内容'==关于贵条目在线音乐的移动== 因为本站主条目必需技术相关,但考虑其内容,暂时移动至贵用户页。User:Yuzh652800/在线音乐 有…'创建新页面</p>
<hr />
<div>==关于贵条目在线音乐的移动==<br />
因为本站主条目必需技术相关,但考虑其内容,暂时移动至贵用户页。[[User:Yuzh652800/在线音乐]]<br />
有任何问题可以找我或其它管理员。<br />
谢谢。<br />
祝您愉快。<br />
--[[User:Lxr1234|Lxr1234]] 2012年5月4日 (五) 14:50 (CST)</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8%E6%88%B7:Yuzh652800/%E5%9C%A8%E7%BA%BF%E9%9F%B3%E4%B9%90&diff=147242
用户:Yuzh652800/在线音乐
2012-05-04T06:50:30Z
<p>Lxr1234:在线音乐移动到User:Yuzh652800/在线音乐:&#32;非技术文章,但有内容</p>
<hr />
<div>在换了Ubuntu Linux后,习惯在线听歌的我一直在收集在线听歌好去处,现把我常去的地方与大家分享,希望大家也把大家测试可行的在线音乐网站贴过来。[大部分基于Flash,请安装好Flash插件]<br />
原帖地址:[http://forum.ubuntu.org.cn/viewtopic.php?f=74&t=195431 Ubuntu Linux 下在线听歌好去处],欢迎顶贴<br />
<br />
=推荐音乐网站=<br />
<br />
==强烈推荐==<br />
<br />
<br />
虾米网[感谢3楼 guocong00010824 提供]<br />
http://www.xiami.com<br />
<br />
唯美天空[个人很喜欢“乐库>[http://www.weamea.com/music/ChineseTradition 中国民乐]”下的专辑]<br />
http://www.weamea.com/<br />
<br />
聆听杂志『日志类音乐推荐网』<br />
http://www.skyoy.com/<br />
<br />
麦田音乐网.【日志类音乐推荐网】<br />
http://www.mtyyw.com/<br />
<br />
新浪乐库<br />
http://music.sina.com.cn/yueku/<br />
<br />
一听音乐网[使用M$的sliverlight,需要安装Moonlight插件]<br />
http://www.1ting.com/<br />
<br />
谷歌音乐/巨鲸音乐网:<br />
http://www.top100.cn/<br />
<br />
jamendo<br />
http://www.jamendo.com<br />
可以在ubuntu自带的totem电影播放机中打开Jamendo插件,听歌很不错的。<br />
<br />
==部分喜欢的电台、电视直播==<br />
Linux下龙卷风收音机<br />
http://www.fifm.cn/<br />
<br />
倾听网络收音机,就是原来的QQradio[看起来好像与TX没有关系,强力推荐]<br />
http://www.qingtin.com/<br />
<br />
MoRadio<br />
http://www.moradio.cn/<br />
<br />
北京广播网<br />
http://listen.rbc.cn/<br />
<br />
上海网络广播电台[网站做到极致!]<br />
http://radio.bbtv.cn/<br />
<br />
华数TV<br />
http://live.wasu.cn/<br />
<br />
==各国地方特色音乐网站==<br />
在线听俄罗斯音乐:<br />
http://www.zvuki.ru/<br />
<br />
印度在线音乐<br />
http://www.musicindiaonline.com/<br />
<br />
很个性的收集印度音乐的网站:印度世界音乐<br />
http://www.raaga.com/<br />
<br />
其他国家地区音乐网站列表<br />
http://www.qkankan.com/music/index.html<br />
<br />
==个性音乐网站==<br />
键入一个单词,就可以听相关音乐<br />
songza<br />
http://songza.com<br />
<br />
落网音乐:不光是听,还要了解相关[友情链接中都是很不错的个性音乐网站]:<br />
http://www.luoo.net/<br />
<br />
音乐人myspace空间:聚友网<br />
http://music.myspace.cn/<br />
<br />
=其他=<br />
<br />
<br />
==更多常用音乐网站==<br />
<br />
sogou音乐<br />
http://mp3.sogou.com/<br />
<br />
<br />
亦歌<br />
http://www.1g1g.com/<br />
<br />
百度mp3[百度开始学好了,mp3及音乐盒现在支持Linux了]<br />
http://mp3.baidu.com/<br />
<br />
好听音乐网<br />
[2010年12月28日已下线]<br />
http://www.haoting.com/<br />
<br />
SongTaste<br />
http://www.songtaste.com/<br />
<br />
友播<br />
http://yobo.com/<br />
<br />
<br />
TV007<br />
http://www.tv007.com/radio/<br />
<br />
<br />
今生缘音乐网[Linux下可播放,部分歌曲不错的,特别推荐24小时收藏榜]<br />
http://www.666ccc.com/<br />
<br />
last.fm (现在对免费用户支持较少)<br />
http://cn.last.fm/<br />
<br />
see2say看道(速度较慢)<br />
http://www.see2say.com/<br />
<br />
易友音乐网[一些特别的专辑]<br />
http://www.eou.cn<br />
<br />
88个国外音乐网站推荐 | 帕兰映像<br />
http://paranimage.com/88-foreign-music-websites/<br />
<br />
==做的不错的,但不支持Linux的==<br />
<br />
超酷的musicovery(我这里测试有问题,大家试试)<br />
http://musicovery.com/index.php<br />
<br />
音乐石头<br />
http://www.musicstone.net/index.html<br />
<br />
九天音乐[据说flash版很快推出,到时就支持linux了]<br />
http://www.9sky.com/<br />
<br />
内蒙古音乐网[地方特色不错,不过暂时不支持linux]<br />
http://www.mglmusic.com/music/<br />
<br />
听恋[专门收集轻音乐的网站,同样目前不支持linux]<br />
http://www.tinglian.com/</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E5%9C%A8%E7%BA%BF%E9%9F%B3%E4%B9%90&diff=147243
在线音乐
2012-05-04T06:50:30Z
<p>Lxr1234:在线音乐移动到User:Yuzh652800/在线音乐:&#32;非技术文章,但有内容</p>
<hr />
<div>#REDIRECT [[User:Yuzh652800/在线音乐]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E8%84%9A%E6%9C%AC%E8%AF%AD%E8%A8%80&diff=147241
脚本语言
2012-05-04T06:40:35Z
<p>Lxr1234:避免大家点入后发现没用内容,白点</p>
<hr />
<div>{| style="margin: 0pt 0pt 1em 1em; font-size: 0.9em; width: 95%;"<br />
|- style="background-color: rgb(219, 186, 117);"<br />
| style="width: 31%;" | '''Shell脚本'''<br />
| style="width: 33%;" | '''Python语言'''<br />
| style="width: 31%;" | '''Ruby语言'''<br />
|- style="vertical-align: top;"<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Shell编程基础]]<br />
* [[高级Bash脚本编程指南]](仅有目录)<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[PythonSkills]]<br />
* [http://wiki.woodpecker.org.cn/moin/March_Liu/PyTutorial Python教程]<br />
* [http://www.woodpecker.org.cn/diveintopython/toc/index.html Python研究](Dive into Python)<br />
* [http://www.woodpecker.org.cn:9081/doc/abyteofpython_cn/chinese/index.html Python简明教程]<br />
* [http://wiki.woodpecker.org.cn/moin/WeiZhong/2006-01-17 Python快速入门]<br />
* [http://wiki.woodpecker.org.cn/moin/PyTwisted PyTwisted简介]<br />
* [[Python正则表达式操作指南]]<br />
* [http://www.chinesepython.org/ 中蟒简介](基於Python的中文編程語言)<br />
* [http://code.google.com/p/zhpy/ ZhPy]<br />
* [[Zope3宝典]]<br />
* [[Zope组件架构和接口]]<br />
* [[Zope中的基础对象]]<br />
* [[简单的TODO应用程序]]<br />
* [[三十分钟学会Zope3]]<br />
* [[Zope配置文件参考]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Ruby 和 Ruby on Rails 简介]]<br />
* [http://ruby-lang.org Ruby 官方网站]<br />
* [http://railscasts.org Ruby on Rails 视频教程]<br />
* [[Ruby on Rails开发工具]]<br />
<br />
|-<br />
| colspan="3" style="text-align: center;" | &nbsp;<br />
|- style="background-color: rgb(219, 186, 117);"<br />
| '''Perl语言'''<br />
| '''PHP语言'''<br />
| '''其他语言'''<br />
|-<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [http://bbs.chinaunix.net/viewthread.php?tid=872802 Learning Perl(中文)]<br />
* [http://cpan.perl.org/ Cpan]<br />
* man perl<br />
* man perlfunc<br />
* perldoc<br />
* man perlxxx<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [http://www.phpchina.com/html/index.html PHP开源社区]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Common LISP Hints]]<br />
<br />
|}</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E6%A8%A1%E6%9D%BF:Main_page/hot&diff=145828
模板:Main page/hot
2011-12-15T05:11:57Z
<p>Lxr1234:删除aaaa</p>
<hr />
<div><font style="font-size: 110%">[[Qref/Lucid|'''Ubuntu 10.04 速配指南''']]</font><BR><br />
[[Qref/Maverick/Kubuntu|Kubuntu 10.10 速配指南]]<br><br />
[[UbuntuSkills|Ubuntu 技巧]]<br><br />
[[中文输入法]]<br><br />
[[Flash|Flash 乱码]]<br><br />
[[Qref/Apps|软件推荐]]<br><br />
[[Newcomer|写给Ubuntu新手]]<br><br />
[[Linux不是Windows/zh|Linux不是Windows]]<br><br />
[[网站架设服务]]<br></div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Samba&diff=145760
Samba
2011-11-13T06:12:13Z
<p>Lxr1234:</p>
<hr />
<div>Samba是Ubuntu和Windows进行网络共享的工具,比如分享打印机,互相之间传输资料文件。<br />
==安装Samba==<br />
安装samba<br />
<pre><br />
sudo apt-get install samba<br />
</pre><br />
==Kubuntu==<br />
安装系统设置的共享模块<br />
<pre>sudo apt-get install kdenetwork-filesharing</pre><br />
<br />
==配置==<br />
'''1.windows 访问 ubuntu'''<br />
<br />
第一步创建共享目录: 比如要创建/home/用户名/share首先创建这个文件夹 (这个用户名就是你的用户名,为了方便易懂我才这样写的,到时记得自己改啊)<br />
<br />
代码:<br />
<br />
mkdir /home/用户名/share (新建share文件夹)<br />
<br />
chmod 777 /home/用户名/share (设置该文件夹的权限使其让所有用户可读可写可运行)<br />
<br />
备份并编辑smb.conf允许网络用户访问 (养成随时备份的好习惯,在关键的时候你会发现当初的备份是多么的明智!)<br />
代码:<br />
<br />
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup<br />
<br />
sudo gedit /etc/samba/smb.conf<br />
<br />
搜寻这一行文字<br />
代码:<br />
<br />
; security = user<br />
<br />
用下面这几行取代<br />
<br />
代码:<br />
<br />
security = user<br />
<br />
username map = /etc/samba/smbusers<br />
<br />
将下列几行新增到文件的最后面,假设允许访问的用户为:new。而文件夹的共享名为 Share<br />
#这里之所以这么写就是因为后面我们要创建一个smb用户new,并且让XP用户通过这个new来和我们进行数据交流。当然你可以写为自己喜欢的名字 只不过前后要一致就可以了<br />
<br />
代码:<br />
<br />
[Share]<br />
<br />
comment = Shared Folder with username and password<br />
<br />
path = /home/用户名/share<br />
<br />
public = yes<br />
<br />
writable = yes<br />
<br />
valid users = new<br />
<br />
create mask = 0700<br />
<br />
directory mask = 0700<br />
<br />
force user = nobody<br />
<br />
force group = nogroup<br />
<br />
available = yes<br />
<br />
browseable = yes<br />
<br />
然后顺便把这里改一下,找到[global]把 workgroup = MSHOME 改成 :(注意,这里的WORKGROUP是共享中的工作组名称) <br />
代码:<br />
<br />
workgroup = WORKGROUP <br />
<br />
display charset = UTF-8<br />
<br />
unix charset = UTF-8<br />
<br />
dos charset = cp936<br />
<br />
<br />
后面的三行是为了防止出现中文目录乱码的情况。<br />
现在要添加new这个网络访问帐户。如果系统中当前没有这个帐户,那么<br />
<br />
代码:<br />
<br />
sudo useradd new<br />
<br />
<br />
要注意,上面只是增加了new这个用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。现在要新增网络使用者的帐号:<br />
<br />
代码:<br />
<br />
sudo smbpasswd -a new (设置你的new密码,这个密码不是开机登录时候用的,是你要访问WIN共享文件或者WIN共享文件访问你的时候要填的密码)<br />
sudo gedit /etc/samba/smbusers<br />
<br />
<br />
在新建立的文件内加入下面这一行并保存<br />
<br />
代码:<br />
<br />
new = “network username”<br />
<br />
如果将来需要更改new的网络访问密码,也用这个命令更改<br />
<br />
代码:<br />
<br />
sudo smbpasswd -a new<br />
<br />
删除网络使用者的帐号的命令把上面的 -a 改成 -x<br />
sudo smbpasswd -x new<br />
<br />
测试并重启samba<br />
<br />
代码:<br />
<br />
sudo testparm<br />
<br />
sudo /etc/init.d/samba restart<br />
<br />
<pre><nowiki><br />
WIN访问ubuntu后记<br />
有人说我严格的按照了上述操作走的,在自己UBUNTU的系统下右击一个文件夹,点共享,然后创建共享文件,结果在WIN XP下的局域网可以看到那个共享的文件夹,但是就是点不开! 为什么?<br />
原因就在于权限问题,假如你共享了 /media/MEDIA/壁纸 这个文件夹,你紧接着给这个文件夹可读可写可运行的权限<br />
</nowiki></pre><br />
<br />
简单的,这样使用。<br />
☎ type fuse-smb <br />
fuse-smb 已被别名为“smbmount //192.168.100.53/共享目录/ ~/fuse-mnt/ -o username=smb,password=ice,iocharset=utf8”<br />
<br />
== Ubuntu访问windows xp/2003/2000系统 ==<br />
<br />
下面有原作者提供的四种方法。。。但是我只稳定的成功了第四种,挂载的那种时灵时不灵的,并且大多数人都只能成功第四种,不知道为什么。。。<br />
<br />
第一种:用smb访问<br />
直接点-位置-网络-里面有个WINDOWS网络,点进去找你要找的电脑和文件,届时可能要帐号和密码,注意填的是那个被访问的计算机的帐号,不是先前建的那个new<br />
这个方法最方便了! 但是成功率不高<br />
<br />
第二种:用ubuntu 系统自带的连接到服务器功能访问<br />
在位置中启动连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷。<br />
我们可以像访问ubuntu系统中的磁盘一样来访问它,同样在访问的时候要输入smb的用户名和密码。<br />
往往第一个方法不能成功的 这个也别想成功<br />
<br />
第三种:用mount挂载windows的共享目录到本地磁盘<br />
首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind<br />
同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作<br />
以windows的ip为192.168.0.1,共享文件夹为share为例<br />
<br />
命令如下:<br />
<br />
mount -t smbfs –o username=new,password=123456 //192.168.0.1/share /mnt/wind<br />
<br />
¥我感觉这个的成功率要比先前的那两个方法高,一但挂载成功就行了<br />
<br />
本人还衍生了一个方法貌似在我电脑上的可行性比较高,那就是知道共享的目录的绝对地址后直接输入绝对地址<br />
<br />
smb://吕秀才/电影3/<br />
<br />
吕秀才是他用户名(不能用IP,IP没用的)电影3是他的一个共享文件夹~<br />
<br />
直接用smb://用户名/共享文件名 这样就可以,在访问的时候会问你那个XP的密码这时填上就可以了 还会验证你的smb密码 这个就用上面你设置那个就可以了 反正我成功了¥<br />
<br />
有时这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题<br />
<br />
mount -t smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind<br />
<br />
注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法<br />
提示:要访问windows中有特殊密码的文件夹,可以在samba中新建一个与windows登录相同名相同密码的用户,然后mount即可,例:<br />
<br />
sudo useradd administrator //不要让其有登录ubuntu的权限<br />
<br />
sudo smbpasswd -a administrator<br />
<br />
然后提示输入密码:输入windows访问的密码即可<br />
<br />
<br />
第四种:使用smbclient 命令<br />
命令如下:<br />
<br />
smbclient //对方IP/那个共享文件夹 -U 你的smb帐号,就是那个new<br />
<br />
例如:smbclient //218.196.119.86/电影 -u new<br />
password:输入smb用户new的密码<br />
<br />
回车就可以用,用命令get下载文件,用put上传文件。<br />
<br />
注解:<br />
<br />
smbclient介绍:<br />
<br />
命令 说明<br />
<br />
?或help [command] 提供关于帮助或某个命令的帮助<br />
<br />
![shell command] 执行所用的SHELL命令,或让用户进入 SHELL提示符<br />
<br />
cd [目录] 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录<br />
<br />
lcd [目录] 切换到客户端指定的目录;<br />
<br />
dir 或ls 列出当前目录下的文件;<br />
<br />
exit 或quit 退出smbclient<br />
<br />
get file1 file2 从服务器上下载file1,并以文件名file2存在本地机上;<br />
<br />
如果不想改名,可以把file2省略<br />
<br />
mget file1 file2 file3 filen 从服务器上下载多个文件;<br />
<br />
md或mkdir 目录 在服务器上创建目录<br />
<br />
rd或rmdir 目录 删除服务器上的目录<br />
<br />
put file1 [file2] 向服务器上传一个文件file1,传到服务器上改名为file2;<br />
<br />
mput file1 file2 filen 向服务器上传多个文件<br />
<br />
<br />
¥这个方法不出意外都成功,而且这个成功再试一试前两个方法没准也就成功了,总之我感觉这个共享访问时灵时不灵的,希望以后能改善~<br />
<br />
==排错==<br />
===乱码===<br />
网上邻居的中文目录的显示乱码的处理方法: *<br />
确认你的local,如果为:zh_CN.UTF-8 则:<br />
<br />
在 /etc/samba/smb.conf 中的 [global] 段加上:<br />
<br />
<pre><nowiki><br />
display charset = UTF-8<br />
unix charset = UTF-8<br />
dos charset = cp936<br />
</nowiki></pre><br />
<br />
<br />
* 确认你的local,如果为:zh_CN.GB2312zh_CN.GBK 则:<br />
在 /etc/samba/smb.conf 中的 [global] 段加上:<br />
<pre><nowiki><br />
display charset = cp936<br />
unix charset = cp936<br />
dos charset = cp936<br />
</nowiki></pre><br />
<br />
设置完毕后,需要注销一次。才可以看到中文的目录。<br />
==smb用户密码==<br />
smb用户密码与unix帐号密码可以一样或不同,它们之间不存在连接关系。<br />
<pre><nowiki><br />
#smbpasswd -a user<br />
</nowiki></pre><br />
即可为<code>user</code>添加设置smb用户密码。<br />
[[Category:网络]]<br />
[[Category:服务器]]<br />
[[Category:Windows]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=UbuntuHelp:Fstab/zh&diff=145759
UbuntuHelp:Fstab/zh
2011-11-13T06:03:07Z
<p>Lxr1234:/* 文件内容 */</p>
<hr />
<div>{{From|http://wiki.ubuntu.org.cn/UbuntuHelp:Fstab}} {{Translator|李威}} {{Languages|UbuntuHelp:Fstab}}&nbsp;<br />
<br />
== 简介 ==<br />
<br />
配置文件 <code><nowiki>/etc/fstab</nowiki></code> 包含了 ''挂载'' 磁盘的必需信息。该文件系统启动时开始读入,并且仅能被 [[UbuntuHelp:RootSudo|root]] 用户修改。<br />
<br />
== 文件内容 ==<br />
<br />
要想看该文件可以用下面的命令:<br />
<pre>cat /etc/fstab</pre> <br />
或者 按下alt-f2 并输入:<br />
<pre>gksu gedit /etc/fstab</pre> <br />
上面命令的输出结果与下面的内容相似:<br />
<pre># /etc/fstab: static file system information.<br />
#<br />
# &lt;file system&gt; &lt;mount point&gt; &lt;type&gt; &lt;options&gt; &lt;dump&gt; &lt;pass&gt;<br />
<br />
proc /proc proc defaults 0 0<br />
<br />
# /dev/hda1<br />
UUID=12102C02102CEB83 /media/windows ntfs silent,umask=0,locale=it_IT.utf8 0 0<br />
<br />
# /dev/hda2<br />
UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90 none swap sw 0 0<br />
<br />
# /dev/hda3<br />
UUID=98E0-6D24 /media/dati vfat defaults,utf8,umask=007,uid=0,gid=46,auto,rw,nouser 0 0<br />
<br />
# /dev/hda4<br />
UUID=0aa86c61-0df9-4f1a-8b0b-34abbee6b769 / ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 0<br />
<br />
/dev/hdc /media/cdrom0 udf,iso9660 user,atime,noauto,rw,dev,exec,suid 0 0<br />
</pre> <br />
每一非注释行都由六个字段组成:<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''字段'''<br />
| '''说明'''<br />
|-<br />
| file system<br />
| 指出设备的文件系统<br />
|-<br />
| mount point<br />
| 指出文件夹(或挂载点),从其中来访问设备中的内容(对于swap并不需要挂载点)<br />
|-<br />
| type<br />
| 文件系统类型<br />
|-<br />
| options<br />
| 设备访问选项(见"mount"命令)<br />
|-<br />
| dump<br />
| 启用或关闭(ON/OFF)文件系统备份(见"dump"命令。该选项<u>已废弃,应设为0</u>。<br />
|-<br />
| pass<br />
| 启用或关闭(ON/OFF)磁盘一致性的控制(见"fsck"命令),也就是开机磁盘扫描参数,根分区应设为0,其他分区为2,0代表不检测<br />
|}<br />
<br />
要获取所用的UUID的使用列表,使用命令:<br />
<pre>ls -l /dev/disk/by-uuid<br />
</pre><br />
<br />
== 其它资源 ==<br />
<br />
* [[UbuntuHelp:UsingUUID|UUID]]<br />
* http://doc.gwos.org/doku.php/doc:hardware:fstab<br />
<br />
[[Category:UbuntuHelp]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=145750
Apache虚拟主机指南
2011-11-12T12:22:13Z
<p>Lxr1234:/* 基于名字的(通过域名来区分)的虚拟主机 */</p>
<hr />
<div>==启用与停用站点的方法==<br />
<pre><nowiki><br />
a2ensite 站点名<br />
a2dissite 站点名<br />
</nowiki></pre><br />
==基于名字的(通过域名来区分)的虚拟主机==<br />
<br />
=== 测试环境 ===<br />
* 操作系统:Ubuntu 10.04<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.firehare.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(10.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost 10.39.6.59<br />
<VirtualHost 10.39.6.59><br />
ServerName www.firehare.com<br />
ServerAdmin ubuntu.firehare@gmail.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost 10.39.6.59`:表示我们要做的是一个基于名称的虚拟主机,且其 IP 地址为 10.39.6.59<br />
* `<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置<br />
* `ServerName www.firehare.com`:设置虚拟主机的域名<br />
* `ServerAdmin ubuntu.firehare@gmail.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 edunuke.firehare.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName edunuke.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.firehare.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.firehare.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.firehare.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName plone.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.firehare.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.firehare.com 就可以重定向到 Zope+Plone 站点去了。<br />
<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145749
Apache
2011-11-12T11:58:45Z
<p>Lxr1234:/* 附录 */</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
===启用.htaccess===<br />
这个对pbpbb3这样有附带<code>.htaccess</code>的程序有利,不过其它场合有可能引发问题。<br />
方法:在网站主机配置下加入<code>AllowOverride AuthConfi</code><br />
例子:<br />
<pre><nowiki><br />
vim /etc/apache2/sites_available/default<br />
<Directory /var/www/><br />
...<br />
AllowOverride AuthConfig<br />
...<br />
</Directory><br />
</nowiki></pre><br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==附录==<br />
===apache2配置文件与子目录一览表===<br />
<code>/etc/apache2/apache2.conf</code> 全局配置<br />
<code>/etc/apache2/envvars</code> 环境变量<br />
<code>/etc/apache2/ports.conf</code> httpd服务端口信息<br />
<code>/etc/apache2/conf.d/</code> 一般性配置文件存放地<br />
<code>/etc/apache2/mods-available/</code> 已安装的模块<br />
<code>/etc/apache2/mods-enabled/</code> 已经启用的模块<br />
<code>/etc/apache2/sites-available/</code> 可用站点信息<br />
<code>/etc/apache2/sites-enabled/</code> 已经启用的站点信息,当中的文件是到<code>/etc/apache2/sites-available/</code> 文件的软连接。<br />
<code>/etc/apache2/httpd.conf</code><br />
<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145748
Apache
2011-11-12T11:50:13Z
<p>Lxr1234:</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
===启用.htaccess===<br />
这个对pbpbb3这样有附带<code>.htaccess</code>的程序有利,不过其它场合有可能引发问题。<br />
方法:在网站主机配置下加入<code>AllowOverride AuthConfi</code><br />
例子:<br />
<pre><nowiki><br />
vim /etc/apache2/sites_available/default<br />
<Directory /var/www/><br />
...<br />
AllowOverride AuthConfig<br />
...<br />
</Directory><br />
</nowiki></pre><br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==附录==<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145747
Apache
2011-11-12T11:48:31Z
<p>Lxr1234:/* 安全 */</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
===启用.htaccess===<br />
这个对pbpbb3这样有附带<code>.htaccess</code>的程序有利,不过其它场合有可能引发问题。<br />
方法:在网站主机配置下加入<code>AllowOverride AuthConfi</code><br />
例子:<br />
<pre><nowiki><br />
vim /etc/apache2/sites_available/default<br />
<Directory /var/www/><br />
...<br />
AllowOverride AuthConfig<br />
...<br />
</Directory><br />
</nowiki></pre><br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=145745
Apache虚拟主机指南
2011-11-12T01:56:08Z
<p>Lxr1234:</p>
<hr />
<div>==基于名字的(通过域名来区分)的虚拟主机==<br />
<br />
=== 测试环境 ===<br />
* 操作系统:Ubuntu 10.04<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.firehare.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(10.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost 10.39.6.59<br />
<VirtualHost 10.39.6.59><br />
ServerName www.firehare.com<br />
ServerAdmin ubuntu.firehare@gmail.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost 10.39.6.59`:表示我们要做的是一个基于名称的虚拟主机,且其 IP 地址为 10.39.6.59<br />
* `<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置<br />
* `ServerName www.firehare.com`:设置虚拟主机的域名<br />
* `ServerAdmin ubuntu.firehare@gmail.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 edunuke.firehare.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName edunuke.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.firehare.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.firehare.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.firehare.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName plone.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.firehare.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.firehare.com 就可以重定向到 Zope+Plone 站点去了。<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=145744
Apache虚拟主机指南
2011-11-12T01:55:24Z
<p>Lxr1234:/* 基于名字的(通过域名来区分)的虚拟主机 */</p>
<hr />
<div>===基于名字的(通过域名来区分)的虚拟主机===<br />
<br />
=== 测试环境= ==<br />
* 操作系统:Ubuntu 10.04<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.firehare.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(10.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost 10.39.6.59<br />
<VirtualHost 10.39.6.59><br />
ServerName www.firehare.com<br />
ServerAdmin ubuntu.firehare@gmail.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost 10.39.6.59`:表示我们要做的是一个基于名称的虚拟主机,且其 IP 地址为 10.39.6.59<br />
* `<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置<br />
* `ServerName www.firehare.com`:设置虚拟主机的域名<br />
* `ServerAdmin ubuntu.firehare@gmail.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 edunuke.firehare.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName edunuke.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.firehare.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.firehare.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.firehare.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName plone.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.firehare.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.firehare.com 就可以重定向到 Zope+Plone 站点去了。<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145743
Apache
2011-11-12T01:54:51Z
<p>Lxr1234:/* PDO的安装 */ 有人的误操作,我清除它</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145742
Apache
2011-11-12T01:53:09Z
<p>Lxr1234:/* 安全 */</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
===隐藏服务器信息===<br />
<pre><nowiki><br />
vim /etc/apache2/apache2.conf<br />
ServerTokens Prod<br />
</nowiki></pre><br />
===指定apache2的运行账户===<br />
以root来运行是很危险的,用下面的方法更改,这里是都改为<code>www-data</code><br />
<pre><nowiki><br />
vim /etc/apache2/envvars<br />
export APACHE_RUN_USER=www-data<br />
export APACHE_RUN_GROUP=www-data<br />
</nowiki></pre><br />
要确认存在这些用户组。<br />
<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki>在此插入非格式文本</nowiki></nowiki></nowiki></nowiki></nowiki><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache&diff=145741
Apache
2011-11-12T01:44:03Z
<p>Lxr1234:</p>
<hr />
<div>==基础==<br />
如果你是安装到本机上测试的话,最好确保hosts的内容为这样<br />
<pre>username@ubuntu:~$ cat /etc/hosts<br />
127.0.0.1 localhost<br />
</pre><br />
== 安装 ==<br />
===安装LAMP ===<br />
1.仔细手动安装法(最小组件)<br />
<pre>sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server</pre><br />
<br />
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
2.偷懒一次安装法<br /><br />
在新立得软件包管理器中选择&nbsp; '''编辑--使用任务分组标记软件包''' <br />
<br />
在打开的窗口中 '''勾选 LAMP SERVER''' 然后确定。 <br />
<br />
在主窗口中 '''点击绿色的对号 <u>应用</u> 按钮''' <br />
<br />
好了 。接下来就是等待...等待新立得 自动下载安装完。 <br />
'''<u>安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。</u>'''<br />
<br />
<pre>sudo apt-get install apache2 mysql-server php5 php5-mysql #终端命令</pre><br />
打开 http://localhost<br />
{|<br />
|[[Image:Apachedefault.png|thumb|center|500px|Apache默认页面]]<br />
|}<br />
<br />
3.巧用tasksel安装<br />
sudo tasksel<br />
选择LAMP,确定就可以了(不过要小心别修改其他的选项,否则会安装或删除该服务!)<br />
<br />
===安装phpmyadmin ===<br />
其实这也是个安全隐患,建议通过openssh来管理服务器。<br />
<br />
方案一:终端中运行命令 (不推荐)<br />
<pre>sudo apt-get install phpmyadmin<br />
</pre> <br />
方案二:<br> <br />
<br />
强烈建议不要从源里安装<br>在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www/phpmyadmin<br><br />
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建<br />
<br><br />
在终端下执行 <br />
<pre>sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php</pre><pre>sudo gedit /var/www/phpmyadmin/config.inc.php<br />
</pre> <br />
找到“blowfish_secret”在后面填上任意字母 <br />
<pre>$cfg['Servers'][$i]['auth_type']='cookie';<br />
$cfg['Servers'][$i]['host']='localhost';<br />
$cfg['Servers'][$i]['connect_type']='tcp';<br />
$cfg['Servers'][$i]['compress']='false';<br />
$cfg['Servers'][$i]['extension']='mysql';</pre> <br />
<br>保存,退出 <br />
<br />
<br>安装php5-mcrypt <br />
<pre>sudo apt-get install php5-mcrypt<br />
</pre> <br />
编辑php配置文件<br> <br />
<pre>sudo gedit /etc/php5/apache2/php.ini <br />
</pre> <br />
在extension下面加上(任何独立一行就行)<br />
<pre>extension=php_mcrypt.so (原来的php5-mcrypt.so无效)<br />
</pre> <br />
<br><br />
<br />
保存,重启apache2<br><br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
<br />
在浏览器里输入http://localhost/phpmyadmin<br />
<br />
== 配置文件路径 ==<br />
<br />
1&gt;apache 的配置文件路径 /etc/apache2/apache2.conf <br />
<br />
2&gt;apache 网站字符编码配置路径 /etc/apache2/conf.d/charset <br />
<br />
3&gt;php.ini 路径 /etc/php5/apache2/php.ini<br />
<br />
4&gt;mysql配置文件 路径 /etc/mysql/my.cnf '''一般不要使用,尤其是新手'''<br />
<br />
5&gt;phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf <br />
<br />
6&gt;默认网站根目录 /var/www<br> <br />
===常用命令===<br />
<br />
1.重启apache<br />
<pre>sudo /etc/init.d/apache2 restart<br />
</pre> <br />
2.重启mysql <br />
<pre>sudo /etc/init.d/mysql restart<br />
</pre><br />
=== 配置apache===<br />
1.更改默认字符集 <br><br />
终端中使用命令<br />
<pre>sudo nano /etc/apache2/conf.d/charset </pre><br />
<br />
将其中的<br />
<br />
<pre># AddDefaultCharset </pre> <br />
<br />
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)<br />
<br />
<pre>AddDefaultCharset UTF-8 </pre><br />
<br />
中间的空格数并不重要,但一定要有。<br />
<br />
2.添加支持文件类型(一般不需要),与网站地址(需要)<br />
<br />
终端中使用命令 <br><br />
<pre>sudo nano /etc/apache2/apache2.conf<br />
</pre> <br />
在配置文件最后面加入下面几行: <br />
<br />
添加文件类型支持<br> <br />
<pre>AddType application/x-httpd-php .php .htm .html</pre> <br />
<br> <br />
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)<br> <br />
<pre>&lt;IfModule dir_module&gt;<br />
DirectoryIndex index.htm index.html index.php<br />
&lt;/IfModule&gt;<br />
<br />
</pre><br />
<br />
更改服务器地址(改为本机)<br> <br />
<pre>ServerName 127.0.0.1<br />
</pre> <br />
修改apache的根目录DocumentRoot:<br />
<br />
<pre>sudo nano /etc/apache2/sites-enabled/000-default </pre><br />
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。重启Apache2服务即可。 <br />
下面的是参考,一般不需要改变,除非有特殊需求。<br />
<pre><br />
sudo nano /etc/apache2/ports.conf #修改端口号,修改 Listen 80 </pre><br />
再修改site的配置文件<br />
<pre>/etc/apache2/sites-available/default</pre><br />
80是端口号<br />
<pre><VirtualHost *:80></pre><br />
<pre><br />
sudo a2enmod rewrite #开启apache 的rewrite功能<br />
</pre><br />
====Apache模块====<br />
<pre>sudo a2enmod #启用模块</pre><br />
<pre>sudo a2dismod #禁用模块</pre><br />
<br />
===配置PHP5 ===<br />
<br />
这个没什么好说的 根据个人自己需要<br> <br />
建议将安全模块开启(注意!开启后phpmyadmin会不能用)<br />
<br />
<pre>sudo nano /etc/php5/conf.d/php.ini</pre><br />
'''注意:'''你可能需要敲入命令<br />
<pre>php --ini</pre><br />
或<br />
<pre>php -i | grep php.ini</pre><br />
来获取你的php cli加载的php.ini路径(Loaded Configuration File,比如 /etc/php5/cli/php.ini 而非 /etc/php5/conf.d/php.ini)。但此文件并不一定是apache php5模块加载的php.ini文件,如果要获得apache php5模块加载的php.ini,请参见[[Apache#测试_phpinfo();_(根据需要,自己选择,可不做)|测试_phpinfo()]]<br />
<br />
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,<br />
<br />
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。<br />
<br />
以下是更改默认时区<br> <br />
<pre>;date.timezone=</pre> <br />
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)<br> <br />
<pre>date.timezone= PRC<br />
</pre><br />
<br />
===配置MySQL ===<br />
====MySQL常用命令====<br />
MySQL大部分命令是以<pre>;</pre>结尾,这里除了5给出的命令,其它一定要以<pre>;</pre>结尾!<br />
1.进入mysql<br />
<br />
<pre>mysql -h [服务器地址] -u [用户名〕-p</pre><br />
<br />
这是访问本地服务器<br />
<br />
<pre>mysql -h 127.0.0.1 -u [用户名〕 -p</pre><br />
<pre>如:mysql -h 127.0.0.1 -u root -p</pre><br />
<br />
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。<br />
<br />
2.显示已经存在的数据库<br />
<br />
<pre>SHOW DATABASES;</pre><br />
<br />
3.创建数据库<br />
数据库名在这里是没有[]号的!!,还有在linux下是区分大小写(只是使用时有关!)。<br />
<pre>CREATE DATADASE [数据库名];</pre><br />
<br />
4.创建一个受限用户<br />
这个用户(testuser)只有一个数据库(这里是test库)的访问写入权限,这个数据库创建与删除表的权限,并且只能在本地登入,密码为userpasswd<br />
<br />
<pre>grant select,insert,update,delete,create,alter on test.* to 'test'@'localhost' IDENTIFIED BY 'userpasswd';</pre><br />
<br />
5.退出数据库<br />
<br />
<pre>quit</pre><br />
<br />
====配置文件(新手、无特殊要求勿动)====<br />
<br />
<pre>sudo nano /etc/mysql/my.cnf<br />
</pre> <br />
这里有一个地方要注意 <br />
默认:是只允许本地访问数据库的'''这里不是说本机架设了网站,用户通过架设在的网页不能访问MySQL ,是指其它机子不能直接访问MySQL '''<br> <br />
<pre>bind-address 127.0.0.1</pre> <br />
解除限制只能本地访问mysql,如果需要其他机器访问,应使用如下语句,把这“bind-address 127.0.0.1”句话用#注释掉 <br />
<pre>#bind-address 127.0.0.1<br />
</pre><br />
<br />
===配置phpmyadmin(没装就不要看)===<br />
<pre>sudo apt-get install phpmyadmin</pre><br />
访问 http://localhost/phpmyadmin ,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin<br> <br />
<br />
你可以把phpmyadmin复制过去 或者 链接过去<br />
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre><br />
然后 终端中运行命令 <br />
<pre>sudo gedit /etc/phpmyadmin/apache.conf<br />
</pre> <br />
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)<br> <br />
<pre>Alias /phpmyadmin /usr/share/phpmyadmin<br />
&lt;Directory /usr/share/phpmyadmin&gt;<br />
</pre> <br />
改为:<br> <br />
<pre>Alias /phpmyadmin /var/www/phpmyadmin<br />
&lt;Directory /var/www/phpmyadmin&gt;</pre><br />
====LAMP到此已经配置完成了====<br />
<br />
== 测试 phpinfo(); (根据需要,自己选择,可不做)==<br />
创建、测试phpinfo:<br />
<pre>sudo vi /var/www/info.php</pre><br />
<pre><?php phpinfo(); ?></pre><br />
打开 http://localhost/info.php 。<br />
{|<br />
|[[Image:Apachephpinfo.png|thumb|center|600px|Apache phpinfo页面]]<br />
|}<br />
==性能优化(根据需要,自己选择,可不做)==<br />
===安装Zend Optimizer===<br />
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照[[PHP5.2]]。<br />
<br />
下载 [http://www.zend.com/en/products/guard/downloads Zend Optimizer]。<br />
直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下<br />
<pre> http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz </pre><br />
<pre>tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz</pre><br />
<pre>cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp<br />
sudo mkdir /usr/local/zend<br />
sudo cp ZendOptimizer.so /usr/local/zend </pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
开头加入,注意标点符号要英文。<br />
<pre>[Zend Optimizer]<br />
zend_optimizer.optimization_level=1 <br />
zend_extension="/usr/local/zend/ZendOptimizer.so"</pre><br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
还是上面那个phpinfo文件,要能看到如下信息<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies</pre><br />
<br />
===安裝XCache===<br />
<pre>sudo apt-get install php5-xcache</pre><br />
<pre>root@ubuntu:/home/qii# dpkg -l | grep xcach<br />
ii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher</pre><br />
xcache配置文件路径是<br />
<pre>/etc/php5/conf.d/xcache.ini</pre><br />
编辑php.ini<br />
<pre>sudo gedit /etc/php5/apache2/php.ini</pre><br />
把xcache.ini的内容加入到php.ini。<br />
重启apache2<br />
<pre>sudo /etc/init.d/apache2 restart </pre><br />
检查安装是否成功<br />
<pre>root@ubuntu:/home/qii# php -v<br />
PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) <br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</pre><br />
还有前面info.php页应该有XCache模块<br />
{|<br />
|[[Image:Apachexcache.png|thumb|center|500px|info页面的XCache模块]]<br />
|}<br />
这里有点奇怪的是,如果不把xcache.ini的内容加入php.ini,apache也能载入XCache,但info.php上没XCache模块。<br />
<br />
===安装eAccelerator===<br />
<pre>sudo apt-get install php5-dev</pre><br />
下载 [http://www.eaccelerator.net/ eAccelerator]<br />
<pre>wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>tar jxvf eaccelerator-0.9.6.1.tar.bz2</pre><br />
<pre>cd eaccelerator-0.9.6.1 </pre><br />
<pre>phpize<br />
sudo ./configure -enable-eaccelerator=shared<br />
sudo make</pre> <br />
<pre>qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make install<br />
Installing shared extensions: /usr/lib/php5/20060613+lfs/<br />
</pre><br />
修改php.ini文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:<br />
<pre>sudo vi /etc/php5/apache2/php.ini</pre><br />
<pre>[eaccelerator]<br />
zend_extension="/usr/lib/php5/20060613+lfs/eaccelerator.so" <br />
eaccelerator.shm_size="16" <br />
eaccelerator.cache_dir="/tmp/eaccelerator" <br />
eaccelerator.enable="1" <br />
eaccelerator.optimizer="1" <br />
eaccelerator.check_mtime="1" <br />
eaccelerator.debug="0" <br />
eaccelerator.filter="" <br />
eaccelerator.shm_max="0" <br />
eaccelerator.shm_ttl="0" <br />
eaccelerator.shm_prune_period="0" <br />
eaccelerator.shm_only="0" <br />
eaccelerator.compress="1" <br />
eaccelerator.compress_level="9" <br />
eaccelerator.allowed_admin_path="/var/www/control.php"</pre><br />
创建cache缓存目录<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" 这里定义cache路径</pre><br />
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。一个更好的地方是/var/cache/eaccelerator。创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。<br />
使用默认值的话这样继续:<br />
<pre>mkdir /tmp/eaccelerator</pre><br />
<pre>chmod 777 /tmp/eaccelerator</pre><br />
改成 /var/cache/eaccelerator的话这样继续,先改php.ini<br />
<pre>eaccelerator.cache_dir="/var/cache/eaccelerator" </pre><br />
<pre>sudo mkdir /var/cache/eaccelerator<br />
sudo chown root:www-data /var/cache/eaccelerator<br />
sudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator</pre><br />
复制控制文件control.php到网站根目录<br />
<pre>sudo cp control.php /var/www/htdocs/</pre><br />
修改control.php的$user和$pw,默认是admin和eAccelerator<br />
<pre>sudo vi /var/www/htdocs/control.php </pre><br />
重启apache<br />
<pre>sudo /etc/init.d/apache2 restart</pre><br />
<br />
打开 http://localhost/control.php<br />
{|<br />
|[[Image:NginxeAcceleratorcontrol.png|thumb|center|500px|eAccelerator control.php页面]]<br />
|}<br />
查看之前的info.php页面,有下列字段:<br />
<pre>This program makes use of the Zend Scripting Language Engine:<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator<br />
</pre><br />
==安全==<br />
== 其他==<br />
<br />
=== PDO的安装<br> ===<br />
<pre>pecl search pdo</pre> <pre>sudo pecl install pdo</pre><pre>sudo pecl install pdo_mysql<br />
</pre> <br />
最后编辑php.ini <br />
<pre><br />
sudo gedit /etc/php5/apache2/php.ini <br />
</pre><br />
再最后面添加两行: <br />
<pre>extension = pdo.so<br />
</pre><pre>extension = pdo_mysql.so<br />
</pre><br />
<nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki><nowiki>在此插入非格式文本</nowiki><nowiki>在此插入非格式文本</nowiki></nowiki></nowiki></nowiki></nowiki><br />
<br />
==排错==<br />
=== 无法解析php文件,浏览器提示下载所要打开的php文件 ===<br />
<br />
执行:<br><br />
<pre><br />
sudo apt-get install libapache2-mod-php5<br />
sudo a2enmod php5</pre><br />
<br><br />
<br />
如果显示为:<br><br />
<pre><br />
This module does not exist!</pre><br />
<br><br />
<br />
那就要彻底删除libapache2-mod-php5,然后重新安装它<br><br />
<pre><br />
sudo apt-get remove --purge libapache2-mod-php5<br />
sudo apt-get install libapache2-mod-php5</pre><br />
重启apache2<br><br />
<pre><br />
sudo /etc/init.d/apache2 restart</pre><br />
清除浏览器缓存,然后输入http:localhost<br><br />
<br />
==虚拟主机==<br />
见[[Apache虚拟主机指南]]<br />
==屏蔽迅雷==<br />
迅雷的user-agent是<br />
<pre>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )<br />
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)<br />
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</pre><br />
通过.htaccess文件屏蔽迅雷的下载/盗链功能:<br />
<pre><br />
RewriteEngine On<br />
<br />
#Anti Thunder<br />
<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$&nbsp; &nbsp;[NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$&nbsp; [NC,OR]<br />
RewriteCond&nbsp; %{HTTP_USER_AGENT}&nbsp; ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$&nbsp; [NC]<br />
RewriteRule&nbsp; ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$&nbsp; &nbsp;/&nbsp; &nbsp;[NC,F]<br />
</pre><br />
你可以用Firefox的扩展[https://addons.mozilla.org/en-US/firefox/addon/59/ user-agent switcher]来测试效果。<br />
<br />
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。<br />
<br />
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。<br />
==参考==<br />
[https://www.deleak.com/blog/2010/07/10/anti-thunder/ anti thunder]<br />
<br />
[[Category:服务器]]<br />
[[Category:数据库]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%AE%BE%E7%BD%AEChroot%E7%8E%AF%E5%A2%83&diff=145740
Apache设置Chroot环境
2011-11-12T01:42:05Z
<p>Lxr1234:/* Apache 服务之 Chroot 环境设置 */</p>
<hr />
<div>== Apache 服务之 Chroot 环境设置 ==<br />
<br />
<br />
本文作者:FireHare<br />
<br />
授权许可:<br />
* [http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0]<br />
* [http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
编辑人员:FireHare<br />
<br />
校对人员:<br />
<br />
适用版本:<br />
<br />
文章状态:<br />
<br />
参考文献:<br />
<br />
----<br />
请大家注意chroot是不安全的,这是设计机制问题,不过可以作为基础安全手段,请参考wikipedia的chroot条目。<br />
现在要安装Chroot环境了,为什么要安装Chroot环境呢?因为它安全,chroot可以把进程的根目录变成不是“/”目录的其他目录。这就意味着该进程被锁定到一个虚拟文件系统的根中。如果你再适当地配置你的chroot jail,Apache和它的子进程(比如CGI脚本)将处于chroot jail环境之外不能访问其他任何东西。同时,非根进程也不能离开chroot jail环境的。(注意:从上面描述我们不难看出把设备文件,被suid的二进制文件以及硬链接放入jail是十分不明智的。原因?因为它们可以破坏 chroot jail环境)<br />
<br />
使用chroot环境有两种方式:一则是常规方式,在该方式下你必须要十分小心地建立一个“虚拟根”,并将程序可能需要的文件给包含进来。一般说来有:<br />
* C 语言库<br />
* 其他的库 (如libssl、libm及libmysqlclient等)<br />
* 解析配置文件(如/etc/nsswitch.conf、/etc/resolv.conf等)<br />
* 用户相关文件 (/etc/passwd, /etc/group)<br />
* 为 log 文件指定目录<br />
* 程序所需的附加模块(如mod_php 和 其他模块)<br />
然后,你得运行程序,读错误信息,拷贝错失的文件,拆腾一通之后,得以运行正常。但还没完,想一下升级时的情形吧,你将不得不保持你当前的“虚拟根”,如果在libssl中有一个Bug,那么你就必须要将新版本放在两个地方。是不是有点吓着了?所幸还有另一种mod_chroot方式。 mod_chroot允许你在一个chroot jail环境里运行Apache2,而无需附加任何文件。chroot()系统会在程序开始引导时是最后被调用,因为Apache2在开始引导期间需要访问整个文件系统 - 那时所有的库文件已被引导并且日志文件也已经被打开。<br />
运行chroot jail环境中的Apache(和CGI/Perl/PHP)是很需要些技巧的。我们下面开始构造我们的chroot环境。首先安装mod-chroot<br />
<pre><nowiki><br />
$sudo apt-get install libapache2-mod-chroot<br />
</nowiki></pre><br />
该包会在/etc/apache2/mod-available/目录中生成一个mod_chroot.load,然后我们制作mod_chroot.conf文件:<br />
<pre><nowiki><br />
ChrootDir /var/www<br />
</nowiki></pre><br />
为使该模块能被引导,可以做该模块的软链接,如果想快点的话,可以用<br />
<pre><nowiki><br />
$sudo a2enmod mod_chroot<br />
</nowiki></pre><br />
然后为了使所有配置都得到改变,运行<br />
<pre><nowiki><br />
$sudo /etc/init.d/apache2 force-reload<br />
</nowiki></pre><br />
但如果这样的话,就存在一个问题,我们的DocumentRoot是/var/www的,现在虚拟根已经指向了/var/www,这样我们就必须将`DocumentRoot`修改成“/”才算正确!所以要修改/etc/apache2/sites-enabled/000-default文件<br />
<pre><nowiki><br />
NameVirtualHost *<br />
<VirtualHost *><br />
ServerAdmin webmaster@localhost<br />
<br />
# DocumentRoot /var/www/<br />
# <Directory /><br />
# Options FollowSymLinks<br />
# AllowOverride None<br />
# </Directory><br />
# <Directory /var/www/><br />
# Options Indexes FollowSymLinks MultiViews<br />
# AllowOverride None<br />
# Order allow,deny<br />
# allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
# </Directory><br />
<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /htdocs><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
# <Directory "/usr/lib/cgi-bin"><br />
# AllowOverride None<br />
# Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
# Order allow,deny<br />
# Allow from all<br />
# </Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
# Alias /doc/ "/usr/share/doc/"<br />
# <Directory "/usr/share/doc/"><br />
# Options Indexes MultiViews FollowSymLinks<br />
# AllowOverride None<br />
# Order deny,allow<br />
# Deny from all<br />
# Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
# </Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
做完了之后,来个$sudo /etc/init.d/apache2 force-reload 重新引导Apache2,成功!高兴,再打开Firefox,地址栏中输入localhost,回答拒绝。??!!<br />
<pre><nowiki><br />
$more /var/log/apache2/error.log<br />
>[Sun Jul 17 11:41:35 2005] [error] (2)No such file or directory: could not create /var/run/apache2.pid<br />
>[Sun Jul 17 11:41:35 2005] [error] apache2: could not log pid to file /var/run/apache2.pid<br />
</nowiki></pre><br />
原来在Apache启动时,由于mod-chroot最后生效,所以apache2.pid的路径是对的,但在mod-chroot生效之后,根已指向了/var/www,那所谓的 /var/run/apache2.pid实际上指的是/var/www /var/run/apache2.pid了,而这个目录是不存在的。这个好办,没有的话创建好了!<br />
<pre><nowiki><br />
$sudo mkdir -p /var/www/var/run<br />
$sudo chown -R root.root /var/www/var/run<br />
$sudo ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid<br />
</nowiki></pre><br />
第三步很重要,为的是保持一致性!<br />
同样的,对`LockFile`也做相同处理<br />
<pre><nowiki><br />
$sudo mkdir -p /var/www/var/lock/apache2<br />
$sudo chown -R root.root /var/www/var/lock/apache2<br />
$sudo ln -s /var/www//var/lock/apache2/accept.lock /var/lock/apache2/accept.lock<br />
</nowiki></pre><br />
如果你还要用到其他的,请参照上面自行修改<br />
然后创建网站的缺省目录<br />
<pre><nowiki><br />
$sudo mkdir /var/www/htdocs<br />
</nowiki></pre><br />
然后来重启一次:<br />
<pre><nowiki><br />
$sudo /etc/init.d/apache2 force-reload<br />
</nowiki></pre><br />
运行正常!<br />
<br />
[[Category:服务器]]<br />
[[Category:系统安全]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&diff=145739
Apache虚拟主机指南
2011-11-12T01:40:20Z
<p>Lxr1234:这些部分先空着,以后慢慢写,主要是要明确有这些功能</p>
<hr />
<div>==基于名字的(通过域名来区分)的虚拟主机==<br />
=== 测试环境= ==<br />
* 操作系统:Ubuntu 10.04<br />
* 测试机地址:10.39.6.59<br />
* 测试机域名:*.firehare.com<br />
<br />
=== 基本配置===<br />
我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:<br />
<pre><nowiki><br />
# Include the virtual host configurations:<br />
Include /etc/apache2/sites-enabled/[^.#]*(10.04版本里无[^.#]*)<br />
</nowiki></pre><br />
这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:<br />
<pre><nowiki><br />
NameVirtualHost 10.39.6.59<br />
<VirtualHost 10.39.6.59><br />
ServerName www.firehare.com<br />
ServerAdmin ubuntu.firehare@gmail.com<br />
<br />
DocumentRoot /var/www/<br />
<Directory /><br />
Options FollowSymLinks<br />
AllowOverride None<br />
</Directory><br />
<Directory /var/www/><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
# This directive allows us to have apache2's default start page<br />
# in /apache2-default/, but still have / go to the right place<br />
# Commented out for Ubuntu<br />
#RedirectMatch ^/$ /apache2-default/<br />
</Directory><br />
<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
<Directory "/usr/lib/cgi-bin"><br />
AllowOverride None<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
<br />
# Possible values include: debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
LogLevel warn<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
ServerSignature On<br />
<br />
Alias /doc/ "/usr/share/doc/"<br />
<Directory "/usr/share/doc/"><br />
Options Indexes MultiViews FollowSymLinks<br />
AllowOverride None<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.0/255.0.0.0 ::1/128<br />
</Directory><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:<br />
* `NameVirtualHost 10.39.6.59`:表示我们要做的是一个基于名称的虚拟主机,且其 IP 地址为 10.39.6.59<br />
* `<VirtualHost 10.39.6.59> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置<br />
* `ServerName www.firehare.com`:设置虚拟主机的域名<br />
* `ServerAdmin ubuntu.firehare@gmail.com`:设置该虚拟主机网管员的邮件<br />
* `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径<br />
* `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息<br />
* `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息<br />
<br />
这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。<br />
<br />
=== 进一步说明 ===<br />
为了说明清楚 我们再添加一个虚拟主机站点 edunuke.firehare.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName edunuke.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
DocumentRoot "/var/www/edunuke/"<br />
ErrorLog "/var/log/apache2/edunuke_errors.log"<br />
CustomLog "/var/log/apache2/edunuke_accesses.log" common <br />
</VirtualHost><br />
</nowiki></pre><br />
设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:<br />
<pre><nowiki><br />
sudo a2ensite edunuke<br />
</nowiki></pre><br />
这样的话,虚拟主机站点 edunuke.firehare.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:<br />
<pre><nowiki><br />
sudo /etc/init.d/apache2 restart 这里可以使用reload 重新加载<br />
</nowiki></pre><br />
这样你在浏览器上输入 edunuke.firehare.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:<br />
<pre><nowiki><br />
sudo a2dissite edunuke<br />
sudo /etc/init.d/apache2 restart<br />
</nowiki></pre><br />
即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。<br />
<br />
=== 高级配置 ===<br />
上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:<br />
<pre><nowiki><br />
sudo a2enmod rewrite<br />
sudo a2enmod proxy<br />
</nowiki></pre><br />
然后,添加虚拟主机站点 plone.firehare.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:<br />
<pre><nowiki><br />
<VirtualHost 10.39.6.59><br />
ServerName plone.firehare.com<br />
ServerAdmin ubuntu.firehare@firehare.com<br />
ErrorLog "/var/log/apache2/plone_errors.log"<br />
CustomLog "/var/log/apache2/plone_accesses.log" common<br />
<br />
RewriteEngine on<br />
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]<br />
<br />
<Proxy *><br />
Order Deny,Allow<br />
Deny from all<br />
Allow from all<br />
</Proxy><br />
<br />
</VirtualHost><br />
</nowiki></pre><br />
这样就安装好了 plone.firehare.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.firehare.com 就可以重定向到 Zope+Plone 站点去了。<br />
==基于端口的虚拟主机==<br />
==基于IP的虚拟主机==<br />
[[Category:服务器]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=OpenSSH%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B&diff=145738
OpenSSH高级教程
2011-11-12T01:37:19Z
<p>Lxr1234:/* 将密匙临时存入内存 */</p>
<hr />
<div>= '''OpenSSH 高级教程''' =<br />
<br />
原文出处:官方Wiki-[https://help.ubuntu.com/community/AdvancedOpenSSH AdvancedOpenSSH] (已经失效) <br />
<br />
原文作者: <br />
<br />
授权许可: <br />
<br />
*[http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0] <br />
*[http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:fiftymetre <br />
<br />
校正人员:millenniumdark <br />
<br />
贡献人员:sighforever lxr1234<br />
<br />
适用版本: <br />
<br />
文章状态:原文丢失<br />
<br />
----<br />
<br />
译者的话:第一次翻译这英文文章,译的不好的地方也许大家包含,我会努力在下一章中尽我所能的提高翻译质量。翻译这篇文章时,还特意找一了本“SSH权威指南”研究了一下,以前在win下都是用SSH Secure Shell来跟ubuntn来传文件的呵呵。但ubuntu6.06桌面版本默认安装却没有安装SSH。 <br />
<br />
----<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
这翻译。。。非常生硬。我改了几句,发现要改的太多了。只好算了。&nbsp; 有的地方把配置文件中的指令都翻译了。这OpenSSH可不懂中文写的配置文件。&nbsp; -- millenniumdark <br />
<br />
要改的地方实在太多,正好我这两天在学这个,一点点改吧&nbsp; -- sighforever <br />
<br />
<br><br />
<br />
= '''简介''' =<br />
<br />
这篇指南在Ubuntu OpenSSH的默认配置基础上,着重介绍了能够大幅增加安全性的高级配置技巧。它详细论述了两方面内容:<br />
#服务器端的特定配置方式;<br />
#通过与明文密码相比较,阐述了利用Rivest Shamir Adleman (RSA) 算法(注1)生成密钥登陆 OpenSSH 服务器的过程。<br> <br />
<br />
<br><br />
<br />
= '''目标读者''' =<br />
<br />
为了能够更好的使用本教程 ,读者应该是一个善于使用命令行程序的Ubuntu用户,能够使用bash环境,并能够在基于控制台的文本编辑器中编辑系统配置文件。另外,读者应该知道如何启动和关闭系统守护进程,并且对OpenSSH程序的安装方式和使用目的有一个大致的了解。 <br />
<br />
<br><br />
<br />
<br><br />
<br />
<h1> <b>关于 OpenSSH</b> </h1><br />
<p>OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。<br /> <br />
</p><p><br /><br />
</p><p><br /><br />
</p><br />
<br />
= '''OpenSSH 服务 (sshd)''' =<br />
<br />
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:''Port 22''), 然后在下一行中使用粗体字 (如:'''Protocol 2''')介绍为了增强安全防护而作的修改。 <br />
<br />
在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令: <br />
<br />
<code><nowiki>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
<code>如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注<br />
意,在/etc/ssh/文件夹下<br />
还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。</code><code></code> <br />
<br />
如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。 <br />
<br />
<code><nowiki>sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。 <br />
<br />
如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
== OpenSSH服务的建议设定 ==<br />
<br />
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。<br> <br />
<br />
=== 登录 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki></nowiki></code>'' ''<tt>LogLevel&nbsp;INFO</tt>''<br />
|}<br />
<br />
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>LogLevel&nbsp;VERBOSE</tt>'''<br />
|}<br />
<br />
<br> 这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。<br />
<br />
=== 验证 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>LoginGraceTime 120</nowiki></code>''<br />
|}<br />
<br />
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>LoginGraceTime 20</nowiki></code>'''<br />
|}<br />
<br />
<br> 将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>X11Forwarding yes</nowiki></code>''<br />
|}<br />
<br />
<br>如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>X11Forwarding no</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,sshd的X11 forwarding功能被关闭了。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconWarning3.png '''警告''': 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#Banner /etc/issue.net</nowiki></code>''<br />
|}<br />
<br />
<br> 显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。 <br />
<br />
<br> <br />
<br />
有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Banner /etc/issue.net</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子: <br />
<br />
使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容: <br />
<pre>***************************************************************************<br />
NOTICE TO USERS<br />
This computer system is the private property of its owner, whether<br />
individual, corporate or government. It is for authorized use only.<br />
Users (authorized or unauthorized) have no explicit or implicit<br />
expectation of privacy.<br />
Any or all uses of this system and all files on this system may be<br />
intercepted, monitored, recorded, copied, audited, inspected, and<br />
disclosed to your employer, to authorized site, government, and law<br />
enforcement personnel, as well as authorized officials of government<br />
agencies, both domestic and foreign.<br />
By using this system, the user consents to such interception, monitoring,<br />
recording, copying, auditing, inspection, and disclosure at the<br />
discretion of such personnel or officials. Unauthorized or improper use<br />
of this system may result in civil and criminal penalties and<br />
administrative or disciplinary action, as appropriate. By continuing to<br />
use this system you indicate your awareness of and consent to these terms<br />
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the<br />
conditions stated in this warning.<br />
****************************************************************************<br />
</pre> <br />
<code><nowiki>保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:</nowiki></code> <br />
<br />
<code><nowiki>sudo ln -s /etc/issue /etc/issue.net</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息"你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。 <br />
<br />
另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。<br />
<br />
= '''进一步的配置技巧''' =<br />
<br />
下面的内容是一些额外的暗示和一些配置一个更加安全的openssh安装的技巧,这些技巧利用一些不包含在默认的ubuntussh配置文件中的指令,并且提出其他加强你的ssh安装安全的方法。 <br />
<br />
==== 允许和拒绝用户和用户组 ====<br />
<br />
在配置文件中你可以使用一些指令来允许或者拒绝一些特定用户或者用户组用ssh登陆.这个方法更加细致的控制哪些人可以通过ssh来进入你的Ubuntu电脑。 <br />
<br />
例如,如果你想只允许jhendrix和svaughan通过ssh登陆,你可以向这样在你的/etc/ssh中使用allowusers指令。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>AllowUsers</tt>'''''' jhendrix svaughan'''<br />
|}<br />
<br />
<br> 如果你不想让所有用户能过 ssh 登陆,除了使用者 wgates,或sballmer然后你可以使用DenyUsers命令添加到/etc/ssh/sshd_config中,像这样: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>DenyUsers</tt>''''''wgates sballmer'''<br />
|}<br />
<br />
<br> 最后,再看一个例子,你可以这样配置你的OpenSSH服务,只有用户属于系统组才允许通过ssh 登录。在这个例子中,我们将执行一些必要手段只允许SSH的用户都是小组成员sshlogin。 <br />
<br />
<code><nowiki>sudo addgroup --gid 450 sshlogin</nowiki></code> <br />
<br />
<code><nowiki>sudo adduser <username> sshlogin</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
在以上的例子中是用'&lt;username&gt;'代替你的用户名加入到sshlogin系统组。最后,编辑你的 /etc/ssh/sshd_config,并增添allowgroups指令: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>AllowGroups sshlogin</nowiki></code>'''<br />
|}<br />
<br />
<br> 重新启动 sshd,并且只有属于sshlogin组的用户才可以通过ssh 登录到你的Ubuntu计算机。<br />
<br />
==== 启动 sshd来监听不同的端口 ====<br />
<br />
由于近来自动扫描ssh和暴力攻击工具的大量增长,很多装有ssh的用户和管理员决定给ssh用一个非标准的tcp端口,标准的sshd侦听端口是 tcp/22,并且暴力扫描攻击工具都典型的被配置成侦听这个端口用来查找后门。 <br />
<br />
尽管从使用简单密码的ssh登陆切换到使用基于键盘方式的登陆,就象在指南中下部分我们要讨论的显著减少了自动工具猜测出一个正确的在你的系统的登陆的机会,一些人觉得加入更多偏僻字的层数可能更会增强安全性。 <br />
<br />
如果你曾考虑过在非标准端口上运行的你的sshd分支,例如一个常量需要使用-p或者-P来切换不同的ssh工具,或者通过修改配置文件这种更长久的方式来检验端口改变的正确,并且接受那些协议,然后改变侦听端口是十分琐碎的。 <br />
<br />
仅仅增加一个或更多的端口在你的 /etc/ssh/sshd_config 文件中,因此: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
如果你希望侦听tcp/22,和tcp/2222端口,例如,局域网连接使用传统方式,但外部连接使用tcp/2222端口。要完成这些,不需要在你的路由器配置网络地址翻译规则或者类似的东西,只要增加这2条指令到 /etc/ssh/sshd_cfig:&nbsp; <br><br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 22</nowiki></code>'''<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要忘记保存文件,和重新启动你的sshd指令: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
使改变生效。 <br />
<br />
= '''基于RSA key登陆''' =<br />
<br />
基于key的授权是可用的ssh授权方法中的一种,因此简单的密码(Ubuntu默认密码)和Kerberos标签。基于Key的验证的几个优点比密码验证更好,至于例子这个key的值就十分明显的很难被暴力破解,或以大量的关键字为条件来猜测弱密码。 <br />
<br />
数字键也是如此,是对极其相似事物的一个比方,所以可以在可能出现弱密码的地方显示密码安全的程度。使用基于Key登录的ssh 是比使用弱密码的登录,普遍认为更安全的。 <br />
[[File:<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png]] ''注解''''':''' ''同时生成一套能够使用openssh的RSA key而不需要密码是可能的,简单讲,通过ssh登陆不要密码,这个指导书没有描述或者认定这种用法是很不安全的.如果这个缺少密码的key落入其他人手 中,就如你的授权一样,应此所有允许这些key的系统安全都很容易受到威胁,在一些情况下,例如不安全的群环境中,需要有完全没有密码的登陆,但是,这本书没有解释制造这种key的过程。'' <br />
<br />
' <br />
<br />
这部分将说明启动基本Key登录的ssh ,生成一套公有/私有RSA密匙,并使用它们由OpenSSH登录你的Ubuntu计算机。 <br />
<br />
注意:Key是在本地(客户机)生成的,并且传输到远程计算机(服务器)上,用于在本地(客户机)登入到远程计算机(服务器)。<br />
<br />
==== 生成 RSA 密匙 ====<br />
<br />
第一步包括生成一组用于验证的RSA 密匙。代表性意思是,你将在想要通过某台电脑去远程登陆其他电脑的这台机器上做这些事情,但是这不是非常重要,因为你总是可以到处把你的密匙安装到需要的机器上。到生成一个RSA 公有/私有密匙,使用下列命令行: <br />
<br />
<code><nowiki>b@tsh:~$ ssh-keygen -t rsa</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
你必须在一个位置保存你的密匙,和一串对应于你的密匙的passphrase(密码短语口令)注5。当选择passphrase对于密匙时,应选择非常坚 固的passphrase,和便于记忆的,和记录它的位置的安全。这passphrase必须使用钥匙,在每次你要登录到一个基于密匙的系统: <br />
<pre>生成公有/私有RSA密匙对。<br />
进入保证密匙的文件(/home/b/.ssh/id_rsa):<br />
进入passphrase(empty for no passphrase):<br />
再次进入同一passphrase:<br />
你的验证文件保存在/home/b/.ssh/id_rsa.<br />
你的公有密匙保存在 /home/b/.ssh/id_rsa.pub.<br />
</pre> <br />
祝贺你现在已经有了密匙组。现在布置你的系统已允许你的登录它们。 <br />
<br />
==== 在远程电脑寄存密匙 ====<br />
<br />
假设你想使用key的远程ubuntu已经运行了ssh后台程序,接下来放置你自己key对的公共部分在那些电脑上是十分简单的,例如,如果你喜欢开始用基于key的方式登陆一个叫madsion的远程电脑,并且madsion正在运行sshd,并且能够用名字通过网络来到达这台机器,就可以很简单的用sshcopy这个命令来恰当的放置你的key: <code><nowiki>b@tsh:~$ssh-copy-id -i ~/.ssh/id_rsa.pub b@madison</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
==== 登录测试 ====<br />
<br />
接下来, 你将要登录测试,配置连接到机器并使用你的passphrase来解开密匙: <br />
<br />
<code><nowiki>b@tsh:~$ssh madison</nowiki></code> <br />
<br />
你会看到一个要你给出key的passphrase的命令提示符: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| Enter passphrase for key '/home/b/.ssh/id_rsa':<br />
|}<br />
<br />
<br> 输入你的passphrase,并把madison设置为允许从基于密匙的登录,你将要使用它登录。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png '''''注解'':''' 上述的例子只是:一个例子!代替用户名,在这个例子中,机器名用你自己实际的名字是为了增加你成功的机会。&nbsp;;-) <br />
<br />
== '''疑难解答''' ==<br />
<br />
如果你不是被提示要求passphrase,而是仅仅得到 <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| b@madison's password:<br />
|}<br />
<br />
<br> 提示同样使用密码登录,然后读取。有一些情况可以预防向上面提到的这种情况。在默认的Ubuntu安装里,上面的例子能够运行。如果不,下列各项条件,例如这些时常发生的原因: <br />
<br />
在远程计算机上,确认 /etc/ssh/sshd_config包含下列各项,和删除它们的注解; <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
|}<br />
<br />
<br> 如果已经加它们,或已删除注解,那么重要启动sshd,并重新再试一个登录。如果你现在得到了passphrase的提示,那要祝贺你可以用密匙登录了!<br />
<br />
== '''SSH远程登录''' ==<br />
<br />
如过你已经成功建立了一个基于RAS密匙的登陆,你可能希望这是你Ubuntu系统上唯一可接受的授权方式,完全放弃弱密码授权.按照这个路线,将能确保自动暴力扫描和攻击工具对你的公共系统攻击更加困难,提前提醒,你一旦丢失了密匙,你会发现你自己也被关在系统外面! <br />
<br />
从通知你的sshd不允许弱密码,到只是简单的使用sudo和你喜欢的编辑软件编辑 /etc/ssh/sshd_config,修改下例选项: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#PasswordAuthentication yes</nowiki></code>''<br />
|}<br />
<br />
<br> 删去注释,修改 ''yes'' 为 ''no'': <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PasswordAuthentication no</nowiki></code>'''<br />
|}<br />
<br />
<br> 保存文件,并重新启动sshd以使弱密码验证无效。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconDialog-Warning1.png '''警告'''&nbsp;: 第二次警告,使弱密码验证无效行为,和没有使用密匙登录,或丢失了你的密匙,你并被锁在你的机器外面了。当然,你仍然可以经过控制台登录机器上,但这可能不是那么容易,如果你的电脑是500哩远呢!你已被再次警告这样是不行的''!'' <br />
<br />
此外,你可以改变允许使用基于密匙的登录的登录指令,到执行策略为以基于密码的登录。你可以做这个通过改变: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>PermitRootLogin yes</nowiki></code>''<br />
|}<br />
<br />
<br> to <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PermitRootLogin without-password</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要由于没有密码而被警告.这并不意味着一个人用root登陆的时候不需要提供密码,仅仅相当,这意味着没有人可以用密码认证的方法使用root来登陆,意味着用root登陆的时候可能只能使用公共密匙方式登陆。<br />
<br />
===将密匙临时存入内存===<br />
如果一时间需要频繁地进行远程连接,可以考虑将密匙存入内存,之后所有的连接都不需要密匙了<br><br />
<code>ssh-agent<br />
ssh-add<br />
</code><br><br />
结束时,使用如下方法清除它<br><br />
<code><br />
ssh-add -D</code><br />
<br />
= '''资源''' =<br />
<br />
更多资源与高级配置OpenSSH的安全性在以下表格中。 <br />
<br />
==== 本地系统资源 ====<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>man sshd</nowiki></code> <br />
| System manual page for the <code><nowiki>sshd</nowiki></code> server daemon<br />
|-<br />
| <code><nowiki>man sshd_config</nowiki></code> <br />
| System manual page for the <code><nowiki>/etc/ssh/sshd_config</nowiki></code> configuration file<br />
|-<br />
| <code><nowiki>man ssh-copy-id</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-copy-id</nowiki></code> application<br />
|-<br />
| <code><nowiki>man ssh-keygen</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-keygen</nowiki></code> application<br />
|-<br />
| <code><nowiki>/etc/ssh/sshd_config</nowiki></code> <br />
| The OpenSSH Secure Shell Daemon (<code><nowiki>sshd</nowiki></code>) configuration file<br />
|}<br />
<br />
==== WWW Resources ====<br />
<br />
[http://www.debian-administration.org/articles/87 Keeping SSH access secure] <br />
<br />
[http://www.openssh.org/ OpenSSH Website] <br />
<br />
[http://www.debian-administration.org/articles/152 Password-less logins with OpenSSH] <br />
<br />
注1: 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 <br />
<br />
注2: (rcp) 远端复制协议。该协议允许用户从网络的一个远端主机或者服务器上的文件系统中上载和下载文件。远端复制协议使用TCP协议来确保数据传输的可靠性。 <br />
<br />
注3: 原处为"inetd" 意思就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。 <br />
<br />
注4: xinetd(eXtended InterNET services daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。 <br />
<br />
注5: 相对“密码”(password)而言,密码短语(passphrase)口令以其更为严密的安全性正受到IT界的广泛关注。在功能上,passphrase同密码一样,只是长度较密码长。通常passphrase使用4到5个单词取代原来数字、字母结合的方式。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=OpenSSH%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B&diff=145737
OpenSSH高级教程
2011-11-12T01:36:45Z
<p>Lxr1234:/* 将密匙临时存入内存 */</p>
<hr />
<div>= '''OpenSSH 高级教程''' =<br />
<br />
原文出处:官方Wiki-[https://help.ubuntu.com/community/AdvancedOpenSSH AdvancedOpenSSH] (已经失效) <br />
<br />
原文作者: <br />
<br />
授权许可: <br />
<br />
*[http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0] <br />
*[http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:fiftymetre <br />
<br />
校正人员:millenniumdark <br />
<br />
贡献人员:sighforever lxr1234<br />
<br />
适用版本: <br />
<br />
文章状态:原文丢失<br />
<br />
----<br />
<br />
译者的话:第一次翻译这英文文章,译的不好的地方也许大家包含,我会努力在下一章中尽我所能的提高翻译质量。翻译这篇文章时,还特意找一了本“SSH权威指南”研究了一下,以前在win下都是用SSH Secure Shell来跟ubuntn来传文件的呵呵。但ubuntu6.06桌面版本默认安装却没有安装SSH。 <br />
<br />
----<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
这翻译。。。非常生硬。我改了几句,发现要改的太多了。只好算了。&nbsp; 有的地方把配置文件中的指令都翻译了。这OpenSSH可不懂中文写的配置文件。&nbsp; -- millenniumdark <br />
<br />
要改的地方实在太多,正好我这两天在学这个,一点点改吧&nbsp; -- sighforever <br />
<br />
<br><br />
<br />
= '''简介''' =<br />
<br />
这篇指南在Ubuntu OpenSSH的默认配置基础上,着重介绍了能够大幅增加安全性的高级配置技巧。它详细论述了两方面内容:<br />
#服务器端的特定配置方式;<br />
#通过与明文密码相比较,阐述了利用Rivest Shamir Adleman (RSA) 算法(注1)生成密钥登陆 OpenSSH 服务器的过程。<br> <br />
<br />
<br><br />
<br />
= '''目标读者''' =<br />
<br />
为了能够更好的使用本教程 ,读者应该是一个善于使用命令行程序的Ubuntu用户,能够使用bash环境,并能够在基于控制台的文本编辑器中编辑系统配置文件。另外,读者应该知道如何启动和关闭系统守护进程,并且对OpenSSH程序的安装方式和使用目的有一个大致的了解。 <br />
<br />
<br><br />
<br />
<br><br />
<br />
<h1> <b>关于 OpenSSH</b> </h1><br />
<p>OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。<br /> <br />
</p><p><br /><br />
</p><p><br /><br />
</p><br />
<br />
= '''OpenSSH 服务 (sshd)''' =<br />
<br />
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:''Port 22''), 然后在下一行中使用粗体字 (如:'''Protocol 2''')介绍为了增强安全防护而作的修改。 <br />
<br />
在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令: <br />
<br />
<code><nowiki>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
<code>如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注<br />
意,在/etc/ssh/文件夹下<br />
还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。</code><code></code> <br />
<br />
如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。 <br />
<br />
<code><nowiki>sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。 <br />
<br />
如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
== OpenSSH服务的建议设定 ==<br />
<br />
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。<br> <br />
<br />
=== 登录 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki></nowiki></code>'' ''<tt>LogLevel&nbsp;INFO</tt>''<br />
|}<br />
<br />
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>LogLevel&nbsp;VERBOSE</tt>'''<br />
|}<br />
<br />
<br> 这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。<br />
<br />
=== 验证 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>LoginGraceTime 120</nowiki></code>''<br />
|}<br />
<br />
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>LoginGraceTime 20</nowiki></code>'''<br />
|}<br />
<br />
<br> 将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>X11Forwarding yes</nowiki></code>''<br />
|}<br />
<br />
<br>如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>X11Forwarding no</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,sshd的X11 forwarding功能被关闭了。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconWarning3.png '''警告''': 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#Banner /etc/issue.net</nowiki></code>''<br />
|}<br />
<br />
<br> 显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。 <br />
<br />
<br> <br />
<br />
有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Banner /etc/issue.net</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子: <br />
<br />
使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容: <br />
<pre>***************************************************************************<br />
NOTICE TO USERS<br />
This computer system is the private property of its owner, whether<br />
individual, corporate or government. It is for authorized use only.<br />
Users (authorized or unauthorized) have no explicit or implicit<br />
expectation of privacy.<br />
Any or all uses of this system and all files on this system may be<br />
intercepted, monitored, recorded, copied, audited, inspected, and<br />
disclosed to your employer, to authorized site, government, and law<br />
enforcement personnel, as well as authorized officials of government<br />
agencies, both domestic and foreign.<br />
By using this system, the user consents to such interception, monitoring,<br />
recording, copying, auditing, inspection, and disclosure at the<br />
discretion of such personnel or officials. Unauthorized or improper use<br />
of this system may result in civil and criminal penalties and<br />
administrative or disciplinary action, as appropriate. By continuing to<br />
use this system you indicate your awareness of and consent to these terms<br />
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the<br />
conditions stated in this warning.<br />
****************************************************************************<br />
</pre> <br />
<code><nowiki>保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:</nowiki></code> <br />
<br />
<code><nowiki>sudo ln -s /etc/issue /etc/issue.net</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息"你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。 <br />
<br />
另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。<br />
<br />
= '''进一步的配置技巧''' =<br />
<br />
下面的内容是一些额外的暗示和一些配置一个更加安全的openssh安装的技巧,这些技巧利用一些不包含在默认的ubuntussh配置文件中的指令,并且提出其他加强你的ssh安装安全的方法。 <br />
<br />
==== 允许和拒绝用户和用户组 ====<br />
<br />
在配置文件中你可以使用一些指令来允许或者拒绝一些特定用户或者用户组用ssh登陆.这个方法更加细致的控制哪些人可以通过ssh来进入你的Ubuntu电脑。 <br />
<br />
例如,如果你想只允许jhendrix和svaughan通过ssh登陆,你可以向这样在你的/etc/ssh中使用allowusers指令。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>AllowUsers</tt>'''''' jhendrix svaughan'''<br />
|}<br />
<br />
<br> 如果你不想让所有用户能过 ssh 登陆,除了使用者 wgates,或sballmer然后你可以使用DenyUsers命令添加到/etc/ssh/sshd_config中,像这样: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>DenyUsers</tt>''''''wgates sballmer'''<br />
|}<br />
<br />
<br> 最后,再看一个例子,你可以这样配置你的OpenSSH服务,只有用户属于系统组才允许通过ssh 登录。在这个例子中,我们将执行一些必要手段只允许SSH的用户都是小组成员sshlogin。 <br />
<br />
<code><nowiki>sudo addgroup --gid 450 sshlogin</nowiki></code> <br />
<br />
<code><nowiki>sudo adduser <username> sshlogin</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
在以上的例子中是用'&lt;username&gt;'代替你的用户名加入到sshlogin系统组。最后,编辑你的 /etc/ssh/sshd_config,并增添allowgroups指令: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>AllowGroups sshlogin</nowiki></code>'''<br />
|}<br />
<br />
<br> 重新启动 sshd,并且只有属于sshlogin组的用户才可以通过ssh 登录到你的Ubuntu计算机。<br />
<br />
==== 启动 sshd来监听不同的端口 ====<br />
<br />
由于近来自动扫描ssh和暴力攻击工具的大量增长,很多装有ssh的用户和管理员决定给ssh用一个非标准的tcp端口,标准的sshd侦听端口是 tcp/22,并且暴力扫描攻击工具都典型的被配置成侦听这个端口用来查找后门。 <br />
<br />
尽管从使用简单密码的ssh登陆切换到使用基于键盘方式的登陆,就象在指南中下部分我们要讨论的显著减少了自动工具猜测出一个正确的在你的系统的登陆的机会,一些人觉得加入更多偏僻字的层数可能更会增强安全性。 <br />
<br />
如果你曾考虑过在非标准端口上运行的你的sshd分支,例如一个常量需要使用-p或者-P来切换不同的ssh工具,或者通过修改配置文件这种更长久的方式来检验端口改变的正确,并且接受那些协议,然后改变侦听端口是十分琐碎的。 <br />
<br />
仅仅增加一个或更多的端口在你的 /etc/ssh/sshd_config 文件中,因此: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
如果你希望侦听tcp/22,和tcp/2222端口,例如,局域网连接使用传统方式,但外部连接使用tcp/2222端口。要完成这些,不需要在你的路由器配置网络地址翻译规则或者类似的东西,只要增加这2条指令到 /etc/ssh/sshd_cfig:&nbsp; <br><br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 22</nowiki></code>'''<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要忘记保存文件,和重新启动你的sshd指令: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
使改变生效。 <br />
<br />
= '''基于RSA key登陆''' =<br />
<br />
基于key的授权是可用的ssh授权方法中的一种,因此简单的密码(Ubuntu默认密码)和Kerberos标签。基于Key的验证的几个优点比密码验证更好,至于例子这个key的值就十分明显的很难被暴力破解,或以大量的关键字为条件来猜测弱密码。 <br />
<br />
数字键也是如此,是对极其相似事物的一个比方,所以可以在可能出现弱密码的地方显示密码安全的程度。使用基于Key登录的ssh 是比使用弱密码的登录,普遍认为更安全的。 <br />
[[File:<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png]] ''注解''''':''' ''同时生成一套能够使用openssh的RSA key而不需要密码是可能的,简单讲,通过ssh登陆不要密码,这个指导书没有描述或者认定这种用法是很不安全的.如果这个缺少密码的key落入其他人手 中,就如你的授权一样,应此所有允许这些key的系统安全都很容易受到威胁,在一些情况下,例如不安全的群环境中,需要有完全没有密码的登陆,但是,这本书没有解释制造这种key的过程。'' <br />
<br />
' <br />
<br />
这部分将说明启动基本Key登录的ssh ,生成一套公有/私有RSA密匙,并使用它们由OpenSSH登录你的Ubuntu计算机。 <br />
<br />
注意:Key是在本地(客户机)生成的,并且传输到远程计算机(服务器)上,用于在本地(客户机)登入到远程计算机(服务器)。<br />
<br />
==== 生成 RSA 密匙 ====<br />
<br />
第一步包括生成一组用于验证的RSA 密匙。代表性意思是,你将在想要通过某台电脑去远程登陆其他电脑的这台机器上做这些事情,但是这不是非常重要,因为你总是可以到处把你的密匙安装到需要的机器上。到生成一个RSA 公有/私有密匙,使用下列命令行: <br />
<br />
<code><nowiki>b@tsh:~$ ssh-keygen -t rsa</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
你必须在一个位置保存你的密匙,和一串对应于你的密匙的passphrase(密码短语口令)注5。当选择passphrase对于密匙时,应选择非常坚 固的passphrase,和便于记忆的,和记录它的位置的安全。这passphrase必须使用钥匙,在每次你要登录到一个基于密匙的系统: <br />
<pre>生成公有/私有RSA密匙对。<br />
进入保证密匙的文件(/home/b/.ssh/id_rsa):<br />
进入passphrase(empty for no passphrase):<br />
再次进入同一passphrase:<br />
你的验证文件保存在/home/b/.ssh/id_rsa.<br />
你的公有密匙保存在 /home/b/.ssh/id_rsa.pub.<br />
</pre> <br />
祝贺你现在已经有了密匙组。现在布置你的系统已允许你的登录它们。 <br />
<br />
==== 在远程电脑寄存密匙 ====<br />
<br />
假设你想使用key的远程ubuntu已经运行了ssh后台程序,接下来放置你自己key对的公共部分在那些电脑上是十分简单的,例如,如果你喜欢开始用基于key的方式登陆一个叫madsion的远程电脑,并且madsion正在运行sshd,并且能够用名字通过网络来到达这台机器,就可以很简单的用sshcopy这个命令来恰当的放置你的key: <code><nowiki>b@tsh:~$ssh-copy-id -i ~/.ssh/id_rsa.pub b@madison</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
==== 登录测试 ====<br />
<br />
接下来, 你将要登录测试,配置连接到机器并使用你的passphrase来解开密匙: <br />
<br />
<code><nowiki>b@tsh:~$ssh madison</nowiki></code> <br />
<br />
你会看到一个要你给出key的passphrase的命令提示符: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| Enter passphrase for key '/home/b/.ssh/id_rsa':<br />
|}<br />
<br />
<br> 输入你的passphrase,并把madison设置为允许从基于密匙的登录,你将要使用它登录。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png '''''注解'':''' 上述的例子只是:一个例子!代替用户名,在这个例子中,机器名用你自己实际的名字是为了增加你成功的机会。&nbsp;;-) <br />
<br />
== '''疑难解答''' ==<br />
<br />
如果你不是被提示要求passphrase,而是仅仅得到 <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| b@madison's password:<br />
|}<br />
<br />
<br> 提示同样使用密码登录,然后读取。有一些情况可以预防向上面提到的这种情况。在默认的Ubuntu安装里,上面的例子能够运行。如果不,下列各项条件,例如这些时常发生的原因: <br />
<br />
在远程计算机上,确认 /etc/ssh/sshd_config包含下列各项,和删除它们的注解; <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
|}<br />
<br />
<br> 如果已经加它们,或已删除注解,那么重要启动sshd,并重新再试一个登录。如果你现在得到了passphrase的提示,那要祝贺你可以用密匙登录了!<br />
<br />
== '''SSH远程登录''' ==<br />
<br />
如过你已经成功建立了一个基于RAS密匙的登陆,你可能希望这是你Ubuntu系统上唯一可接受的授权方式,完全放弃弱密码授权.按照这个路线,将能确保自动暴力扫描和攻击工具对你的公共系统攻击更加困难,提前提醒,你一旦丢失了密匙,你会发现你自己也被关在系统外面! <br />
<br />
从通知你的sshd不允许弱密码,到只是简单的使用sudo和你喜欢的编辑软件编辑 /etc/ssh/sshd_config,修改下例选项: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#PasswordAuthentication yes</nowiki></code>''<br />
|}<br />
<br />
<br> 删去注释,修改 ''yes'' 为 ''no'': <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PasswordAuthentication no</nowiki></code>'''<br />
|}<br />
<br />
<br> 保存文件,并重新启动sshd以使弱密码验证无效。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconDialog-Warning1.png '''警告'''&nbsp;: 第二次警告,使弱密码验证无效行为,和没有使用密匙登录,或丢失了你的密匙,你并被锁在你的机器外面了。当然,你仍然可以经过控制台登录机器上,但这可能不是那么容易,如果你的电脑是500哩远呢!你已被再次警告这样是不行的''!'' <br />
<br />
此外,你可以改变允许使用基于密匙的登录的登录指令,到执行策略为以基于密码的登录。你可以做这个通过改变: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>PermitRootLogin yes</nowiki></code>''<br />
|}<br />
<br />
<br> to <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PermitRootLogin without-password</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要由于没有密码而被警告.这并不意味着一个人用root登陆的时候不需要提供密码,仅仅相当,这意味着没有人可以用密码认证的方法使用root来登陆,意味着用root登陆的时候可能只能使用公共密匙方式登陆。<br />
<br />
===将密匙临时存入内存===<br />
如果一时间需要频繁地进行远程连接,可以考虑将密匙存入内存,之后所有的连接都不需要密匙了<br><br />
<code>ssh-agent<br />
ssh-add<br />
</code><br><br />
结束时,使用如下方法清楚它<br><br />
<code><br />
ssh-add -D</code><br />
<br />
= '''资源''' =<br />
<br />
更多资源与高级配置OpenSSH的安全性在以下表格中。 <br />
<br />
==== 本地系统资源 ====<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>man sshd</nowiki></code> <br />
| System manual page for the <code><nowiki>sshd</nowiki></code> server daemon<br />
|-<br />
| <code><nowiki>man sshd_config</nowiki></code> <br />
| System manual page for the <code><nowiki>/etc/ssh/sshd_config</nowiki></code> configuration file<br />
|-<br />
| <code><nowiki>man ssh-copy-id</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-copy-id</nowiki></code> application<br />
|-<br />
| <code><nowiki>man ssh-keygen</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-keygen</nowiki></code> application<br />
|-<br />
| <code><nowiki>/etc/ssh/sshd_config</nowiki></code> <br />
| The OpenSSH Secure Shell Daemon (<code><nowiki>sshd</nowiki></code>) configuration file<br />
|}<br />
<br />
==== WWW Resources ====<br />
<br />
[http://www.debian-administration.org/articles/87 Keeping SSH access secure] <br />
<br />
[http://www.openssh.org/ OpenSSH Website] <br />
<br />
[http://www.debian-administration.org/articles/152 Password-less logins with OpenSSH] <br />
<br />
注1: 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 <br />
<br />
注2: (rcp) 远端复制协议。该协议允许用户从网络的一个远端主机或者服务器上的文件系统中上载和下载文件。远端复制协议使用TCP协议来确保数据传输的可靠性。 <br />
<br />
注3: 原处为"inetd" 意思就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。 <br />
<br />
注4: xinetd(eXtended InterNET services daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。 <br />
<br />
注5: 相对“密码”(password)而言,密码短语(passphrase)口令以其更为严密的安全性正受到IT界的广泛关注。在功能上,passphrase同密码一样,只是长度较密码长。通常passphrase使用4到5个单词取代原来数字、字母结合的方式。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=OpenSSH%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B&diff=145736
OpenSSH高级教程
2011-11-12T01:34:16Z
<p>Lxr1234:/* 基于RSA key登陆 */</p>
<hr />
<div>= '''OpenSSH 高级教程''' =<br />
<br />
原文出处:官方Wiki-[https://help.ubuntu.com/community/AdvancedOpenSSH AdvancedOpenSSH] (已经失效) <br />
<br />
原文作者: <br />
<br />
授权许可: <br />
<br />
*[http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0] <br />
*[http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:fiftymetre <br />
<br />
校正人员:millenniumdark <br />
<br />
贡献人员:sighforever lxr1234<br />
<br />
适用版本: <br />
<br />
文章状态:原文丢失<br />
<br />
----<br />
<br />
译者的话:第一次翻译这英文文章,译的不好的地方也许大家包含,我会努力在下一章中尽我所能的提高翻译质量。翻译这篇文章时,还特意找一了本“SSH权威指南”研究了一下,以前在win下都是用SSH Secure Shell来跟ubuntn来传文件的呵呵。但ubuntu6.06桌面版本默认安装却没有安装SSH。 <br />
<br />
----<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
这翻译。。。非常生硬。我改了几句,发现要改的太多了。只好算了。&nbsp; 有的地方把配置文件中的指令都翻译了。这OpenSSH可不懂中文写的配置文件。&nbsp; -- millenniumdark <br />
<br />
要改的地方实在太多,正好我这两天在学这个,一点点改吧&nbsp; -- sighforever <br />
<br />
<br><br />
<br />
= '''简介''' =<br />
<br />
这篇指南在Ubuntu OpenSSH的默认配置基础上,着重介绍了能够大幅增加安全性的高级配置技巧。它详细论述了两方面内容:<br />
#服务器端的特定配置方式;<br />
#通过与明文密码相比较,阐述了利用Rivest Shamir Adleman (RSA) 算法(注1)生成密钥登陆 OpenSSH 服务器的过程。<br> <br />
<br />
<br><br />
<br />
= '''目标读者''' =<br />
<br />
为了能够更好的使用本教程 ,读者应该是一个善于使用命令行程序的Ubuntu用户,能够使用bash环境,并能够在基于控制台的文本编辑器中编辑系统配置文件。另外,读者应该知道如何启动和关闭系统守护进程,并且对OpenSSH程序的安装方式和使用目的有一个大致的了解。 <br />
<br />
<br><br />
<br />
<br><br />
<br />
<h1> <b>关于 OpenSSH</b> </h1><br />
<p>OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。<br /> <br />
</p><p><br /><br />
</p><p><br /><br />
</p><br />
<br />
= '''OpenSSH 服务 (sshd)''' =<br />
<br />
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:''Port 22''), 然后在下一行中使用粗体字 (如:'''Protocol 2''')介绍为了增强安全防护而作的修改。 <br />
<br />
在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令: <br />
<br />
<code><nowiki>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
<code>如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注<br />
意,在/etc/ssh/文件夹下<br />
还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。</code><code></code> <br />
<br />
如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。 <br />
<br />
<code><nowiki>sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。 <br />
<br />
如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
== OpenSSH服务的建议设定 ==<br />
<br />
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。<br> <br />
<br />
=== 登录 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki></nowiki></code>'' ''<tt>LogLevel&nbsp;INFO</tt>''<br />
|}<br />
<br />
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>LogLevel&nbsp;VERBOSE</tt>'''<br />
|}<br />
<br />
<br> 这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。<br />
<br />
=== 验证 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>LoginGraceTime 120</nowiki></code>''<br />
|}<br />
<br />
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>LoginGraceTime 20</nowiki></code>'''<br />
|}<br />
<br />
<br> 将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>X11Forwarding yes</nowiki></code>''<br />
|}<br />
<br />
<br>如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>X11Forwarding no</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,sshd的X11 forwarding功能被关闭了。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconWarning3.png '''警告''': 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#Banner /etc/issue.net</nowiki></code>''<br />
|}<br />
<br />
<br> 显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。 <br />
<br />
<br> <br />
<br />
有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Banner /etc/issue.net</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子: <br />
<br />
使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容: <br />
<pre>***************************************************************************<br />
NOTICE TO USERS<br />
This computer system is the private property of its owner, whether<br />
individual, corporate or government. It is for authorized use only.<br />
Users (authorized or unauthorized) have no explicit or implicit<br />
expectation of privacy.<br />
Any or all uses of this system and all files on this system may be<br />
intercepted, monitored, recorded, copied, audited, inspected, and<br />
disclosed to your employer, to authorized site, government, and law<br />
enforcement personnel, as well as authorized officials of government<br />
agencies, both domestic and foreign.<br />
By using this system, the user consents to such interception, monitoring,<br />
recording, copying, auditing, inspection, and disclosure at the<br />
discretion of such personnel or officials. Unauthorized or improper use<br />
of this system may result in civil and criminal penalties and<br />
administrative or disciplinary action, as appropriate. By continuing to<br />
use this system you indicate your awareness of and consent to these terms<br />
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the<br />
conditions stated in this warning.<br />
****************************************************************************<br />
</pre> <br />
<code><nowiki>保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:</nowiki></code> <br />
<br />
<code><nowiki>sudo ln -s /etc/issue /etc/issue.net</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息"你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。 <br />
<br />
另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。<br />
<br />
= '''进一步的配置技巧''' =<br />
<br />
下面的内容是一些额外的暗示和一些配置一个更加安全的openssh安装的技巧,这些技巧利用一些不包含在默认的ubuntussh配置文件中的指令,并且提出其他加强你的ssh安装安全的方法。 <br />
<br />
==== 允许和拒绝用户和用户组 ====<br />
<br />
在配置文件中你可以使用一些指令来允许或者拒绝一些特定用户或者用户组用ssh登陆.这个方法更加细致的控制哪些人可以通过ssh来进入你的Ubuntu电脑。 <br />
<br />
例如,如果你想只允许jhendrix和svaughan通过ssh登陆,你可以向这样在你的/etc/ssh中使用allowusers指令。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>AllowUsers</tt>'''''' jhendrix svaughan'''<br />
|}<br />
<br />
<br> 如果你不想让所有用户能过 ssh 登陆,除了使用者 wgates,或sballmer然后你可以使用DenyUsers命令添加到/etc/ssh/sshd_config中,像这样: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>DenyUsers</tt>''''''wgates sballmer'''<br />
|}<br />
<br />
<br> 最后,再看一个例子,你可以这样配置你的OpenSSH服务,只有用户属于系统组才允许通过ssh 登录。在这个例子中,我们将执行一些必要手段只允许SSH的用户都是小组成员sshlogin。 <br />
<br />
<code><nowiki>sudo addgroup --gid 450 sshlogin</nowiki></code> <br />
<br />
<code><nowiki>sudo adduser <username> sshlogin</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
在以上的例子中是用'&lt;username&gt;'代替你的用户名加入到sshlogin系统组。最后,编辑你的 /etc/ssh/sshd_config,并增添allowgroups指令: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>AllowGroups sshlogin</nowiki></code>'''<br />
|}<br />
<br />
<br> 重新启动 sshd,并且只有属于sshlogin组的用户才可以通过ssh 登录到你的Ubuntu计算机。<br />
<br />
==== 启动 sshd来监听不同的端口 ====<br />
<br />
由于近来自动扫描ssh和暴力攻击工具的大量增长,很多装有ssh的用户和管理员决定给ssh用一个非标准的tcp端口,标准的sshd侦听端口是 tcp/22,并且暴力扫描攻击工具都典型的被配置成侦听这个端口用来查找后门。 <br />
<br />
尽管从使用简单密码的ssh登陆切换到使用基于键盘方式的登陆,就象在指南中下部分我们要讨论的显著减少了自动工具猜测出一个正确的在你的系统的登陆的机会,一些人觉得加入更多偏僻字的层数可能更会增强安全性。 <br />
<br />
如果你曾考虑过在非标准端口上运行的你的sshd分支,例如一个常量需要使用-p或者-P来切换不同的ssh工具,或者通过修改配置文件这种更长久的方式来检验端口改变的正确,并且接受那些协议,然后改变侦听端口是十分琐碎的。 <br />
<br />
仅仅增加一个或更多的端口在你的 /etc/ssh/sshd_config 文件中,因此: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
如果你希望侦听tcp/22,和tcp/2222端口,例如,局域网连接使用传统方式,但外部连接使用tcp/2222端口。要完成这些,不需要在你的路由器配置网络地址翻译规则或者类似的东西,只要增加这2条指令到 /etc/ssh/sshd_cfig:&nbsp; <br><br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 22</nowiki></code>'''<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要忘记保存文件,和重新启动你的sshd指令: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
使改变生效。 <br />
<br />
= '''基于RSA key登陆''' =<br />
<br />
基于key的授权是可用的ssh授权方法中的一种,因此简单的密码(Ubuntu默认密码)和Kerberos标签。基于Key的验证的几个优点比密码验证更好,至于例子这个key的值就十分明显的很难被暴力破解,或以大量的关键字为条件来猜测弱密码。 <br />
<br />
数字键也是如此,是对极其相似事物的一个比方,所以可以在可能出现弱密码的地方显示密码安全的程度。使用基于Key登录的ssh 是比使用弱密码的登录,普遍认为更安全的。 <br />
[[File:<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png]] ''注解''''':''' ''同时生成一套能够使用openssh的RSA key而不需要密码是可能的,简单讲,通过ssh登陆不要密码,这个指导书没有描述或者认定这种用法是很不安全的.如果这个缺少密码的key落入其他人手 中,就如你的授权一样,应此所有允许这些key的系统安全都很容易受到威胁,在一些情况下,例如不安全的群环境中,需要有完全没有密码的登陆,但是,这本书没有解释制造这种key的过程。'' <br />
<br />
' <br />
<br />
这部分将说明启动基本Key登录的ssh ,生成一套公有/私有RSA密匙,并使用它们由OpenSSH登录你的Ubuntu计算机。 <br />
<br />
注意:Key是在本地(客户机)生成的,并且传输到远程计算机(服务器)上,用于在本地(客户机)登入到远程计算机(服务器)。<br />
<br />
==== 生成 RSA 密匙 ====<br />
<br />
第一步包括生成一组用于验证的RSA 密匙。代表性意思是,你将在想要通过某台电脑去远程登陆其他电脑的这台机器上做这些事情,但是这不是非常重要,因为你总是可以到处把你的密匙安装到需要的机器上。到生成一个RSA 公有/私有密匙,使用下列命令行: <br />
<br />
<code><nowiki>b@tsh:~$ ssh-keygen -t rsa</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
你必须在一个位置保存你的密匙,和一串对应于你的密匙的passphrase(密码短语口令)注5。当选择passphrase对于密匙时,应选择非常坚 固的passphrase,和便于记忆的,和记录它的位置的安全。这passphrase必须使用钥匙,在每次你要登录到一个基于密匙的系统: <br />
<pre>生成公有/私有RSA密匙对。<br />
进入保证密匙的文件(/home/b/.ssh/id_rsa):<br />
进入passphrase(empty for no passphrase):<br />
再次进入同一passphrase:<br />
你的验证文件保存在/home/b/.ssh/id_rsa.<br />
你的公有密匙保存在 /home/b/.ssh/id_rsa.pub.<br />
</pre> <br />
祝贺你现在已经有了密匙组。现在布置你的系统已允许你的登录它们。 <br />
<br />
==== 在远程电脑寄存密匙 ====<br />
<br />
假设你想使用key的远程ubuntu已经运行了ssh后台程序,接下来放置你自己key对的公共部分在那些电脑上是十分简单的,例如,如果你喜欢开始用基于key的方式登陆一个叫madsion的远程电脑,并且madsion正在运行sshd,并且能够用名字通过网络来到达这台机器,就可以很简单的用sshcopy这个命令来恰当的放置你的key: <code><nowiki>b@tsh:~$ssh-copy-id -i ~/.ssh/id_rsa.pub b@madison</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
==== 登录测试 ====<br />
<br />
接下来, 你将要登录测试,配置连接到机器并使用你的passphrase来解开密匙: <br />
<br />
<code><nowiki>b@tsh:~$ssh madison</nowiki></code> <br />
<br />
你会看到一个要你给出key的passphrase的命令提示符: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| Enter passphrase for key '/home/b/.ssh/id_rsa':<br />
|}<br />
<br />
<br> 输入你的passphrase,并把madison设置为允许从基于密匙的登录,你将要使用它登录。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png '''''注解'':''' 上述的例子只是:一个例子!代替用户名,在这个例子中,机器名用你自己实际的名字是为了增加你成功的机会。&nbsp;;-) <br />
<br />
== '''疑难解答''' ==<br />
<br />
如果你不是被提示要求passphrase,而是仅仅得到 <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| b@madison's password:<br />
|}<br />
<br />
<br> 提示同样使用密码登录,然后读取。有一些情况可以预防向上面提到的这种情况。在默认的Ubuntu安装里,上面的例子能够运行。如果不,下列各项条件,例如这些时常发生的原因: <br />
<br />
在远程计算机上,确认 /etc/ssh/sshd_config包含下列各项,和删除它们的注解; <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
|}<br />
<br />
<br> 如果已经加它们,或已删除注解,那么重要启动sshd,并重新再试一个登录。如果你现在得到了passphrase的提示,那要祝贺你可以用密匙登录了!<br />
<br />
== '''SSH远程登录''' ==<br />
<br />
如过你已经成功建立了一个基于RAS密匙的登陆,你可能希望这是你Ubuntu系统上唯一可接受的授权方式,完全放弃弱密码授权.按照这个路线,将能确保自动暴力扫描和攻击工具对你的公共系统攻击更加困难,提前提醒,你一旦丢失了密匙,你会发现你自己也被关在系统外面! <br />
<br />
从通知你的sshd不允许弱密码,到只是简单的使用sudo和你喜欢的编辑软件编辑 /etc/ssh/sshd_config,修改下例选项: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#PasswordAuthentication yes</nowiki></code>''<br />
|}<br />
<br />
<br> 删去注释,修改 ''yes'' 为 ''no'': <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PasswordAuthentication no</nowiki></code>'''<br />
|}<br />
<br />
<br> 保存文件,并重新启动sshd以使弱密码验证无效。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconDialog-Warning1.png '''警告'''&nbsp;: 第二次警告,使弱密码验证无效行为,和没有使用密匙登录,或丢失了你的密匙,你并被锁在你的机器外面了。当然,你仍然可以经过控制台登录机器上,但这可能不是那么容易,如果你的电脑是500哩远呢!你已被再次警告这样是不行的''!'' <br />
<br />
此外,你可以改变允许使用基于密匙的登录的登录指令,到执行策略为以基于密码的登录。你可以做这个通过改变: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>PermitRootLogin yes</nowiki></code>''<br />
|}<br />
<br />
<br> to <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PermitRootLogin without-password</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要由于没有密码而被警告.这并不意味着一个人用root登陆的时候不需要提供密码,仅仅相当,这意味着没有人可以用密码认证的方法使用root来登陆,意味着用root登陆的时候可能只能使用公共密匙方式登陆。<br />
<br />
===将密匙临时存入内存===<br />
如果一时间需要频繁地进行远程连接,可以考虑将密匙存入内存,之后所有的连接都不需要密匙了<br />
<code>ssh-agent<br />
ssh-add<br />
</code><br />
结束时,使用如下方法清楚它<br />
<code><br />
ssh-add -D</code><br />
<br />
= '''资源''' =<br />
<br />
更多资源与高级配置OpenSSH的安全性在以下表格中。 <br />
<br />
==== 本地系统资源 ====<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>man sshd</nowiki></code> <br />
| System manual page for the <code><nowiki>sshd</nowiki></code> server daemon<br />
|-<br />
| <code><nowiki>man sshd_config</nowiki></code> <br />
| System manual page for the <code><nowiki>/etc/ssh/sshd_config</nowiki></code> configuration file<br />
|-<br />
| <code><nowiki>man ssh-copy-id</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-copy-id</nowiki></code> application<br />
|-<br />
| <code><nowiki>man ssh-keygen</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-keygen</nowiki></code> application<br />
|-<br />
| <code><nowiki>/etc/ssh/sshd_config</nowiki></code> <br />
| The OpenSSH Secure Shell Daemon (<code><nowiki>sshd</nowiki></code>) configuration file<br />
|}<br />
<br />
==== WWW Resources ====<br />
<br />
[http://www.debian-administration.org/articles/87 Keeping SSH access secure] <br />
<br />
[http://www.openssh.org/ OpenSSH Website] <br />
<br />
[http://www.debian-administration.org/articles/152 Password-less logins with OpenSSH] <br />
<br />
注1: 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 <br />
<br />
注2: (rcp) 远端复制协议。该协议允许用户从网络的一个远端主机或者服务器上的文件系统中上载和下载文件。远端复制协议使用TCP协议来确保数据传输的可靠性。 <br />
<br />
注3: 原处为"inetd" 意思就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。 <br />
<br />
注4: xinetd(eXtended InterNET services daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。 <br />
<br />
注5: 相对“密码”(password)而言,密码短语(passphrase)口令以其更为严密的安全性正受到IT界的广泛关注。在功能上,passphrase同密码一样,只是长度较密码长。通常passphrase使用4到5个单词取代原来数字、字母结合的方式。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Ubuntu%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97&diff=145735
Ubuntu服务器入门指南
2011-11-10T11:32:38Z
<p>Lxr1234:/* 4.8.1. 安装 */ 一个被我回退的内容的缩减</p>
<hr />
<div>Ubuntu 服务器指南<br />
<br />
=== 关于本指南 ===<br />
==== 排版约定 ====<br />
本文档将使用下列记号:<br />
备注,一般表示一段有趣的,有时是技术性的,并和上下文相关的信息。<br />
提示,提供有完成某件事情的建议或捷径。<br />
警示,提醒读者可能面临的问题,并给出避免这些问题的帮助信息。<br />
警告,告知读者在特定情形下可能出现的风险。<br />
<br />
用于打印的交叉引用排版约定效果如下:<br />
<br />
**** 到其它文档和网站的链接看上去像这样。<br />
<br />
PDF、HTML 以及 XHTML 版本的文档将使用超链接来处理交叉引用。<br />
<br />
输入内容的排版约定效果如下:<br />
**** 文件名或者目录路径,将以等宽字体(monospace)显示。 <br />
**** 您在终端(Terminal)里输入的命令显示效果如下:<br />
<code><nowiki> command to type </nowiki></code> <br />
**** 您在用户界面上点击、选择或选中的选项,将以等宽字体(monospace)显示。<br />
<br />
菜单选择、鼠标动作及键盘快捷键:<br />
**** 菜单选择的序列操作显示效果如下:<br />
文件(F) → 打开(O)<br />
**** 鼠标动作假定您使用右手模式的鼠标设定。文中述及的“单击”和“双击”皆使用鼠标左键。文中述及的“单击右键”指的是使用鼠标右键。文中述及的“单击中键”指的是使用鼠标中键、按下鼠标滚轮,或者是以模拟中键的方式同时按下鼠标左、右键,这取决于您的鼠标设计。<br />
**** 键盘快捷键组合的显示效果如下:<br />
Ctrl+N 。根据惯例,“Control”、“Shift” 以及 “Alternate” 按键将以 Ctrl、Shift 以及 Alt 来表示,需要特别指出的是,其中第一个按键在按下第二个键的过程中应该一直被按住。<br />
==== 贡献和反馈 ====<br />
<br />
本文档由 [https://wiki.ubuntu.com/DocumentationTeam Ubuntu 文档小组] 编写。您可以通过 Ubuntu 文档小组的邮件列表发送自己的意见或评论来完善本文档。欲知该小组的信息、其邮件列表、项目等等详情,您可以访问 [https://wiki.ubuntu.com/DocumentationTeam Ubuntu 文档小组官方网站]。本文档的简体中文版由 [http://wiki.ubuntu.org.cn/UbuntuChina%E6%96%87%E6%A1%A3%E7%BB%84 UbuntuChina 文档组]翻译,欲知更多信息或加入我们,请访问 [http://wiki.ubuntu.org.cn/ Ubuntu 中文 Wiki]。<br />
<br />
如果您发现了文档中存在的问题,或者想提些建议,您可以直接在[https://launchpad.net/products/ubuntu-doc/+bugs Ubuntu Bug] 跟踪系统上提交一份bug报告。您的帮助是这些文档成功的关键![翻译相关的 bug 可以联系[http://wiki.ubuntu.org.cn/UbuntuChina%E6%96%87%E6%A1%A3%E7%BB%84 UbuntuChina 文档组]成员。]<br />
<br />
非常感谢<br />
<br />
- 您的 Ubuntu 文档小组<br />
<br />
=== 介绍 ===<br />
欢迎阅读 Ubuntu 服务器指南!<br />
<br />
Ubuntu 服务器指南 包括了在您的 Ubuntu 系统中如何安装和配置满足您需要的不同服务器的相关信息。它是一个循序渐进、面向任务的配置和定制您系统的指南。本手册讨论的主题如下所示:<br />
<br />
**** 网络配置<br />
**** Apache2 的配置<br />
**** 数据库<br />
**** Windows 联网 <br />
<br />
本手册主要分为以下几块:<br />
<br />
**** 安装<br />
**** 包管理<br />
**** 联网<br />
**** Windows 联网<br />
<br />
本指南假定您已经对您的 Ubuntu 系统有个基本的了解。如果您需要安装 Ubuntu 的详细帮助,将参考 Ubuntu 安装指南。<br />
<br />
本手册的 HTML 和 PDF 版本可以在 [http://help.ubuntu.com/ Ubuntu 文档网站] 在线获得。<br />
<br />
您可以在[http://www.lulu.com/ubuntu-doc our Lulu store]上购买到本指南的纸质品,只需支付打印和邮寄费用。<br />
<br />
=== 安装 ===<br />
本章提供了安装 Ubuntu 6.06 LTS Server Edition(服务器版)的快速入门。更多细节说明,请参见 Ubuntu 安装指南。<br />
<br />
==== 准备安装 ====<br />
准备安装,本部分内容说明在开始安装之前要考虑的各个方面。<br />
<br />
===== 系统要求 =====<br />
Ubuntu 6.06 LTS Server Edition (服务器版)支持三种主要的体系架构: Intel x86、AMD64 和 PowerPC。下表列出了被推荐硬件明细表。您可以根据需要使用比这更少的(硬件)进行管理。然而,大多数用户不应当忽略这些建议,否则风险自负。<br />
表 2-1 最小建议配置<br />
{|border="1" cellspacing="0"<br />
|安装类型||RAM||硬盘空间<br />
|-<br />
|服务器||64 MB||500 MB<br />
|}<br />
<br />
Ubuntu 6.06 LTS Server Edition (服务器版)的默认自述文档已经在下面列出了。当然,安装的尺寸大小极大程序上取决于您在安装过程中安装服务的多少。对于大多数管理员来说,默认的服务对于服务器一般的使用已经足够了。<br />
<br />
服务器<br />
<br />
这是一个小型服务器服务列表,它为各种服务器应用程序提供了一个通用基础。它是最低限度的并被设计成可以在其上添加想要的服务,如文件/打印服务、web 主机、邮件主机等。要满足这些服务至少需要 500 MB 的磁盘空间,但考虑添加更多的空间是要取决于在您服务器上您想要提供的服务。<br />
<br />
记住这些尺寸并不包括其他的素材如用户文件、邮件、日志和数据。当为您自己的文件和数据考虑空间时最好能留足。<br />
===== 备份 =====<br />
**** 在您开始之前,请确保备份了您现在系统上的每个文件。如果第一次时已经有一个操作系统安装在您的计算机上,那么最合适的办法就是把您的磁盘重新分区,为 Ubuntu 留出空间。无论哪次对您的磁盘进行分区您都应该做好丢失磁盘上所有东西的准备,因为您可能会误操作或者在分区过程中出错,如系统掉电等。在安装中所使用的程序是相当可靠的,大多数已经用了几年,但它们执行的也是破坏性的操作,一个操作出错可能会把您有价值的数据丢失掉。 <br />
<br />
如果您是想把电脑做成多重引导的系统,请先确定您手头上有电脑里已经存在的这些操作系统的安装介质。特别是当您把启动盘重新分区以后,您可能会发现必须重新安装原有操作系统的启动引导程序,某些情况下,还得重新安装该操作系统并恢复受影响分区上的文件。<br />
<br />
==== 从 CD 安装 ====<br />
将您的安装 CD 插入 您的 CD-ROM 设备并重启计算机。当从 CD-ROM 重启时安装系统将立即开始。一旦初始化之后,您的第一个安装屏幕将出现。<br />
<br />
此时,阅读屏幕上的文字。您也许想看看安装程序提供的帮助屏。如果您想这么做的话,请按 F1 键。<br />
<br />
要执行缺省的服务器安装程序,选择 “安装到硬盘” 并按 回车 键。安装过程将开始。简单地根据屏幕上的指示,您的 Ubuntu 系统将被安装。<br />
<br />
或者,您要安装一个 LAMP 服务器 (Linux, Apache, MySQL, PHP/Perl/Python),选择 “安装 LAMP 服务器”,并根据指示进行安装。施文<br />
<br />
=== 包管理 ===<br />
Ubuntu 提供一套全面的包管理系统用于软件的安装、升级、配置和卸载。除了让您 Ubuntu 计算机可以访问组织好的超过 17,000 个软件包的软件库之外,包管理工具还可以解决依赖关系并提供软件更新检查。<br />
<br />
一些工具可以和 Ubuntu 包管理系统进行交互,从便于系统管理员做自动化处理的简单命令行工具到便于 Ubuntu 新手使用的简单图形界面。<br />
==== 介绍====<br />
Ubuntu 的包管理系统是从 Debian GNU/Linux 发行版中洐生出来的。包文件包括在您 Ubuntu 系统中实现特定功能或软件所必需的文件、元数据和指令。<br />
<br />
Debian 包文件一般用 '.deb' 作后缀,而且位于建立在不同介质上由包组成的 软件库 中,这些介质包括 CD-ROM 光盘和网站。包通常是预编译的二进制形式,因此安装速度快而且软件也无需编译。<br />
<br />
许多复杂的包使用 依赖包 这一概念,依赖包是主包为实现完整功能而要求的附加包。例如,语音合成包 Festival 依赖 festvox-kalpc16k 包,该依赖包提供被应用程序使用的众多声音之一。为了能使 Festival 正常运行,所有依赖包都必须与 Festival 主包同时安装。Ubuntu 软件管理工具将会自动完成这一切。<br />
ff<br />
<br />
==== Apt-Get ====<br />
apt-get 命令是一个强大的命令行工具,用于同 Ubuntu 的 Advanced Packaging Tool (APT) 一起执行诸如安装新软件包、升级已有软件包、更新包列表索引,甚至是升级整个 Ubuntu 系统等功能。<br />
<br />
作为一个简单的命令行工具,apt-get 对于服务器管理员来说比 Ubuntu 中的其他软件包管理工具有着相当多的优点。这些优点包括便于在简单终端连接 (SSH) 中使用,同时能够用于系统管理脚本中,以便能被cron 动作计划工具自动运行。<br />
<br />
apt-get 工具的一些常见用法示例:<br />
<br />
关于 APT 用法的更多信息,可阅读全面的[http://www.debian.org/doc/user-manuals#apt-howto Debian APT 用户手册] 或输入:<br />
<br />
<code><nowiki> apt-get help </nowiki></code><br />
==== Aptitude ====<br />
Aptitude 是一个菜单驱动,基于文本的 Advanced Packaging Tool (APT) 系统前端。包管理的许多常用功能,如安装,卸载和升级,可以在Aptitude 中单键执行命令,它通常是小写字母。<br />
<br />
Aptitude 最适用于非图形的终端环境,确保命令关键字的适当功能。您可以作为一个普遍用户在终端提示符后用以下命令开始运行 Aptitude:<br />
<br />
<code><nowiki> sudo aptitude </nowiki></code><br />
<br />
当 Aptitude 开始之后,你将看在屏幕顶部的一个菜单条,其下有两个窗,顶窗包含包的类别,如 新软件包 和 未安装软件包 。底窗包含包和包类别的相关信息。<br />
<br />
使用 Aptitude 作包管理相对直观,用户界面便于执行常用任务。下面是在 Aptitude 中进行包管理时常见用法如下:<br />
<br />
**** 安装软件包:要安装包,通过未安装软件包包类别找到该软件包,如通过键盘箭头键和 ENTER 键定位并高亮你想安装的软件包。在高亮你要安装的软件包之后,将其标示为安装。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成安装。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始下载和安装软件包。<br />
**** 卸载软件包:要卸载软件包,通过已安装软件包包类别找到该软件包,如通过键盘箭头键和 ENTER 键定位并高亮你想卸载的软件包。在高亮你要卸载的软件包之后,按 - 键,文件包条目将变成 pink,标示其为卸载。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成卸载。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始卸载软件包。<br />
**** 更新软件包索引:要更新软件包索引,简单按 u 您将被提示要成为 root 用户以完成更新。按 ENTER 键将显示 Password: 提示,输入您的用户密码成为 root 用户。开始更新软件包索引,当出现下载对话框时在 OK 提示上按 ENTER 键以结束更新过程。<br />
**** 升级软件包:要升级软件包,如上所述更新软件包索引,然后按U 键标示所有能升级的软件包。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成安装。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始升级软件包。<br />
<br />
当实际查看软件时列出软件包当前状态,在顶窗软件包列表中显示信息的第一列使用下列关键字来描述软件包状态:<br />
<br />
**** i: 安装软件包<br />
**** c: 软件包没有安装,但在系统中有软件包的残留配置<br />
**** p: 从系统彻底删除<br />
**** v: 虚拟软件包<br />
**** B: 已损坏的软件包<br />
**** u: 解压文件,但尚未配置软件包<br />
**** C: 半配置 - 配置失败需要修复<br />
**** H: 半安装 - 卸载失败需要修复<br />
<br />
要退出 Aptitude,只需简单按 q 键并确认您想退出即可。在 Aptitude 菜单中按 F10 键可以列出其他许多功能。<br />
<br />
==== 配置 ====<br />
Advanced Packaging Tool (APT) 系统软件库的配置被保存在 /etc/apt/sources.list 文件中。这儿有个该文件的示例,<br />
<br />
[file:///usr/share/ubuntu-docs/ubuntu/serverguide/sample/sources.list 这里] 是一个典型的 /etc/apt/sources.list 文件范例。<br />
<br />
您可以编辑该文件来使软件库生效或失效。举个例子,要不想无论何时在发生文件包操作都会引起要求插入 Ubuntu CD-ROM ,只需要简单地将在文件顶部的 CD-ROM 相应行注释掉即可:<br />
<br />
<pre><nowiki><br />
<br />
==== 其他软件库 ====<br />
除了可以使用官方支持的 Ubuntu 软件包库之外,还存在拥有几千个潜在软件包的由其它社区维护的软件库。这些软件库中最流行的两个是 Universe 和 Multiverse 软件库。这些软件库并不被 Ubuntu 官方支持,这就是它们为什么在缺省时不能的原因,但它们提供的包通常是可以在您的 Ubuntu 计算机上安全使用的。<br />
<br />
在 Multiverse 软件库中的包通常有许可证的问题,这使得它们不能和自由操作系统一起分发,它们在您所在的地区可能是违法的。<br />
<br />
建议不要在 Universe 或 Multiverse 软件库中包含官方支持的软件包。尤其是在升级这些包时可能会不安全。 <br />
<br />
许多其他软件包源也是可用的,有时甚至只提供一个软件包,这种情况主要发生在由单个应用程序的开发人员所提供软件包源上。然而当您在使用非标准软件包源时您应该非常小心谨慎,在执行任何安装之前仔细考查源和软件包,因为有些软件包源和其中的软件包可能会使您的系统在某些方面运行不稳定或不正常。<br />
<br />
要使 Universe 和 Multiverse 库可用,编辑/etc/apt/sources.list 文件并将去掉相关行的注释:<br />
<pre><nowiki><br />
<br />
deb http://archive.ubuntu.com/ubuntu dapper universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse</nowiki></pre><br />
<br />
===== 3.5.1. 引用 =====<br />
[https://wiki.ubuntu.com/AddingRepositoriesHowto 如何添加软件库(Ubuntu Wiki)]<br />
<br />
=== 联网 ===<br />
网络是由两个或两个以上的设备通过物理线缆或无线连接而成并在连接设备之间共享和分发信息。这些设备包括计算机系统、打印机或用有线或无线连接起来的其它相关设备。<br />
<br />
Ubuntu 服务器指南的这部分提供与联网相关的一般和特定信息,包括网络概念的简介以及对常用网络协议及服务器应用程序的详细讨论。<br />
<br />
==== 网络配置 ====<br />
<br />
Ubuntu 提供了许多图形化工具来配制您的网络设备。本文适用于服务器管理员并聚焦在命令行中管理您的网络。<br />
===== 4.1.1. 以太网 =====<br />
<br />
大多数以太网配置都集中在单个文件 /etc/network/interfaces 中。如果您没有以太网设备,那么在该文件中将只出现环回口,该文件看上去类似这样:<br />
<pre><nowiki><br />
<br />
auto lo<br />
iface lo inet loopback<br />
address 127.0.0.1<br />
netmask 255.0.0.0</nowiki></pre><br />
<br />
如果您只有一个以太网设备 eth0,被配置成从 DHCP 服务器得到设置,并且在引导时自动激活,那么只需要再添加两行:<br />
<pre><nowiki><br />
auto eth0↵<br />
iface eth0 inet dhcp</nowiki></pre><br />
<br />
第一行说明 eth0 将会在您启动时自动激活。第二行说明该接口 (“iface”) eth0 将有得到一个 IPv4 地址空间 (如果是一个 IPv6 的设备将须将 “inet” 用 “inet6” 代替) 并且它将自动从 DHCP 中自动获得它的配置。假定您的网络和 DHCP 服务都已经被正确配置,该机的网络将不需要更多的配置。DHCP 服务器将提供默认网关 (通过 route 命令来实现) 、设备的 IP 地址 (通过 ifconfig 命令来实现)以及网络使用的 DNS 服务器 (在 /etc/resolv.conf 文件中实现)。<br />
<br />
要把您的以太网设备配置成静态 IP 地址和自定义配置的话,则要求更多的信息。假设您想指定 IP 地址 192.168.0.2 给设备 eth1,其掩码是 255.255.255.0。您的默认网关的 IP 地址是 192.168.0.1。您可以在 /etc/network/interfaces 中输入类似下面的语句:<br />
<pre><nowiki><br />
iface eth1 inet static<br />
address 192.168.0.2<br />
netmask 255.255.255.0<br />
gateway 192.168.0.1</nowiki></pre><br />
<br />
在这个例子中,您将需要在 /etc/resolv.conf 中手工指定您的DNS服务器,看起来如下: <br />
<pre><nowiki><br />
search mydomain.com<br />
nameserver 192.168.0.1<br />
nameserver 4.2.2.2</nowiki></pre><br />
<br />
search 语句在试图解析网络名时把 mydomain.com 添到主机名查询中。举个例子,如果您的网络域名是 mydomain.com 并且您试图去 ping 主机 “mybox”,DNS 查询将在解析时改为 “mybox.mydomain.com”。nameserver 语句指定用于将主机名解析成 IP 地址的的 DNS 服务器。如果您使用自己的名称服务器,在这里输入它。否则询问您的 Internet 服务供应商要使用的主、辅 DNS 服务器,并把它们如上所示输入到 /etc/resolv.conf 中。<br />
<br />
配置更多的接口是可能的,包括拨号的 PPP 接口、IPv6 网络、VPN 设备等。更多信息和支持选项请参考 man 5 interfaces。记住 ifup/ifdown 脚本使用的/etc/network/interfaces 是比其他一些 Linux 发行版更高级的配置模式。传统的低级工具如ifconfig、route 和 dhclient 也为了 ad hoc 配置对您来说也是可用的。<br />
===== 4.1.2. 管理 DNS 记录 =====<br />
<br />
本部分说明如何配置用来将IP地址解析成主机名或相反功能的名称服务,而不是说如何将整个系统配置成一个名称服务器。<br />
<br />
要管理 DNS 条目,您可以在 /etc/resolv.conf 文件中添加、编辑或删除 DNS 名称服务器。一个 范例文件 在下面给出:<br />
<pre><nowiki><br />
search com<br />
nameserver 204.11.126.131<br />
nameserver 64.125.134.133<br />
nameserver 64.125.134.132<br />
nameserver 208.185.179.218</nowiki></pre><br />
<br />
search 关键字指字为未完成主机名添加的字符串,在这里我们使用com。因此当我们运行:ping ubuntu 时它被理解成 ping ubuntu.com。<br />
<br />
nameserver 关键字指定名称服务器的 IP 地址,它将被用来解析 IP 地址或主机名。该文件可以有多个名称服务器记录。名称服务器将按相同顺序进行网络查询。 <br />
<br />
如果 DNS 服务器名称是通过 DHCP 或 PPPOE 动态取回的(从您 ISP 取回),那么不要在该文件中添加名称服务器记录。它将被自动更新。<br />
<br />
===== 4.1.3. 管理主机 =====<br />
<br />
要管理主机,您可以在 /etc/hosts 文件中添加、编辑或删除主机。该文件包括 IP 地址和相对应的主机名。当您的系统要解析一个主机到 IP 地址或从一个 IP 地址获取主机名时,它将在使用名称服务器之前参考 /etc/hosts 文件。如果该 IP 地址已经在 /etc/hosts 文件中被列出,那么将不再使用名称服务器。这一动作可以通过编辑 /etc/nsswitch.conf 来改变,不过后果自负。<br />
<br />
如果您网络所包含计算机的 IP 地址没有在 DNS 中列出,建议您将它们加入到 /etc/hosts 文件中。<br />
<br />
==== TCP/IP ====<br />
<br />
传输控制协议和网际协议 (TCP/IP) 是在 20世纪70年代被美国国防部高级研究规划局 (DARPA)作为在不同类型计算机及计算机网络之间的通信手段而被开发的一个标准协议簇。TCP/IP 是 Internet 的驱动力,因此它是全球最流行的网络协议簇。<br />
===== 4.2.1. TCP/IP 介绍 =====<br />
<br />
TCP/IP 的两个协议组件处理计算机网络的不同方面。网际协议,TCP/IP 中的 "IP" 是一个连接协议,只处理使用 IP 数据报 作为网络信息基本单元的网络包路由。IP 数据报由报头和其后的消息组成。传输控制协议 是 TCP/IP 中的 "TCP",可以使网络主机之间建立用于交换数据流的连接。TCP 也保证连接之间的数据传送以及其在网络主机上的接收顺序与其从另一台网络主机上的发送顺序一致。<br />
===== 4.2.2. TCP/IP 配置 =====<br />
<br />
TCP/IP 协议配置由必须设置的几个元素组成,可以通过编辑相应的配置文件或配置方案如动态主机配置协议 (DHCP) 来设置,它可以配置成提供适当的 TCP/IP 配置来自动设置网络客户机。这些配置值必须正确设置,以便于您的 Ubuntu 系统进行相应网络操作。<br />
<br />
TCP/IP 常用配置元素及其作用如下所示:<br />
<br />
**** IP 地址 IP 地址是唯一标识字符串,它由四部分由点号分隔的,范围从 0 到 255 的十进制数组成。 每部分由8个比特表示,整个地址总长为32个比特。这种格式被称为 dotted quad notation。<br />
**** 掩码 子网掩码 (或简称掩码) 是一个局部位掩码,或用指定的 子网掩码 来将IP 地址中的网络分隔出来的一组标识。举个例子,在 C 类网络中,标准的掩码是 255.255.255.0 屏蔽了 IP 地址的前三个字节,并允许 IP 地址的最后一个字节指定子网中的主机。<br />
**** 网络地址 网络地址表示包括IP 地址网络部分的字节。 例如, 一个 A 类网络的主机 12.128.1.2 将使用 12.0.0.0 作为网络地址,使用 12 来表示 IP 地址的第一个字节 (网络部分), 余下的三个为 0 的字节表示可能的主机值的。网络主机使用象 192.168.1.100 这样非常普遍的不可路由的私有 IP 地址将使用 192.168.1.0 网络地址,用前三个字节来指定 C 类 192.168.1 网络,而用一个 0 来表示网络上所有可能的主机。<br />
**** 广播地址 广播地址是一个允许向给定子网中的所有主机而不是一台特定的网络主机同时发送网络数据的 IP 地址。一般标准 IP 网络的地址是 255.255.255.255,但这个广播地址不能用来为 Internet 网上的每台主机发送一个广播消息,因为路由器会阻止它。更适当的广播地址设置是匹配特定子网的。例如,在流行的私有 C 类 IP 网 192.168.1.0 中,广播地址应该设为 192.168.1.255。广播消息一般都是由网络协议产生的,如地址识别协议 (ARP) 和路由信息协议 (RIP)。<br />
**** 网关地址 网关地址是一个通过该地址可能会到达指定网络或网络主机的 IP 地址。如果一台网络主机希望与另一台网络主机通讯,而该机并不在同一网络中,而是要传输到另一个网络或主机上,如 Internet 主机。网关地址设置必须正确,否则您的系统将不能到达不在同一网络中的任何主机。<br />
**** 名称服务器地址 名称服务器地址表示域名服务 (DNS) 系统的 IP 地址。该系统将网络主机名解析成 IP 地址。可以按顺序来指定三个不同优先级的名称服务器地址:主 名称服务器,次 名称服务器,和 第三 名称服务器。按顺序为您系统将网络主机名解析成相应的 IP 地址,你必须指定合法的名称服务器地址,该地址应该在您系统的 TCP/IP 配置中被授权使用。在许多情况下这些地址可以也应该被您的网络服务供应商提供,但也可以使用许多免费的、可供公众访问的名称服务器,如 IP 从 4.2.2.1 到 4.2.2.6 的 Level3 (Verizon) 服务器。<br />
<br />
IP 地址、掩码、网络地址、广播地址以及网关地址一般都是在文件 /etc/network/interfaces 中通过相应的语句来指定的。名称服务器地址一般是在文件 /etc/resolv.conf 中通过 nameserver 语句来指定的。更多详情,请分别查阅 interfaces 或 resolv.conf 的系统手册页。<br />
<br />
查阅 interfaces 系统手册页,可用以下命令:<br />
<br />
<code><nowiki>man interfaces</nowiki></code><br />
<br />
查阅 resolv.conf 系统手册页,用以下命令:<br />
<br />
<code><nowiki>man resolv.conf</nowiki></code><br />
<br />
===== 4.2.3. IP 路由 =====<br />
<br />
IP 路由是在 TCP/IP 网络上为可能发送的网络数据指明或发现路径。路由使用一组路由表来指示网络数据包从源地址转发到目的地,经常是通过许多叫做路由器的网络节点做中转。IP 路由是 Internet 上路径发现的主要方式。IP 路由分为两种形式:静态路由 和 动态路由。<br />
<br />
静态路由包含向系统路由表中手工添加的 IP 路由,一般是通过 route 命令来向路由表手工添加的。静态路由与动态路由相比有许多优点,如在小网络中实施简单,有可预测性 (路由表总是事先算好,因此路由在每次使用时都相当一致),在其它路由器和网络链路处理上比动态路由协议开销小。然而,静态路由也有一些缺点。如静态路由只限于小网络而且不能很好地进行调整。静态路由由于路由固定的特性,因此根本无法根据路由来适应网络中断和故障。<br />
<br />
动态路由有赖于从一个源到目的有多条可用 IP 路由的大型网络,利用特定的路由协议,如路由信息协议 (RIP),可以自动调整路由表以生成可能的动态路由。动态路由相对静态路由有几个优点,如拥有较大的伸缩性和能根据网络路由来适应网络中断和故障。另外,几乎无须手工配置路由表,因为路由器可以相互学到其他已有并且可用的路由器。这一特性也消除了由于人为错误而在路由表中引入错误的可能。然而,动态路由也并不完美,其表现出来的缺点如相当复杂以及由于路由器通讯所带来的额外的网络开销,并不能使最终用户由此获益,并却一直消耗着网络带宽。<br />
===== 4.2.4. TCP 和 UDP =====<br />
<br />
TCP 是一个基于连接的协议,提供纠错并通过 流量控制 来传输数据。流量控制决定什么时间一个数据流需要停止,例如在出现诸如 冲突 等问题时重发先前发送的数据包,以确保完整和准确的数据传输。TCP 常用于重要信息的交换,如数据库传输。<br />
<br />
另一方面,用户数据报协议 (UDP) 是一个 无连接 协议,很少用于重要数据的传输,因为缺乏流量控制或其他一些确保可靠数据传输的方法。UDP 常用在如音视频流这样的应用程序,由于它缺少纠错和流控,因此相对于 TCP 来说更快,而且丢失少量包通常也不会造成灾难性的后果。<br />
===== 4.2.5.ICMP =====<br />
<br />
Internet 控制消息协议是在Request For Comments (RFC) #792 中定义的,是对网际协议 (IP) 的一个扩充。支持的网络包包括控制、错误和信息的消息。ICMP 常被用在诸如判断一台网络主机或设备可用性的 ping 工具这样的网络应用程序。在网络主机和设备如路由器之间使用 ICMP 所返回的错误消息示例包括 Destination Unreachable 和 Time Exceeded。<br />
<br />
===== 4.2.6. 守护程序 =====<br />
<br />
守护程序是特殊的系统应用程序,一般常驻在后台并等待来自其他应用程序请求其所提供的功能。许多守护程序都是网络中心;在 Ubuntu 系统后台执行的许多守护程序都可以提供网络的相关功能。这些网络守护程序包括 超文本传输协议守护程序 (httpd),用于提供网站服务器功能;Secure SHell 守护程序 (sshd),用于提供安全远程登录 shell 和文件传输功能;Internet Message Access Protocol 守护程序 (imapd),用于提供 E-Mail 服务。<br />
<br />
==== 防火墙配置 ====<br />
Linux 内核包括 Netfilter 子系统,用来处理或决定网络传输头部进入或穿过你的服务器,目前所有的 Linux 防火墙都用该系统来做包过滤。<br />
===== 4.3.1. 防火墙介绍 =====<br />
<br />
内核的包过滤系统如果没有一个用户态 (userspace) 界面来管理它的话对管理员来说几乎没有用。这正是 iptables 的目的。当一个包到达您的服务器,它从用户态 (userspace) 通过 iptables 传给 Netfilter 子系统,然后基于提供的规则去接受、操作或拒绝。因此,如果你能熟悉它的话,那么 iptables 就是您管理您防火墙所需的全部。<br />
===== 4.3.2. IP 伪装 =====<br />
<br />
IP 伪装的目的是为了允许您网络上那些有着私有的、不可路由的 IP 地址的机器可以通过做伪装的机器访问 Internet。来自您私有网络并要访问 Internet 的传输必须是可以操作的,也就是说回复要可以被路由回来以送到发出请求的机器上。要做到这一点,内核必须修改每个包 源 IP 地址以便回复能被路由回它这里,而不是发出请求的私有 IP 地址,因为它们对于 Internet 来说是不存在的。Linux 使用 Connection Tracking (conntrack) 来保持那个连接是属于哪个机器的,并相应地对每个返回包重新做路由。发自您私有网络的流量就这样被伪装成源于您的网关机器。这一过程在 Microsoft 文档中被称为 Internet 连接共享。<br />
<br />
这可以用单条 iptables 规则来完成,也许基于您网络配置来说会有一些小的差异:<br />
<pre><nowiki><br />
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE</nowiki></pre><br />
<br />
上述命令假设您的私有地址空间是192.168.0.0/16,您与 Internet 相连的设备是 ppp0。语法分解如下所示:<br />
<br />
**** -t nat -- 该规则将进入 nat 表<br />
**** -A POSTROUTING -- 该规则将被追加 (-A) 到 POSTROUTING 链<br />
**** -s 192.168.0.0/16 -- 该规则将被应用在源自指定地址空间的流量上<br />
**** -o ppp0 -- 该规则应用于计划通过指定网络设备的流量。<br />
**** -j MASQUERADE -- 匹配该规则的流量将如上所述 "跳转" (-j) 到 MASQUERADE (伪装) 目标。<br />
<br />
在过滤表 (缺省表,在那里有着大多数或全部包过滤指令) 中的每条链 (chain) 都有一个默认的 ACCEPT 策略,但如果您还在网关设备上设置防火墙,那么您也许还要设置 DROP 或 REJECT 策略,这时您被伪装过的流量还需要被 FORWARD 链 (chain) 中的规则允许才能正常工作:<br />
<pre><nowiki><br />
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT<br />
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT</nowiki></pre><br />
<br />
上述命令将允许通过从您局域网到 Internet 的所有连接,这些连接所有的相关流量也都返回到发起它们的机器。<br />
===== 4.3.3. 工具 =====<br />
<br />
有很多工具可以帮助您构建一个完整的防火墙,而不需要 iptables 的专业知识。偏好图形界面的,Firestarter 非常流行也易于使用,fwbuilder 则非常强大而且其界面对于用过诸如 Checkpoint FireWall-1 商业防火墙工具的管理员来说相当熟悉。如果您偏好有着纯文本配置文档的命令行工具,Shorewall 是个非常强大的解决方案,可以帮您为任何网络配置一个高级防火墙。如果您的网络相对简单,或如果您没有网络,那么 ipkungfu 将给您一个无需配置就可以工作的防火墙,也允许您通过编辑简单友好的配置文件来轻松设置更高级的防火墙。另一个感兴趣的工具就是fireflier,被设计成桌面防火墙应用程序。它由一个服务器 (fireflier-server) 和可选的 GUI 客户端 (GTK 或 QT) 组成,操作就象 Windows 中许多流行的交互式防火墙应用程序一样。<br />
===== 4.3.4. 日志 =====<br />
<br />
防火墙日志主要是为了确认攻击、找出并解决您防火墙规则的问题以及注意您网络中不正常的活动。您必须在您防火墙中包含这些日志规则以便生成相应日志,虽然,日志规则必须优先于任何可应用的最终规则 (那些决定其目的包命运的规则,如ACCEPT、DROP 或 REJECT) 。<br />
<pre><nowiki><br />
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "</nowiki></pre><br />
<br />
一个从本机发起的对 80 端口的请求将会在 dmesg 中生成一条日志,如下所示:<br />
<br />
<pre><nowiki><br />
[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0</nowiki></pre><br />
<br />
上面的日志也会出现在/var/log/messages、/var/log/syslog 和 /var/log/kern.log 中。这一过程可以通过适当编辑 /etc/syslog.conf 或安装配置 ulogd 并用 ULOG 代替 LOG 来进行改变。ulogd 守护程序是一种用户态服务器可以监听来自内核的防火墙日志指令,并且能够将其写到任何您希望的文件中,甚至是 PostgreSQL 或 MySQL 数据库。使用诸如 fwanalog、fwlogwatch 或 lire 日志分析工具将会很轻松地弄懂您的防火墙日志。<br />
<br />
==== OpenSSH 服务器 ====<br />
===== 4.4.1. 介绍 =====<br />
<br />
Ubuntu 服务器指南的这部分内容介绍一个强大的远程控制网络计算机和在它们之间传输数据的工具集 OpenSSH。您也可以学到一些 OpenSSH 服务器应用程序的配置以及如何在您 Ubuntu 系统修改它们。<br />
<br />
OpenSSH 是Secure Shell (SSH) 协议工具集中的一个自由可用的版本,用以远程控制一台计算机或在计算机之间传输文件。完成这些功能的传统工具,如 telnet 或 rcp 等,是不安全的,它们在使用时用明文来传输用户的密码。OpenSSH 提供一个服务器守护程序和客户端工具来保障安全、加密的远程控制和文件传输操作,以有效地取代传统的工具。<br />
<br />
OpenSSH 服务器组组件 sshd 持续监听来自任何客户端工具的连接请求。当一个连接请求发生时,sshd 根据客户端连接的类型来设置当前连接。例如,如果远程计算机是通过 ssh 客户端应用程序来连接的话,OpenSSH 服务器将在认证之后设置一个远程控制会话。如果一个远程用户通过 scp 来连接 OpenSSH 服务器,OpenSSH 服务器将在认证之后开始服务器和客户机之间的安全文件拷贝。OpenSSH 可以支持多种认证模式,包括纯密码、公钥以及Kerberos 票据。<br />
===== 4.4.2. 安装 =====<br />
<br />
OpenSSH 客户端及服务器应用程序的安装是简单的。要在您 Ubuntu 系统中安装 OpenSSH 客户端应用程序,可以在终端提示符后使用以下命令:<br />
<br />
<pre><nowiki><br />
sudo apt-get install openssh-client</nowiki></pre><br />
<br />
要安装 OpenSSH 服务器应用程序及相关的支持文件,可以在终端提示符后使用以下命令:<br />
<br />
<pre><nowiki><br />
sudo apt-get install openssh-server</nowiki></pre><br />
<br />
===== 4.4.3. 配置 =====<br />
<br />
您可以通过编辑 /etc/ssh/sshd_config 文件来配置 OpenSSH 服务器应用程序的缺省过程。关于该文件中使用的配置语句信息,您可以在终端提示符后运行下列命令来查阅相应的手册页:<br />
<br />
<pre><nowiki><br />
man sshd_config</nowiki></pre><br />
<br />
<br />
在 sshd 配置文件中有许多语句来控制那些诸如通信设置和认证模式。下面是一个通过编辑 /etc/ssh/ssh_config 文件来改变配置语句的例子。<br />
<br />
在编辑配置文件之前,您应该生成一个原始文件的拷贝并对其写保护,以便您可以参考原始文件并在必要时重用它。<br />
<br />
拷贝 /etc/ssh/sshd_config 文件并对其写保护可以通过在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original<br />
sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></pre><br />
<br />
<br />
以下是您可能更改配置语句的范例:<br />
<br />
**** 要设置您 OpenSSH 在 TCP 2222 端口而不是缺省的 TCP 20 端口监听,可以如下使用改变 Port 语句:<br />
<code><nowiki>Port 2222</nowiki></code><br />
**** 要让 sshd 允许基于公钥登录证书,可以简单添加或修改该行语句:<br />
<code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
到 /etc/ssh/sshd_config 文件中。如果已经存在,确保该行语句没有被注释。<br />
**** 要使您的 OpenSSH 服务器显示 /etc/issue.net 文件的内容以作为预登录 Banner,只需简单地将下行添加或修改:<br />
<code><nowiki>Banner /etc/issue.net</nowiki></code><br />
到 /etc/ssh/sshd_config 文件中即可。<br />
<br />
在修改 /etc/ssh/sshd_config 文件之后,保存该文件并重启 sshd 服务器应用程序以使之生效。可以在终端提示符后使用下列命令:<br />
<br />
<pre><nowiki><br />
sudo /etc/init.d/ssh restart</nowiki></pre> <br />
<br />
许多其他的 sshd 配置语句可以使服务器应用程序按您的要求运行。然而,给您一个忠告,如果您访问服务器的唯一方法就是使用 ssh,而且您在通过 /etc/ssh/sshd_config 文件来配置 sshd 时犯了一个错误,那么在重启该服务之后您可能会发现您被锁在服务器外面了,或者是 sshd 服务在处理一个不正确的配置语句时拒绝启用。因此当在远程服务器上编辑该文件时要格外的小心。<br />
<br />
===== 4.4.4. 引用 =====<br />
<br />
[http://www.openssh.org/ OpenSSH 网站]<br />
<br />
[https://wiki.ubuntu.com/AdvancedOpenSSH 高级 OpenSSH 维基页]<br />
<br />
==== FTP 服务器 ====<br />
文件传输协议 (FTP) 是一个 TCP 协议,用于在计算机之间上传和下载文件。FTP 工作在客户端/服务器模式下。服务器组件被称为 FTP 守护程序。它持续不断地监听来自远程客户端的 FTP 请求。当一个请求到达时,它管理登录和建立连接。在整个会话期间它执行 FTP 客户端发送来的任何命令。<br />
<br />
可以通过两种方式来管理 FTP 服务器的访问:<br />
**** 匿名<br />
**** 授权<br />
<br />
在匿名模式中,远程客户端可以使用 "anonymous" 或 "ftp" 缺省用户帐号并通过发送一个邮件地址做为密码来访问 FTP 服务器。在授权模式下一个用户必须拥有帐号和密码。用户所访问 FTP 服务器中目录和文件的权限是根据登录时所用帐号来定义的。一般来说,FTP 守护程序将隐藏在 FTP 服务器的根目录中并将其改到 FTP 家目录。这样就可以向远程传话隐藏文件系统的其他部分。<br />
===== 4.5.1. vsftpd - FTP 服务器安装 =====<br />
<br />
vsftpd 是可在 Ubuntu 中使用的 FTP 守护程序之一。它在安装、设置和维护方面十分方便。要安装 vsftpd 您可以使用下列命令:<br />
<pre><nowiki><br />
sudo apt-get install vsftpd </nowiki></pre><br />
<br />
===== 4.5.2. vsftpd - FTP 服务器配置 =====<br />
<br />
你可以编辑 vsftpd 配置文件,/etc/vsftpd.conf,来配置缺省设置。缺省状态下只允许匿名 FTP。如果您希望禁用该选项,您可以将下面这行:<br />
<pre><nowiki><br />
anonymous_enable=YES</nowiki></pre><br />
<br />
改为 <br />
<pre><nowiki><br />
anonymous_enable=NO</nowiki></pre><br />
<br />
* 缺省状态下,本地系统用户是不允许登录 FTP 服务器的。要改变该设置,您可以将下面这行反注释:<br />
<br />
* 缺省状态下,允许用户从 FTP 下载文件,但不允许他们上传文件到 FTP 服务器。为了能够上传文件到 FTP 服务器,需要改变该设置,您可以将下面这行反注释掉:<br />
<pre><nowiki></nowiki></pre><br />
<br />
* 配置文件包括许多配置参数。关于配置文件中的每个参数的信息都可以得到,或者您可以参考手册页,man 5 vsftpd.conf 说明每个参数的细节。<br />
一旦您配置好了 vsftpd 您就可以运行该守护程序了。您可以执行下列命令来运行vsftpd 守护进程:<br />
<pre><nowiki><br />
sudo /etc/init.d/vsftpd start </nowiki></pre><br />
<br />
请注意在配置文件中缺省的设置主要是出于安全考虑。上面每一个改变都会使系统的安全性更小,所以请只在您需要时才改变他们。<br />
<br />
==== 网络文件系统 (NFS) ====<br />
NFS 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。<br />
<br />
NFS 最值得注意的优点有:<br />
**** 本地工作站可以使用更少的磁盘空间,因为常用数据可以被保存在一台机器上,并让网络上的其他机器可以访问它。<br />
**** 不需要为用户在每台网络机器上放一个用户目录。用户目录可以在 NFS 服务器上设置并使其在整个网络上可用。<br />
**** 存储设备如软盘、光驱及 USB 设备可以被网络上其它机器使用。这可能可以减少网络上移动设备的数量。<br />
<br />
===== 4.6.1. 安装 =====<br />
<br />
在终端提示符后键入以下命令安装 NFS 服务器:<br />
<pre><nowiki><br />
sudo apt-get install nfs-kernel-server</nowiki></pre><br />
<br />
===== 4.6.2. 配置 =====<br />
<br />
您可以配置要输出的目录,您可以在 /etc/exports 文件中添加该目录。例如:<br />
<pre><nowiki><br />
/ubuntu *(ro,sync,no_root_squash)<br />
/home *(rw,sync,no_root_squash)</nowiki></pre><br />
<br />
您可以用主机名来代替 *。尽量指定主机名以便使那些不想其访问的系统访问 NFS 挂载的资源。<br />
<br />
您可以在终端提示符后运行以下命令来启动 NFS 服务器:<br />
<pre><nowiki><br />
sudo /etc/init.d/nfs-kernel-server start</nowiki></pre><br />
<br />
===== 4.6.3. NFS 客户端配置 =====<br />
<br />
使用 mount 命令来挂载其他机器共享的 NFS 目录。可以在终端提示符后输入以下类似的命令:<br />
<pre><nowiki><br />
sudo mount example.hostname.com:/ubuntu /local/ubuntu</nowiki></pre><br />
<br />
挂载点 /local/ubuntu 目录必须已经存在。而且在 /local/ubuntu 目录中没有文件或子目录。<br />
<br />
另一个挂载其他机器的 NFS 共享的方式就是在 /etc/fstab 文件中添加一行。该行必须指明 NFS 服务器的主机名、服务器输出的目录名以及挂载 NFS 共享的本机目录。<br />
<br />
以下是在 /etc/fstab 中的常用语法:<br />
<pre><nowiki><br />
example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr</nowiki></pre><br />
<br />
===== 4.6.4. 引用 =====<br />
<br />
[http://nfs.sourceforge.net/ Linux NFS 常见问答]<br />
<br />
==== 动态主机配置协议 (DHCP) ====<br />
动态主机配置协议 (DHCP) 是一种网络服务,相对于手工为每台网络主机配置,它使网络主机可能自动被服务器指定设置。被配置成 DHCP 客户端的计算机并不能控制其从 DHCP 服务器得到的设置,且该配置对于计算机用户来说是透明的。<br />
<br />
由 DHCP 服务器提供给 DHCP 客户端最常用的设置包括:<br />
**** IP 地址和掩码<br />
**** DNS<br />
**** WINS<br />
<br />
然而,一个 DHCP 服务器也支持配置如下属性,如:<br />
**** 主机名<br />
**** 域名<br />
**** 默认网关<br />
**** 时间服务器<br />
**** 打印服务器<br />
<br />
使用 DHCP 的好处在于当网络发生改变如 DNS 服务器地址改变时,只需要在 DHCP 服务器中改变即可,所有网络主机将在其 DHCP 客户端下一次轮询 DHCP 服务器时被重新配置。另一个好处就是,它在将新计算机整合到网络时也更容易,因为不需要再检查 IP 地址的有效性。同时也减少 IP 地址的冲突。<br />
<br />
一个 DHCP 服务器可以用两个模式来提供配置设置<br />
<br />
* MAC 地址<br />
该模式需要用 DHCP 去标明连接到网上的每块网卡唯一的硬件地址,然后在 DHCP 客户端每次使用该网络设备发送给 DHCP 服务器请求时提供给它一个固定的配置。 <br />
* 地址池<br />
该模式需要定义一个 IP 地址池 (有时也叫范围或作用域) ,以便 DHCP 客户端可以被动态提供它们的配置from which DHCP clients are supplied their configuration properties dynamically and on a fist come first serve basis。当一个 DHCP 客户端有段时间不再在网络上时,该配置将过期并释放回地址池以便为其他 DHCP 客户端使用。<br />
<br />
ubuntu 提供 DHCP 服务器及其客户端。服务器叫 dhcpd (动态主机配置协议守护程序)。Ubuntu 提供的客户端叫 dhclient,应该安装在所有自动配置的计算机上。这两个程序很容易安装和配置,并可在系统引导时自动启用。<br />
===== 4.7.1. 安装 =====<br />
要安装 dhcpd,可以在终端提示符后输入以下命令:<br />
<pre><nowiki><br />
sudo apt-get install dhcpd</nowiki></pre><br />
<br />
您将看到下面的输出,说明接下来做什么:<br />
<pre><nowiki><br />
Please note that if you are installing the DHCP server for the first<br />
time you need to configure. Please stop (/etc/init.d/dhcp<br />
stop) the DHCP server daemon, edit /etc/dhcpd.conf to suit your needs<br />
and particular configuration, and restart the DHCP server daemon<br />
(/etc/init.d/dhcp start).<br />
<br />
You also need to edit /etc/default/dhcp to specify the interfaces dhcpd<br />
should listen to. By default it listens to eth0.<br />
<br />
NOTE: dhcpd's messages are being sent to syslog. Look there for<br />
diagnostics messages.<br />
<br />
Starting DHCP server: dhcpd failed to start - check syslog for diagnostics. </nowiki></pre> <br />
<br />
===== 4.7.2. 配置 =====<br />
<br />
安装结束后的错误消息可能会带来小小的困惑,不过下面几步将帮助您配置服务:<br />
通常,您想做的是随机指定一个 IP 地址。这可以通过以下设置来实现:<br />
<pre><nowiki><br />
default-lease-time 600;<br />
max-lease-time 7200;<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.1.255;<br />
option routers 192.168.1.254;<br />
option domain-name-servers 192.168.1.1, 192.168.1.2;<br />
option domain-name "mydomain.org";<br />
<br />
subnet 192.168.1.0 netmask 255.255.255.0 {<br />
range 192.168.1.10 192.168.1.100;<br />
range 192.168.1.150 192.168.1.200;<br />
} <br />
</nowiki></pre><br />
这将导致 DHCP 服务器从 192.168.1.10-192.168.1.100 或 192.168.1.150-192.168.1.200 范围中分配客户端一个 IP 地址。如果客户端没有要求一个特定的时间帧的话它将租用 600秒的 IP 地址。否则最大 (允许) 租用时间为 7200 秒。服务器也 "建议" 客户端使用 255.255.255.0 做为它的子网掩码,192.168.1.255 作为它的广播地址,192.168.1.254 作为路由器/网关,同时将 192.168.1.1 和 192.168.1.2 作为它的 DNS 服务器。<br />
<br />
如果您需要为您的 Windows 客户机指定一个 WINS 服务器,您需要包含 netbios-name-servers 选项,如:<br />
<pre><nowiki><br />
option netbios-name-servers 192.168.1.1; </nowiki></pre><br />
<br />
Dhcpd 配置设置可以从 DHCP 快速指南中得到,该指南可以在 这里 找到。<br />
===== 4.7.3. 引用 =====<br />
[http://www.dhcp-handbook.com/dhcp_faq.html DHCP 常见问答]<br />
==== 域名解析服务 (DNS) ====<br />
域名解析服务 (DNS) 是一个 Internet 服务,相互映射 IP 地址和完全限定域名 (FQDN) 。通过这种方式,使用 DNS 将不再需要记住 IP 地址。运行 DNS 的计算机称为 名称服务器。Ubuntu 提供 BIND (伯克利 Internet 名称守护程序),一个在 GNU/Linux 上最常用的维护名称服务器的程序。<br />
===== 4.8.1. 安装 =====<br />
<br />
在终端提示符后输入以下命令来安装 dns:<br />
<pre><nowiki><br />
sudo apt-get install bind9</nowiki></pre><br />
<br />
===== 4.8.2. 配置 =====<br />
DNS 配置文件被保存在 /etc/bind 目录中。主配置文件叫 /etc/bind/named.conf。缺省配置文件的内容如下所示:<br />
<pre><nowiki><br />
// This is the primary configuration file for the BIND DNS server named.<br />
//<br />
// Please read /usr/share/doc/bind/README.Debian for information on the <br />
// structure of BIND configuration files in Debian for BIND versions 8.2.1 <br />
// and later, *BEFORE* you customize this configuration file.<br />
//<br />
<br />
include "/etc/bind/named.conf.options";<br />
<br />
// reduce log verbosity on issues outside our control<br />
logging {<br />
category lame-servers { null; };<br />
category cname { null; };<br />
};<br />
<br />
// prime the server with knowledge of the root servers<br />
zone "." {<br />
type hint;<br />
file "/etc/bind/db.root";<br />
};<br />
<br />
// be authoritative for the localhost forward and reverse zones, and for<br />
// broadcast zones as per RFC 1912<br />
<br />
zone "localhost" {<br />
type master;<br />
file "/etc/bind/db.local";<br />
};<br />
<br />
zone "127.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.127";<br />
};<br />
<br />
zone "0.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.0";<br />
};<br />
<br />
zone "255.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.255";<br />
};<br />
<br />
// add local zone definitions here<br />
include "/etc/bind/named.conf.local";</nowiki></pre><br />
<br />
include 行指定包含 DNS 选项的文件名。在选项文件中的directory 行告诉 DNS 在哪儿寻找文件。所有 BIND 用到的文件都与该目录相关。<br />
名为 /etc/bind/db.root 的文件描述世界上的根名称服务器。这些服务器按时更新并不时被维护。<br />
<br />
zone 部分定义一个主服务器,并将其保存在 file 标签所指定的文件中。每个 zone 文件包括 3 个资源记录 (RRs):一个 SOA RR、一个 NS RR 以及一个 PTR RR。SOA 是授权开始的缩写。"@" 符是一个特定的符号表示原点。NS 是名称服务器 RR。PTR 是域名指针。要开始 DNS 服务器,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/bind start</nowiki></pre><br />
<br />
详情您可以参考在参考部分所提及的文档。<br />
===== 4.8.3. 引用 =====<br />
[http://www.tldp.org/HOWTO/DNS-HOWTO.html DNS 指南]<br />
==== CUPS - 打印服务器 ====<br />
Ubuntu 打印及打印服务主要是 通用 UNIX 打印服务 (CUPS)。该打印系统是自由可用、可移植的打印层,正在成为绝大多数 GNU/Linux 发行版新的打印标准。<br />
<br />
CUPS 管理打印作业和队列,并使用标准的 Internet 打印协议 (IPP) 提供网络打印,该协议提供最大范围的打印机支持,从点阵打印机到激光打印机以及位于两者之间的许多打印机。CUPS 也支持 PostScript Printer Description (PPD) 和网络打印机的自动检测,以及提供基于 Web 的简单配置和管理工具。<br />
===== 4.9.1. 安装 =====<br />
在您 Ubuntu 计算机上安装 CUPS,只需简单使用 sudo 和apt-get 命令并将要安装包作为第一个参数即可。一个完全的 CUPS 安装需要安装许多从属包,但它们也可以在同一个命令行指定。在终端提示符后输入以下命令以安装 CUPS:<br />
<pre><nowiki><br />
sudo apt-get install cupsys cupsys-client</nowiki></pre><br />
<br />
认证您的用户密码之后,这些包将被下载并正确安装。在安装结束之后,CUPS 服务器将自动开始。为了发现并修复问题,您可以通过错误日志文件 /var/log/cups/error_log 来查看 CUPS 服务器的错误。如果错误日志并没有显示足够的用于找到和解决您所遇问题的信息,通过将配置文件 (下面要讨论) 中将LogLevel 语句从缺省的 "info" 改为 "debug" 甚至是记录每件事的 "debug2",以获得 CUPS 日志的详细信息。<br />
<br />
===== 4.9.2. 配置 =====<br />
可以通过 /etc/cups/cupsd.conf 文件中的指令来配置通用 UNIX 打印系统服务器的行为的。CUPS 配置文件与 Apache HTTP 服务器的主配置文件语法相同,因此熟悉编辑 Apache 配置文件的用户在编辑 CUPS 配置文件时会感到相当容易。在这里将显示一些您可能想要改变初始值的设置范例。 <br />
<br />
在编辑配置文件之前,您应该将原始文件做个副本并将其写保护,以便您可以将原始文件作为参考并在必要时重用它。 <br />
<br />
拷贝 /etc/cups/cupsd.conf 文件并对其写保护,可以在终端提示符后执行以下命令:<br />
<pre><nowiki><br />
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original<br />
sudo chmod a-w /etc/cups/cupsd.conf.original</nowiki></pre><br />
<br />
**** ServerAdmin:要配置指定 CUPS 服务器管理员的邮件地位,只需用你喜欢的文本编辑器简单编辑 /etc/cups/cupsd.conf 配置文件,并修改相应的 ServerAdmin 行即可。举个例子,如果您是 CUPS 服务器的管理员,并且您的邮件地址是'bjoy@somebigco.com',那么您可以象下面这样修改 ServerAdmin 行:<br />
<code><nowiki>ServerAdmin bjoy@somebigco.com</nowiki></code><br />
<br />
关于 CUPS 服务器配置文件中配置语句的更多范例,通过在终端提示符后输入以下命令可以查阅相关的系统手册页:<br />
<pre><nowiki><br />
man cupsd.conf</nowiki></pre><br />
<br />
无论您在什么时间修改了 /etc/cups/cupsd.conf 配置文件,您都需要重启 CUPS 服务,在终端提示符后键入以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/cupsys restart</nowiki></pre> <br />
<br />
CUPS 服务器的其它一些配置在文件 /etc/cups/cups.d/ports.conf 中:<br />
<br />
**** Listen:在 Ubuntu 的缺省状态下,CUPS 服务器安装后只监听 IP 地址为 127.0.0.1 的环回接口。为了让 CUPS 服务器可以在网络适配器真正的 IP 地址上监听,您必须要么指定一个指定主机名、要么指定一个IP 地址,随您选择。可以通过 Listen 语句来添加一个 IP 地址/端口对。例如:如果您的 CUPS 服务器在一个局域网中,其 IP 地址为 192.168.10.250,您想要该子网中的其它系统能够访问它,您可以编辑 /etc/cups/cups.d/ports.conf 并如下所示添加一个 Listen 语句:<br />
<pre><nowiki><br />
Listen 127.0.0.1:631 # existing loopback Listen<br />
Listen /var/run/cups/cups.sock # existing socket Listen<br />
Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)</nowiki></pre><br />
<br />
在上面的例子里,如果您不想 cupsd 监听环回地址 (127.0.0.1) ,您可能注释或删除了相关语句。但最好保留它以监听局域网 (LAN) 的以太网接口。为了能监听一个特定主机名所绑定的所有的网络接口,您可以为 socrates 主机名创建一个 Listen 条目,如下所示:<br />
<pre><nowiki><br />
Listen socrates:631 # Listen on all interfaces for the hostname 'socrates'</nowiki></pre><br />
<br />
或者忽略 Listen 语句并使用 Port 来代替,如:<br />
<pre><nowiki><br />
Port 631 # Listen on port 631 on all interfaces</nowiki></pre> <br />
<br />
===== 4.9.3. 引用 =====<br />
[http://www.cups.org/ CUPS 网络]<br />
<br />
==== HTTPD - Apache2 Web 服务器 ====<br />
Apache 是在 GNU/Linux 系统中最常用的 Web 服务器。Web 服务器为客户机所提交的网页请求服务。客户机一般通过网页浏览器如 Firefox、Opera、Mozilla或IE来请求和查看网页。<br />
<br />
用户输入统一资源定位器 (URL) 来指向一个 Web 服务器,并通过完全限定域名 (FQDN) 和路径来请求资源。例如,要查看 Ubuntu 网站 的主页,用户只需要输入 FQDN 即可。如果要请求关于 有偿技术支持 的特定信息,用户将在 FQDN 后输入路径。<br />
<br />
用于传输网页的最常用协议就是超文本传输协议 (HTTP)。也支持诸如基于安全套接层的超文本传输协议 (HTTPS) 以及用于上传和下载文件的文件传输协议 (FTP) 等协议。<br />
<br />
Apache Web 服务器常与 MySQL 数据库引擎、超文本处理器 (PHP) 脚本语言及其他流行的脚本语言如Python 和 Perl 组合在一起。这一组合被称为 LAMP (Linux, Apache, MySQL and Perl/Python/PHP) ,并形成一个强大健壮的开发基于 Web 应用程序的开发平台。<br />
===== 4.10.1. 安装 =====<br />
<br />
Apache2 web 服务器在 Ubuntu Linux 中是可用的。要安装 Apache2:<br />
<br />
**** 在终端提示符后输入下列命令:<br />
<pre><nowiki><br />
sudo apt-get install apache2</nowiki></pre><br />
<br />
===== 4.10.2. 配置 =====<br />
<br />
Apache 可以在纯文本配置文件中通过 语句 来配置的。主配置文件叫 apache2.conf。此外,其外配置文件可以用 Include 语句来添加,也可以使用通配符来包含多个配置文件。任何语句都可能被放在这些配置文件的任何一个文件中。修改过的主配置文件只在 Apach2 启动或重启时才能被其识别。<br />
<br />
服务器也查看包含 mime 文档类型的文件;该文件名通过 TypesConfig 设置,缺省情况下是mime.types。<br />
<br />
缺省的 Apache2 配置文件是 /etc/apache2/apache2.conf。您可以编辑该文件以配置 Apache2 服务器。您可以配置端口号、文档根目录、模块、日志文件及虚拟主机等。<br />
====== 4.10.2.1. 基本设置 ======<br />
<br />
本部分内容说明 Apache2 服务器基本的配置参数。详情请参阅 Apache2 文档<br />
<br />
**** Apache2 提供了一个友好虚拟主机的缺省配置。它配置成单个缺省虚拟主机 (使用 VirtualHost 语句) 。如果您有单个站点,可以修改或直接使用它。如果您有多个站点的话,可以将其作为其它虚拟主机的模板。如果对其不加理会,该缺省虚拟主机将会作为您的缺省网站提供服务,或者如果网站用户所输入的 URL 并没有匹配您任何所定义站点的 ServerName 语句时,将看到该虚拟主机内容。要修改缺省虚拟主机,可以编辑文件 /etc/apache2/sites-available/default。如果您希望配置一个新的虚拟主机或站点,在同一目录中将拷贝该文件并将新文件重命名为您所想要的文件名,如sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite。编辑新文件并用下面的所描述的语句来配置新的站点:<br />
**** ServerAdmin 语句指定服务器管理员的邮件地址,缺省值是 webmaster@localhost。应该改成您的邮件地址 (如果您是服务器管理员的话)。如果您的网站有问题,Apache2 将显示包含该邮件地址的错误信息以便报告该问题。在 /etc/apache2/sites-available 目录中您网站的配置文件里可以找到该语句。<br />
**** Listen 语句指定端口以及可选的 IP 地址,Apache2 将在其上监听。如果 IP 地址没有被指定,Apache2 将监听所有指向其所运行机器上的 IP 地址。Listen 语句的缺省值是 80。把其改成 127.0.0.1:80 将使 Apache2 只在您的环回接口上临听以致于它相对于 Internet 不可用。也可改变其监听端口如81,或保持原样以便正常操作。该语句可以在它自己的文件 /etc/apache2/ports.conf 中发现并修改。<br />
**** The ServerName 语句是可选的,它指明您站点要应答什么 FQDN。缺省虚拟主机没有指定 ServName,因为它要应答没有匹配其它虚拟主机 ServerName 语句的所有请求。如果您只获得 ubunturocks.com 域名并希望在您的 Ubuntu 服务器上只作它的主机,那么在您虚拟主机配置文件中的 ServerName 语句值应该是 ubunturocks.com。在您先前创建的新虚拟主机文件 (/etc/apache2/sites-available/mynewsite) 中添加该语句。<br />
<br />
您也可能要您的网站响应 www.ubunturocks.com 的请求,因为许多用户会假定 www 前缀是适当的。可以使用 ServerAlias 语句来解决这个问题。您也可以在 ServerAlias 中使用通配符。例如,ServerAlias *.ubunturocks.com 将使您的网站响应任何域名以 .ubunturocks.com 结尾的请求。<br />
**** DocumentRoot 语句指定 Apache 将到哪儿去寻找站点文件,缺省值为 /var/www。没有站点配置在那里,但如果您反注释在 /etc/apache2/apache2.conf 中的 RedirectMatch 语句,请求将被重定向到 /var/www/apache2-default,那里是缺省的 Apache2 站点。在您站点的虚拟主机文件中改变该值,记住在必要时可以创建相应的目录!<br />
<br />
/etc/apache2/sites-available 目录并 不会 被 Apache2 解析。在 /etc/apache2/sites-enabled 的软链接指向 "可用的" 站点。使用 a2ensite (Apache2 启用站点) 工具可以创建这些软链接,如:sudo a2ensite mynewsite 这里您站点的配置文件是 /etc/apache2/sites-available/mynewsite。同样,a2dissite 工具将用来禁用站点。<br />
====== 4.10.2.2. 缺省设置 ======<br />
<br />
这部分内容说明 Apache2 服务器缺省设置的配置。举个例子,如果您添加一个虚拟主机,您为该虚拟主机配置的设置将优先于缺省虚拟主机。如果在该虚拟主机的设置中有个语句没有定义,那么将使用缺省值。<br />
<br />
**** 当用户在目录名后使用斜杠 (/) 来请求一个目录索引时,The DirectoryIndex 将通过服务器提供缺省页服务。<br />
<br />
例如,当一个用户请求 http://www.example.com/this_directory/ 页时,他或她要么得到 DirectoryIndex 页,如果它存在的话;要么得到一个服务器生成的目录列表,如果它不存在且设置了 Indexes 选项的话;要么就得到一个无权访问页,如果它不存在且没有设置 Indexes 选项的话。服务器尝试找到在 DirectoryIndex 语句中所列文件之一,并返回它所找到的第一个。如果它没有找到任何一个文件且该目录设置了 Indexes 选项,服务器将生成并返回一个 HTML 格式的列表,包括该目录中的子目录和文件。缺省值可以在 /etc/apache2/apache2.conf 文件中找到,是 " index.html index.cgi index.pl index.php index.xhtml"。因此,如果 Apache2 在所请求的目录中找到任何一个匹配这些名字的文件,第一个将被显示。<br />
<br />
**** ErrorDocument 语句允许您为 Apache 指定一个用于特定错误事件的文件。例如,如果用户请求的资源不存在,那么将引发 404 错误,而在 Apache2 的缺省配置中,文件 /usr/share/apache2/error/HTTP_NOT_FOUND.html.var 将被显示。该文件并不在服务器的 DocumentRoot 中,但在 /etc/apache2/apache2.conf 中有个别名语句将到 /error 目录的请求重定向到 /usr/share/apache2/error/ 中。要查看缺省的 ErrorDocument 语句列表,可以使用命令:grep ErrorDocument /etc/apache2/apache2.conf<br />
<br />
**** 在缺省状态下,服务器将传输日志记录在文件 /var/log/apache2/access.log 中。您可以在您每个虚拟主机站点的配置文件上用 CustomLog 语句来改变它,或者忽略它以接受在 /etc/apache2/apache2.conf 中指定的缺省设置。您也可以通过 ErrorLog 语句来指定记录错误日志的文件,该文件缺省是 /var/log/apache2/error.log。这些都从传输日志中分离出来以便更好地在您的 Apache2 服务器中发现和解决问题。您也可以指定 LogLevel (缺省值是 "warn") 和 LogFormat (缺省值参见 /etc/apache2/apache2.conf)<br />
<br />
**** 一些选项是基于每目录而非每服务器的。Option 是这些语句中的一个。Directory 段是被放在类 XML 标记中,如:<br />
<pre><nowiki><br />
<Directory /var/www/mynewsite><br />
...<br />
</Directory></nowiki></pre><br />
<br />
在 Directory 段中的 Options 语句接受一个或更多下面的用空格分隔的值 (包括其它):<br />
* ExecCGI - 允许执行 CGI 脚本。如果该选项没有设置,则 CGI 脚本将不能执行。<br />
大多数文件不会作为 CGI 脚本运行的。这是非常危险的。CGI 脚本应该位于您 DocumentRoot 目录以外与之分开的目录中,并且只能该目录才有 ExecCGI 选项设置。缺省状态下,CGI 脚本默认位于 /usr/lib/cgi-bin。<br />
* Includes - 允许服务器端包含。服务器端包含允许一个 HTML 文件包含其他文件。这不是一个常用选项。更多信息参见 the Apache2 SSI 指南。<br />
* IncludesNOEXEC - 允许服务器端包含,但 CGI 脚本中的 #exec 和 #include 指令无效。<br />
* Indexes - 如果 DirectoryIndex (如 index.html) 在请求的目录没存在的话,按一定方式显示目录内容列表。<br />
* Multiview - 支持内容协商的多重视图;该选项在缺省状态下出于安全的考虑是被禁用的。参见 Apache2 关于该选项的文档。<br />
* SymLinksIfOwnerMatch - 仅在软连接与其目的文件或目录拥有相同所有者时才使用。<br />
<br />
====== 4.10.2.3. 虚拟主机设置 ======<br />
<br />
虚拟主机允许您在同一台机器上相对不同的 IP 地址、主机名或不同端口号运行不同的服务器。例如,您可以运行使用虚拟主机在同一个 Web 服务器上运行网站 http://www.example.com 和 http://www.anotherexample.com。这一选项适用于缺省虚拟主机和基于 IP 的虚拟主机的 <VirtualHost> 语句,也适用于基于名称的虚拟主机的 <NameVirtualHost> 语句。<br />
<br />
虚拟主机的语句设置仅应用于特定的虚拟主机。如果一个语句在服务器范围中设置而没有在虚拟主机设置中定义,那么将使用缺省设置。例如,您可以定义网络管理员的邮件地址而无需为每个虚拟主机都分别定义邮件地址。<br />
<br />
为虚拟主机设置 DocumentRoot 语句到包含根文档 (如 index.html) 目录。缺省的 DocumentRoot 是 /var/www。<br />
<br />
在 VirtualHost 段中的 ServerAadmin 语句是指用于错误页的页脚中的邮件地址,如果您想在错误页的页脚显示邮件地址的话。<br />
====== 4.10.2.4. 服务器设置 ======<br />
<br />
这部分内容说明如何配置基本的服务器设置。<br />
<br />
LockFile - 当服务器编译时使用了 USE_FCNTL_SERIALIZED_ACCEPT 或 USE_FLOCK_SERIALIZED_ACCEPT 参数时,使用 LockFile 语句来设置 lockfile 的路径。它必须保存在本地磁盘上,它应该设置成缺省值,除非日志目录被定位在 NFS 共享上。如果是这种情况,缺省值应该被改为本地磁盘的位置并且其目录只对 root 用户可读。<br />
<br />
PidFile - PidFile 语句设置服务器记录其进程 ID (pid) 的文件。该文件只对 root 用户可读。在大多数情况下,应该保留其缺省值。<br />
<br />
User - 用户语句设置被服务器用于回应请求的用户 ID。该设置决定服务器的权限。一些该用户无法访问的文件也无法被您网站的访问者访问。用户缺省值是 www-data。<br />
<br />
除非您的确知道您在做什么,否则请不要将 User 设为 root 用户。用 root 作为 User 的值将会在您的 Web 服务器中产生极大的安全漏洞。<br />
<br />
Group 语句同 User 语句相似。Group 设置被服务器用于回应请求的用户组。缺省的组也是 www-data。<br />
====== 4.10.2.5. Apache 模块 ======<br />
<br />
Apache 是一个模块化的服务器。这就意味着在核心服务器中只包括最基本的功能。扩展功能可以通过被引导进 Apache 的模块来实现。缺省情况下,基本模块是在编译时被包含进服务器的。如果服务器编译成可以动态引导模块,那么模块可以单独编译,并在任何时候使用 LoadModule 语句来添加。否则,Apache 必须在添加或删除模块时重新编译。Ubuntu 编译 Apache2 时是允许动态引导模块的。配置语句通过将已有模块放置 <IfModule> 块中以便有条件地包含在配置语句中。您可以在您的 Web 服务器上安装和使用额外的 Apache2 模块。您可以用 apt-get 命令来安装 Apache2 模块。如安装 MYSQL 认证的 Apach2 模块,您可以在终端提示符中运行以下命令:<br />
<pre><nowiki><br />
sudo apt-get install libapache2-mod-auth-mysql</nowiki></pre><br />
<br />
一旦您安装了模块,模块将出现在 /etc/apache2/mods-available 目录中。您可以使用 a2enmod 命令来启用模块。您也可以使用 a2dismod 命令来禁用模块。一旦您启用该模块,该模块将在 /etc/apache2/mods-enabled 目录中出现。<br />
===== 4.10.3. HTTPS 配置 =====<br />
<br />
The mod_ssl 模块为 Apache2 服务器添加了一个重要的功能 - 通讯加密的能力。因此,当您的浏览器要用 SSL 加密通讯时,需要在浏览器导航栏中在输入的统一资源定位器 (URL) 的开始处使用 https:// 前缀。<br />
<br />
mod_ssl 模块已经包含在 apache2-common 软件包中。如果您安装该软件包,您可以在终端提示符之后执行下列命令启用 mod_ssl 模块:<br />
<pre><nowiki><br />
sudo a2enmod ssl</nowiki></pre><br />
<br />
====== 4.10.3.1. 证书和安全 ======<br />
<br />
要设置您的安全服务器,使用公共钥创建一对公钥私钥对。大多数情况下,您发送您的证书请求 (包括您的公钥),您公司证明材料以及费用到一个证书颁发机构 (CA)。CA 检证证书请求及您的身份,然后将证书发回您的安全服务器。<br />
<br />
还有种办法就是您可以创建您自己签署的证书。然而请注意自己签置的证书不应该用于生产环境。自已签署的证书不会被用户浏览器自动接受。浏览器将提示用户接受证书并创建一个安全的连接。<br />
<br />
一旦您有一个自己签署的证书或一个您选择的 CA 签署的证书,您需要将它安装在您的安全服务器上。<br />
====== 4.10.3.2. 证书类型 ======<br />
<br />
您需要一个钥匙和一个证书来操作您的安全服务器,这意味着您可以生成自己签署的证书或购买 CA 签署的证书。由 CA 签署的证书为您的服务器提供两个重要的功能:<br />
<br />
**** 浏览器 (通常) 会自动地识别证书并且在不提示用户的情况下允许创建一个安全连接。<br />
**** 当一个 CA 生成一个签署过的证书,它为提供网页给浏览器的组织提供身份担保。<br />
<br />
多数支持 SSL 的 Web 浏览器都有一个 CA 列表,它们的证书会被自动接受。如果一个浏览器遇到一个其授权 CA 并不在列表中的证书,浏览器将询问用户是否接受或拒绝连接。<br />
<br />
您可以为您的安全服务器生成一个自己签署的证书,但要知道自己签署的证书并不提供与 CA 签署的证书相同的功能。自己签署的证书不会被多数 Web 浏览器自动识别,而且自己签署的证书也不为任何提供网站的组织提供担保。CA 签署的证书为安全服务器提供所有这些重要的功能。从 CA 得到证书的过程相当容易。下面简要介绍一下:<br />
<br />
*** 创建一个私有和公共密钥对<br />
*** 基于公钥创建一个证书请求。证书请求包含您服务器及公司信息。<br />
*** 发送证书请求,并随之提供您的身份文档到一个 CA。我们不能告诉您选择哪个证书颁发机构。您可以基于您以往的经验或您朋友或同事的经验或纯粹基于经济因素来决定。<br />
一旦您选定一家 CA,您需要根据他们所提供的规程来从他们那里获得证书。<br />
*** 当 CA 确定您确实如您所声称的那样时,他们将发给您一个数字证书。<br />
*** 在您的安全服务器上安装该证书,并开始进行安全事务处理<br />
<br />
无论您是从一家 CA 那儿获得证书或是生成您自己签署的证书,第一步就是生成钥匙。<br />
====== 4.10.3.3. 生成一个证书签署请求 (CSR) ======<br />
<br />
要生成证书签署请求 (CSR),您应该创建您自己的钥匙。您可以在终端提示符后运行以下命令以创建钥匙:<br />
<pre><nowiki><br />
openssl genrsa -des3 -out server.key 1024</nowiki></pre><br />
<pre><nowiki> <br />
Generating RSA private key, 1024 bit long modulus<br />
.....................++++++<br />
.................++++++<br />
unable to write 'random state'<br />
e is 65537 (0x10001)<br />
Enter pass phrase for server.key:</nowiki></pre><br />
<br />
您现在可以输入您的 passphrase。为了最大程度的安全,它至少应该包含八个字符。当指定 -des3 时最小长度为四个字符。它应该包含数字和/或标点符号,并且不应该是字典中的单词。也请记住您的 passphrase 是大小写敏感的。<br />
<br />
再次输入 passphrase 核对。一旦您再次输入正确的话,服务器密钥就生成了并保存在 server.key 文件中。<br />
<br />
您也可以不用 passphrase 来运行您的安全 Web 服务器。这样比较方便,因为在您启动您的安全 Web 服务器时您不需要每次都输入 passphrase。但它也是相当不安全的,钥匙的风险也同样意味着服务器的风险。<br />
<br />
在任何情况下,您都可以选择不用 passphrase 来运行您的安全 Web 服务器,这可以通过在生成时不带 -des3 参数来实现或者通过在终端提示符后执行以下命令:<br />
<pre><nowiki><br />
openssl rsa -in server.key -out server.key.insecure</nowiki></pre><br />
<br />
一旦您运行上述命令,不安全的钥匙将被保存在 server.key.insecure 文件中。您可以使用该文件来生成没有 passphrase 的 CSR。<br />
<br />
要创建 CSR,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
openssl req -new -key server.key -out server.csr</nowiki></pre><br />
<br />
它将提示您输入 passphrase。如果您输入正确的 passphrase,它将提示您输入公司名、站点名、邮件ID等。一旦您输入了所有内容,您的 CSR 将被创建并被保存在 server.csr 文件中。您可以提交该 CSR 文件给一家 CA 去处理。CA 将使用该 CSR 并颁发证书。但是,您也可以使用该 CSR 生成自己签署的证书。<br />
====== 4.10.3.4. 创建一个自己签署的证书 ======<br />
<br />
要创建自己签署的证书,在终端提示符下运行以下命令:<br />
<pre><nowiki><br />
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</nowiki></pre><br />
<br />
上述命令将提示您输入 passphrase。一旦您输入正确的 passphrase,您的证书将被创建并将保存在 server.crt 文件中。<br />
<br />
如果您的安全服务器被用在生产环境中,你也许需要 CA 签署的证书。并不推荐使用自己签署的证书。<br />
<br />
====== 4.10.3.5. 安装证书 ======<br />
<br />
您可以安装钥匙文件 server.key 和证书文件 server.crt 或由您的 CA 颁发的证书文件,在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo cp server.crt /etc/ssl/certs<br />
sudo cp server.key /etc/ssl/private</nowiki></pre><br />
<br />
您要添加以下四行到 /etc/apache2/sites-available/default 文件或您安全虚拟主机的配置文件。您要将它们放在 VirtualHost 部分。他们应该放在 DocumentRoot 行下面:<br />
<pre><nowiki><br />
SSLEngine on<br />
<br />
SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire<br />
<br />
SSLCertificateFile /etc/ssl/certs/server.crt<br />
SSLCertificateKeyFile /etc/ssl/private/server.key</nowiki></pre><br />
<br />
HTTPS 在 443 端口监听。您可以将下面一行添加到 /etc/apache2/ports.conf 文件中:<br />
<pre><nowiki><br />
Listen 443</nowiki></pre><br />
<br />
====== 4.10.3.6. 访问服务器 ======<br />
<br />
一旦您安装了您的证书,您应该重启您的 Web 服务器。您可以在终端提示符后运行以下命令以重启您的 web 服务器:<br />
<pre><nowiki> <br />
sudo /etc/init.d/apache2 restart</nowiki></pre><br />
<br />
您应该记住并在每次您启动您的安全 web 服务器时输入 passphrase。<br />
<br />
您将被提示输入 passphrase。一旦您输入正常的 passphrase,将启动安全 web 服务器。您可以通过在您的浏览器地址栏上输入 https://your_hostname/url/ 来访问安全服务器的页面。<br />
===== 4.10.4. 引用 =====<br />
[http://httpd.apache.org/docs/2.0/ Apache2 文档]<br />
<br />
[http://www.modssl.org/docs/ Mod SSL 文档]<br />
<br />
==== Squid - 代理服务器 ====<br />
Squid 是一个全功能的 web 代理与缓存服务器应用程序,它为超文本传输协议 (HTTP)、文件传输协议 (FTP) 以及其他流行网络协议提供代理和缓存服务。Squid 可以实现安全套接层 (SSL) 请求的缓存和代理、域名服务器 (DNS) 的缓存以及进行传输缓存。Squid 也支持大量不同的缓存协议,如 Internet 缓存协议 (ICP)、超文本缓存协议 (HTCP)、缓存阵列路由协议 (CARP) 以及 Web 缓存协同协议 (WCCP)。<br />
<br />
Squid 代理缓存服务器对于不同的代理和缓存服务器需求来说是一个极好的解决方案,它适用于从分支机构到企业级的网络,访问控制机制的粒度以及通过简单网络管理协议 (SNMP) 对临界参数的监视。当选择计算机系统用于 Squid 代理或缓存服务器时,请确保您的系统配置大量的物理内存以便 Squid 可以使用内存进行缓存以提高性能。<br />
===== 4.11.1. 安装 =====<br />
<br />
在终端提示符后输入下列命令安装 Squid 服务器:<br />
<pre><nowiki><br />
sudo apt-get install squid squid-common</nowiki></pre><br />
<br />
===== 4.11.2. 配置 =====<br />
<br />
Squid 可以通过编辑在 /etc/squid/squid.conf 配置文件中的语句来进行配置。下面的范例说明一些语句的修改可能对 Squid 服务器的影响。更多 Squid 的配置可以参阅参考章节。<br />
<br />
在编辑配置文件之前,您应该生成一份原始文件副本并对其进行写保护,以便您可以将原始文件作为参考并在必要时重用它。<br />
<br />
要拷贝 /etc/squid/squid.conf 文件并对其进行写保护,可以在终端提示符后使用以下命令:<br />
<pre><nowiki><br />
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original<br />
sudo chmod a-w /etc/squid/squid.conf.original</nowiki></pre><br />
<br />
**** 要将您的 Squid 服务器监听 TCP 端口 8888 以代替缺省的 TCP 端口 3128,可以如下所示修改 http_port 语句:<br />
<code><nowiki>http_port 8888</nowiki></code><br />
**** 改变 visible_hostname 语句是为了给 Squid 服务器一个特定的主机名。该主机名并必是计算机的主机名。在本范例中它被设为 weezie。<br />
<code><nowiki>visible_hostname weezie</nowiki></code><br />
**** 此外,使用 Squid 访问控制,您可以通过 Squid 代理将 Internet 服务配置成仅限于有确定网际协议 (IP) 地址的用户使用。例如,我们将举例说明只让 192.168.42.0/24 子网的用户访问:<br />
将下列语句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:<br />
<code><nowiki>acl fortytwo_network src 192.168.42.0/24</nowiki></code><br />
然后添加下列语句到你 /etc/squid/squid.conf 文件 http_access 部分的 顶部:<br />
<code><nowiki>http_access allow fortytwo_network</nowiki></code><br />
**** 使用 Squid 卓越的访问控制功能,您可以通过 Squid 代理将 Internet 服务配置成仅限于在正常商务时间使用。例如,我们将举例说明只允许来自 10.1.42.0/24 子网的商务雇员在周一到周五的上午 9:00 到 下午 5:00 时间段内访问:<br />
将下列语句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:<br />
<code><nowiki>acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00</nowiki></code><br />
然后添加下列语句到你 /etc/squid/squid.conf 文件 http_access 部分的 顶部:<br />
<code><nowiki>http_access allow biz_network biz_hours</nowiki></code><br />
<br />
<br />
在修改 /etc/squid/squid.conf 文件后,保存该文件并重启 squid 服务器应用程序以使改动生效。可以在终端提示符后使用下列命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/squid restart</nowiki></pre><br />
<br />
===== 4.11.3. 引用 =====<br />
[http://www.squid-cache.org/ Squid 网站]<br />
==== 版本控制系统 ====<br />
版本控制是管理改动信息的技术。它对于程序员而言一直是重要的工具,他们经常花时间对程序进行小改动之后又在第二天改回来。但版本控制软件的用途却远远超出了软件开发的界线。无论何处您可以发现人们使用计算机去管理那些经常变动的信息,那里都有使用版本控制的空间。<br />
<br />
===== 4.12.1. Subversion =====<br />
Subversion 是一个开源的版本控制系统。使用 Subversion,您可以记录源文件和文档的历史。它管理文件和目录。文件树被放入了中心库中。库更象是一个普通的文件服务器,除了它可以记住对文件和目录的每次改变。<br />
====== 4.12.1.1. 安装 ======<br />
要通过 HTTP 协议来访问 Subversion 库,您必须安装和配置一个 web 服务器。Apache2 被证明可以和 Subversion 一起工作。请参考 Apache2 章节的 HTTP 小节以安装和配置 Apache2。要使用 HTTPS 协议访问 Subversion 库,您必须在您的 Apache2 web 服务器上安装和配置数字证书。请参考 Apache2 章节的 HTTPS 小节以安装和配置数据证书。<br />
<br />
要安装 Subversion,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo apt-get install subversion libapache2-svn</nowiki></pre><br />
====== 4.12.1.2. 服务器配置 ======<br />
这一步假定您已经在您的系统上安装了上面提及的包。本部分内容说明如何创建一个 Subversion 库和访问项目。<br />
创建 Subversion 库<br />
<br />
Subversion 库可以在终端提示符后使用以下命令创建:<br />
<pre><nowiki><br />
svnadmin create /path/to/repos/project</nowiki></pre><br />
<br />
====== 4.12.1.3. 访问方式 ======<br />
<br />
Subversion 库可以通过许多不同的方式如通过在本地磁盘或不同的网络协议来访问 (checked out)。然而,库的位置经常是一个 URL。下表描述了不同的URL模式如何映射相应的访问方式。<br />
表 4-1 访问方式<br />
{|border="1" cellspacing="0"<br />
|模式||访问方式<br />
|-<br />
|file://||直接访问库 (在本地磁盘)<br />
|-<br />
|http://||通过 WebDAV 协议访问带有 Subversion 的 Apache2 web 服务器。<br />
|-<br />
|https://||与 http:// 相同,但有 SSL 加密<br />
|-<br />
|svn://||通过自身协议访问 svnserve 服务<br />
|-<br />
|svn+ssh://||与 svn:// 一样,但使用 SSH 遂道<br />
|}<br />
<br />
在本部分,我们将看到如何为所有这些访问方式来配置 Subversion。这里,我们只介绍基本用法。更多详细、高级用法请参阅svn 书<br />
======= 4.12.1.3.1. 直接访问库 (file://) =======<br />
<br />
这是所有访问方式中最简单的。它不要求运行任何 Subversion 服务器进程。该访问方式用于在同一台机器上访问 Subversion。在终端提示符后输入的命令如下所示:<br />
<pre><nowiki><br />
svn co file:///path/to/repos/project</nowiki></pre><br />
或<br />
<pre><nowiki><br />
svn co file://localhost/path/to/repos/project</nowiki></pre><br />
<br />
如果您没有指定主机名,则需要三个斜杠 (///) -- 其中两个是协议的 (这里是 file),另一个是路径前的。如果您指定了主机名,那么您必须使用双个斜杠 (//)。<br />
<br />
库权限依赖于文件系统的权限。如果用户有读/写权限,他可以从库中检出或者提交到库。<br />
======= 4.12.1.3.2. 通过 WebDAV 协议 (http://) 访问 =======<br />
<br />
要通过 WebDAV 协议访问 Subversion,您必须配置您的 Apache2 web 服务器。您必须在您的 /etc/apache2/apache2.conf 文件中添加下面一小段:<br />
<pre><nowiki><br />
<Location /svn><br />
DAV svn<br />
SVNPath /path/to/repos<br />
AuthType Basic<br />
AuthName "Your repository name"<br />
AuthUserFile /etc/subversion/passwd<br />
<LimitExcept GET PROPFIND OPTIONS REPORT><br />
Require valid-user<br />
</LimitExcept><br />
</Location> </nowiki></pre><br />
<br />
接下来,您必须创建 /etc/subversion/passwd 文件。该文件包含用户认证细节。要添加一个条目,如添加一个用户,您可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
htpasswd2 /etc/subversion/passwd user_name</nowiki></pre><br />
<br />
该命令将提示您输入密码。一旦您输入密码。该用户将被添加。现在您可以运行下列命令来访问库:<br />
<pre><nowiki><br />
svn co http://servername/svn</nowiki></pre><br />
<br />
该密码是以纯文本传输的。如果您担心密码被截取,建议您使用 SSL 加密。相关细节,请参考下一章节。<br />
<br />
======= 4.12.1.3.3. 通过带有 SSL 加密的 WebDAV 协议来访问 (https://) =======<br />
<br />
通过带 SSL 加密的 WebDAV 协议 (https://) 访问也使用 http:// 类似,只是您必须在您的 Apache2 web 服务器中安装和配置数字证书。<br />
<br />
您可以安装由证书签署机构如 Verisign 颁发的数字证书。或者,您也可以安装自己签署的证书。<br />
<br />
这一步假设您已经在您的 Apache2 web 服务器中安装和配置了数字证书。现在要访问 Subversion 库,请参考上一章节!除了所用协议之外访问方式完全相同。您必须使用 https:// 来访问 Subversion 库。<br />
======= 4.12.1.3.4. 通过自身协议访问 (svn://) =======<br />
<br />
一旦 Subversion 库被创建,您就可以配置访问控制了。您可以通过编辑 /path/to/repos/project/conf/svnserve.conf 文件来配置访问控制了。例如,要设置认证,您可以在配置文件中反注释下列行:<br />
<pre><nowiki><br />
<br />
在反注释上面几行之后,您可以在 passwd 文件中维护用户列表。因此编辑同一目录中的文件 passwd 并添加新用户。其语法如下:<br />
<pre><nowiki><br />
username = password</nowiki></pre><br />
<br />
更多细节,请参考该文件。<br />
<br />
现在要从本机或不同机器通过 svn:// 自身协议来访问 Subversion,您可以使用 svnserve 命令来运行 svnserver。其语法如下:<br />
<pre><nowiki><br />
$ svnserve -d --foreground -r /path/to/repos<br />
<br />
For more usage details, please refer to:<br />
$ svnserve --help</nowiki></pre><br />
<br />
一旦您运行该命令,将启动 Subversion 并在缺省端口 (3690) 监听。要访问项目库,您必须在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
svn co svn://hostname/project project --username user_name</nowiki></pre><br />
<br />
根据服务器的配置,出现密码提示。一旦您认证通过,将从 Subversion 库检出代码。要让本地副本同步项目库,您可以运行 update 子命令。在终端提示符后的命令语法如下所示:<br />
<pre><nowiki><br />
cd project_dir ; svn update</nowiki></pre><br />
<br />
关于 Subversion 子命令的更多细节,您可以参考手册。如为了学到关于 co (checkout) 命令的细节,请在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
svn co help</nowiki></pre><br />
<br />
======= 4.12.1.3.5. 通过带有 SSL 加密的自身协议 (svn+ssh://) 访问 =======<br />
<br />
配置和服务器处理与用 svn:// 方式是相同的。详情请参考上面的章节。这一步假定您已经完成了上面的步骤并用 svnserve 命令启动了 Subversion 服务器。<br />
<br />
它也假定 ssh 服务器已经在该机上运行并允许连接。为了确认,请尝试使用 ssh 登录该机器。如果您可以登录,一切就绪。如果不能登录,请在继续之前解决它。<br />
<br />
svn+ssh:// 协议使用 SSL 加密来访问 Subversion 库。使用这种方式进行的数据传输是加密的。要访问项目库 (如 checkout),您必须使用下面的命令语法:<br />
<br />
<pre><nowiki><br />
svn co svn+ssh://hostname/var/svn/repos/project</nowiki></pre><br />
<br />
使用这种访问方式您必须使用全路径 (/path/to/repos/project) 来访问 Subversion 库。<br />
<br />
根据服务器配置,它将提示输入密码。在使用 ssh 登录时您必须输入密码。一旦您被认证通过之后,它将从 Subversion 库中检出代码。<br />
===== 4.12.2. CVS 服务器 =====<br />
<br />
CVS 是一个版本控制系统。您可以使用它来记录源文件的历史。<br />
====== 4.12.2.1. 安装 ======<br />
<br />
在终端提示符后输入下列命令来安装 cvs:<br />
<pre><nowiki><br />
sudo apt-get install cvs</nowiki></pre><br />
<br />
在您安装 cvs之后,您将安装 xinetd 来启动和停用 cvs 服务器。在提示符后输入下列命令以安装<br />
xinetd:<br />
<pre><nowiki><br />
sudo apt-get install xinetd</nowiki></pre><br />
<br />
====== 4.12.2.2. 配置 ======<br />
<br />
一旦您安装 cvs,将会自动初始化库。缺省状态下,库存放在 /var/lib/cvs 目录下。您可以通过运行以下命令来改变该路径:<br />
<pre><nowiki><br />
cvs -d /your/new/cvs/repo init</nowiki></pre><br />
<br />
一旦库开始建立,您可以配置 xinetd 来启动 CVS 服务器。您可以拷贝以下行到 /etc/xinetd/cvspserver 文件。<br />
<pre><nowiki><br />
service cvspserver<br />
{<br />
port = 2401<br />
socket_type = stream<br />
protocol = tcp<br />
user = root<br />
wait = no<br />
type = UNLISTED<br />
server = /usr/bin/cvs<br />
server_args = -f --allow-root /var/lib/cvs pserver<br />
disable = no<br />
}<br />
</nowiki></pre><br />
<br />
如果你改变缺省的库目录 (/var/lib/cvs) 那么您必须要编辑库。<br />
<br />
一旦您配置好 xinetd ,您就可以运行以下命令来启动 cvs 服务器了:<br />
<pre><nowiki><br />
sudo /etc/init.d/xinetd start</nowiki></pre><br />
<br />
您可以执行以下命令来确定 CVS 服务器正在运行:<br />
<pre><nowiki><br />
sudo netstat -tap | grep cvs</nowiki></pre><br />
<br />
当您运行该命令时,您可以看到类似下面的行:<br />
<pre><nowiki><br />
tcp 0 0 *:cvspserver *:* LISTEN </nowiki></pre><br />
<br />
在这里您可以继续添加用户,添加新的项目以及管理 CVS 服务器<br />
<br />
CVS 允许用户添加独立于 OS 安装的用户。也许最容易的方式就是让 CVS 使用 Linux 的用户,虽然它有潜在的安全隐患。详细请参考 CVS 手册。<br />
<br />
====== 4.12.2.3. 添加项目 ======<br />
<br />
本部分内容说明如何在 CVS 库中添加新项目。创建目录以及该目录所需的文档和源文件。现在运行下列命令将该项目添加到 CVS 库中:<br />
<pre><nowiki><br />
cd your/project<br />
cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start<br />
</nowiki></pre><br />
<br />
您可以使用 CVSROOT 环境变量来保存 CVS 根目录。一旦您导出 CVSROOT 环境变量,您可以在上面的 cvs 命令中避免使用 -d 选项。<br />
<br />
字符串 new_project 是一个 vendor 标签,start 是一个版本标签。它们在此没有任何用处,但由于 CVS 要求要有它们,所以它们必须出现。<br />
<br />
当您新添项目时,您所用的 CVS 用户必须对 CVS 库 (/var/lib/cvs) 有写权限。缺省状态下,src 组有对 CVS 库的写权限,因此,您可以添加用户到该组,然后就该用户就可以在 CVS 库中添加和管理项目了。<br />
<br />
===== 4.12.3. 引用 =====<br />
<br />
[http://subversion.tigris.org/ Subversion 主页]<br />
<br />
[http://svnbook.red-bean.com/ Subversion 书 (使用Subversion进行版本控制)]<br />
<br />
[http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_toc.html CVS 手册]<br />
==== 数据库 ====<br />
Ubuntu 提供两个数据库服务器。它们是:<br />
<br />
**** MySQL™<br />
**** PostgreSQL<br />
<br />
它们位于主软件库中。该部分内容说明如何安装和配置这些数据库服务器。<br />
===== 4.13.1. MySQL =====<br />
<br />
MySQL 是一个快速、多线程、多用户、强大的 SQL 数据库服务器。它旨在成为能用于大型应用、高负载的生产系统以及大规模部署的软件。<br />
====== 4.13.1.1. 安装 ======<br />
<br />
要安装 MySQL,可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install mysql-server mysql-client</nowiki></pre><br />
<br />
一旦安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:<br />
<pre><nowiki><br />
sudo netstat -tap | grep mysql</nowiki></pre><br />
<br />
当您运行该命令时,您可以看到类似下面的行:<br />
<pre><nowiki><br />
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -</nowiki></pre><br />
<br />
如果服务器不能正常运行,您可以通过下列命令启动它:<br />
<pre><nowiki><br />
sudo /etc/init.d/mysql restart</nowiki></pre><br />
<br />
====== 4.13.1.2. 配置 ======<br />
<br />
缺省状态下,管理员密码是没有设置的。一旦您安装了 MySQL,您必须要做的第一件事就是配置 MySQL 的管理员密码。要做到这一点,可以运行以下命令:<br />
<br />
<pre><nowiki><br />
sudo mysqladmin -u root password newrootsqlpassword<br />
sudo mysqladmin -u root -h localhost password newrootsqlpassword</nowiki></pre><br />
<br />
您可以编辑 /etc/mysql/my.cnf 文件来进行基本设置 -- 日志文件、端口号等。详情请参考 /etc/mysql/my.cnf 文件。<br />
===== 4.13.2. PostgreSQL =====<br />
<br />
PostgreSQL 是一个面向对象的数据库系统,它有着传统商业数据库系统和下一代 DBMS 系统所增进的功能。<br />
====== 4.13.2.1. 安装 ======<br />
<br />
要安装 PostgreSQL,可以在命令提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install postgresql</nowiki></pre><br />
<br />
一旦安装完成,您就要按您的需要配置 PostgreSQL 服务器,尽管缺省配置已经可以使它可以正常运行了。<br />
====== 4.13.2.2. 配置 ======<br />
<br />
缺省状态下,通过 TCP/IP 的连接是被禁用的。PostgreSQL 支持多客户认证方式。其中 IDENT 认证方式被默认使用。请参考 PostgreSQL 管理员指南。<br />
<br />
接下来的讨论假定您希望启用 TCP/IP 连接并对客户认证使用 MD5 模式。PostgreSQL 配置文件被保存在 /etc/postgresql/<version>/main /etc/postgresql/7.4/main<br />
<br />
要配置 ident 认证,请在 /etc/postgresql/7.4/main/pg_ident.conf 文件中添加。<br />
<br />
要启用 TCP/IP 连接,编辑文件 /etc/postgresql/7.4/main/postgresql.conf。<br />
<br />
找到 #tcpip_socket == false 行并将其改为 tcpip_socket == true。如果您知道您正在做什么,那么您也可以编辑其他所有参数。详情请参考配置文件或 PostgreSQL 文档。<br />
<br />
缺省状态下,没有为 MD5 客户端认证设置用户证书。因此,首先必须将 PostgreSQL 服务器配置成使用 trust 客户端认证,用以连接数据库。配置密码并将配置恢复成使用 MD5 客户端认证。要启用 trust 客户端认证,可编辑文件 /etc/postgresql/7.4/main/pg_hba.conf<br />
<br />
注释所有使用 ident 和 MD5 客户端认证的行并添加下列行:<br />
<pre><nowiki><br />
local all postgres trust sameuser</nowiki></pre><br />
<br />
然后运行下列命令启动 PostgreSQL 服务器:<br />
<pre><nowiki><br />
sudo /etc/init.d/postgresql start</nowiki></pre> <br />
<br />
一旦 PostgreSQL 服务器成功启动,在终端提示符后运行下面的命令以连接缺省的 PostgreSQL 模板数据库。<br />
<pre><nowiki><br />
psql -U postgres -d template1</nowiki></pre><br />
<br />
上面的命令是以用户 postgres 的身份连接 PostgreSQL 的 template1 数据库。一旦您连到 PostgreSQL 服务器,您将会在 SQL 提示符下。您可以在 psql 提示符中运行下列命令来为用户 postgres 配置密码。<br />
<pre><nowiki><br />
template1=# ALTER USER postgres with encrypted password 'your_password';</nowiki></pre><br />
<br />
在配置密码后,编辑文件 /etc/postgresql/7.4/main/pg_hba.conf 以使用 MD5 认证:<br />
<br />
注释掉最近添加的 trust 行并添加下面行:<br />
<pre><nowiki><br />
local all postgres md5 sameuser</nowiki></pre> <br />
<br />
无论如何上面配置并不完整。更多的配置参数请参考 PostgreSQL 管理员指南。<br />
==== 邮件服务 ====<br />
在网络或 Internet 上从一个人得到邮件给另一个人的处理过程包含许多系统的协同工作。这些系统中的每一个都必须配置正确以便可以正常工作。发送者使用一个 邮件用户代理 (MUA),或邮件客户端通过一个或多个 邮件传输代理 (MTA) 来发送信息,最后一个将信息送到 邮件投递代理 (MDA) 以便将其投递到接受者的收件箱中。该信息将会被接受者邮件客户端检索到,通常是通过 POP3 或 IMAP 服务器。<br />
===== 4.14.1. Postfix =====<br />
<br />
Postfix 是 Ubuntu 中缺省的邮件传输代理 (MTA)。它试图变得快捷、易于管理和安全。它与 MTA sendmail 兼容。这部分内容说明如何安装和配置 postfix。还说明如何将它设置成使用安全连接的 SMTP 服务器 (为了安全发送邮件)。<br />
====== 4.14.1.1. 安装 ======<br />
<br />
要安装带有 SMTP-AUTH 和 传输层安全 (TLS) 的 postfix,运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install postfix</nowiki></pre><br />
<br />
当安装进程提问时简单地按回车,下面将详细说明相关配置。<br />
====== 4.14.1.2. 基本配置 ======<br />
<br />
要配置 postfix,运行下列命令:<br />
<pre><nowiki><br />
sudo dpkg-reconfigure postfix</nowiki></pre><br />
<br />
用户界面将显示。在每一屏中,选择下列值:<br />
<pre><nowiki><br />
**** Ok<br />
**** Internet 站点<br />
**** NONE<br />
**** mail.example.com<br />
**** mail.example.com, localhost.localdomain, localhost<br />
**** No<br />
**** 127.0.0.0/8<br />
**** Yes<br />
**** 0<br />
**** +<br />
**** 全部<br />
</nowiki></pre><br />
<br />
把 mail.example.com 作为您的邮件服务器的主机名。<br />
<br />
====== 4.14.1.3. SMTP 认证 ======<br />
<br />
下一步是为 postfix 的 SMTP AUTH 配置使用 SASL。与其直接编辑配置,不如使用 postconf 命令配置所有 postfix 参数。配置参数被保存在 /etc/postfix/main.cf 文件中。如果您希望更新配置一项参数,您可以运行命令或手工在文件中修改。<br />
<br />
*** 配置 Postfix 使用 SASL (saslauthd) 的 SMTP AUTH :<br />
<pre><nowiki><br />
postconf -e 'smtpd_sasl_local_domain ='<br />
postconf -e 'smtpd_sasl_auth_enable = yes'<br />
postconf -e 'smtpd_sasl_security_options = noanonymous'<br />
postconf -e 'broken_sasl_auth_clients = yes'<br />
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'<br />
postconf -e 'inet_interfaces = all'<br />
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf<br />
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf</nowiki></pre><br />
*** 接下来为 TLS 配置数字证书。当被询问问题时,按照提示并适当回答。<br />
<pre><nowiki><br />
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024<br />
chmod 600 smtpd.key<br />
openssl req -new -key smtpd.key -out smtpd.csr<br />
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt<br />
openssl rsa -in smtpd.key -out smtpd.key.unencrypted<br />
mv -f smtpd.key.unencrypted smtpd.key<br />
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650<br />
mv smtpd.key /etc/ssl/private/<br />
mv smtpd.crt /etc/ssl/certs/<br />
mv cakey.pem /etc/ssl/private/<br />
mv cacert.pem /etc/ssl/certs/</nowiki></pre><br />
您可以从证书颁发机构得到数字证书。或者您可以创建您自己的证书。详情参考 第4.10.3.4节 ― 创建一个自己签署的证书。<br />
*** 配置 Postfix 对接收或发送邮件进行 TLS 加密:<br />
<pre><nowiki><br />
postconf -e 'smtpd_tls_auth_only = no'<br />
postconf -e 'smtp_use_tls = yes'<br />
postconf -e 'smtpd_use_tls = yes'<br />
postconf -e 'smtp_tls_note_starttls_offer = yes'<br />
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'<br />
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'<br />
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'<br />
postconf -e 'smtpd_tls_loglevel = 1'<br />
postconf -e 'smtpd_tls_received_header = yes'<br />
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'<br />
postconf -e 'tls_random_source = dev:/dev/urandom'<br />
postconf -e 'myhostname = mail.example.com'</nowiki></pre><br />
<br />
在您运行所有命令之后,postfix 的 SMTP AUTH 将被配置。将为 TLS 创建自己签署的证书并与 postfix 一起配置。<br />
<br />
现在文件 /etc/postfix/main.cf 看上去就象 这样。<br />
<br />
postfix 初始配置完成。运行下列命令以开始 postfix 守护程序:<br />
<pre><nowiki><br />
sudo /etc/init.d/postfix start</nowiki></pre><br />
<br />
现在 postfix 已经被安装、配置及成功运行。Postfix 支持在 RFC2554 中定义的 SMTP AUTH。它基于 SASL。无论如何在您使用 SMTP 之前必须设置 SASL 认证。<br />
====== 4.14.1.4. 配置 SASL ======<br />
<br />
libsasl2、sasl2-bin 和 libsasl2-modules 对于使用 SASL 的 SMTP AUTH 是必需的。如果您没有安装它们的话,您可以安装这些应用程序。<br />
<pre><nowiki><br />
apt-get install libsasl2 sasl2-bin</nowiki></pre><br />
<br />
要让其正常工作的话做一些改动是必须的。因为 Postfix 是被 chroot 在 /var/spool/postfix 中运行,SASL 需要被配置在假根目录中运行 (从 /var/run/saslauthd 到 /var/spool/postfix/var/run/saslauthd):<br />
<pre><nowiki><br />
mkdir -p /var/spool/postfix/var/run/saslauthd<br />
rm -rf /var/run/saslauthd</nowiki></pre><br />
<br />
要激活 saslauthd,编辑文件 /etc/default/saslauthd,并修改或添加 START 变量。为了将 saslauthd 配置成在假根目录中运行,添加 PWDIR、PIDFILE 和 PARAMS 变量。最终,随您所好配置 MECHANISMS 变量。该文件看起来象这样:<br />
<pre><nowiki><br />
START=yes<br />
<br />
PWDIR="/var/spool/postfix/var/run/saslauthd"<br />
PARAMS="-m ${PWDIR}"<br />
PIDFILE="${PWDIR}/saslauthd.pid"<br />
<br />
<br />
MECHANISMS="pam"<br />
</nowiki></pre><br />
<br />
如果您喜欢,您可以使用 shadow 代替 pam。这将使用 MD5 哈希密码传输并更为安全。需要认证的用户名和密码将是您正在服务器上使用系统的那些用户。<br />
<br />
接下来更新 /var/spool/portfix/var/run/saslauthd 的 dpkg "state"。saslauthd 初始化脚本将使用该设置来创建有着适当权限和所有权的目录:<br />
<pre><nowiki><br />
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd</nowiki></pre><br />
<br />
====== 4.14.1.5. 测试 ======<br />
<br />
SMTP AUTH 配置完成。现在是启动并测试设置的时候了。您可以运行下列命令来启动 SASL 守护程序:<br />
<pre><nowiki><br />
sudo /etc/init.d/saslauthd start</nowiki></pre><br />
<br />
要查看 SMTP-AUTH 和 TLS 是否正常工作,运行下列命令:<br />
<pre><nowiki><br />
telnet mail.example.com 25</nowiki></pre><br />
<br />
在您建立到 postfix 邮件服务器连接之后,输入:<br />
<pre><nowiki><br />
ehlo mail.example.com</nowiki></pre><br />
<br />
如果您看到包括下列行时,那么一切工作正常。输入 quit 退出。<br />
<pre><nowiki><br />
250-STARTTLS<br />
250-AUTH LOGIN PLAIN<br />
250-AUTH=LOGIN PLAIN<br />
250 8BITMIME</nowiki></pre><br />
<br />
===== 4.14.2. Exim4 =====<br />
<br />
Exim4 是另一个由剑桥大学开发的用于连接 Internet 的 Unix 系统上的消息传输代理 (MTA)。安装Exim可以代替 sendmail,虽然 exim 的配置与 sendmail 是非常不同。<br />
====== 4.14.2.1. 安装 ======<br />
<br />
要安装 exim4,运行下列命令: <br />
<pre><nowiki><br />
sudo apt-get install exim4 exim4-base exim4-config</nowiki></pre><br />
<br />
====== 4.14.2.2. 配置 ======<br />
<br />
要配置 exim4,运行下列命令: <br />
<pre><nowiki><br />
sudo dpkg-reconfigure exim4-config</nowiki></pre><br />
<br />
用户界面将显示。该用户界面让您配置许多参数。例如,在 exim4 中配置文件被分成多个文件。如果您希望将它们放在一个文件中,您可以根据该用户界面进行配置。<br />
<br />
您在用户界面配置的所有参数被保存在 /etc/exim4/update-exim4.conf.conf 文件。如果您希望重新配置,您可以重新运行配置向导或用您喜欢的编辑器手工编辑该文件。一旦您配置好了,您可以运行下列命令来生成主配置文件:<br />
<pre><nowiki><br />
sudo update-exim4.conf</nowiki></pre><br />
<br />
生成主配置文件且被保存在 /var/lib/exim4/config.autogenerated. <br />
<br />
在任何时候,你都不要手工编辑主配置文件 /var/lib/exim4/config.autogenerated。它在每次您运行 update-exim4.conf 之后会自动更新。<br />
<br />
您可以运行下列命令以启动 exim4 守护程序。 <br />
<pre><nowiki><br />
sudo /etc/init.d/exim4 start</nowiki></pre><br />
<br />
TODO: 该内容将覆盖 exim4 的 SMTP AUTH 配置。<br />
===== 4.14.3. Dovecot 服务器 =====<br />
<br />
Dovecot 是一个主要出于安全考虑编写的邮件投递代理。它支持主要收件箱格式:mbox 或 Maidir。这部分说明如何将它设为一个 imap 或 pop3 服务器。<br />
====== 4.14.3.1. 安装 ======<br />
<br />
要安装 dovecot,在命令提示符中运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d</nowiki></pre><br />
<br />
====== 4.14.3.2. 配置 ======<br />
<br />
要配置 dovecot,您可以编辑文件 /etc/dovecot/dovecot.conf。您可以选择您所使用的协议。它可以是 pop3、pop3 (安全 pop3)、imap 和 imaps (安全 imap)。对这些协议的说明是超出该指南范围的。更多信息请参考 wikipedia 关于 POP3 和 IMAP 的文章。<br />
<br />
IMAPS 和 POP3S 比简单 IMAP 和 POP3 更安全,因为他们使用 SSL 加密连接。一旦您选择了协议,修改在文件 /etc/dovecot/dovecot.conf 中的下列行:<br />
<pre><nowiki><br />
protocols = pop3 pop3s imap imaps</nowiki></pre><br />
<br />
当 dovecot 启动时协议开始生效。接下来在文件 /etc/dovecot/dovecot.conf 的 pop3 部分添加下列行:<br />
<pre><nowiki><br />
pop3_uidl_format = %08Xu%08Xv</nowiki></pre><br />
<br />
然后选择您所用的收件箱。Dovecot 支持 maildir 和 mbox 格式。大多数通常使用 mailbox 格式。它们都有自己的优点,并且在 dovecot 网站 上讨论。<br />
<br />
一旦您选择了您的收件箱格式后,就可以编辑文件 /etc/dovecot/dovecot.conf 并修改下列行:<br />
<pre><nowiki><br />
default_mail_env = maildir:~/Maildir # (for maildir)</nowiki></pre><br />
或<br />
<pre><nowiki><br />
default_mail_env = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)</nowiki></pre><br />
<br />
如果接收到的邮件类型与您已经配置不同,那么您要配置您的邮件传输代理 (MTA) 用来将该邮件传输到这种类型的收件箱中。<br />
<br />
一旦您已经配置好了 dovecot,启动 dovecot 守护程序以测试您的设置:<br />
<pre><nowiki><br />
sudo /etc/init.d/dovecot start</nowiki></pre><br />
<br />
如果您启用 imap 或 pop3,您也可以试着用命令 telnet localhost pop3 或 telnet localhost imap2 登录。如果您看到类似下面的东西,那么安装就成功了:<br />
<pre><nowiki><br />
bhuvan@rainbow:~$ telnet localhost pop3<br />
Trying 127.0.0.1...<br />
Connected to localhost.localdomain.<br />
Escape character is '^]'.<br />
+OK Dovecot ready.</nowiki></pre><br />
<br />
====== 4.14.3.3. Dovecot SSL 配置 ======<br />
<br />
要配置 dovecot 使用 SSL,您可以编辑文件 /etc/dovecot/dovecot.conf 并修改下列行:<br />
<pre><nowiki><br />
ssl_cert_file = /etc/ssl/certs/dovecot.pem<br />
ssl_key_file = /etc/ssl/private/dovecot.pem<br />
ssl_disable = no<br />
disable_plaintext_auth = no</nowiki></pre><br />
<br />
当您安装 dovecot 时,会通过它自动创建 cert 和 key 文件。请注意这些钥匙没被签名并会在客户端连接时给出 "bad signature" 的错误。要避免这一点,您可以使用商业证书,甚至更好,使用您自己签署的 SSL 证书。<br />
====== 4.14.3.4. 邮件服务器的防火墙配置 ======<br />
<br />
要从另一台计算机访问您的邮件服务器,您必须配置您的防火墙以允许连接服务器必要的端口。<br />
<pre><nowiki><br />
**** IMAP - 143<br />
**** IMAPS - 993<br />
**** POP3 - 110<br />
**** POP3S - 995</nowiki></pre><br />
<br />
===== 4.14.4. Mailman =====<br />
<br />
Mailman 是一个管理电子邮件讨论及电子通讯列表的开源程序。许多开源的邮件列表 (包括所有的 Ubuntu 邮件列表)使用 Mailman 作为他们的邮件列表软件。它是强大的且易于安装和维护。<br />
====== 4.14.4.1. 安装 ======<br />
<br />
Mailman 为管理员和用户提供一个 web 界面。因此,它要求 apache 要有 mod_perl 的支持。Mailman 使用外部邮件服务器来发送和接收邮件。它可以与下列邮件服务器很好的工作: <br />
<br />
**** Postfix<br />
**** Exim<br />
**** Sendmail<br />
**** Qmail<br />
<br />
我们将看到如何安装 mailman、apache web 服务器和 Exim 邮件服务器。如果您希望安装 mailman 和一个不同的邮件服务器,请参考参考部分。<br />
======= 4.14.4.1.1. Apache2 =======<br />
<br />
要安装 apache2 您可以参考 第4.10.1节 ― 安装。<br />
======= 4.14.4.1.2. Exim4 =======<br />
<br />
要安装 Exim4 您可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install exim4<br />
sudo apt-get install exim4-base<br />
sudo apt-get install exim4-config</nowiki></pre><br />
<br />
一旦安装好 exim4,配置文件被保存在 /etc/exim4 目录中。缺省情况下,在 ubuntu 中,exim4 配置文件被分成不同的文件。您可以通过配置 /etc/exim4/update-exim4.conf 中的下列变量来改变这一现状:<br />
<br />
**** dc_use_split_config='true'<br />
<br />
======= 4.14.4.1.3. Mailman =======<br />
<br />
要安装 Mailman,在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install mailman</nowiki></pre><br />
<br />
它复制安装文件到 /var/lib/mailman 目录,将 CGI 脚本安装到 /usr/lib/cgi-bin/mailman目录,创建 list linux 用户,创建 list linux 用户组。mailman 进程将以该用户运行。<br />
====== 4.14.4.2. 配置 ======<br />
<br />
本节假定您已经成功安装 mailman、apache2 和exim4。现在您只需要配置它们。<br />
======= 4.14.4.2.1. Apache2 =======<br />
<br />
一旦 apache2 安装之后,您可以在 /etc/apache2/apache2.conf 文件添加下列行:<br />
<pre><nowiki><br />
Alias /images/mailman/ "/usr/share/images/mailman/"<br />
Alias /pipermail/ "/var/lib/mailman/archives/public/"</nowiki></pre><br />
<br />
Mailman 使用 apache2 来运行它的 CGI 脚本。mailman 的 CGI 脚本被安装在 /usr/lib/cgi-bin/mailman 目录中。因此 mailman 的 url 将是 http://hostname/cgi-bin/mailman/。如果您希望改变这一状况,您可以修改 /etc/apache2/apache2.conf 文件。<br />
======= 4.14.4.2.2. Exim4 =======<br />
<br />
一旦 Exim4 安装之后,您可以在终端提示符后使用下列命令启动 Exim 服务器:<br />
<pre><nowiki><br />
sudo apt-get /etc/init.d/exim4 start</nowiki></pre><br />
<br />
为了使 mailman 可以和 exim4 一起工作,您需要配置 exim4。正如先前所说的那样,在缺省状态下 exim4 使用不同类型的多个配置文件。详情请参考 Exim 网站。要运行 mailman,我们可以新建一个配置文件到下列配置类型:<br />
<br />
**** 主<br />
**** 传输<br />
**** 路由器<br />
Exim 按这些小的配置文件顺序创建出一个主配置文件。因此这些配置文件的顺序是非常重要的。<br />
======= 4.14.4.2.3. 主 =======<br />
<br />
所有隶属于主类别的配置文件都被保存在 /etc/exim4/conf.d/main/ 目录中。您可以将下面的内容添加到一个名为 04_exim4-config_mailman 的新文件中:<br />
<br />
<pre><nowiki><br />
MM_HOME=/var/lib/mailman<br />
MM_UID=list<br />
MM_GID=list<br />
domainlist mm_domains=hostname.com↵<br />
MM_WRAP=MM_HOME/mail/mailman<br />
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck<br />
</nowiki></pre><br />
<br />
======= 4.14.4.2.4. 传输 =======<br />
<br />
所有隶属于传输类型的文件被保存在 /etc/exim4/conf.d/transport/ 目录中。您可以将下面的内容添加到一个名为 40_exim4-config_mailman 的新文件中:<br />
<pre><nowiki><br />
mailman_transport:<br />
driver = pipe<br />
command = MM_WRAP \<br />
'${if def:local_part_suffix \<br />
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}} } \<br />
{post}}' \<br />
$local_part<br />
current_directory = MM_HOME<br />
home_directory = MM_HOME<br />
user = MM_UID<br />
group = MM_GID</nowiki></pre><br />
<br />
======= 4.14.4.2.5. 路由器 =======<br />
<br />
所有隶属于路由类的所有配置文件都被保存在 /etc/exim4/conf.d/router/ 目录中。您可以将下列内容添加到名为 101_exim4-config_mailman 的新文件中:<br />
<pre><nowiki><br />
mailman_router:<br />
driver = accept<br />
require_files = MM_HOME/lists/$local_part/config.pck<br />
local_part_suffix_optional<br />
local_part_suffix = -bounces : -bounces+* : \<br />
-confirm+* : -join : -leave : \<br />
-owner : -request : -admin<br />
transport = mailman_transport</nowiki></pre><br />
<br />
主类和传输类的配置文件的顺序可以随意。但路由类的配置文件的顺序必须相同。该文件必须在 200_exim4-config_primary 文件之前出现。如果两个配置文件包含相同类型的信息。第一个文件优先。详情请参阅参考部分。<br />
<br />
======= 4.14.4.2.6. Mailman =======<br />
<br />
安装 mailman 之后,您可以使用下列命令来运行它:<br />
<pre><nowiki><br />
sudo /etc/init.d/mailman start</nowiki></pre><br />
<br />
一旦 mailman 安装,您必须创建缺省的邮件列表。运行下列命令以创建邮件列表:<br />
<pre><nowiki><br />
sudo /usr/sbin/newlist mailman<br />
<br />
Enter the email address of the person running the list: bhuvan at ubuntu.com<br />
Initial mailman password:<br />
To finish creating your mailing list, you must edit your /etc/aliases (or<br />
equivalent) file by adding the following lines, and possibly running the<br />
`newaliases' program:<br />
<br />
## mailman mailing list<br />
mailman: "|/var/lib/mailman/mail/mailman post mailman"<br />
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"<br />
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"<br />
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"<br />
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"<br />
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"<br />
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"<br />
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"<br />
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"<br />
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"<br />
<br />
Hit enter to notify mailman owner...<br />
<br />
# <br />
</nowiki></pre><br />
我们已经把 exim 配置成可以识别所有来自 mailman 的邮件。因此并不需要在 /etc/aliases 中添加任何新的条目。如果您对配置文件做了改动,请确保您在进入下一章节之前重启了这些服务。<br />
====== 4.14.4.3. 管理 ======<br />
<br />
我们假定您已经进行了缺省安装。mailman 的 cgi 脚本应该在 /usr/lib/cgi-bin/mailman/ 目录中。Mailman 提供了一个基于 web 管理工具。可以在您的浏览器输入下列 url 访问该页:<br />
<pre><nowiki><br />
http://hostname/cgi-bin/mailman/admin</nowiki></pre><br />
<br />
缺省的邮件列表 mailman 将出现在屏幕上。如果您点击邮件列表名,它将询问您的认证密码。如果您输入了正确的密码,您将可以改变该邮件列表的管理设置。您可以使用命令行工具 (/usr/sbin/newlist) 创建一个新的邮件列表,您也可以使用 web 界面来创建新的邮件列表。<br />
====== 4.14.4.4. 用户 ======<br />
<br />
Mailman 为用户提供了一个 web 界面,可以在您的浏览器中输入下列 url 来访问该页:<br />
<pre><nowiki><br />
http://hostname/cgi-bin/mailman/listinfo</nowiki></pre><br />
<br />
缺省邮件列表 mailman 将出现在屏幕上。如果您点击邮件列表名,它将显示订阅表单。您可以输入您的邮件地址、姓名 (可选)及密码来订阅。一个邀请邮件将发送给您。您可以根据该邮件的指示完成订阅。<br />
====== 4.14.4.5. 引用 ======<br />
<br />
[http://www.list.org/mailman-install/index.html GNU Mailman - 安装手册]<br />
<br />
<br />
[http://www.exim.org/howto/mailman21.html 指南 - 一起使用 Exim 4 和 Mailman 2.1]<br />
<br />
=== Windows 联网 ===<br />
计算机网络通常包含不同的系统,虽然使用全由 Ubuntu 桌面计算机和服务器计算机构成的网络是有趣的,但一些网络环境还是需要 Ubuntu 和 Microsoft® Windows® 这两个系统协同工作。Ubuntu 服务器指南中的这部分内容介绍配置你 Ubuntu 服务器的原理及所用工具,以便同 Windows 计算机共享网络资源。<br />
==== 介绍 ====<br />
将你的 Ubuntu 系统与 Windows 客户机成功连网包括为 Windows 环境提供和整合常用服务。这些服务有助于网络中计算机和用户的数据和信息共享,可以将它们按功能划分为以下三大类:<br />
<br />
**** 文件和打印共享服务。Server Message Block (SMB) 协议使得在网络上共享文件、文件夹、卷和打印机变得容易。<br />
**** 目录服务。通过Lightweight Directory Access Protocol (LDAP) 和 Microsoft Active Directory®技术来共享网络计算机和用户的重要信息。<br />
**** 认证和权限。建立网络计算机和用户身份并通过使用文件权限、组策略和Kerberos认证服务等原理和技术来确定计算机或用户信息。<br />
<br />
幸运的是,你的 Ubuntu 系统可以给 Windows 客户机提供上述所有的服务并且在它们之间共享网络资源。你的 Ubuntu 系统中用来和 Windows 网络互连的一个基本软件是包含 SMB 服务器应用程序及其工具。Ubuntu 服务器指南的这部分将简要介绍一下 SAMBA 套件中服务器应用程序及工具的安装和简单配置。此外,SAMBA的详细文档和信息已超出了本文档的编制范围,您可以在 SAMBA 网站 上找到。<br />
==== 安装 SAMBA ====<br />
欲安装 SAMBA 服务器应用程序,请在提示符里输入如下命令:<br />
<pre><nowiki><br />
sudo apt-get install samba</nowiki></pre><br />
==== 配置 SAMBA ====<br />
您可以通过编辑 /etc/samba/smb.conf 文件来配置 SAMBA 服务:用以改变缺省设置或新增设置。可用设置项的更多信息可以查看 /etc/samba/smb.conf 文件中的注释,或在终端提示符后输入以下命令查看 /etc/samba/smb.conf 手册来获得:<br />
<pre><nowiki><br />
man smb.conf</nowiki></pre><br />
<br />
在编辑配置文件之前,您应该保留一份原文件的副本,不对其作修改,以便今后必要时可参考和重用这份原始配置。<br />
<br />
备份 /etc/samba/smb.conf 文件:<br />
<pre><nowiki><br />
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original</nowiki></pre><br />
<br />
然后编辑 /etc/samba/smb.conf 文件,进行相应的修改。<br />
===== 5.3.1. 服务器 =====<br />
<br />
除了文件及打印共享服务器应用程序 SAMBA 之外,Ubuntu 还包括了其他强大的服务器应用程序,它们设计成象真正的 Windows 服务器一样,可以向 Windows 客户端提供相同的网络附加服务功能。例如,Ubuntu 可以提供统一的网络资源,如使用目录服务的计算机和用户,方便的身份识别,以及通过认证服务来获得授权的计算机和用户。<br />
<br />
下一节将讨论 SAMBA 及其支持技术,如 Lightweight Directory Access Protocol (LDAP) 服务器和 Kerberos 认证服务器的更多细节。你也可以学到SAMBA配置文件中的一些有用的指令,以方便同 Windows 客户机和服务器集成。<br />
====== 5.3.1.1. Active Directory ======<br />
<br />
Active Directory 是 Microsoft 专用的目录服务实现,用来提供网络资源和用户的共享信息。除了提供这些信息的统一源之外,Active Directory 也担任网络统一身份安全认证的角色。Active Directory 融合了通常独立、专用的目录系统中简单集成,管理和网络资源安全等功能。SAMBA 软件包可以被配置成使用由 Windows 域控制器提供的 Active Directory 服务。<br />
======= 5.3.1.1.1. LDAP =======<br />
<br />
LDAP 服务器应用程序给 Windows 计算机提供了与 Microsoft Active Directory 服务非常相似的目录服务功能。这些服务包括管理加入网络的计算机、用户、计算机组和用户组的身份和关系,为描述、定位和管理这些资源提供一个统一的方法。在你的 Ubuntu 系统中所使用的是 LDAP 的一个自由有效的实现,名为OpenLDAP,这个名为slapd 和 slurpd的服务守护程序负责处理 OpenLDAP 目录请求和 LDAP 服务器与另一个 Ubuntu 服务器之间的目录数据传送。只要 SAMBA编译时加上LDAP 支持,OpenLDAP 与 SAMBA 一起就可以和Windows域服务器一样以相同的方式提供文件、打印和目录服务。<br />
======= 5.3.1.1.2. Kerberos =======<br />
Kerberos 安全认证系统是一个通过一台集中的服务器给计算机和用户提供认证的标准服务,它允许从其他任何使用 Kerberos 的计算机那里接受加密的授权票据。Kerberos 验证的好处包括相互验证,委派验证,互操作性和简单信任管理。在 Ubuntu 中处理 Kerberos 验证和 Kerberos 数据库管理的主要服务器守护程序是 krb5kdc 和 kadmin。相对于 Windows 域控制器SAMBA 可以使用 Kerberos 作为一个用来给计算机和用户授权的机制。为了做到这些,Ubuntu 系统必须安装 Kerberos,同时 /etc/samba/smb.conf 也需要修改以选择适当的realm 和 security 模式。举个例子,编辑/etc/samba/smb.conf文件,并将下列语句:<br />
<pre><nowiki><br />
realm = DOMAIN_NAME<br />
security = ADS</nowiki></pre><br />
<br />
添加到文件中并保存<br />
<br />
请确定上面示例中的 DOMAIN_NAME 已经被你的 Windows 域名所代替。<br />
<br />
你需要重启 SAMBA 进程以使改变产生作用。重启 SAMBA 进程可以在终端提示符后输入以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/samba restart</nowiki></pre><br />
<br />
====== 5.3.1.2. 计算机帐号 ======<br />
<br />
目录服务中计算机帐号唯一指定网络中的计算机系统,甚至在安全方面就象对待用户一样。计算机账号可以象用户账号一样有密码,同样也象用户账号一样访问网络资源受授权影响。举个例子,如果一个在特定网络中有着合法账号网络用户,企图给一个没有合法计算机账号的计算机上的网络资源授权时,根据网络策略,如果用户企图验证的计算机是未经授权的计算机,则用户也许会被拒绝访问资源。<br />
<br />
计算机帐号可以会被添加到 SAMBA 的密码文件中,首先该计算机的名字在本地密码库中做为一个合法用户帐号被添加。添加一个计算机或机器帐号到 SAMBA 的密码文件可以在终端提示符后使用 smbpasswd 命令,如下所示:<br />
<pre><nowiki><br />
sudo smbpasswd -a -m COMPUTER_NAME</nowiki></pre><br />
<br />
请确定示例中的 COMPUTER_NAME 被那台你希望添加机器账号的计算机实际名字所代替。<br />
<br />
<br />
====== 5.3.1.3. 文件权限 ======<br />
<br />
文件权限清楚地定义计算机和用户对指定的目录、文件或一组文件的权力。这些权限可以通过编辑/etc/samba/smb.conf 来定义并明确被定义文件共享的权限。举个例子,如果你定义了一个叫 sourcedocs 的 SAMBA 共享,并希望给 planning 用户组以 read-only 只读权限,但允许叫 authors 的用户组和名为 richard 的用户可以写该共享,那么你可以编辑/etc/samba/smb.conf 文件,并将下列条目放在 [sourcedocs] 条目下:<br />
<pre><nowiki><br />
read list = @planning<br />
write list = @authors, richard</nowiki></pre><br />
<br />
将其保存在 /etc/samba/smb.conf中,以使其生效。<br />
<br />
另一个适合的权限就是对特定的共享资源声明 administrative 权限。有着administrative 权限的用户可以读、写或修改任何包含在用户已明确给予 administrative 权限的资源里的任何信息。举个例子,如果你想给用户 melissa 在示例 sourcedocs 共享上的 administrative 权限,你可以编辑/etc/samba/smb.conf 文件,并将下面一行添加到 [sourcedocs] 条目下:<br />
<pre><nowiki><br />
admin users = melissa</nowiki></pre><br />
<br />
将其保存在 /etc/samba/smb.conf中,以使其生效。<br />
===== 5.3.2. 客户端 =====<br />
<br />
Ubuntu 中包括客户端应用以及通过 SMB 协议远程访问网络资源的能力。例如,一个名为 smbclient 的工具就可以以一种类似文件传输协议(FTP)客户端的方式访问远程共享的文件系统。以使用 smbclient 来访问在名为 bill 远程 Windows 计算机中的共享文件夹资源 documents 来做示范,在提示符后输入类似下面的命令:<br />
<pre><nowiki><br />
smbclient //bill/documents -U <username></nowiki></pre> <br />
<br />
然后你将被提示输入相对于 -U 参数之后用户名的密码,当成功验证后,将出现一个提示符,在那里我们可以使用与非图形化 FTP 客户端类似的语法来操作和传输文件。smbclient 工具的详细信息可以输入以下命令来查阅该工具的手册页:<br />
<br />
使用 SMB 协议的远程网络资源在本地挂载也可以使用 mount 命令。例如,要挂载在一个名为 development 的Windows 服务器上的一个名为 project-code 共享文件夹,并使用 dlightman 用户名挂载到你的 Ubuntu 系统的 /mnt/pcode 挂载点上,你可以在提示符后运行以下命令:<br />
<pre><nowiki><br />
mount -t smbfs -o username=dlightman //development/project-code /mnt/pcode</nowiki></pre><br />
<br />
然后你将被提示输入用户密码,在成功验证之后,共享资源的内容就可以通过 mount 命令中的最后一个参数所指定的本地挂载点来访问了。要卸载该共享资源,就象其他被挂载的文件系统一样只需简单的使用 umount 命令即可。例如:<br />
<br />
<pre><nowiki><br />
umount /mnt/pcode</nowiki></pre><br />
<br />
====== 5.3.2.1. 用户帐号 ======<br />
<br />
用户帐号定义了有一些授权来使用指定计算机和网络资源的人。通常,在网络环境中,用户帐号被提供给每个允许访问计算机或网络的人,然后这些计算机或网络根据策略和权限来明确用户帐号拥有多大的权力。要在你的 Ubuntu 系统中定义 SAMBA 网络用户,你可能使用smbpasswd 命令。如要为你 Ubuntu 系统上名为jseinfeld 的用户添加一个 SAMBA 用户,你可以在提示符后输入命令:<br />
<br />
<pre><nowiki><br />
smbpasswd -a jseinfeld</nowiki></pre><br />
<br />
然后 smbpasswd 应用程序将提示你为该用户输入密码:<br />
<br />
<pre><nowiki><br />
New SMB password:</nowiki></pre><br />
<br />
输入你想为用户设置的密码,smbpasswd 会要求你确认密码:<br />
<pre><nowiki><br />
Retype new SMB password:</nowiki></pre><br />
<br />
确认密码之后,smbpasswd 将为用户在 SAMBA 密码文件中添加一个条目。<br />
====== 5.3.2.2. 组 ======<br />
<br />
组定义了对指定网络资源拥有共同访问级别的一组计算机或用户,并提供对这些资源的访问控制粒度级别。举个例子,如果定义一个 qa 组并包含用户 freda、danika 和 rob,再定义第二个组 support 并包含 danika、jeremy 和 vincent。那么某个网络资源被配置为允许 qa 组访问时,则其可以被 freda、danika 和 rob访问,而不是 jeremy 或 vincent。因为用户 danika 属于 qa 和 support 两个组,所以她能够访问配置为两个组访问的资源,而所有其他用户则只能访问明确允许其所属组访问的资源。<br />
<br />
当在 SAMBA 配置文件 /etc/samba/smb.conf 中定义组时,被认可的写法是在用“@”符作为组名的开始。例如,如果你希望在 /etc/samba/smb.conf 某段中定义一个名为 sysadmin 的组,那么你需要输入 @sysadmin 来作为组名。<br />
====== 5.3.2.3. 组策略 ======<br />
<br />
组策略为 SAMBA 服务器定义属于域或工作组计算机帐号的 SAMBA 配置设置及其他全局设置。举个例子,如果 SAMBA 服务器属于一个名为 LEVELONE 的 Windows 计算机工作组,那么 /etc/samba/smb.conf 可以相应改成下面的值:<br />
<br />
<pre><nowiki><br />
workgroup = LEVELONE</nowiki></pre><br />
<br />
<br />
保存文件并重启 SAMBA 守护程序以使改变生效。<br />
<br />
其它重要的全局策略设置包括 server string,定义了 Ubuntu 系统向基于 Windows 网络上其它机器所宣称的 NETBIOS 服务器名称。该名称也使你的 Ubuntu 系统被 Windows 客户端及其它使用 SMB 协议浏览网络的计算机所识别。而且用户还可以通过 /etc/samba/smb.conf 文件中的 log file 指令来指定 SAMBA 服务器日志文件的名称和所在位置。<br />
<br />
还有一些可以管理全局组策略的附加指令包括对所有共享资源全局性能的说明。例如在 /etc/samba/smb.conf 中 [global] 标题下面的指令将影响所有共享资源,除非在某些共享资源标题下有覆盖全局设置的指令。你可以通过 browseable 指令来使网络中所有的客户机都能浏览全部共享。该指令使用一个布尔值,位于 /etc/samba/smb.conf 文件的 [global] 标题中。编辑该文件,并添加下面一行:<br />
<pre><nowiki><br />
browseable = true</nowiki></pre><br />
<br />
到 /etc/samba/smb.conf 文件的 [global] 节的下面。这样所有你 Ubuntu 系统中的共享将通过 SAMBA 被授权客户机浏览,除非该共享包含了覆盖全局指令的 browseable = false 指令。<br />
<br />
相同方式运作的其他例子还有 public 和 writeable 指令。public 指令接受一个布尔值并决定特定的共享资源对所有客户是否可见,而无论其被授权与否。writeable 指令也采用布尔值以定义特定共享资源是否对部分或所有网络客户可写。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Ubuntu%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97&diff=145734
Ubuntu服务器入门指南
2011-11-10T11:29:36Z
<p>Lxr1234:已恢复218.58.70.250(对话)的编辑至111.193.27.47的最后一个修订版本</p>
<hr />
<div>Ubuntu 服务器指南<br />
<br />
=== 关于本指南 ===<br />
==== 排版约定 ====<br />
本文档将使用下列记号:<br />
备注,一般表示一段有趣的,有时是技术性的,并和上下文相关的信息。<br />
提示,提供有完成某件事情的建议或捷径。<br />
警示,提醒读者可能面临的问题,并给出避免这些问题的帮助信息。<br />
警告,告知读者在特定情形下可能出现的风险。<br />
<br />
用于打印的交叉引用排版约定效果如下:<br />
<br />
**** 到其它文档和网站的链接看上去像这样。<br />
<br />
PDF、HTML 以及 XHTML 版本的文档将使用超链接来处理交叉引用。<br />
<br />
输入内容的排版约定效果如下:<br />
**** 文件名或者目录路径,将以等宽字体(monospace)显示。 <br />
**** 您在终端(Terminal)里输入的命令显示效果如下:<br />
<code><nowiki> command to type </nowiki></code> <br />
**** 您在用户界面上点击、选择或选中的选项,将以等宽字体(monospace)显示。<br />
<br />
菜单选择、鼠标动作及键盘快捷键:<br />
**** 菜单选择的序列操作显示效果如下:<br />
文件(F) → 打开(O)<br />
**** 鼠标动作假定您使用右手模式的鼠标设定。文中述及的“单击”和“双击”皆使用鼠标左键。文中述及的“单击右键”指的是使用鼠标右键。文中述及的“单击中键”指的是使用鼠标中键、按下鼠标滚轮,或者是以模拟中键的方式同时按下鼠标左、右键,这取决于您的鼠标设计。<br />
**** 键盘快捷键组合的显示效果如下:<br />
Ctrl+N 。根据惯例,“Control”、“Shift” 以及 “Alternate” 按键将以 Ctrl、Shift 以及 Alt 来表示,需要特别指出的是,其中第一个按键在按下第二个键的过程中应该一直被按住。<br />
==== 贡献和反馈 ====<br />
<br />
本文档由 [https://wiki.ubuntu.com/DocumentationTeam Ubuntu 文档小组] 编写。您可以通过 Ubuntu 文档小组的邮件列表发送自己的意见或评论来完善本文档。欲知该小组的信息、其邮件列表、项目等等详情,您可以访问 [https://wiki.ubuntu.com/DocumentationTeam Ubuntu 文档小组官方网站]。本文档的简体中文版由 [http://wiki.ubuntu.org.cn/UbuntuChina%E6%96%87%E6%A1%A3%E7%BB%84 UbuntuChina 文档组]翻译,欲知更多信息或加入我们,请访问 [http://wiki.ubuntu.org.cn/ Ubuntu 中文 Wiki]。<br />
<br />
如果您发现了文档中存在的问题,或者想提些建议,您可以直接在[https://launchpad.net/products/ubuntu-doc/+bugs Ubuntu Bug] 跟踪系统上提交一份bug报告。您的帮助是这些文档成功的关键![翻译相关的 bug 可以联系[http://wiki.ubuntu.org.cn/UbuntuChina%E6%96%87%E6%A1%A3%E7%BB%84 UbuntuChina 文档组]成员。]<br />
<br />
非常感谢<br />
<br />
- 您的 Ubuntu 文档小组<br />
<br />
=== 介绍 ===<br />
欢迎阅读 Ubuntu 服务器指南!<br />
<br />
Ubuntu 服务器指南 包括了在您的 Ubuntu 系统中如何安装和配置满足您需要的不同服务器的相关信息。它是一个循序渐进、面向任务的配置和定制您系统的指南。本手册讨论的主题如下所示:<br />
<br />
**** 网络配置<br />
**** Apache2 的配置<br />
**** 数据库<br />
**** Windows 联网 <br />
<br />
本手册主要分为以下几块:<br />
<br />
**** 安装<br />
**** 包管理<br />
**** 联网<br />
**** Windows 联网<br />
<br />
本指南假定您已经对您的 Ubuntu 系统有个基本的了解。如果您需要安装 Ubuntu 的详细帮助,将参考 Ubuntu 安装指南。<br />
<br />
本手册的 HTML 和 PDF 版本可以在 [http://help.ubuntu.com/ Ubuntu 文档网站] 在线获得。<br />
<br />
您可以在[http://www.lulu.com/ubuntu-doc our Lulu store]上购买到本指南的纸质品,只需支付打印和邮寄费用。<br />
<br />
=== 安装 ===<br />
本章提供了安装 Ubuntu 6.06 LTS Server Edition(服务器版)的快速入门。更多细节说明,请参见 Ubuntu 安装指南。<br />
<br />
==== 准备安装 ====<br />
准备安装,本部分内容说明在开始安装之前要考虑的各个方面。<br />
<br />
===== 系统要求 =====<br />
Ubuntu 6.06 LTS Server Edition (服务器版)支持三种主要的体系架构: Intel x86、AMD64 和 PowerPC。下表列出了被推荐硬件明细表。您可以根据需要使用比这更少的(硬件)进行管理。然而,大多数用户不应当忽略这些建议,否则风险自负。<br />
表 2-1 最小建议配置<br />
{|border="1" cellspacing="0"<br />
|安装类型||RAM||硬盘空间<br />
|-<br />
|服务器||64 MB||500 MB<br />
|}<br />
<br />
Ubuntu 6.06 LTS Server Edition (服务器版)的默认自述文档已经在下面列出了。当然,安装的尺寸大小极大程序上取决于您在安装过程中安装服务的多少。对于大多数管理员来说,默认的服务对于服务器一般的使用已经足够了。<br />
<br />
服务器<br />
<br />
这是一个小型服务器服务列表,它为各种服务器应用程序提供了一个通用基础。它是最低限度的并被设计成可以在其上添加想要的服务,如文件/打印服务、web 主机、邮件主机等。要满足这些服务至少需要 500 MB 的磁盘空间,但考虑添加更多的空间是要取决于在您服务器上您想要提供的服务。<br />
<br />
记住这些尺寸并不包括其他的素材如用户文件、邮件、日志和数据。当为您自己的文件和数据考虑空间时最好能留足。<br />
===== 备份 =====<br />
**** 在您开始之前,请确保备份了您现在系统上的每个文件。如果第一次时已经有一个操作系统安装在您的计算机上,那么最合适的办法就是把您的磁盘重新分区,为 Ubuntu 留出空间。无论哪次对您的磁盘进行分区您都应该做好丢失磁盘上所有东西的准备,因为您可能会误操作或者在分区过程中出错,如系统掉电等。在安装中所使用的程序是相当可靠的,大多数已经用了几年,但它们执行的也是破坏性的操作,一个操作出错可能会把您有价值的数据丢失掉。 <br />
<br />
如果您是想把电脑做成多重引导的系统,请先确定您手头上有电脑里已经存在的这些操作系统的安装介质。特别是当您把启动盘重新分区以后,您可能会发现必须重新安装原有操作系统的启动引导程序,某些情况下,还得重新安装该操作系统并恢复受影响分区上的文件。<br />
<br />
==== 从 CD 安装 ====<br />
将您的安装 CD 插入 您的 CD-ROM 设备并重启计算机。当从 CD-ROM 重启时安装系统将立即开始。一旦初始化之后,您的第一个安装屏幕将出现。<br />
<br />
此时,阅读屏幕上的文字。您也许想看看安装程序提供的帮助屏。如果您想这么做的话,请按 F1 键。<br />
<br />
要执行缺省的服务器安装程序,选择 “安装到硬盘” 并按 回车 键。安装过程将开始。简单地根据屏幕上的指示,您的 Ubuntu 系统将被安装。<br />
<br />
或者,您要安装一个 LAMP 服务器 (Linux, Apache, MySQL, PHP/Perl/Python),选择 “安装 LAMP 服务器”,并根据指示进行安装。施文<br />
<br />
=== 包管理 ===<br />
Ubuntu 提供一套全面的包管理系统用于软件的安装、升级、配置和卸载。除了让您 Ubuntu 计算机可以访问组织好的超过 17,000 个软件包的软件库之外,包管理工具还可以解决依赖关系并提供软件更新检查。<br />
<br />
一些工具可以和 Ubuntu 包管理系统进行交互,从便于系统管理员做自动化处理的简单命令行工具到便于 Ubuntu 新手使用的简单图形界面。<br />
==== 介绍====<br />
Ubuntu 的包管理系统是从 Debian GNU/Linux 发行版中洐生出来的。包文件包括在您 Ubuntu 系统中实现特定功能或软件所必需的文件、元数据和指令。<br />
<br />
Debian 包文件一般用 '.deb' 作后缀,而且位于建立在不同介质上由包组成的 软件库 中,这些介质包括 CD-ROM 光盘和网站。包通常是预编译的二进制形式,因此安装速度快而且软件也无需编译。<br />
<br />
许多复杂的包使用 依赖包 这一概念,依赖包是主包为实现完整功能而要求的附加包。例如,语音合成包 Festival 依赖 festvox-kalpc16k 包,该依赖包提供被应用程序使用的众多声音之一。为了能使 Festival 正常运行,所有依赖包都必须与 Festival 主包同时安装。Ubuntu 软件管理工具将会自动完成这一切。<br />
ff<br />
<br />
==== Apt-Get ====<br />
apt-get 命令是一个强大的命令行工具,用于同 Ubuntu 的 Advanced Packaging Tool (APT) 一起执行诸如安装新软件包、升级已有软件包、更新包列表索引,甚至是升级整个 Ubuntu 系统等功能。<br />
<br />
作为一个简单的命令行工具,apt-get 对于服务器管理员来说比 Ubuntu 中的其他软件包管理工具有着相当多的优点。这些优点包括便于在简单终端连接 (SSH) 中使用,同时能够用于系统管理脚本中,以便能被cron 动作计划工具自动运行。<br />
<br />
apt-get 工具的一些常见用法示例:<br />
<br />
关于 APT 用法的更多信息,可阅读全面的[http://www.debian.org/doc/user-manuals#apt-howto Debian APT 用户手册] 或输入:<br />
<br />
<code><nowiki> apt-get help </nowiki></code><br />
==== Aptitude ====<br />
Aptitude 是一个菜单驱动,基于文本的 Advanced Packaging Tool (APT) 系统前端。包管理的许多常用功能,如安装,卸载和升级,可以在Aptitude 中单键执行命令,它通常是小写字母。<br />
<br />
Aptitude 最适用于非图形的终端环境,确保命令关键字的适当功能。您可以作为一个普遍用户在终端提示符后用以下命令开始运行 Aptitude:<br />
<br />
<code><nowiki> sudo aptitude </nowiki></code><br />
<br />
当 Aptitude 开始之后,你将看在屏幕顶部的一个菜单条,其下有两个窗,顶窗包含包的类别,如 新软件包 和 未安装软件包 。底窗包含包和包类别的相关信息。<br />
<br />
使用 Aptitude 作包管理相对直观,用户界面便于执行常用任务。下面是在 Aptitude 中进行包管理时常见用法如下:<br />
<br />
**** 安装软件包:要安装包,通过未安装软件包包类别找到该软件包,如通过键盘箭头键和 ENTER 键定位并高亮你想安装的软件包。在高亮你要安装的软件包之后,将其标示为安装。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成安装。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始下载和安装软件包。<br />
**** 卸载软件包:要卸载软件包,通过已安装软件包包类别找到该软件包,如通过键盘箭头键和 ENTER 键定位并高亮你想卸载的软件包。在高亮你要卸载的软件包之后,按 - 键,文件包条目将变成 pink,标示其为卸载。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成卸载。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始卸载软件包。<br />
**** 更新软件包索引:要更新软件包索引,简单按 u 您将被提示要成为 root 用户以完成更新。按 ENTER 键将显示 Password: 提示,输入您的用户密码成为 root 用户。开始更新软件包索引,当出现下载对话框时在 OK 提示上按 ENTER 键以结束更新过程。<br />
**** 升级软件包:要升级软件包,如上所述更新软件包索引,然后按U 键标示所有能升级的软件包。现在按 g 键显示软件包的操作提示。再按 g 键,您将被提示要成为 root 用户以完成安装。按 ENTER 键将显示 Password: 提示。输入您的用户密码成为 root 用户。最后,再一次按 g 键,您将被提示下载软件包。在Continue 提示上按 ENTER 键,开始升级软件包。<br />
<br />
当实际查看软件时列出软件包当前状态,在顶窗软件包列表中显示信息的第一列使用下列关键字来描述软件包状态:<br />
<br />
**** i: 安装软件包<br />
**** c: 软件包没有安装,但在系统中有软件包的残留配置<br />
**** p: 从系统彻底删除<br />
**** v: 虚拟软件包<br />
**** B: 已损坏的软件包<br />
**** u: 解压文件,但尚未配置软件包<br />
**** C: 半配置 - 配置失败需要修复<br />
**** H: 半安装 - 卸载失败需要修复<br />
<br />
要退出 Aptitude,只需简单按 q 键并确认您想退出即可。在 Aptitude 菜单中按 F10 键可以列出其他许多功能。<br />
<br />
==== 配置 ====<br />
Advanced Packaging Tool (APT) 系统软件库的配置被保存在 /etc/apt/sources.list 文件中。这儿有个该文件的示例,<br />
<br />
[file:///usr/share/ubuntu-docs/ubuntu/serverguide/sample/sources.list 这里] 是一个典型的 /etc/apt/sources.list 文件范例。<br />
<br />
您可以编辑该文件来使软件库生效或失效。举个例子,要不想无论何时在发生文件包操作都会引起要求插入 Ubuntu CD-ROM ,只需要简单地将在文件顶部的 CD-ROM 相应行注释掉即可:<br />
<br />
<pre><nowiki><br />
<br />
==== 其他软件库 ====<br />
除了可以使用官方支持的 Ubuntu 软件包库之外,还存在拥有几千个潜在软件包的由其它社区维护的软件库。这些软件库中最流行的两个是 Universe 和 Multiverse 软件库。这些软件库并不被 Ubuntu 官方支持,这就是它们为什么在缺省时不能的原因,但它们提供的包通常是可以在您的 Ubuntu 计算机上安全使用的。<br />
<br />
在 Multiverse 软件库中的包通常有许可证的问题,这使得它们不能和自由操作系统一起分发,它们在您所在的地区可能是违法的。<br />
<br />
建议不要在 Universe 或 Multiverse 软件库中包含官方支持的软件包。尤其是在升级这些包时可能会不安全。 <br />
<br />
许多其他软件包源也是可用的,有时甚至只提供一个软件包,这种情况主要发生在由单个应用程序的开发人员所提供软件包源上。然而当您在使用非标准软件包源时您应该非常小心谨慎,在执行任何安装之前仔细考查源和软件包,因为有些软件包源和其中的软件包可能会使您的系统在某些方面运行不稳定或不正常。<br />
<br />
要使 Universe 和 Multiverse 库可用,编辑/etc/apt/sources.list 文件并将去掉相关行的注释:<br />
<pre><nowiki><br />
<br />
deb http://archive.ubuntu.com/ubuntu dapper universe multiverse<br />
deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse</nowiki></pre><br />
<br />
===== 3.5.1. 引用 =====<br />
[https://wiki.ubuntu.com/AddingRepositoriesHowto 如何添加软件库(Ubuntu Wiki)]<br />
<br />
=== 联网 ===<br />
网络是由两个或两个以上的设备通过物理线缆或无线连接而成并在连接设备之间共享和分发信息。这些设备包括计算机系统、打印机或用有线或无线连接起来的其它相关设备。<br />
<br />
Ubuntu 服务器指南的这部分提供与联网相关的一般和特定信息,包括网络概念的简介以及对常用网络协议及服务器应用程序的详细讨论。<br />
<br />
==== 网络配置 ====<br />
<br />
Ubuntu 提供了许多图形化工具来配制您的网络设备。本文适用于服务器管理员并聚焦在命令行中管理您的网络。<br />
===== 4.1.1. 以太网 =====<br />
<br />
大多数以太网配置都集中在单个文件 /etc/network/interfaces 中。如果您没有以太网设备,那么在该文件中将只出现环回口,该文件看上去类似这样:<br />
<pre><nowiki><br />
<br />
auto lo<br />
iface lo inet loopback<br />
address 127.0.0.1<br />
netmask 255.0.0.0</nowiki></pre><br />
<br />
如果您只有一个以太网设备 eth0,被配置成从 DHCP 服务器得到设置,并且在引导时自动激活,那么只需要再添加两行:<br />
<pre><nowiki><br />
auto eth0↵<br />
iface eth0 inet dhcp</nowiki></pre><br />
<br />
第一行说明 eth0 将会在您启动时自动激活。第二行说明该接口 (“iface”) eth0 将有得到一个 IPv4 地址空间 (如果是一个 IPv6 的设备将须将 “inet” 用 “inet6” 代替) 并且它将自动从 DHCP 中自动获得它的配置。假定您的网络和 DHCP 服务都已经被正确配置,该机的网络将不需要更多的配置。DHCP 服务器将提供默认网关 (通过 route 命令来实现) 、设备的 IP 地址 (通过 ifconfig 命令来实现)以及网络使用的 DNS 服务器 (在 /etc/resolv.conf 文件中实现)。<br />
<br />
要把您的以太网设备配置成静态 IP 地址和自定义配置的话,则要求更多的信息。假设您想指定 IP 地址 192.168.0.2 给设备 eth1,其掩码是 255.255.255.0。您的默认网关的 IP 地址是 192.168.0.1。您可以在 /etc/network/interfaces 中输入类似下面的语句:<br />
<pre><nowiki><br />
iface eth1 inet static<br />
address 192.168.0.2<br />
netmask 255.255.255.0<br />
gateway 192.168.0.1</nowiki></pre><br />
<br />
在这个例子中,您将需要在 /etc/resolv.conf 中手工指定您的DNS服务器,看起来如下: <br />
<pre><nowiki><br />
search mydomain.com<br />
nameserver 192.168.0.1<br />
nameserver 4.2.2.2</nowiki></pre><br />
<br />
search 语句在试图解析网络名时把 mydomain.com 添到主机名查询中。举个例子,如果您的网络域名是 mydomain.com 并且您试图去 ping 主机 “mybox”,DNS 查询将在解析时改为 “mybox.mydomain.com”。nameserver 语句指定用于将主机名解析成 IP 地址的的 DNS 服务器。如果您使用自己的名称服务器,在这里输入它。否则询问您的 Internet 服务供应商要使用的主、辅 DNS 服务器,并把它们如上所示输入到 /etc/resolv.conf 中。<br />
<br />
配置更多的接口是可能的,包括拨号的 PPP 接口、IPv6 网络、VPN 设备等。更多信息和支持选项请参考 man 5 interfaces。记住 ifup/ifdown 脚本使用的/etc/network/interfaces 是比其他一些 Linux 发行版更高级的配置模式。传统的低级工具如ifconfig、route 和 dhclient 也为了 ad hoc 配置对您来说也是可用的。<br />
===== 4.1.2. 管理 DNS 记录 =====<br />
<br />
本部分说明如何配置用来将IP地址解析成主机名或相反功能的名称服务,而不是说如何将整个系统配置成一个名称服务器。<br />
<br />
要管理 DNS 条目,您可以在 /etc/resolv.conf 文件中添加、编辑或删除 DNS 名称服务器。一个 范例文件 在下面给出:<br />
<pre><nowiki><br />
search com<br />
nameserver 204.11.126.131<br />
nameserver 64.125.134.133<br />
nameserver 64.125.134.132<br />
nameserver 208.185.179.218</nowiki></pre><br />
<br />
search 关键字指字为未完成主机名添加的字符串,在这里我们使用com。因此当我们运行:ping ubuntu 时它被理解成 ping ubuntu.com。<br />
<br />
nameserver 关键字指定名称服务器的 IP 地址,它将被用来解析 IP 地址或主机名。该文件可以有多个名称服务器记录。名称服务器将按相同顺序进行网络查询。 <br />
<br />
如果 DNS 服务器名称是通过 DHCP 或 PPPOE 动态取回的(从您 ISP 取回),那么不要在该文件中添加名称服务器记录。它将被自动更新。<br />
<br />
===== 4.1.3. 管理主机 =====<br />
<br />
要管理主机,您可以在 /etc/hosts 文件中添加、编辑或删除主机。该文件包括 IP 地址和相对应的主机名。当您的系统要解析一个主机到 IP 地址或从一个 IP 地址获取主机名时,它将在使用名称服务器之前参考 /etc/hosts 文件。如果该 IP 地址已经在 /etc/hosts 文件中被列出,那么将不再使用名称服务器。这一动作可以通过编辑 /etc/nsswitch.conf 来改变,不过后果自负。<br />
<br />
如果您网络所包含计算机的 IP 地址没有在 DNS 中列出,建议您将它们加入到 /etc/hosts 文件中。<br />
<br />
==== TCP/IP ====<br />
<br />
传输控制协议和网际协议 (TCP/IP) 是在 20世纪70年代被美国国防部高级研究规划局 (DARPA)作为在不同类型计算机及计算机网络之间的通信手段而被开发的一个标准协议簇。TCP/IP 是 Internet 的驱动力,因此它是全球最流行的网络协议簇。<br />
===== 4.2.1. TCP/IP 介绍 =====<br />
<br />
TCP/IP 的两个协议组件处理计算机网络的不同方面。网际协议,TCP/IP 中的 "IP" 是一个连接协议,只处理使用 IP 数据报 作为网络信息基本单元的网络包路由。IP 数据报由报头和其后的消息组成。传输控制协议 是 TCP/IP 中的 "TCP",可以使网络主机之间建立用于交换数据流的连接。TCP 也保证连接之间的数据传送以及其在网络主机上的接收顺序与其从另一台网络主机上的发送顺序一致。<br />
===== 4.2.2. TCP/IP 配置 =====<br />
<br />
TCP/IP 协议配置由必须设置的几个元素组成,可以通过编辑相应的配置文件或配置方案如动态主机配置协议 (DHCP) 来设置,它可以配置成提供适当的 TCP/IP 配置来自动设置网络客户机。这些配置值必须正确设置,以便于您的 Ubuntu 系统进行相应网络操作。<br />
<br />
TCP/IP 常用配置元素及其作用如下所示:<br />
<br />
**** IP 地址 IP 地址是唯一标识字符串,它由四部分由点号分隔的,范围从 0 到 255 的十进制数组成。 每部分由8个比特表示,整个地址总长为32个比特。这种格式被称为 dotted quad notation。<br />
**** 掩码 子网掩码 (或简称掩码) 是一个局部位掩码,或用指定的 子网掩码 来将IP 地址中的网络分隔出来的一组标识。举个例子,在 C 类网络中,标准的掩码是 255.255.255.0 屏蔽了 IP 地址的前三个字节,并允许 IP 地址的最后一个字节指定子网中的主机。<br />
**** 网络地址 网络地址表示包括IP 地址网络部分的字节。 例如, 一个 A 类网络的主机 12.128.1.2 将使用 12.0.0.0 作为网络地址,使用 12 来表示 IP 地址的第一个字节 (网络部分), 余下的三个为 0 的字节表示可能的主机值的。网络主机使用象 192.168.1.100 这样非常普遍的不可路由的私有 IP 地址将使用 192.168.1.0 网络地址,用前三个字节来指定 C 类 192.168.1 网络,而用一个 0 来表示网络上所有可能的主机。<br />
**** 广播地址 广播地址是一个允许向给定子网中的所有主机而不是一台特定的网络主机同时发送网络数据的 IP 地址。一般标准 IP 网络的地址是 255.255.255.255,但这个广播地址不能用来为 Internet 网上的每台主机发送一个广播消息,因为路由器会阻止它。更适当的广播地址设置是匹配特定子网的。例如,在流行的私有 C 类 IP 网 192.168.1.0 中,广播地址应该设为 192.168.1.255。广播消息一般都是由网络协议产生的,如地址识别协议 (ARP) 和路由信息协议 (RIP)。<br />
**** 网关地址 网关地址是一个通过该地址可能会到达指定网络或网络主机的 IP 地址。如果一台网络主机希望与另一台网络主机通讯,而该机并不在同一网络中,而是要传输到另一个网络或主机上,如 Internet 主机。网关地址设置必须正确,否则您的系统将不能到达不在同一网络中的任何主机。<br />
**** 名称服务器地址 名称服务器地址表示域名服务 (DNS) 系统的 IP 地址。该系统将网络主机名解析成 IP 地址。可以按顺序来指定三个不同优先级的名称服务器地址:主 名称服务器,次 名称服务器,和 第三 名称服务器。按顺序为您系统将网络主机名解析成相应的 IP 地址,你必须指定合法的名称服务器地址,该地址应该在您系统的 TCP/IP 配置中被授权使用。在许多情况下这些地址可以也应该被您的网络服务供应商提供,但也可以使用许多免费的、可供公众访问的名称服务器,如 IP 从 4.2.2.1 到 4.2.2.6 的 Level3 (Verizon) 服务器。<br />
<br />
IP 地址、掩码、网络地址、广播地址以及网关地址一般都是在文件 /etc/network/interfaces 中通过相应的语句来指定的。名称服务器地址一般是在文件 /etc/resolv.conf 中通过 nameserver 语句来指定的。更多详情,请分别查阅 interfaces 或 resolv.conf 的系统手册页。<br />
<br />
查阅 interfaces 系统手册页,可用以下命令:<br />
<br />
<code><nowiki>man interfaces</nowiki></code><br />
<br />
查阅 resolv.conf 系统手册页,用以下命令:<br />
<br />
<code><nowiki>man resolv.conf</nowiki></code><br />
<br />
===== 4.2.3. IP 路由 =====<br />
<br />
IP 路由是在 TCP/IP 网络上为可能发送的网络数据指明或发现路径。路由使用一组路由表来指示网络数据包从源地址转发到目的地,经常是通过许多叫做路由器的网络节点做中转。IP 路由是 Internet 上路径发现的主要方式。IP 路由分为两种形式:静态路由 和 动态路由。<br />
<br />
静态路由包含向系统路由表中手工添加的 IP 路由,一般是通过 route 命令来向路由表手工添加的。静态路由与动态路由相比有许多优点,如在小网络中实施简单,有可预测性 (路由表总是事先算好,因此路由在每次使用时都相当一致),在其它路由器和网络链路处理上比动态路由协议开销小。然而,静态路由也有一些缺点。如静态路由只限于小网络而且不能很好地进行调整。静态路由由于路由固定的特性,因此根本无法根据路由来适应网络中断和故障。<br />
<br />
动态路由有赖于从一个源到目的有多条可用 IP 路由的大型网络,利用特定的路由协议,如路由信息协议 (RIP),可以自动调整路由表以生成可能的动态路由。动态路由相对静态路由有几个优点,如拥有较大的伸缩性和能根据网络路由来适应网络中断和故障。另外,几乎无须手工配置路由表,因为路由器可以相互学到其他已有并且可用的路由器。这一特性也消除了由于人为错误而在路由表中引入错误的可能。然而,动态路由也并不完美,其表现出来的缺点如相当复杂以及由于路由器通讯所带来的额外的网络开销,并不能使最终用户由此获益,并却一直消耗着网络带宽。<br />
===== 4.2.4. TCP 和 UDP =====<br />
<br />
TCP 是一个基于连接的协议,提供纠错并通过 流量控制 来传输数据。流量控制决定什么时间一个数据流需要停止,例如在出现诸如 冲突 等问题时重发先前发送的数据包,以确保完整和准确的数据传输。TCP 常用于重要信息的交换,如数据库传输。<br />
<br />
另一方面,用户数据报协议 (UDP) 是一个 无连接 协议,很少用于重要数据的传输,因为缺乏流量控制或其他一些确保可靠数据传输的方法。UDP 常用在如音视频流这样的应用程序,由于它缺少纠错和流控,因此相对于 TCP 来说更快,而且丢失少量包通常也不会造成灾难性的后果。<br />
===== 4.2.5.ICMP =====<br />
<br />
Internet 控制消息协议是在Request For Comments (RFC) #792 中定义的,是对网际协议 (IP) 的一个扩充。支持的网络包包括控制、错误和信息的消息。ICMP 常被用在诸如判断一台网络主机或设备可用性的 ping 工具这样的网络应用程序。在网络主机和设备如路由器之间使用 ICMP 所返回的错误消息示例包括 Destination Unreachable 和 Time Exceeded。<br />
<br />
===== 4.2.6. 守护程序 =====<br />
<br />
守护程序是特殊的系统应用程序,一般常驻在后台并等待来自其他应用程序请求其所提供的功能。许多守护程序都是网络中心;在 Ubuntu 系统后台执行的许多守护程序都可以提供网络的相关功能。这些网络守护程序包括 超文本传输协议守护程序 (httpd),用于提供网站服务器功能;Secure SHell 守护程序 (sshd),用于提供安全远程登录 shell 和文件传输功能;Internet Message Access Protocol 守护程序 (imapd),用于提供 E-Mail 服务。<br />
<br />
==== 防火墙配置 ====<br />
Linux 内核包括 Netfilter 子系统,用来处理或决定网络传输头部进入或穿过你的服务器,目前所有的 Linux 防火墙都用该系统来做包过滤。<br />
===== 4.3.1. 防火墙介绍 =====<br />
<br />
内核的包过滤系统如果没有一个用户态 (userspace) 界面来管理它的话对管理员来说几乎没有用。这正是 iptables 的目的。当一个包到达您的服务器,它从用户态 (userspace) 通过 iptables 传给 Netfilter 子系统,然后基于提供的规则去接受、操作或拒绝。因此,如果你能熟悉它的话,那么 iptables 就是您管理您防火墙所需的全部。<br />
===== 4.3.2. IP 伪装 =====<br />
<br />
IP 伪装的目的是为了允许您网络上那些有着私有的、不可路由的 IP 地址的机器可以通过做伪装的机器访问 Internet。来自您私有网络并要访问 Internet 的传输必须是可以操作的,也就是说回复要可以被路由回来以送到发出请求的机器上。要做到这一点,内核必须修改每个包 源 IP 地址以便回复能被路由回它这里,而不是发出请求的私有 IP 地址,因为它们对于 Internet 来说是不存在的。Linux 使用 Connection Tracking (conntrack) 来保持那个连接是属于哪个机器的,并相应地对每个返回包重新做路由。发自您私有网络的流量就这样被伪装成源于您的网关机器。这一过程在 Microsoft 文档中被称为 Internet 连接共享。<br />
<br />
这可以用单条 iptables 规则来完成,也许基于您网络配置来说会有一些小的差异:<br />
<pre><nowiki><br />
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE</nowiki></pre><br />
<br />
上述命令假设您的私有地址空间是192.168.0.0/16,您与 Internet 相连的设备是 ppp0。语法分解如下所示:<br />
<br />
**** -t nat -- 该规则将进入 nat 表<br />
**** -A POSTROUTING -- 该规则将被追加 (-A) 到 POSTROUTING 链<br />
**** -s 192.168.0.0/16 -- 该规则将被应用在源自指定地址空间的流量上<br />
**** -o ppp0 -- 该规则应用于计划通过指定网络设备的流量。<br />
**** -j MASQUERADE -- 匹配该规则的流量将如上所述 "跳转" (-j) 到 MASQUERADE (伪装) 目标。<br />
<br />
在过滤表 (缺省表,在那里有着大多数或全部包过滤指令) 中的每条链 (chain) 都有一个默认的 ACCEPT 策略,但如果您还在网关设备上设置防火墙,那么您也许还要设置 DROP 或 REJECT 策略,这时您被伪装过的流量还需要被 FORWARD 链 (chain) 中的规则允许才能正常工作:<br />
<pre><nowiki><br />
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT<br />
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT</nowiki></pre><br />
<br />
上述命令将允许通过从您局域网到 Internet 的所有连接,这些连接所有的相关流量也都返回到发起它们的机器。<br />
===== 4.3.3. 工具 =====<br />
<br />
有很多工具可以帮助您构建一个完整的防火墙,而不需要 iptables 的专业知识。偏好图形界面的,Firestarter 非常流行也易于使用,fwbuilder 则非常强大而且其界面对于用过诸如 Checkpoint FireWall-1 商业防火墙工具的管理员来说相当熟悉。如果您偏好有着纯文本配置文档的命令行工具,Shorewall 是个非常强大的解决方案,可以帮您为任何网络配置一个高级防火墙。如果您的网络相对简单,或如果您没有网络,那么 ipkungfu 将给您一个无需配置就可以工作的防火墙,也允许您通过编辑简单友好的配置文件来轻松设置更高级的防火墙。另一个感兴趣的工具就是fireflier,被设计成桌面防火墙应用程序。它由一个服务器 (fireflier-server) 和可选的 GUI 客户端 (GTK 或 QT) 组成,操作就象 Windows 中许多流行的交互式防火墙应用程序一样。<br />
===== 4.3.4. 日志 =====<br />
<br />
防火墙日志主要是为了确认攻击、找出并解决您防火墙规则的问题以及注意您网络中不正常的活动。您必须在您防火墙中包含这些日志规则以便生成相应日志,虽然,日志规则必须优先于任何可应用的最终规则 (那些决定其目的包命运的规则,如ACCEPT、DROP 或 REJECT) 。<br />
<pre><nowiki><br />
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "</nowiki></pre><br />
<br />
一个从本机发起的对 80 端口的请求将会在 dmesg 中生成一条日志,如下所示:<br />
<br />
<pre><nowiki><br />
[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0</nowiki></pre><br />
<br />
上面的日志也会出现在/var/log/messages、/var/log/syslog 和 /var/log/kern.log 中。这一过程可以通过适当编辑 /etc/syslog.conf 或安装配置 ulogd 并用 ULOG 代替 LOG 来进行改变。ulogd 守护程序是一种用户态服务器可以监听来自内核的防火墙日志指令,并且能够将其写到任何您希望的文件中,甚至是 PostgreSQL 或 MySQL 数据库。使用诸如 fwanalog、fwlogwatch 或 lire 日志分析工具将会很轻松地弄懂您的防火墙日志。<br />
<br />
==== OpenSSH 服务器 ====<br />
===== 4.4.1. 介绍 =====<br />
<br />
Ubuntu 服务器指南的这部分内容介绍一个强大的远程控制网络计算机和在它们之间传输数据的工具集 OpenSSH。您也可以学到一些 OpenSSH 服务器应用程序的配置以及如何在您 Ubuntu 系统修改它们。<br />
<br />
OpenSSH 是Secure Shell (SSH) 协议工具集中的一个自由可用的版本,用以远程控制一台计算机或在计算机之间传输文件。完成这些功能的传统工具,如 telnet 或 rcp 等,是不安全的,它们在使用时用明文来传输用户的密码。OpenSSH 提供一个服务器守护程序和客户端工具来保障安全、加密的远程控制和文件传输操作,以有效地取代传统的工具。<br />
<br />
OpenSSH 服务器组组件 sshd 持续监听来自任何客户端工具的连接请求。当一个连接请求发生时,sshd 根据客户端连接的类型来设置当前连接。例如,如果远程计算机是通过 ssh 客户端应用程序来连接的话,OpenSSH 服务器将在认证之后设置一个远程控制会话。如果一个远程用户通过 scp 来连接 OpenSSH 服务器,OpenSSH 服务器将在认证之后开始服务器和客户机之间的安全文件拷贝。OpenSSH 可以支持多种认证模式,包括纯密码、公钥以及Kerberos 票据。<br />
===== 4.4.2. 安装 =====<br />
<br />
OpenSSH 客户端及服务器应用程序的安装是简单的。要在您 Ubuntu 系统中安装 OpenSSH 客户端应用程序,可以在终端提示符后使用以下命令:<br />
<br />
<pre><nowiki><br />
sudo apt-get install openssh-client</nowiki></pre><br />
<br />
要安装 OpenSSH 服务器应用程序及相关的支持文件,可以在终端提示符后使用以下命令:<br />
<br />
<pre><nowiki><br />
sudo apt-get install openssh-server</nowiki></pre><br />
<br />
===== 4.4.3. 配置 =====<br />
<br />
您可以通过编辑 /etc/ssh/sshd_config 文件来配置 OpenSSH 服务器应用程序的缺省过程。关于该文件中使用的配置语句信息,您可以在终端提示符后运行下列命令来查阅相应的手册页:<br />
<br />
<pre><nowiki><br />
man sshd_config</nowiki></pre><br />
<br />
<br />
在 sshd 配置文件中有许多语句来控制那些诸如通信设置和认证模式。下面是一个通过编辑 /etc/ssh/ssh_config 文件来改变配置语句的例子。<br />
<br />
在编辑配置文件之前,您应该生成一个原始文件的拷贝并对其写保护,以便您可以参考原始文件并在必要时重用它。<br />
<br />
拷贝 /etc/ssh/sshd_config 文件并对其写保护可以通过在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original<br />
sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></pre><br />
<br />
<br />
以下是您可能更改配置语句的范例:<br />
<br />
**** 要设置您 OpenSSH 在 TCP 2222 端口而不是缺省的 TCP 20 端口监听,可以如下使用改变 Port 语句:<br />
<code><nowiki>Port 2222</nowiki></code><br />
**** 要让 sshd 允许基于公钥登录证书,可以简单添加或修改该行语句:<br />
<code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
到 /etc/ssh/sshd_config 文件中。如果已经存在,确保该行语句没有被注释。<br />
**** 要使您的 OpenSSH 服务器显示 /etc/issue.net 文件的内容以作为预登录 Banner,只需简单地将下行添加或修改:<br />
<code><nowiki>Banner /etc/issue.net</nowiki></code><br />
到 /etc/ssh/sshd_config 文件中即可。<br />
<br />
在修改 /etc/ssh/sshd_config 文件之后,保存该文件并重启 sshd 服务器应用程序以使之生效。可以在终端提示符后使用下列命令:<br />
<br />
<pre><nowiki><br />
sudo /etc/init.d/ssh restart</nowiki></pre> <br />
<br />
许多其他的 sshd 配置语句可以使服务器应用程序按您的要求运行。然而,给您一个忠告,如果您访问服务器的唯一方法就是使用 ssh,而且您在通过 /etc/ssh/sshd_config 文件来配置 sshd 时犯了一个错误,那么在重启该服务之后您可能会发现您被锁在服务器外面了,或者是 sshd 服务在处理一个不正确的配置语句时拒绝启用。因此当在远程服务器上编辑该文件时要格外的小心。<br />
<br />
===== 4.4.4. 引用 =====<br />
<br />
[http://www.openssh.org/ OpenSSH 网站]<br />
<br />
[https://wiki.ubuntu.com/AdvancedOpenSSH 高级 OpenSSH 维基页]<br />
<br />
==== FTP 服务器 ====<br />
文件传输协议 (FTP) 是一个 TCP 协议,用于在计算机之间上传和下载文件。FTP 工作在客户端/服务器模式下。服务器组件被称为 FTP 守护程序。它持续不断地监听来自远程客户端的 FTP 请求。当一个请求到达时,它管理登录和建立连接。在整个会话期间它执行 FTP 客户端发送来的任何命令。<br />
<br />
可以通过两种方式来管理 FTP 服务器的访问:<br />
**** 匿名<br />
**** 授权<br />
<br />
在匿名模式中,远程客户端可以使用 "anonymous" 或 "ftp" 缺省用户帐号并通过发送一个邮件地址做为密码来访问 FTP 服务器。在授权模式下一个用户必须拥有帐号和密码。用户所访问 FTP 服务器中目录和文件的权限是根据登录时所用帐号来定义的。一般来说,FTP 守护程序将隐藏在 FTP 服务器的根目录中并将其改到 FTP 家目录。这样就可以向远程传话隐藏文件系统的其他部分。<br />
===== 4.5.1. vsftpd - FTP 服务器安装 =====<br />
<br />
vsftpd 是可在 Ubuntu 中使用的 FTP 守护程序之一。它在安装、设置和维护方面十分方便。要安装 vsftpd 您可以使用下列命令:<br />
<pre><nowiki><br />
sudo apt-get install vsftpd </nowiki></pre><br />
<br />
===== 4.5.2. vsftpd - FTP 服务器配置 =====<br />
<br />
你可以编辑 vsftpd 配置文件,/etc/vsftpd.conf,来配置缺省设置。缺省状态下只允许匿名 FTP。如果您希望禁用该选项,您可以将下面这行:<br />
<pre><nowiki><br />
anonymous_enable=YES</nowiki></pre><br />
<br />
改为 <br />
<pre><nowiki><br />
anonymous_enable=NO</nowiki></pre><br />
<br />
* 缺省状态下,本地系统用户是不允许登录 FTP 服务器的。要改变该设置,您可以将下面这行反注释:<br />
<br />
* 缺省状态下,允许用户从 FTP 下载文件,但不允许他们上传文件到 FTP 服务器。为了能够上传文件到 FTP 服务器,需要改变该设置,您可以将下面这行反注释掉:<br />
<pre><nowiki></nowiki></pre><br />
<br />
* 配置文件包括许多配置参数。关于配置文件中的每个参数的信息都可以得到,或者您可以参考手册页,man 5 vsftpd.conf 说明每个参数的细节。<br />
一旦您配置好了 vsftpd 您就可以运行该守护程序了。您可以执行下列命令来运行vsftpd 守护进程:<br />
<pre><nowiki><br />
sudo /etc/init.d/vsftpd start </nowiki></pre><br />
<br />
请注意在配置文件中缺省的设置主要是出于安全考虑。上面每一个改变都会使系统的安全性更小,所以请只在您需要时才改变他们。<br />
<br />
==== 网络文件系统 (NFS) ====<br />
NFS 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。<br />
<br />
NFS 最值得注意的优点有:<br />
**** 本地工作站可以使用更少的磁盘空间,因为常用数据可以被保存在一台机器上,并让网络上的其他机器可以访问它。<br />
**** 不需要为用户在每台网络机器上放一个用户目录。用户目录可以在 NFS 服务器上设置并使其在整个网络上可用。<br />
**** 存储设备如软盘、光驱及 USB 设备可以被网络上其它机器使用。这可能可以减少网络上移动设备的数量。<br />
<br />
===== 4.6.1. 安装 =====<br />
<br />
在终端提示符后键入以下命令安装 NFS 服务器:<br />
<pre><nowiki><br />
sudo apt-get install nfs-kernel-server</nowiki></pre><br />
<br />
===== 4.6.2. 配置 =====<br />
<br />
您可以配置要输出的目录,您可以在 /etc/exports 文件中添加该目录。例如:<br />
<pre><nowiki><br />
/ubuntu *(ro,sync,no_root_squash)<br />
/home *(rw,sync,no_root_squash)</nowiki></pre><br />
<br />
您可以用主机名来代替 *。尽量指定主机名以便使那些不想其访问的系统访问 NFS 挂载的资源。<br />
<br />
您可以在终端提示符后运行以下命令来启动 NFS 服务器:<br />
<pre><nowiki><br />
sudo /etc/init.d/nfs-kernel-server start</nowiki></pre><br />
<br />
===== 4.6.3. NFS 客户端配置 =====<br />
<br />
使用 mount 命令来挂载其他机器共享的 NFS 目录。可以在终端提示符后输入以下类似的命令:<br />
<pre><nowiki><br />
sudo mount example.hostname.com:/ubuntu /local/ubuntu</nowiki></pre><br />
<br />
挂载点 /local/ubuntu 目录必须已经存在。而且在 /local/ubuntu 目录中没有文件或子目录。<br />
<br />
另一个挂载其他机器的 NFS 共享的方式就是在 /etc/fstab 文件中添加一行。该行必须指明 NFS 服务器的主机名、服务器输出的目录名以及挂载 NFS 共享的本机目录。<br />
<br />
以下是在 /etc/fstab 中的常用语法:<br />
<pre><nowiki><br />
example.hostname.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr</nowiki></pre><br />
<br />
===== 4.6.4. 引用 =====<br />
<br />
[http://nfs.sourceforge.net/ Linux NFS 常见问答]<br />
<br />
==== 动态主机配置协议 (DHCP) ====<br />
动态主机配置协议 (DHCP) 是一种网络服务,相对于手工为每台网络主机配置,它使网络主机可能自动被服务器指定设置。被配置成 DHCP 客户端的计算机并不能控制其从 DHCP 服务器得到的设置,且该配置对于计算机用户来说是透明的。<br />
<br />
由 DHCP 服务器提供给 DHCP 客户端最常用的设置包括:<br />
**** IP 地址和掩码<br />
**** DNS<br />
**** WINS<br />
<br />
然而,一个 DHCP 服务器也支持配置如下属性,如:<br />
**** 主机名<br />
**** 域名<br />
**** 默认网关<br />
**** 时间服务器<br />
**** 打印服务器<br />
<br />
使用 DHCP 的好处在于当网络发生改变如 DNS 服务器地址改变时,只需要在 DHCP 服务器中改变即可,所有网络主机将在其 DHCP 客户端下一次轮询 DHCP 服务器时被重新配置。另一个好处就是,它在将新计算机整合到网络时也更容易,因为不需要再检查 IP 地址的有效性。同时也减少 IP 地址的冲突。<br />
<br />
一个 DHCP 服务器可以用两个模式来提供配置设置<br />
<br />
* MAC 地址<br />
该模式需要用 DHCP 去标明连接到网上的每块网卡唯一的硬件地址,然后在 DHCP 客户端每次使用该网络设备发送给 DHCP 服务器请求时提供给它一个固定的配置。 <br />
* 地址池<br />
该模式需要定义一个 IP 地址池 (有时也叫范围或作用域) ,以便 DHCP 客户端可以被动态提供它们的配置from which DHCP clients are supplied their configuration properties dynamically and on a fist come first serve basis。当一个 DHCP 客户端有段时间不再在网络上时,该配置将过期并释放回地址池以便为其他 DHCP 客户端使用。<br />
<br />
ubuntu 提供 DHCP 服务器及其客户端。服务器叫 dhcpd (动态主机配置协议守护程序)。Ubuntu 提供的客户端叫 dhclient,应该安装在所有自动配置的计算机上。这两个程序很容易安装和配置,并可在系统引导时自动启用。<br />
===== 4.7.1. 安装 =====<br />
要安装 dhcpd,可以在终端提示符后输入以下命令:<br />
<pre><nowiki><br />
sudo apt-get install dhcpd</nowiki></pre><br />
<br />
您将看到下面的输出,说明接下来做什么:<br />
<pre><nowiki><br />
Please note that if you are installing the DHCP server for the first<br />
time you need to configure. Please stop (/etc/init.d/dhcp<br />
stop) the DHCP server daemon, edit /etc/dhcpd.conf to suit your needs<br />
and particular configuration, and restart the DHCP server daemon<br />
(/etc/init.d/dhcp start).<br />
<br />
You also need to edit /etc/default/dhcp to specify the interfaces dhcpd<br />
should listen to. By default it listens to eth0.<br />
<br />
NOTE: dhcpd's messages are being sent to syslog. Look there for<br />
diagnostics messages.<br />
<br />
Starting DHCP server: dhcpd failed to start - check syslog for diagnostics. </nowiki></pre> <br />
<br />
===== 4.7.2. 配置 =====<br />
<br />
安装结束后的错误消息可能会带来小小的困惑,不过下面几步将帮助您配置服务:<br />
通常,您想做的是随机指定一个 IP 地址。这可以通过以下设置来实现:<br />
<pre><nowiki><br />
default-lease-time 600;<br />
max-lease-time 7200;<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.1.255;<br />
option routers 192.168.1.254;<br />
option domain-name-servers 192.168.1.1, 192.168.1.2;<br />
option domain-name "mydomain.org";<br />
<br />
subnet 192.168.1.0 netmask 255.255.255.0 {<br />
range 192.168.1.10 192.168.1.100;<br />
range 192.168.1.150 192.168.1.200;<br />
} <br />
</nowiki></pre><br />
这将导致 DHCP 服务器从 192.168.1.10-192.168.1.100 或 192.168.1.150-192.168.1.200 范围中分配客户端一个 IP 地址。如果客户端没有要求一个特定的时间帧的话它将租用 600秒的 IP 地址。否则最大 (允许) 租用时间为 7200 秒。服务器也 "建议" 客户端使用 255.255.255.0 做为它的子网掩码,192.168.1.255 作为它的广播地址,192.168.1.254 作为路由器/网关,同时将 192.168.1.1 和 192.168.1.2 作为它的 DNS 服务器。<br />
<br />
如果您需要为您的 Windows 客户机指定一个 WINS 服务器,您需要包含 netbios-name-servers 选项,如:<br />
<pre><nowiki><br />
option netbios-name-servers 192.168.1.1; </nowiki></pre><br />
<br />
Dhcpd 配置设置可以从 DHCP 快速指南中得到,该指南可以在 这里 找到。<br />
===== 4.7.3. 引用 =====<br />
[http://www.dhcp-handbook.com/dhcp_faq.html DHCP 常见问答]<br />
==== 域名解析服务 (DNS) ====<br />
域名解析服务 (DNS) 是一个 Internet 服务,相互映射 IP 地址和完全限定域名 (FQDN) 。通过这种方式,使用 DNS 将不再需要记住 IP 地址。运行 DNS 的计算机称为 名称服务器。Ubuntu 提供 BIND (伯克利 Internet 名称守护程序),一个在 GNU/Linux 上最常用的维护名称服务器的程序。<br />
===== 4.8.1. 安装 =====<br />
<br />
在终端提示符后输入以下命令来安装 dns:<br />
<pre><nowiki><br />
sudo apt-get install bind</nowiki></pre><br />
<br />
===== 4.8.2. 配置 =====<br />
DNS 配置文件被保存在 /etc/bind 目录中。主配置文件叫 /etc/bind/named.conf。缺省配置文件的内容如下所示:<br />
<pre><nowiki><br />
// This is the primary configuration file for the BIND DNS server named.<br />
//<br />
// Please read /usr/share/doc/bind/README.Debian for information on the <br />
// structure of BIND configuration files in Debian for BIND versions 8.2.1 <br />
// and later, *BEFORE* you customize this configuration file.<br />
//<br />
<br />
include "/etc/bind/named.conf.options";<br />
<br />
// reduce log verbosity on issues outside our control<br />
logging {<br />
category lame-servers { null; };<br />
category cname { null; };<br />
};<br />
<br />
// prime the server with knowledge of the root servers<br />
zone "." {<br />
type hint;<br />
file "/etc/bind/db.root";<br />
};<br />
<br />
// be authoritative for the localhost forward and reverse zones, and for<br />
// broadcast zones as per RFC 1912<br />
<br />
zone "localhost" {<br />
type master;<br />
file "/etc/bind/db.local";<br />
};<br />
<br />
zone "127.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.127";<br />
};<br />
<br />
zone "0.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.0";<br />
};<br />
<br />
zone "255.in-addr.arpa" {<br />
type master;<br />
file "/etc/bind/db.255";<br />
};<br />
<br />
// add local zone definitions here<br />
include "/etc/bind/named.conf.local";</nowiki></pre><br />
<br />
include 行指定包含 DNS 选项的文件名。在选项文件中的directory 行告诉 DNS 在哪儿寻找文件。所有 BIND 用到的文件都与该目录相关。<br />
名为 /etc/bind/db.root 的文件描述世界上的根名称服务器。这些服务器按时更新并不时被维护。<br />
<br />
zone 部分定义一个主服务器,并将其保存在 file 标签所指定的文件中。每个 zone 文件包括 3 个资源记录 (RRs):一个 SOA RR、一个 NS RR 以及一个 PTR RR。SOA 是授权开始的缩写。"@" 符是一个特定的符号表示原点。NS 是名称服务器 RR。PTR 是域名指针。要开始 DNS 服务器,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/bind start</nowiki></pre><br />
<br />
详情您可以参考在参考部分所提及的文档。<br />
===== 4.8.3. 引用 =====<br />
[http://www.tldp.org/HOWTO/DNS-HOWTO.html DNS 指南]<br />
==== CUPS - 打印服务器 ====<br />
Ubuntu 打印及打印服务主要是 通用 UNIX 打印服务 (CUPS)。该打印系统是自由可用、可移植的打印层,正在成为绝大多数 GNU/Linux 发行版新的打印标准。<br />
<br />
CUPS 管理打印作业和队列,并使用标准的 Internet 打印协议 (IPP) 提供网络打印,该协议提供最大范围的打印机支持,从点阵打印机到激光打印机以及位于两者之间的许多打印机。CUPS 也支持 PostScript Printer Description (PPD) 和网络打印机的自动检测,以及提供基于 Web 的简单配置和管理工具。<br />
===== 4.9.1. 安装 =====<br />
在您 Ubuntu 计算机上安装 CUPS,只需简单使用 sudo 和apt-get 命令并将要安装包作为第一个参数即可。一个完全的 CUPS 安装需要安装许多从属包,但它们也可以在同一个命令行指定。在终端提示符后输入以下命令以安装 CUPS:<br />
<pre><nowiki><br />
sudo apt-get install cupsys cupsys-client</nowiki></pre><br />
<br />
认证您的用户密码之后,这些包将被下载并正确安装。在安装结束之后,CUPS 服务器将自动开始。为了发现并修复问题,您可以通过错误日志文件 /var/log/cups/error_log 来查看 CUPS 服务器的错误。如果错误日志并没有显示足够的用于找到和解决您所遇问题的信息,通过将配置文件 (下面要讨论) 中将LogLevel 语句从缺省的 "info" 改为 "debug" 甚至是记录每件事的 "debug2",以获得 CUPS 日志的详细信息。<br />
<br />
===== 4.9.2. 配置 =====<br />
可以通过 /etc/cups/cupsd.conf 文件中的指令来配置通用 UNIX 打印系统服务器的行为的。CUPS 配置文件与 Apache HTTP 服务器的主配置文件语法相同,因此熟悉编辑 Apache 配置文件的用户在编辑 CUPS 配置文件时会感到相当容易。在这里将显示一些您可能想要改变初始值的设置范例。 <br />
<br />
在编辑配置文件之前,您应该将原始文件做个副本并将其写保护,以便您可以将原始文件作为参考并在必要时重用它。 <br />
<br />
拷贝 /etc/cups/cupsd.conf 文件并对其写保护,可以在终端提示符后执行以下命令:<br />
<pre><nowiki><br />
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original<br />
sudo chmod a-w /etc/cups/cupsd.conf.original</nowiki></pre><br />
<br />
**** ServerAdmin:要配置指定 CUPS 服务器管理员的邮件地位,只需用你喜欢的文本编辑器简单编辑 /etc/cups/cupsd.conf 配置文件,并修改相应的 ServerAdmin 行即可。举个例子,如果您是 CUPS 服务器的管理员,并且您的邮件地址是'bjoy@somebigco.com',那么您可以象下面这样修改 ServerAdmin 行:<br />
<code><nowiki>ServerAdmin bjoy@somebigco.com</nowiki></code><br />
<br />
关于 CUPS 服务器配置文件中配置语句的更多范例,通过在终端提示符后输入以下命令可以查阅相关的系统手册页:<br />
<pre><nowiki><br />
man cupsd.conf</nowiki></pre><br />
<br />
无论您在什么时间修改了 /etc/cups/cupsd.conf 配置文件,您都需要重启 CUPS 服务,在终端提示符后键入以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/cupsys restart</nowiki></pre> <br />
<br />
CUPS 服务器的其它一些配置在文件 /etc/cups/cups.d/ports.conf 中:<br />
<br />
**** Listen:在 Ubuntu 的缺省状态下,CUPS 服务器安装后只监听 IP 地址为 127.0.0.1 的环回接口。为了让 CUPS 服务器可以在网络适配器真正的 IP 地址上监听,您必须要么指定一个指定主机名、要么指定一个IP 地址,随您选择。可以通过 Listen 语句来添加一个 IP 地址/端口对。例如:如果您的 CUPS 服务器在一个局域网中,其 IP 地址为 192.168.10.250,您想要该子网中的其它系统能够访问它,您可以编辑 /etc/cups/cups.d/ports.conf 并如下所示添加一个 Listen 语句:<br />
<pre><nowiki><br />
Listen 127.0.0.1:631 # existing loopback Listen<br />
Listen /var/run/cups/cups.sock # existing socket Listen<br />
Listen 192.168.10.250:631 # Listen on the LAN interface, Port 631 (IPP)</nowiki></pre><br />
<br />
在上面的例子里,如果您不想 cupsd 监听环回地址 (127.0.0.1) ,您可能注释或删除了相关语句。但最好保留它以监听局域网 (LAN) 的以太网接口。为了能监听一个特定主机名所绑定的所有的网络接口,您可以为 socrates 主机名创建一个 Listen 条目,如下所示:<br />
<pre><nowiki><br />
Listen socrates:631 # Listen on all interfaces for the hostname 'socrates'</nowiki></pre><br />
<br />
或者忽略 Listen 语句并使用 Port 来代替,如:<br />
<pre><nowiki><br />
Port 631 # Listen on port 631 on all interfaces</nowiki></pre> <br />
<br />
===== 4.9.3. 引用 =====<br />
[http://www.cups.org/ CUPS 网络]<br />
<br />
==== HTTPD - Apache2 Web 服务器 ====<br />
Apache 是在 GNU/Linux 系统中最常用的 Web 服务器。Web 服务器为客户机所提交的网页请求服务。客户机一般通过网页浏览器如 Firefox、Opera、Mozilla或IE来请求和查看网页。<br />
<br />
用户输入统一资源定位器 (URL) 来指向一个 Web 服务器,并通过完全限定域名 (FQDN) 和路径来请求资源。例如,要查看 Ubuntu 网站 的主页,用户只需要输入 FQDN 即可。如果要请求关于 有偿技术支持 的特定信息,用户将在 FQDN 后输入路径。<br />
<br />
用于传输网页的最常用协议就是超文本传输协议 (HTTP)。也支持诸如基于安全套接层的超文本传输协议 (HTTPS) 以及用于上传和下载文件的文件传输协议 (FTP) 等协议。<br />
<br />
Apache Web 服务器常与 MySQL 数据库引擎、超文本处理器 (PHP) 脚本语言及其他流行的脚本语言如Python 和 Perl 组合在一起。这一组合被称为 LAMP (Linux, Apache, MySQL and Perl/Python/PHP) ,并形成一个强大健壮的开发基于 Web 应用程序的开发平台。<br />
===== 4.10.1. 安装 =====<br />
<br />
Apache2 web 服务器在 Ubuntu Linux 中是可用的。要安装 Apache2:<br />
<br />
**** 在终端提示符后输入下列命令:<br />
<pre><nowiki><br />
sudo apt-get install apache2</nowiki></pre><br />
<br />
===== 4.10.2. 配置 =====<br />
<br />
Apache 可以在纯文本配置文件中通过 语句 来配置的。主配置文件叫 apache2.conf。此外,其外配置文件可以用 Include 语句来添加,也可以使用通配符来包含多个配置文件。任何语句都可能被放在这些配置文件的任何一个文件中。修改过的主配置文件只在 Apach2 启动或重启时才能被其识别。<br />
<br />
服务器也查看包含 mime 文档类型的文件;该文件名通过 TypesConfig 设置,缺省情况下是mime.types。<br />
<br />
缺省的 Apache2 配置文件是 /etc/apache2/apache2.conf。您可以编辑该文件以配置 Apache2 服务器。您可以配置端口号、文档根目录、模块、日志文件及虚拟主机等。<br />
====== 4.10.2.1. 基本设置 ======<br />
<br />
本部分内容说明 Apache2 服务器基本的配置参数。详情请参阅 Apache2 文档<br />
<br />
**** Apache2 提供了一个友好虚拟主机的缺省配置。它配置成单个缺省虚拟主机 (使用 VirtualHost 语句) 。如果您有单个站点,可以修改或直接使用它。如果您有多个站点的话,可以将其作为其它虚拟主机的模板。如果对其不加理会,该缺省虚拟主机将会作为您的缺省网站提供服务,或者如果网站用户所输入的 URL 并没有匹配您任何所定义站点的 ServerName 语句时,将看到该虚拟主机内容。要修改缺省虚拟主机,可以编辑文件 /etc/apache2/sites-available/default。如果您希望配置一个新的虚拟主机或站点,在同一目录中将拷贝该文件并将新文件重命名为您所想要的文件名,如sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite。编辑新文件并用下面的所描述的语句来配置新的站点:<br />
**** ServerAdmin 语句指定服务器管理员的邮件地址,缺省值是 webmaster@localhost。应该改成您的邮件地址 (如果您是服务器管理员的话)。如果您的网站有问题,Apache2 将显示包含该邮件地址的错误信息以便报告该问题。在 /etc/apache2/sites-available 目录中您网站的配置文件里可以找到该语句。<br />
**** Listen 语句指定端口以及可选的 IP 地址,Apache2 将在其上监听。如果 IP 地址没有被指定,Apache2 将监听所有指向其所运行机器上的 IP 地址。Listen 语句的缺省值是 80。把其改成 127.0.0.1:80 将使 Apache2 只在您的环回接口上临听以致于它相对于 Internet 不可用。也可改变其监听端口如81,或保持原样以便正常操作。该语句可以在它自己的文件 /etc/apache2/ports.conf 中发现并修改。<br />
**** The ServerName 语句是可选的,它指明您站点要应答什么 FQDN。缺省虚拟主机没有指定 ServName,因为它要应答没有匹配其它虚拟主机 ServerName 语句的所有请求。如果您只获得 ubunturocks.com 域名并希望在您的 Ubuntu 服务器上只作它的主机,那么在您虚拟主机配置文件中的 ServerName 语句值应该是 ubunturocks.com。在您先前创建的新虚拟主机文件 (/etc/apache2/sites-available/mynewsite) 中添加该语句。<br />
<br />
您也可能要您的网站响应 www.ubunturocks.com 的请求,因为许多用户会假定 www 前缀是适当的。可以使用 ServerAlias 语句来解决这个问题。您也可以在 ServerAlias 中使用通配符。例如,ServerAlias *.ubunturocks.com 将使您的网站响应任何域名以 .ubunturocks.com 结尾的请求。<br />
**** DocumentRoot 语句指定 Apache 将到哪儿去寻找站点文件,缺省值为 /var/www。没有站点配置在那里,但如果您反注释在 /etc/apache2/apache2.conf 中的 RedirectMatch 语句,请求将被重定向到 /var/www/apache2-default,那里是缺省的 Apache2 站点。在您站点的虚拟主机文件中改变该值,记住在必要时可以创建相应的目录!<br />
<br />
/etc/apache2/sites-available 目录并 不会 被 Apache2 解析。在 /etc/apache2/sites-enabled 的软链接指向 "可用的" 站点。使用 a2ensite (Apache2 启用站点) 工具可以创建这些软链接,如:sudo a2ensite mynewsite 这里您站点的配置文件是 /etc/apache2/sites-available/mynewsite。同样,a2dissite 工具将用来禁用站点。<br />
====== 4.10.2.2. 缺省设置 ======<br />
<br />
这部分内容说明 Apache2 服务器缺省设置的配置。举个例子,如果您添加一个虚拟主机,您为该虚拟主机配置的设置将优先于缺省虚拟主机。如果在该虚拟主机的设置中有个语句没有定义,那么将使用缺省值。<br />
<br />
**** 当用户在目录名后使用斜杠 (/) 来请求一个目录索引时,The DirectoryIndex 将通过服务器提供缺省页服务。<br />
<br />
例如,当一个用户请求 http://www.example.com/this_directory/ 页时,他或她要么得到 DirectoryIndex 页,如果它存在的话;要么得到一个服务器生成的目录列表,如果它不存在且设置了 Indexes 选项的话;要么就得到一个无权访问页,如果它不存在且没有设置 Indexes 选项的话。服务器尝试找到在 DirectoryIndex 语句中所列文件之一,并返回它所找到的第一个。如果它没有找到任何一个文件且该目录设置了 Indexes 选项,服务器将生成并返回一个 HTML 格式的列表,包括该目录中的子目录和文件。缺省值可以在 /etc/apache2/apache2.conf 文件中找到,是 " index.html index.cgi index.pl index.php index.xhtml"。因此,如果 Apache2 在所请求的目录中找到任何一个匹配这些名字的文件,第一个将被显示。<br />
<br />
**** ErrorDocument 语句允许您为 Apache 指定一个用于特定错误事件的文件。例如,如果用户请求的资源不存在,那么将引发 404 错误,而在 Apache2 的缺省配置中,文件 /usr/share/apache2/error/HTTP_NOT_FOUND.html.var 将被显示。该文件并不在服务器的 DocumentRoot 中,但在 /etc/apache2/apache2.conf 中有个别名语句将到 /error 目录的请求重定向到 /usr/share/apache2/error/ 中。要查看缺省的 ErrorDocument 语句列表,可以使用命令:grep ErrorDocument /etc/apache2/apache2.conf<br />
<br />
**** 在缺省状态下,服务器将传输日志记录在文件 /var/log/apache2/access.log 中。您可以在您每个虚拟主机站点的配置文件上用 CustomLog 语句来改变它,或者忽略它以接受在 /etc/apache2/apache2.conf 中指定的缺省设置。您也可以通过 ErrorLog 语句来指定记录错误日志的文件,该文件缺省是 /var/log/apache2/error.log。这些都从传输日志中分离出来以便更好地在您的 Apache2 服务器中发现和解决问题。您也可以指定 LogLevel (缺省值是 "warn") 和 LogFormat (缺省值参见 /etc/apache2/apache2.conf)<br />
<br />
**** 一些选项是基于每目录而非每服务器的。Option 是这些语句中的一个。Directory 段是被放在类 XML 标记中,如:<br />
<pre><nowiki><br />
<Directory /var/www/mynewsite><br />
...<br />
</Directory></nowiki></pre><br />
<br />
在 Directory 段中的 Options 语句接受一个或更多下面的用空格分隔的值 (包括其它):<br />
* ExecCGI - 允许执行 CGI 脚本。如果该选项没有设置,则 CGI 脚本将不能执行。<br />
大多数文件不会作为 CGI 脚本运行的。这是非常危险的。CGI 脚本应该位于您 DocumentRoot 目录以外与之分开的目录中,并且只能该目录才有 ExecCGI 选项设置。缺省状态下,CGI 脚本默认位于 /usr/lib/cgi-bin。<br />
* Includes - 允许服务器端包含。服务器端包含允许一个 HTML 文件包含其他文件。这不是一个常用选项。更多信息参见 the Apache2 SSI 指南。<br />
* IncludesNOEXEC - 允许服务器端包含,但 CGI 脚本中的 #exec 和 #include 指令无效。<br />
* Indexes - 如果 DirectoryIndex (如 index.html) 在请求的目录没存在的话,按一定方式显示目录内容列表。<br />
* Multiview - 支持内容协商的多重视图;该选项在缺省状态下出于安全的考虑是被禁用的。参见 Apache2 关于该选项的文档。<br />
* SymLinksIfOwnerMatch - 仅在软连接与其目的文件或目录拥有相同所有者时才使用。<br />
<br />
====== 4.10.2.3. 虚拟主机设置 ======<br />
<br />
虚拟主机允许您在同一台机器上相对不同的 IP 地址、主机名或不同端口号运行不同的服务器。例如,您可以运行使用虚拟主机在同一个 Web 服务器上运行网站 http://www.example.com 和 http://www.anotherexample.com。这一选项适用于缺省虚拟主机和基于 IP 的虚拟主机的 <VirtualHost> 语句,也适用于基于名称的虚拟主机的 <NameVirtualHost> 语句。<br />
<br />
虚拟主机的语句设置仅应用于特定的虚拟主机。如果一个语句在服务器范围中设置而没有在虚拟主机设置中定义,那么将使用缺省设置。例如,您可以定义网络管理员的邮件地址而无需为每个虚拟主机都分别定义邮件地址。<br />
<br />
为虚拟主机设置 DocumentRoot 语句到包含根文档 (如 index.html) 目录。缺省的 DocumentRoot 是 /var/www。<br />
<br />
在 VirtualHost 段中的 ServerAadmin 语句是指用于错误页的页脚中的邮件地址,如果您想在错误页的页脚显示邮件地址的话。<br />
====== 4.10.2.4. 服务器设置 ======<br />
<br />
这部分内容说明如何配置基本的服务器设置。<br />
<br />
LockFile - 当服务器编译时使用了 USE_FCNTL_SERIALIZED_ACCEPT 或 USE_FLOCK_SERIALIZED_ACCEPT 参数时,使用 LockFile 语句来设置 lockfile 的路径。它必须保存在本地磁盘上,它应该设置成缺省值,除非日志目录被定位在 NFS 共享上。如果是这种情况,缺省值应该被改为本地磁盘的位置并且其目录只对 root 用户可读。<br />
<br />
PidFile - PidFile 语句设置服务器记录其进程 ID (pid) 的文件。该文件只对 root 用户可读。在大多数情况下,应该保留其缺省值。<br />
<br />
User - 用户语句设置被服务器用于回应请求的用户 ID。该设置决定服务器的权限。一些该用户无法访问的文件也无法被您网站的访问者访问。用户缺省值是 www-data。<br />
<br />
除非您的确知道您在做什么,否则请不要将 User 设为 root 用户。用 root 作为 User 的值将会在您的 Web 服务器中产生极大的安全漏洞。<br />
<br />
Group 语句同 User 语句相似。Group 设置被服务器用于回应请求的用户组。缺省的组也是 www-data。<br />
====== 4.10.2.5. Apache 模块 ======<br />
<br />
Apache 是一个模块化的服务器。这就意味着在核心服务器中只包括最基本的功能。扩展功能可以通过被引导进 Apache 的模块来实现。缺省情况下,基本模块是在编译时被包含进服务器的。如果服务器编译成可以动态引导模块,那么模块可以单独编译,并在任何时候使用 LoadModule 语句来添加。否则,Apache 必须在添加或删除模块时重新编译。Ubuntu 编译 Apache2 时是允许动态引导模块的。配置语句通过将已有模块放置 <IfModule> 块中以便有条件地包含在配置语句中。您可以在您的 Web 服务器上安装和使用额外的 Apache2 模块。您可以用 apt-get 命令来安装 Apache2 模块。如安装 MYSQL 认证的 Apach2 模块,您可以在终端提示符中运行以下命令:<br />
<pre><nowiki><br />
sudo apt-get install libapache2-mod-auth-mysql</nowiki></pre><br />
<br />
一旦您安装了模块,模块将出现在 /etc/apache2/mods-available 目录中。您可以使用 a2enmod 命令来启用模块。您也可以使用 a2dismod 命令来禁用模块。一旦您启用该模块,该模块将在 /etc/apache2/mods-enabled 目录中出现。<br />
===== 4.10.3. HTTPS 配置 =====<br />
<br />
The mod_ssl 模块为 Apache2 服务器添加了一个重要的功能 - 通讯加密的能力。因此,当您的浏览器要用 SSL 加密通讯时,需要在浏览器导航栏中在输入的统一资源定位器 (URL) 的开始处使用 https:// 前缀。<br />
<br />
mod_ssl 模块已经包含在 apache2-common 软件包中。如果您安装该软件包,您可以在终端提示符之后执行下列命令启用 mod_ssl 模块:<br />
<pre><nowiki><br />
sudo a2enmod ssl</nowiki></pre><br />
<br />
====== 4.10.3.1. 证书和安全 ======<br />
<br />
要设置您的安全服务器,使用公共钥创建一对公钥私钥对。大多数情况下,您发送您的证书请求 (包括您的公钥),您公司证明材料以及费用到一个证书颁发机构 (CA)。CA 检证证书请求及您的身份,然后将证书发回您的安全服务器。<br />
<br />
还有种办法就是您可以创建您自己签署的证书。然而请注意自己签置的证书不应该用于生产环境。自已签署的证书不会被用户浏览器自动接受。浏览器将提示用户接受证书并创建一个安全的连接。<br />
<br />
一旦您有一个自己签署的证书或一个您选择的 CA 签署的证书,您需要将它安装在您的安全服务器上。<br />
====== 4.10.3.2. 证书类型 ======<br />
<br />
您需要一个钥匙和一个证书来操作您的安全服务器,这意味着您可以生成自己签署的证书或购买 CA 签署的证书。由 CA 签署的证书为您的服务器提供两个重要的功能:<br />
<br />
**** 浏览器 (通常) 会自动地识别证书并且在不提示用户的情况下允许创建一个安全连接。<br />
**** 当一个 CA 生成一个签署过的证书,它为提供网页给浏览器的组织提供身份担保。<br />
<br />
多数支持 SSL 的 Web 浏览器都有一个 CA 列表,它们的证书会被自动接受。如果一个浏览器遇到一个其授权 CA 并不在列表中的证书,浏览器将询问用户是否接受或拒绝连接。<br />
<br />
您可以为您的安全服务器生成一个自己签署的证书,但要知道自己签署的证书并不提供与 CA 签署的证书相同的功能。自己签署的证书不会被多数 Web 浏览器自动识别,而且自己签署的证书也不为任何提供网站的组织提供担保。CA 签署的证书为安全服务器提供所有这些重要的功能。从 CA 得到证书的过程相当容易。下面简要介绍一下:<br />
<br />
*** 创建一个私有和公共密钥对<br />
*** 基于公钥创建一个证书请求。证书请求包含您服务器及公司信息。<br />
*** 发送证书请求,并随之提供您的身份文档到一个 CA。我们不能告诉您选择哪个证书颁发机构。您可以基于您以往的经验或您朋友或同事的经验或纯粹基于经济因素来决定。<br />
一旦您选定一家 CA,您需要根据他们所提供的规程来从他们那里获得证书。<br />
*** 当 CA 确定您确实如您所声称的那样时,他们将发给您一个数字证书。<br />
*** 在您的安全服务器上安装该证书,并开始进行安全事务处理<br />
<br />
无论您是从一家 CA 那儿获得证书或是生成您自己签署的证书,第一步就是生成钥匙。<br />
====== 4.10.3.3. 生成一个证书签署请求 (CSR) ======<br />
<br />
要生成证书签署请求 (CSR),您应该创建您自己的钥匙。您可以在终端提示符后运行以下命令以创建钥匙:<br />
<pre><nowiki><br />
openssl genrsa -des3 -out server.key 1024</nowiki></pre><br />
<pre><nowiki> <br />
Generating RSA private key, 1024 bit long modulus<br />
.....................++++++<br />
.................++++++<br />
unable to write 'random state'<br />
e is 65537 (0x10001)<br />
Enter pass phrase for server.key:</nowiki></pre><br />
<br />
您现在可以输入您的 passphrase。为了最大程度的安全,它至少应该包含八个字符。当指定 -des3 时最小长度为四个字符。它应该包含数字和/或标点符号,并且不应该是字典中的单词。也请记住您的 passphrase 是大小写敏感的。<br />
<br />
再次输入 passphrase 核对。一旦您再次输入正确的话,服务器密钥就生成了并保存在 server.key 文件中。<br />
<br />
您也可以不用 passphrase 来运行您的安全 Web 服务器。这样比较方便,因为在您启动您的安全 Web 服务器时您不需要每次都输入 passphrase。但它也是相当不安全的,钥匙的风险也同样意味着服务器的风险。<br />
<br />
在任何情况下,您都可以选择不用 passphrase 来运行您的安全 Web 服务器,这可以通过在生成时不带 -des3 参数来实现或者通过在终端提示符后执行以下命令:<br />
<pre><nowiki><br />
openssl rsa -in server.key -out server.key.insecure</nowiki></pre><br />
<br />
一旦您运行上述命令,不安全的钥匙将被保存在 server.key.insecure 文件中。您可以使用该文件来生成没有 passphrase 的 CSR。<br />
<br />
要创建 CSR,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
openssl req -new -key server.key -out server.csr</nowiki></pre><br />
<br />
它将提示您输入 passphrase。如果您输入正确的 passphrase,它将提示您输入公司名、站点名、邮件ID等。一旦您输入了所有内容,您的 CSR 将被创建并被保存在 server.csr 文件中。您可以提交该 CSR 文件给一家 CA 去处理。CA 将使用该 CSR 并颁发证书。但是,您也可以使用该 CSR 生成自己签署的证书。<br />
====== 4.10.3.4. 创建一个自己签署的证书 ======<br />
<br />
要创建自己签署的证书,在终端提示符下运行以下命令:<br />
<pre><nowiki><br />
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</nowiki></pre><br />
<br />
上述命令将提示您输入 passphrase。一旦您输入正确的 passphrase,您的证书将被创建并将保存在 server.crt 文件中。<br />
<br />
如果您的安全服务器被用在生产环境中,你也许需要 CA 签署的证书。并不推荐使用自己签署的证书。<br />
<br />
====== 4.10.3.5. 安装证书 ======<br />
<br />
您可以安装钥匙文件 server.key 和证书文件 server.crt 或由您的 CA 颁发的证书文件,在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo cp server.crt /etc/ssl/certs<br />
sudo cp server.key /etc/ssl/private</nowiki></pre><br />
<br />
您要添加以下四行到 /etc/apache2/sites-available/default 文件或您安全虚拟主机的配置文件。您要将它们放在 VirtualHost 部分。他们应该放在 DocumentRoot 行下面:<br />
<pre><nowiki><br />
SSLEngine on<br />
<br />
SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire<br />
<br />
SSLCertificateFile /etc/ssl/certs/server.crt<br />
SSLCertificateKeyFile /etc/ssl/private/server.key</nowiki></pre><br />
<br />
HTTPS 在 443 端口监听。您可以将下面一行添加到 /etc/apache2/ports.conf 文件中:<br />
<pre><nowiki><br />
Listen 443</nowiki></pre><br />
<br />
====== 4.10.3.6. 访问服务器 ======<br />
<br />
一旦您安装了您的证书,您应该重启您的 Web 服务器。您可以在终端提示符后运行以下命令以重启您的 web 服务器:<br />
<pre><nowiki> <br />
sudo /etc/init.d/apache2 restart</nowiki></pre><br />
<br />
您应该记住并在每次您启动您的安全 web 服务器时输入 passphrase。<br />
<br />
您将被提示输入 passphrase。一旦您输入正常的 passphrase,将启动安全 web 服务器。您可以通过在您的浏览器地址栏上输入 https://your_hostname/url/ 来访问安全服务器的页面。<br />
===== 4.10.4. 引用 =====<br />
[http://httpd.apache.org/docs/2.0/ Apache2 文档]<br />
<br />
[http://www.modssl.org/docs/ Mod SSL 文档]<br />
<br />
==== Squid - 代理服务器 ====<br />
Squid 是一个全功能的 web 代理与缓存服务器应用程序,它为超文本传输协议 (HTTP)、文件传输协议 (FTP) 以及其他流行网络协议提供代理和缓存服务。Squid 可以实现安全套接层 (SSL) 请求的缓存和代理、域名服务器 (DNS) 的缓存以及进行传输缓存。Squid 也支持大量不同的缓存协议,如 Internet 缓存协议 (ICP)、超文本缓存协议 (HTCP)、缓存阵列路由协议 (CARP) 以及 Web 缓存协同协议 (WCCP)。<br />
<br />
Squid 代理缓存服务器对于不同的代理和缓存服务器需求来说是一个极好的解决方案,它适用于从分支机构到企业级的网络,访问控制机制的粒度以及通过简单网络管理协议 (SNMP) 对临界参数的监视。当选择计算机系统用于 Squid 代理或缓存服务器时,请确保您的系统配置大量的物理内存以便 Squid 可以使用内存进行缓存以提高性能。<br />
===== 4.11.1. 安装 =====<br />
<br />
在终端提示符后输入下列命令安装 Squid 服务器:<br />
<pre><nowiki><br />
sudo apt-get install squid squid-common</nowiki></pre><br />
<br />
===== 4.11.2. 配置 =====<br />
<br />
Squid 可以通过编辑在 /etc/squid/squid.conf 配置文件中的语句来进行配置。下面的范例说明一些语句的修改可能对 Squid 服务器的影响。更多 Squid 的配置可以参阅参考章节。<br />
<br />
在编辑配置文件之前,您应该生成一份原始文件副本并对其进行写保护,以便您可以将原始文件作为参考并在必要时重用它。<br />
<br />
要拷贝 /etc/squid/squid.conf 文件并对其进行写保护,可以在终端提示符后使用以下命令:<br />
<pre><nowiki><br />
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original<br />
sudo chmod a-w /etc/squid/squid.conf.original</nowiki></pre><br />
<br />
**** 要将您的 Squid 服务器监听 TCP 端口 8888 以代替缺省的 TCP 端口 3128,可以如下所示修改 http_port 语句:<br />
<code><nowiki>http_port 8888</nowiki></code><br />
**** 改变 visible_hostname 语句是为了给 Squid 服务器一个特定的主机名。该主机名并必是计算机的主机名。在本范例中它被设为 weezie。<br />
<code><nowiki>visible_hostname weezie</nowiki></code><br />
**** 此外,使用 Squid 访问控制,您可以通过 Squid 代理将 Internet 服务配置成仅限于有确定网际协议 (IP) 地址的用户使用。例如,我们将举例说明只让 192.168.42.0/24 子网的用户访问:<br />
将下列语句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:<br />
<code><nowiki>acl fortytwo_network src 192.168.42.0/24</nowiki></code><br />
然后添加下列语句到你 /etc/squid/squid.conf 文件 http_access 部分的 顶部:<br />
<code><nowiki>http_access allow fortytwo_network</nowiki></code><br />
**** 使用 Squid 卓越的访问控制功能,您可以通过 Squid 代理将 Internet 服务配置成仅限于在正常商务时间使用。例如,我们将举例说明只允许来自 10.1.42.0/24 子网的商务雇员在周一到周五的上午 9:00 到 下午 5:00 时间段内访问:<br />
将下列语句添加到您 /etc/squid/squid.conf 文件 ACL 部分的 底部:<br />
<code><nowiki>acl biz_network src 10.1.42.0/24 acl biz_hours time M T W T F 9:00-17:00</nowiki></code><br />
然后添加下列语句到你 /etc/squid/squid.conf 文件 http_access 部分的 顶部:<br />
<code><nowiki>http_access allow biz_network biz_hours</nowiki></code><br />
<br />
<br />
在修改 /etc/squid/squid.conf 文件后,保存该文件并重启 squid 服务器应用程序以使改动生效。可以在终端提示符后使用下列命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/squid restart</nowiki></pre><br />
<br />
===== 4.11.3. 引用 =====<br />
[http://www.squid-cache.org/ Squid 网站]<br />
==== 版本控制系统 ====<br />
版本控制是管理改动信息的技术。它对于程序员而言一直是重要的工具,他们经常花时间对程序进行小改动之后又在第二天改回来。但版本控制软件的用途却远远超出了软件开发的界线。无论何处您可以发现人们使用计算机去管理那些经常变动的信息,那里都有使用版本控制的空间。<br />
<br />
===== 4.12.1. Subversion =====<br />
Subversion 是一个开源的版本控制系统。使用 Subversion,您可以记录源文件和文档的历史。它管理文件和目录。文件树被放入了中心库中。库更象是一个普通的文件服务器,除了它可以记住对文件和目录的每次改变。<br />
====== 4.12.1.1. 安装 ======<br />
要通过 HTTP 协议来访问 Subversion 库,您必须安装和配置一个 web 服务器。Apache2 被证明可以和 Subversion 一起工作。请参考 Apache2 章节的 HTTP 小节以安装和配置 Apache2。要使用 HTTPS 协议访问 Subversion 库,您必须在您的 Apache2 web 服务器上安装和配置数字证书。请参考 Apache2 章节的 HTTPS 小节以安装和配置数据证书。<br />
<br />
要安装 Subversion,可以在终端提示符后运行以下命令:<br />
<pre><nowiki><br />
sudo apt-get install subversion libapache2-svn</nowiki></pre><br />
====== 4.12.1.2. 服务器配置 ======<br />
这一步假定您已经在您的系统上安装了上面提及的包。本部分内容说明如何创建一个 Subversion 库和访问项目。<br />
创建 Subversion 库<br />
<br />
Subversion 库可以在终端提示符后使用以下命令创建:<br />
<pre><nowiki><br />
svnadmin create /path/to/repos/project</nowiki></pre><br />
<br />
====== 4.12.1.3. 访问方式 ======<br />
<br />
Subversion 库可以通过许多不同的方式如通过在本地磁盘或不同的网络协议来访问 (checked out)。然而,库的位置经常是一个 URL。下表描述了不同的URL模式如何映射相应的访问方式。<br />
表 4-1 访问方式<br />
{|border="1" cellspacing="0"<br />
|模式||访问方式<br />
|-<br />
|file://||直接访问库 (在本地磁盘)<br />
|-<br />
|http://||通过 WebDAV 协议访问带有 Subversion 的 Apache2 web 服务器。<br />
|-<br />
|https://||与 http:// 相同,但有 SSL 加密<br />
|-<br />
|svn://||通过自身协议访问 svnserve 服务<br />
|-<br />
|svn+ssh://||与 svn:// 一样,但使用 SSH 遂道<br />
|}<br />
<br />
在本部分,我们将看到如何为所有这些访问方式来配置 Subversion。这里,我们只介绍基本用法。更多详细、高级用法请参阅svn 书<br />
======= 4.12.1.3.1. 直接访问库 (file://) =======<br />
<br />
这是所有访问方式中最简单的。它不要求运行任何 Subversion 服务器进程。该访问方式用于在同一台机器上访问 Subversion。在终端提示符后输入的命令如下所示:<br />
<pre><nowiki><br />
svn co file:///path/to/repos/project</nowiki></pre><br />
或<br />
<pre><nowiki><br />
svn co file://localhost/path/to/repos/project</nowiki></pre><br />
<br />
如果您没有指定主机名,则需要三个斜杠 (///) -- 其中两个是协议的 (这里是 file),另一个是路径前的。如果您指定了主机名,那么您必须使用双个斜杠 (//)。<br />
<br />
库权限依赖于文件系统的权限。如果用户有读/写权限,他可以从库中检出或者提交到库。<br />
======= 4.12.1.3.2. 通过 WebDAV 协议 (http://) 访问 =======<br />
<br />
要通过 WebDAV 协议访问 Subversion,您必须配置您的 Apache2 web 服务器。您必须在您的 /etc/apache2/apache2.conf 文件中添加下面一小段:<br />
<pre><nowiki><br />
<Location /svn><br />
DAV svn<br />
SVNPath /path/to/repos<br />
AuthType Basic<br />
AuthName "Your repository name"<br />
AuthUserFile /etc/subversion/passwd<br />
<LimitExcept GET PROPFIND OPTIONS REPORT><br />
Require valid-user<br />
</LimitExcept><br />
</Location> </nowiki></pre><br />
<br />
接下来,您必须创建 /etc/subversion/passwd 文件。该文件包含用户认证细节。要添加一个条目,如添加一个用户,您可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
htpasswd2 /etc/subversion/passwd user_name</nowiki></pre><br />
<br />
该命令将提示您输入密码。一旦您输入密码。该用户将被添加。现在您可以运行下列命令来访问库:<br />
<pre><nowiki><br />
svn co http://servername/svn</nowiki></pre><br />
<br />
该密码是以纯文本传输的。如果您担心密码被截取,建议您使用 SSL 加密。相关细节,请参考下一章节。<br />
<br />
======= 4.12.1.3.3. 通过带有 SSL 加密的 WebDAV 协议来访问 (https://) =======<br />
<br />
通过带 SSL 加密的 WebDAV 协议 (https://) 访问也使用 http:// 类似,只是您必须在您的 Apache2 web 服务器中安装和配置数字证书。<br />
<br />
您可以安装由证书签署机构如 Verisign 颁发的数字证书。或者,您也可以安装自己签署的证书。<br />
<br />
这一步假设您已经在您的 Apache2 web 服务器中安装和配置了数字证书。现在要访问 Subversion 库,请参考上一章节!除了所用协议之外访问方式完全相同。您必须使用 https:// 来访问 Subversion 库。<br />
======= 4.12.1.3.4. 通过自身协议访问 (svn://) =======<br />
<br />
一旦 Subversion 库被创建,您就可以配置访问控制了。您可以通过编辑 /path/to/repos/project/conf/svnserve.conf 文件来配置访问控制了。例如,要设置认证,您可以在配置文件中反注释下列行:<br />
<pre><nowiki><br />
<br />
在反注释上面几行之后,您可以在 passwd 文件中维护用户列表。因此编辑同一目录中的文件 passwd 并添加新用户。其语法如下:<br />
<pre><nowiki><br />
username = password</nowiki></pre><br />
<br />
更多细节,请参考该文件。<br />
<br />
现在要从本机或不同机器通过 svn:// 自身协议来访问 Subversion,您可以使用 svnserve 命令来运行 svnserver。其语法如下:<br />
<pre><nowiki><br />
$ svnserve -d --foreground -r /path/to/repos<br />
<br />
For more usage details, please refer to:<br />
$ svnserve --help</nowiki></pre><br />
<br />
一旦您运行该命令,将启动 Subversion 并在缺省端口 (3690) 监听。要访问项目库,您必须在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
svn co svn://hostname/project project --username user_name</nowiki></pre><br />
<br />
根据服务器的配置,出现密码提示。一旦您认证通过,将从 Subversion 库检出代码。要让本地副本同步项目库,您可以运行 update 子命令。在终端提示符后的命令语法如下所示:<br />
<pre><nowiki><br />
cd project_dir ; svn update</nowiki></pre><br />
<br />
关于 Subversion 子命令的更多细节,您可以参考手册。如为了学到关于 co (checkout) 命令的细节,请在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
svn co help</nowiki></pre><br />
<br />
======= 4.12.1.3.5. 通过带有 SSL 加密的自身协议 (svn+ssh://) 访问 =======<br />
<br />
配置和服务器处理与用 svn:// 方式是相同的。详情请参考上面的章节。这一步假定您已经完成了上面的步骤并用 svnserve 命令启动了 Subversion 服务器。<br />
<br />
它也假定 ssh 服务器已经在该机上运行并允许连接。为了确认,请尝试使用 ssh 登录该机器。如果您可以登录,一切就绪。如果不能登录,请在继续之前解决它。<br />
<br />
svn+ssh:// 协议使用 SSL 加密来访问 Subversion 库。使用这种方式进行的数据传输是加密的。要访问项目库 (如 checkout),您必须使用下面的命令语法:<br />
<br />
<pre><nowiki><br />
svn co svn+ssh://hostname/var/svn/repos/project</nowiki></pre><br />
<br />
使用这种访问方式您必须使用全路径 (/path/to/repos/project) 来访问 Subversion 库。<br />
<br />
根据服务器配置,它将提示输入密码。在使用 ssh 登录时您必须输入密码。一旦您被认证通过之后,它将从 Subversion 库中检出代码。<br />
===== 4.12.2. CVS 服务器 =====<br />
<br />
CVS 是一个版本控制系统。您可以使用它来记录源文件的历史。<br />
====== 4.12.2.1. 安装 ======<br />
<br />
在终端提示符后输入下列命令来安装 cvs:<br />
<pre><nowiki><br />
sudo apt-get install cvs</nowiki></pre><br />
<br />
在您安装 cvs之后,您将安装 xinetd 来启动和停用 cvs 服务器。在提示符后输入下列命令以安装<br />
xinetd:<br />
<pre><nowiki><br />
sudo apt-get install xinetd</nowiki></pre><br />
<br />
====== 4.12.2.2. 配置 ======<br />
<br />
一旦您安装 cvs,将会自动初始化库。缺省状态下,库存放在 /var/lib/cvs 目录下。您可以通过运行以下命令来改变该路径:<br />
<pre><nowiki><br />
cvs -d /your/new/cvs/repo init</nowiki></pre><br />
<br />
一旦库开始建立,您可以配置 xinetd 来启动 CVS 服务器。您可以拷贝以下行到 /etc/xinetd/cvspserver 文件。<br />
<pre><nowiki><br />
service cvspserver<br />
{<br />
port = 2401<br />
socket_type = stream<br />
protocol = tcp<br />
user = root<br />
wait = no<br />
type = UNLISTED<br />
server = /usr/bin/cvs<br />
server_args = -f --allow-root /var/lib/cvs pserver<br />
disable = no<br />
}<br />
</nowiki></pre><br />
<br />
如果你改变缺省的库目录 (/var/lib/cvs) 那么您必须要编辑库。<br />
<br />
一旦您配置好 xinetd ,您就可以运行以下命令来启动 cvs 服务器了:<br />
<pre><nowiki><br />
sudo /etc/init.d/xinetd start</nowiki></pre><br />
<br />
您可以执行以下命令来确定 CVS 服务器正在运行:<br />
<pre><nowiki><br />
sudo netstat -tap | grep cvs</nowiki></pre><br />
<br />
当您运行该命令时,您可以看到类似下面的行:<br />
<pre><nowiki><br />
tcp 0 0 *:cvspserver *:* LISTEN </nowiki></pre><br />
<br />
在这里您可以继续添加用户,添加新的项目以及管理 CVS 服务器<br />
<br />
CVS 允许用户添加独立于 OS 安装的用户。也许最容易的方式就是让 CVS 使用 Linux 的用户,虽然它有潜在的安全隐患。详细请参考 CVS 手册。<br />
<br />
====== 4.12.2.3. 添加项目 ======<br />
<br />
本部分内容说明如何在 CVS 库中添加新项目。创建目录以及该目录所需的文档和源文件。现在运行下列命令将该项目添加到 CVS 库中:<br />
<pre><nowiki><br />
cd your/project<br />
cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start<br />
</nowiki></pre><br />
<br />
您可以使用 CVSROOT 环境变量来保存 CVS 根目录。一旦您导出 CVSROOT 环境变量,您可以在上面的 cvs 命令中避免使用 -d 选项。<br />
<br />
字符串 new_project 是一个 vendor 标签,start 是一个版本标签。它们在此没有任何用处,但由于 CVS 要求要有它们,所以它们必须出现。<br />
<br />
当您新添项目时,您所用的 CVS 用户必须对 CVS 库 (/var/lib/cvs) 有写权限。缺省状态下,src 组有对 CVS 库的写权限,因此,您可以添加用户到该组,然后就该用户就可以在 CVS 库中添加和管理项目了。<br />
<br />
===== 4.12.3. 引用 =====<br />
<br />
[http://subversion.tigris.org/ Subversion 主页]<br />
<br />
[http://svnbook.red-bean.com/ Subversion 书 (使用Subversion进行版本控制)]<br />
<br />
[http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_toc.html CVS 手册]<br />
==== 数据库 ====<br />
Ubuntu 提供两个数据库服务器。它们是:<br />
<br />
**** MySQL™<br />
**** PostgreSQL<br />
<br />
它们位于主软件库中。该部分内容说明如何安装和配置这些数据库服务器。<br />
===== 4.13.1. MySQL =====<br />
<br />
MySQL 是一个快速、多线程、多用户、强大的 SQL 数据库服务器。它旨在成为能用于大型应用、高负载的生产系统以及大规模部署的软件。<br />
====== 4.13.1.1. 安装 ======<br />
<br />
要安装 MySQL,可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install mysql-server mysql-client</nowiki></pre><br />
<br />
一旦安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:<br />
<pre><nowiki><br />
sudo netstat -tap | grep mysql</nowiki></pre><br />
<br />
当您运行该命令时,您可以看到类似下面的行:<br />
<pre><nowiki><br />
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -</nowiki></pre><br />
<br />
如果服务器不能正常运行,您可以通过下列命令启动它:<br />
<pre><nowiki><br />
sudo /etc/init.d/mysql restart</nowiki></pre><br />
<br />
====== 4.13.1.2. 配置 ======<br />
<br />
缺省状态下,管理员密码是没有设置的。一旦您安装了 MySQL,您必须要做的第一件事就是配置 MySQL 的管理员密码。要做到这一点,可以运行以下命令:<br />
<br />
<pre><nowiki><br />
sudo mysqladmin -u root password newrootsqlpassword<br />
sudo mysqladmin -u root -h localhost password newrootsqlpassword</nowiki></pre><br />
<br />
您可以编辑 /etc/mysql/my.cnf 文件来进行基本设置 -- 日志文件、端口号等。详情请参考 /etc/mysql/my.cnf 文件。<br />
===== 4.13.2. PostgreSQL =====<br />
<br />
PostgreSQL 是一个面向对象的数据库系统,它有着传统商业数据库系统和下一代 DBMS 系统所增进的功能。<br />
====== 4.13.2.1. 安装 ======<br />
<br />
要安装 PostgreSQL,可以在命令提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install postgresql</nowiki></pre><br />
<br />
一旦安装完成,您就要按您的需要配置 PostgreSQL 服务器,尽管缺省配置已经可以使它可以正常运行了。<br />
====== 4.13.2.2. 配置 ======<br />
<br />
缺省状态下,通过 TCP/IP 的连接是被禁用的。PostgreSQL 支持多客户认证方式。其中 IDENT 认证方式被默认使用。请参考 PostgreSQL 管理员指南。<br />
<br />
接下来的讨论假定您希望启用 TCP/IP 连接并对客户认证使用 MD5 模式。PostgreSQL 配置文件被保存在 /etc/postgresql/<version>/main /etc/postgresql/7.4/main<br />
<br />
要配置 ident 认证,请在 /etc/postgresql/7.4/main/pg_ident.conf 文件中添加。<br />
<br />
要启用 TCP/IP 连接,编辑文件 /etc/postgresql/7.4/main/postgresql.conf。<br />
<br />
找到 #tcpip_socket == false 行并将其改为 tcpip_socket == true。如果您知道您正在做什么,那么您也可以编辑其他所有参数。详情请参考配置文件或 PostgreSQL 文档。<br />
<br />
缺省状态下,没有为 MD5 客户端认证设置用户证书。因此,首先必须将 PostgreSQL 服务器配置成使用 trust 客户端认证,用以连接数据库。配置密码并将配置恢复成使用 MD5 客户端认证。要启用 trust 客户端认证,可编辑文件 /etc/postgresql/7.4/main/pg_hba.conf<br />
<br />
注释所有使用 ident 和 MD5 客户端认证的行并添加下列行:<br />
<pre><nowiki><br />
local all postgres trust sameuser</nowiki></pre><br />
<br />
然后运行下列命令启动 PostgreSQL 服务器:<br />
<pre><nowiki><br />
sudo /etc/init.d/postgresql start</nowiki></pre> <br />
<br />
一旦 PostgreSQL 服务器成功启动,在终端提示符后运行下面的命令以连接缺省的 PostgreSQL 模板数据库。<br />
<pre><nowiki><br />
psql -U postgres -d template1</nowiki></pre><br />
<br />
上面的命令是以用户 postgres 的身份连接 PostgreSQL 的 template1 数据库。一旦您连到 PostgreSQL 服务器,您将会在 SQL 提示符下。您可以在 psql 提示符中运行下列命令来为用户 postgres 配置密码。<br />
<pre><nowiki><br />
template1=# ALTER USER postgres with encrypted password 'your_password';</nowiki></pre><br />
<br />
在配置密码后,编辑文件 /etc/postgresql/7.4/main/pg_hba.conf 以使用 MD5 认证:<br />
<br />
注释掉最近添加的 trust 行并添加下面行:<br />
<pre><nowiki><br />
local all postgres md5 sameuser</nowiki></pre> <br />
<br />
无论如何上面配置并不完整。更多的配置参数请参考 PostgreSQL 管理员指南。<br />
==== 邮件服务 ====<br />
在网络或 Internet 上从一个人得到邮件给另一个人的处理过程包含许多系统的协同工作。这些系统中的每一个都必须配置正确以便可以正常工作。发送者使用一个 邮件用户代理 (MUA),或邮件客户端通过一个或多个 邮件传输代理 (MTA) 来发送信息,最后一个将信息送到 邮件投递代理 (MDA) 以便将其投递到接受者的收件箱中。该信息将会被接受者邮件客户端检索到,通常是通过 POP3 或 IMAP 服务器。<br />
===== 4.14.1. Postfix =====<br />
<br />
Postfix 是 Ubuntu 中缺省的邮件传输代理 (MTA)。它试图变得快捷、易于管理和安全。它与 MTA sendmail 兼容。这部分内容说明如何安装和配置 postfix。还说明如何将它设置成使用安全连接的 SMTP 服务器 (为了安全发送邮件)。<br />
====== 4.14.1.1. 安装 ======<br />
<br />
要安装带有 SMTP-AUTH 和 传输层安全 (TLS) 的 postfix,运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install postfix</nowiki></pre><br />
<br />
当安装进程提问时简单地按回车,下面将详细说明相关配置。<br />
====== 4.14.1.2. 基本配置 ======<br />
<br />
要配置 postfix,运行下列命令:<br />
<pre><nowiki><br />
sudo dpkg-reconfigure postfix</nowiki></pre><br />
<br />
用户界面将显示。在每一屏中,选择下列值:<br />
<pre><nowiki><br />
**** Ok<br />
**** Internet 站点<br />
**** NONE<br />
**** mail.example.com<br />
**** mail.example.com, localhost.localdomain, localhost<br />
**** No<br />
**** 127.0.0.0/8<br />
**** Yes<br />
**** 0<br />
**** +<br />
**** 全部<br />
</nowiki></pre><br />
<br />
把 mail.example.com 作为您的邮件服务器的主机名。<br />
<br />
====== 4.14.1.3. SMTP 认证 ======<br />
<br />
下一步是为 postfix 的 SMTP AUTH 配置使用 SASL。与其直接编辑配置,不如使用 postconf 命令配置所有 postfix 参数。配置参数被保存在 /etc/postfix/main.cf 文件中。如果您希望更新配置一项参数,您可以运行命令或手工在文件中修改。<br />
<br />
*** 配置 Postfix 使用 SASL (saslauthd) 的 SMTP AUTH :<br />
<pre><nowiki><br />
postconf -e 'smtpd_sasl_local_domain ='<br />
postconf -e 'smtpd_sasl_auth_enable = yes'<br />
postconf -e 'smtpd_sasl_security_options = noanonymous'<br />
postconf -e 'broken_sasl_auth_clients = yes'<br />
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'<br />
postconf -e 'inet_interfaces = all'<br />
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf<br />
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf</nowiki></pre><br />
*** 接下来为 TLS 配置数字证书。当被询问问题时,按照提示并适当回答。<br />
<pre><nowiki><br />
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024<br />
chmod 600 smtpd.key<br />
openssl req -new -key smtpd.key -out smtpd.csr<br />
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt<br />
openssl rsa -in smtpd.key -out smtpd.key.unencrypted<br />
mv -f smtpd.key.unencrypted smtpd.key<br />
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650<br />
mv smtpd.key /etc/ssl/private/<br />
mv smtpd.crt /etc/ssl/certs/<br />
mv cakey.pem /etc/ssl/private/<br />
mv cacert.pem /etc/ssl/certs/</nowiki></pre><br />
您可以从证书颁发机构得到数字证书。或者您可以创建您自己的证书。详情参考 第4.10.3.4节 ― 创建一个自己签署的证书。<br />
*** 配置 Postfix 对接收或发送邮件进行 TLS 加密:<br />
<pre><nowiki><br />
postconf -e 'smtpd_tls_auth_only = no'<br />
postconf -e 'smtp_use_tls = yes'<br />
postconf -e 'smtpd_use_tls = yes'<br />
postconf -e 'smtp_tls_note_starttls_offer = yes'<br />
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'<br />
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'<br />
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'<br />
postconf -e 'smtpd_tls_loglevel = 1'<br />
postconf -e 'smtpd_tls_received_header = yes'<br />
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'<br />
postconf -e 'tls_random_source = dev:/dev/urandom'<br />
postconf -e 'myhostname = mail.example.com'</nowiki></pre><br />
<br />
在您运行所有命令之后,postfix 的 SMTP AUTH 将被配置。将为 TLS 创建自己签署的证书并与 postfix 一起配置。<br />
<br />
现在文件 /etc/postfix/main.cf 看上去就象 这样。<br />
<br />
postfix 初始配置完成。运行下列命令以开始 postfix 守护程序:<br />
<pre><nowiki><br />
sudo /etc/init.d/postfix start</nowiki></pre><br />
<br />
现在 postfix 已经被安装、配置及成功运行。Postfix 支持在 RFC2554 中定义的 SMTP AUTH。它基于 SASL。无论如何在您使用 SMTP 之前必须设置 SASL 认证。<br />
====== 4.14.1.4. 配置 SASL ======<br />
<br />
libsasl2、sasl2-bin 和 libsasl2-modules 对于使用 SASL 的 SMTP AUTH 是必需的。如果您没有安装它们的话,您可以安装这些应用程序。<br />
<pre><nowiki><br />
apt-get install libsasl2 sasl2-bin</nowiki></pre><br />
<br />
要让其正常工作的话做一些改动是必须的。因为 Postfix 是被 chroot 在 /var/spool/postfix 中运行,SASL 需要被配置在假根目录中运行 (从 /var/run/saslauthd 到 /var/spool/postfix/var/run/saslauthd):<br />
<pre><nowiki><br />
mkdir -p /var/spool/postfix/var/run/saslauthd<br />
rm -rf /var/run/saslauthd</nowiki></pre><br />
<br />
要激活 saslauthd,编辑文件 /etc/default/saslauthd,并修改或添加 START 变量。为了将 saslauthd 配置成在假根目录中运行,添加 PWDIR、PIDFILE 和 PARAMS 变量。最终,随您所好配置 MECHANISMS 变量。该文件看起来象这样:<br />
<pre><nowiki><br />
START=yes<br />
<br />
PWDIR="/var/spool/postfix/var/run/saslauthd"<br />
PARAMS="-m ${PWDIR}"<br />
PIDFILE="${PWDIR}/saslauthd.pid"<br />
<br />
<br />
MECHANISMS="pam"<br />
</nowiki></pre><br />
<br />
如果您喜欢,您可以使用 shadow 代替 pam。这将使用 MD5 哈希密码传输并更为安全。需要认证的用户名和密码将是您正在服务器上使用系统的那些用户。<br />
<br />
接下来更新 /var/spool/portfix/var/run/saslauthd 的 dpkg "state"。saslauthd 初始化脚本将使用该设置来创建有着适当权限和所有权的目录:<br />
<pre><nowiki><br />
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd</nowiki></pre><br />
<br />
====== 4.14.1.5. 测试 ======<br />
<br />
SMTP AUTH 配置完成。现在是启动并测试设置的时候了。您可以运行下列命令来启动 SASL 守护程序:<br />
<pre><nowiki><br />
sudo /etc/init.d/saslauthd start</nowiki></pre><br />
<br />
要查看 SMTP-AUTH 和 TLS 是否正常工作,运行下列命令:<br />
<pre><nowiki><br />
telnet mail.example.com 25</nowiki></pre><br />
<br />
在您建立到 postfix 邮件服务器连接之后,输入:<br />
<pre><nowiki><br />
ehlo mail.example.com</nowiki></pre><br />
<br />
如果您看到包括下列行时,那么一切工作正常。输入 quit 退出。<br />
<pre><nowiki><br />
250-STARTTLS<br />
250-AUTH LOGIN PLAIN<br />
250-AUTH=LOGIN PLAIN<br />
250 8BITMIME</nowiki></pre><br />
<br />
===== 4.14.2. Exim4 =====<br />
<br />
Exim4 是另一个由剑桥大学开发的用于连接 Internet 的 Unix 系统上的消息传输代理 (MTA)。安装Exim可以代替 sendmail,虽然 exim 的配置与 sendmail 是非常不同。<br />
====== 4.14.2.1. 安装 ======<br />
<br />
要安装 exim4,运行下列命令: <br />
<pre><nowiki><br />
sudo apt-get install exim4 exim4-base exim4-config</nowiki></pre><br />
<br />
====== 4.14.2.2. 配置 ======<br />
<br />
要配置 exim4,运行下列命令: <br />
<pre><nowiki><br />
sudo dpkg-reconfigure exim4-config</nowiki></pre><br />
<br />
用户界面将显示。该用户界面让您配置许多参数。例如,在 exim4 中配置文件被分成多个文件。如果您希望将它们放在一个文件中,您可以根据该用户界面进行配置。<br />
<br />
您在用户界面配置的所有参数被保存在 /etc/exim4/update-exim4.conf.conf 文件。如果您希望重新配置,您可以重新运行配置向导或用您喜欢的编辑器手工编辑该文件。一旦您配置好了,您可以运行下列命令来生成主配置文件:<br />
<pre><nowiki><br />
sudo update-exim4.conf</nowiki></pre><br />
<br />
生成主配置文件且被保存在 /var/lib/exim4/config.autogenerated. <br />
<br />
在任何时候,你都不要手工编辑主配置文件 /var/lib/exim4/config.autogenerated。它在每次您运行 update-exim4.conf 之后会自动更新。<br />
<br />
您可以运行下列命令以启动 exim4 守护程序。 <br />
<pre><nowiki><br />
sudo /etc/init.d/exim4 start</nowiki></pre><br />
<br />
TODO: 该内容将覆盖 exim4 的 SMTP AUTH 配置。<br />
===== 4.14.3. Dovecot 服务器 =====<br />
<br />
Dovecot 是一个主要出于安全考虑编写的邮件投递代理。它支持主要收件箱格式:mbox 或 Maidir。这部分说明如何将它设为一个 imap 或 pop3 服务器。<br />
====== 4.14.3.1. 安装 ======<br />
<br />
要安装 dovecot,在命令提示符中运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d</nowiki></pre><br />
<br />
====== 4.14.3.2. 配置 ======<br />
<br />
要配置 dovecot,您可以编辑文件 /etc/dovecot/dovecot.conf。您可以选择您所使用的协议。它可以是 pop3、pop3 (安全 pop3)、imap 和 imaps (安全 imap)。对这些协议的说明是超出该指南范围的。更多信息请参考 wikipedia 关于 POP3 和 IMAP 的文章。<br />
<br />
IMAPS 和 POP3S 比简单 IMAP 和 POP3 更安全,因为他们使用 SSL 加密连接。一旦您选择了协议,修改在文件 /etc/dovecot/dovecot.conf 中的下列行:<br />
<pre><nowiki><br />
protocols = pop3 pop3s imap imaps</nowiki></pre><br />
<br />
当 dovecot 启动时协议开始生效。接下来在文件 /etc/dovecot/dovecot.conf 的 pop3 部分添加下列行:<br />
<pre><nowiki><br />
pop3_uidl_format = %08Xu%08Xv</nowiki></pre><br />
<br />
然后选择您所用的收件箱。Dovecot 支持 maildir 和 mbox 格式。大多数通常使用 mailbox 格式。它们都有自己的优点,并且在 dovecot 网站 上讨论。<br />
<br />
一旦您选择了您的收件箱格式后,就可以编辑文件 /etc/dovecot/dovecot.conf 并修改下列行:<br />
<pre><nowiki><br />
default_mail_env = maildir:~/Maildir # (for maildir)</nowiki></pre><br />
或<br />
<pre><nowiki><br />
default_mail_env = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)</nowiki></pre><br />
<br />
如果接收到的邮件类型与您已经配置不同,那么您要配置您的邮件传输代理 (MTA) 用来将该邮件传输到这种类型的收件箱中。<br />
<br />
一旦您已经配置好了 dovecot,启动 dovecot 守护程序以测试您的设置:<br />
<pre><nowiki><br />
sudo /etc/init.d/dovecot start</nowiki></pre><br />
<br />
如果您启用 imap 或 pop3,您也可以试着用命令 telnet localhost pop3 或 telnet localhost imap2 登录。如果您看到类似下面的东西,那么安装就成功了:<br />
<pre><nowiki><br />
bhuvan@rainbow:~$ telnet localhost pop3<br />
Trying 127.0.0.1...<br />
Connected to localhost.localdomain.<br />
Escape character is '^]'.<br />
+OK Dovecot ready.</nowiki></pre><br />
<br />
====== 4.14.3.3. Dovecot SSL 配置 ======<br />
<br />
要配置 dovecot 使用 SSL,您可以编辑文件 /etc/dovecot/dovecot.conf 并修改下列行:<br />
<pre><nowiki><br />
ssl_cert_file = /etc/ssl/certs/dovecot.pem<br />
ssl_key_file = /etc/ssl/private/dovecot.pem<br />
ssl_disable = no<br />
disable_plaintext_auth = no</nowiki></pre><br />
<br />
当您安装 dovecot 时,会通过它自动创建 cert 和 key 文件。请注意这些钥匙没被签名并会在客户端连接时给出 "bad signature" 的错误。要避免这一点,您可以使用商业证书,甚至更好,使用您自己签署的 SSL 证书。<br />
====== 4.14.3.4. 邮件服务器的防火墙配置 ======<br />
<br />
要从另一台计算机访问您的邮件服务器,您必须配置您的防火墙以允许连接服务器必要的端口。<br />
<pre><nowiki><br />
**** IMAP - 143<br />
**** IMAPS - 993<br />
**** POP3 - 110<br />
**** POP3S - 995</nowiki></pre><br />
<br />
===== 4.14.4. Mailman =====<br />
<br />
Mailman 是一个管理电子邮件讨论及电子通讯列表的开源程序。许多开源的邮件列表 (包括所有的 Ubuntu 邮件列表)使用 Mailman 作为他们的邮件列表软件。它是强大的且易于安装和维护。<br />
====== 4.14.4.1. 安装 ======<br />
<br />
Mailman 为管理员和用户提供一个 web 界面。因此,它要求 apache 要有 mod_perl 的支持。Mailman 使用外部邮件服务器来发送和接收邮件。它可以与下列邮件服务器很好的工作: <br />
<br />
**** Postfix<br />
**** Exim<br />
**** Sendmail<br />
**** Qmail<br />
<br />
我们将看到如何安装 mailman、apache web 服务器和 Exim 邮件服务器。如果您希望安装 mailman 和一个不同的邮件服务器,请参考参考部分。<br />
======= 4.14.4.1.1. Apache2 =======<br />
<br />
要安装 apache2 您可以参考 第4.10.1节 ― 安装。<br />
======= 4.14.4.1.2. Exim4 =======<br />
<br />
要安装 Exim4 您可以在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install exim4<br />
sudo apt-get install exim4-base<br />
sudo apt-get install exim4-config</nowiki></pre><br />
<br />
一旦安装好 exim4,配置文件被保存在 /etc/exim4 目录中。缺省情况下,在 ubuntu 中,exim4 配置文件被分成不同的文件。您可以通过配置 /etc/exim4/update-exim4.conf 中的下列变量来改变这一现状:<br />
<br />
**** dc_use_split_config='true'<br />
<br />
======= 4.14.4.1.3. Mailman =======<br />
<br />
要安装 Mailman,在终端提示符后运行下列命令:<br />
<pre><nowiki><br />
sudo apt-get install mailman</nowiki></pre><br />
<br />
它复制安装文件到 /var/lib/mailman 目录,将 CGI 脚本安装到 /usr/lib/cgi-bin/mailman目录,创建 list linux 用户,创建 list linux 用户组。mailman 进程将以该用户运行。<br />
====== 4.14.4.2. 配置 ======<br />
<br />
本节假定您已经成功安装 mailman、apache2 和exim4。现在您只需要配置它们。<br />
======= 4.14.4.2.1. Apache2 =======<br />
<br />
一旦 apache2 安装之后,您可以在 /etc/apache2/apache2.conf 文件添加下列行:<br />
<pre><nowiki><br />
Alias /images/mailman/ "/usr/share/images/mailman/"<br />
Alias /pipermail/ "/var/lib/mailman/archives/public/"</nowiki></pre><br />
<br />
Mailman 使用 apache2 来运行它的 CGI 脚本。mailman 的 CGI 脚本被安装在 /usr/lib/cgi-bin/mailman 目录中。因此 mailman 的 url 将是 http://hostname/cgi-bin/mailman/。如果您希望改变这一状况,您可以修改 /etc/apache2/apache2.conf 文件。<br />
======= 4.14.4.2.2. Exim4 =======<br />
<br />
一旦 Exim4 安装之后,您可以在终端提示符后使用下列命令启动 Exim 服务器:<br />
<pre><nowiki><br />
sudo apt-get /etc/init.d/exim4 start</nowiki></pre><br />
<br />
为了使 mailman 可以和 exim4 一起工作,您需要配置 exim4。正如先前所说的那样,在缺省状态下 exim4 使用不同类型的多个配置文件。详情请参考 Exim 网站。要运行 mailman,我们可以新建一个配置文件到下列配置类型:<br />
<br />
**** 主<br />
**** 传输<br />
**** 路由器<br />
Exim 按这些小的配置文件顺序创建出一个主配置文件。因此这些配置文件的顺序是非常重要的。<br />
======= 4.14.4.2.3. 主 =======<br />
<br />
所有隶属于主类别的配置文件都被保存在 /etc/exim4/conf.d/main/ 目录中。您可以将下面的内容添加到一个名为 04_exim4-config_mailman 的新文件中:<br />
<br />
<pre><nowiki><br />
MM_HOME=/var/lib/mailman<br />
MM_UID=list<br />
MM_GID=list<br />
domainlist mm_domains=hostname.com↵<br />
MM_WRAP=MM_HOME/mail/mailman<br />
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck<br />
</nowiki></pre><br />
<br />
======= 4.14.4.2.4. 传输 =======<br />
<br />
所有隶属于传输类型的文件被保存在 /etc/exim4/conf.d/transport/ 目录中。您可以将下面的内容添加到一个名为 40_exim4-config_mailman 的新文件中:<br />
<pre><nowiki><br />
mailman_transport:<br />
driver = pipe<br />
command = MM_WRAP \<br />
'${if def:local_part_suffix \<br />
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}} } \<br />
{post}}' \<br />
$local_part<br />
current_directory = MM_HOME<br />
home_directory = MM_HOME<br />
user = MM_UID<br />
group = MM_GID</nowiki></pre><br />
<br />
======= 4.14.4.2.5. 路由器 =======<br />
<br />
所有隶属于路由类的所有配置文件都被保存在 /etc/exim4/conf.d/router/ 目录中。您可以将下列内容添加到名为 101_exim4-config_mailman 的新文件中:<br />
<pre><nowiki><br />
mailman_router:<br />
driver = accept<br />
require_files = MM_HOME/lists/$local_part/config.pck<br />
local_part_suffix_optional<br />
local_part_suffix = -bounces : -bounces+* : \<br />
-confirm+* : -join : -leave : \<br />
-owner : -request : -admin<br />
transport = mailman_transport</nowiki></pre><br />
<br />
主类和传输类的配置文件的顺序可以随意。但路由类的配置文件的顺序必须相同。该文件必须在 200_exim4-config_primary 文件之前出现。如果两个配置文件包含相同类型的信息。第一个文件优先。详情请参阅参考部分。<br />
<br />
======= 4.14.4.2.6. Mailman =======<br />
<br />
安装 mailman 之后,您可以使用下列命令来运行它:<br />
<pre><nowiki><br />
sudo /etc/init.d/mailman start</nowiki></pre><br />
<br />
一旦 mailman 安装,您必须创建缺省的邮件列表。运行下列命令以创建邮件列表:<br />
<pre><nowiki><br />
sudo /usr/sbin/newlist mailman<br />
<br />
Enter the email address of the person running the list: bhuvan at ubuntu.com<br />
Initial mailman password:<br />
To finish creating your mailing list, you must edit your /etc/aliases (or<br />
equivalent) file by adding the following lines, and possibly running the<br />
`newaliases' program:<br />
<br />
## mailman mailing list<br />
mailman: "|/var/lib/mailman/mail/mailman post mailman"<br />
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"<br />
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"<br />
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"<br />
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"<br />
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"<br />
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"<br />
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"<br />
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"<br />
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"<br />
<br />
Hit enter to notify mailman owner...<br />
<br />
# <br />
</nowiki></pre><br />
我们已经把 exim 配置成可以识别所有来自 mailman 的邮件。因此并不需要在 /etc/aliases 中添加任何新的条目。如果您对配置文件做了改动,请确保您在进入下一章节之前重启了这些服务。<br />
====== 4.14.4.3. 管理 ======<br />
<br />
我们假定您已经进行了缺省安装。mailman 的 cgi 脚本应该在 /usr/lib/cgi-bin/mailman/ 目录中。Mailman 提供了一个基于 web 管理工具。可以在您的浏览器输入下列 url 访问该页:<br />
<pre><nowiki><br />
http://hostname/cgi-bin/mailman/admin</nowiki></pre><br />
<br />
缺省的邮件列表 mailman 将出现在屏幕上。如果您点击邮件列表名,它将询问您的认证密码。如果您输入了正确的密码,您将可以改变该邮件列表的管理设置。您可以使用命令行工具 (/usr/sbin/newlist) 创建一个新的邮件列表,您也可以使用 web 界面来创建新的邮件列表。<br />
====== 4.14.4.4. 用户 ======<br />
<br />
Mailman 为用户提供了一个 web 界面,可以在您的浏览器中输入下列 url 来访问该页:<br />
<pre><nowiki><br />
http://hostname/cgi-bin/mailman/listinfo</nowiki></pre><br />
<br />
缺省邮件列表 mailman 将出现在屏幕上。如果您点击邮件列表名,它将显示订阅表单。您可以输入您的邮件地址、姓名 (可选)及密码来订阅。一个邀请邮件将发送给您。您可以根据该邮件的指示完成订阅。<br />
====== 4.14.4.5. 引用 ======<br />
<br />
[http://www.list.org/mailman-install/index.html GNU Mailman - 安装手册]<br />
<br />
<br />
[http://www.exim.org/howto/mailman21.html 指南 - 一起使用 Exim 4 和 Mailman 2.1]<br />
<br />
=== Windows 联网 ===<br />
计算机网络通常包含不同的系统,虽然使用全由 Ubuntu 桌面计算机和服务器计算机构成的网络是有趣的,但一些网络环境还是需要 Ubuntu 和 Microsoft® Windows® 这两个系统协同工作。Ubuntu 服务器指南中的这部分内容介绍配置你 Ubuntu 服务器的原理及所用工具,以便同 Windows 计算机共享网络资源。<br />
==== 介绍 ====<br />
将你的 Ubuntu 系统与 Windows 客户机成功连网包括为 Windows 环境提供和整合常用服务。这些服务有助于网络中计算机和用户的数据和信息共享,可以将它们按功能划分为以下三大类:<br />
<br />
**** 文件和打印共享服务。Server Message Block (SMB) 协议使得在网络上共享文件、文件夹、卷和打印机变得容易。<br />
**** 目录服务。通过Lightweight Directory Access Protocol (LDAP) 和 Microsoft Active Directory®技术来共享网络计算机和用户的重要信息。<br />
**** 认证和权限。建立网络计算机和用户身份并通过使用文件权限、组策略和Kerberos认证服务等原理和技术来确定计算机或用户信息。<br />
<br />
幸运的是,你的 Ubuntu 系统可以给 Windows 客户机提供上述所有的服务并且在它们之间共享网络资源。你的 Ubuntu 系统中用来和 Windows 网络互连的一个基本软件是包含 SMB 服务器应用程序及其工具。Ubuntu 服务器指南的这部分将简要介绍一下 SAMBA 套件中服务器应用程序及工具的安装和简单配置。此外,SAMBA的详细文档和信息已超出了本文档的编制范围,您可以在 SAMBA 网站 上找到。<br />
==== 安装 SAMBA ====<br />
欲安装 SAMBA 服务器应用程序,请在提示符里输入如下命令:<br />
<pre><nowiki><br />
sudo apt-get install samba</nowiki></pre><br />
==== 配置 SAMBA ====<br />
您可以通过编辑 /etc/samba/smb.conf 文件来配置 SAMBA 服务:用以改变缺省设置或新增设置。可用设置项的更多信息可以查看 /etc/samba/smb.conf 文件中的注释,或在终端提示符后输入以下命令查看 /etc/samba/smb.conf 手册来获得:<br />
<pre><nowiki><br />
man smb.conf</nowiki></pre><br />
<br />
在编辑配置文件之前,您应该保留一份原文件的副本,不对其作修改,以便今后必要时可参考和重用这份原始配置。<br />
<br />
备份 /etc/samba/smb.conf 文件:<br />
<pre><nowiki><br />
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original</nowiki></pre><br />
<br />
然后编辑 /etc/samba/smb.conf 文件,进行相应的修改。<br />
===== 5.3.1. 服务器 =====<br />
<br />
除了文件及打印共享服务器应用程序 SAMBA 之外,Ubuntu 还包括了其他强大的服务器应用程序,它们设计成象真正的 Windows 服务器一样,可以向 Windows 客户端提供相同的网络附加服务功能。例如,Ubuntu 可以提供统一的网络资源,如使用目录服务的计算机和用户,方便的身份识别,以及通过认证服务来获得授权的计算机和用户。<br />
<br />
下一节将讨论 SAMBA 及其支持技术,如 Lightweight Directory Access Protocol (LDAP) 服务器和 Kerberos 认证服务器的更多细节。你也可以学到SAMBA配置文件中的一些有用的指令,以方便同 Windows 客户机和服务器集成。<br />
====== 5.3.1.1. Active Directory ======<br />
<br />
Active Directory 是 Microsoft 专用的目录服务实现,用来提供网络资源和用户的共享信息。除了提供这些信息的统一源之外,Active Directory 也担任网络统一身份安全认证的角色。Active Directory 融合了通常独立、专用的目录系统中简单集成,管理和网络资源安全等功能。SAMBA 软件包可以被配置成使用由 Windows 域控制器提供的 Active Directory 服务。<br />
======= 5.3.1.1.1. LDAP =======<br />
<br />
LDAP 服务器应用程序给 Windows 计算机提供了与 Microsoft Active Directory 服务非常相似的目录服务功能。这些服务包括管理加入网络的计算机、用户、计算机组和用户组的身份和关系,为描述、定位和管理这些资源提供一个统一的方法。在你的 Ubuntu 系统中所使用的是 LDAP 的一个自由有效的实现,名为OpenLDAP,这个名为slapd 和 slurpd的服务守护程序负责处理 OpenLDAP 目录请求和 LDAP 服务器与另一个 Ubuntu 服务器之间的目录数据传送。只要 SAMBA编译时加上LDAP 支持,OpenLDAP 与 SAMBA 一起就可以和Windows域服务器一样以相同的方式提供文件、打印和目录服务。<br />
======= 5.3.1.1.2. Kerberos =======<br />
Kerberos 安全认证系统是一个通过一台集中的服务器给计算机和用户提供认证的标准服务,它允许从其他任何使用 Kerberos 的计算机那里接受加密的授权票据。Kerberos 验证的好处包括相互验证,委派验证,互操作性和简单信任管理。在 Ubuntu 中处理 Kerberos 验证和 Kerberos 数据库管理的主要服务器守护程序是 krb5kdc 和 kadmin。相对于 Windows 域控制器SAMBA 可以使用 Kerberos 作为一个用来给计算机和用户授权的机制。为了做到这些,Ubuntu 系统必须安装 Kerberos,同时 /etc/samba/smb.conf 也需要修改以选择适当的realm 和 security 模式。举个例子,编辑/etc/samba/smb.conf文件,并将下列语句:<br />
<pre><nowiki><br />
realm = DOMAIN_NAME<br />
security = ADS</nowiki></pre><br />
<br />
添加到文件中并保存<br />
<br />
请确定上面示例中的 DOMAIN_NAME 已经被你的 Windows 域名所代替。<br />
<br />
你需要重启 SAMBA 进程以使改变产生作用。重启 SAMBA 进程可以在终端提示符后输入以下命令:<br />
<pre><nowiki><br />
sudo /etc/init.d/samba restart</nowiki></pre><br />
<br />
====== 5.3.1.2. 计算机帐号 ======<br />
<br />
目录服务中计算机帐号唯一指定网络中的计算机系统,甚至在安全方面就象对待用户一样。计算机账号可以象用户账号一样有密码,同样也象用户账号一样访问网络资源受授权影响。举个例子,如果一个在特定网络中有着合法账号网络用户,企图给一个没有合法计算机账号的计算机上的网络资源授权时,根据网络策略,如果用户企图验证的计算机是未经授权的计算机,则用户也许会被拒绝访问资源。<br />
<br />
计算机帐号可以会被添加到 SAMBA 的密码文件中,首先该计算机的名字在本地密码库中做为一个合法用户帐号被添加。添加一个计算机或机器帐号到 SAMBA 的密码文件可以在终端提示符后使用 smbpasswd 命令,如下所示:<br />
<pre><nowiki><br />
sudo smbpasswd -a -m COMPUTER_NAME</nowiki></pre><br />
<br />
请确定示例中的 COMPUTER_NAME 被那台你希望添加机器账号的计算机实际名字所代替。<br />
<br />
<br />
====== 5.3.1.3. 文件权限 ======<br />
<br />
文件权限清楚地定义计算机和用户对指定的目录、文件或一组文件的权力。这些权限可以通过编辑/etc/samba/smb.conf 来定义并明确被定义文件共享的权限。举个例子,如果你定义了一个叫 sourcedocs 的 SAMBA 共享,并希望给 planning 用户组以 read-only 只读权限,但允许叫 authors 的用户组和名为 richard 的用户可以写该共享,那么你可以编辑/etc/samba/smb.conf 文件,并将下列条目放在 [sourcedocs] 条目下:<br />
<pre><nowiki><br />
read list = @planning<br />
write list = @authors, richard</nowiki></pre><br />
<br />
将其保存在 /etc/samba/smb.conf中,以使其生效。<br />
<br />
另一个适合的权限就是对特定的共享资源声明 administrative 权限。有着administrative 权限的用户可以读、写或修改任何包含在用户已明确给予 administrative 权限的资源里的任何信息。举个例子,如果你想给用户 melissa 在示例 sourcedocs 共享上的 administrative 权限,你可以编辑/etc/samba/smb.conf 文件,并将下面一行添加到 [sourcedocs] 条目下:<br />
<pre><nowiki><br />
admin users = melissa</nowiki></pre><br />
<br />
将其保存在 /etc/samba/smb.conf中,以使其生效。<br />
===== 5.3.2. 客户端 =====<br />
<br />
Ubuntu 中包括客户端应用以及通过 SMB 协议远程访问网络资源的能力。例如,一个名为 smbclient 的工具就可以以一种类似文件传输协议(FTP)客户端的方式访问远程共享的文件系统。以使用 smbclient 来访问在名为 bill 远程 Windows 计算机中的共享文件夹资源 documents 来做示范,在提示符后输入类似下面的命令:<br />
<pre><nowiki><br />
smbclient //bill/documents -U <username></nowiki></pre> <br />
<br />
然后你将被提示输入相对于 -U 参数之后用户名的密码,当成功验证后,将出现一个提示符,在那里我们可以使用与非图形化 FTP 客户端类似的语法来操作和传输文件。smbclient 工具的详细信息可以输入以下命令来查阅该工具的手册页:<br />
<br />
使用 SMB 协议的远程网络资源在本地挂载也可以使用 mount 命令。例如,要挂载在一个名为 development 的Windows 服务器上的一个名为 project-code 共享文件夹,并使用 dlightman 用户名挂载到你的 Ubuntu 系统的 /mnt/pcode 挂载点上,你可以在提示符后运行以下命令:<br />
<pre><nowiki><br />
mount -t smbfs -o username=dlightman //development/project-code /mnt/pcode</nowiki></pre><br />
<br />
然后你将被提示输入用户密码,在成功验证之后,共享资源的内容就可以通过 mount 命令中的最后一个参数所指定的本地挂载点来访问了。要卸载该共享资源,就象其他被挂载的文件系统一样只需简单的使用 umount 命令即可。例如:<br />
<br />
<pre><nowiki><br />
umount /mnt/pcode</nowiki></pre><br />
<br />
====== 5.3.2.1. 用户帐号 ======<br />
<br />
用户帐号定义了有一些授权来使用指定计算机和网络资源的人。通常,在网络环境中,用户帐号被提供给每个允许访问计算机或网络的人,然后这些计算机或网络根据策略和权限来明确用户帐号拥有多大的权力。要在你的 Ubuntu 系统中定义 SAMBA 网络用户,你可能使用smbpasswd 命令。如要为你 Ubuntu 系统上名为jseinfeld 的用户添加一个 SAMBA 用户,你可以在提示符后输入命令:<br />
<br />
<pre><nowiki><br />
smbpasswd -a jseinfeld</nowiki></pre><br />
<br />
然后 smbpasswd 应用程序将提示你为该用户输入密码:<br />
<br />
<pre><nowiki><br />
New SMB password:</nowiki></pre><br />
<br />
输入你想为用户设置的密码,smbpasswd 会要求你确认密码:<br />
<pre><nowiki><br />
Retype new SMB password:</nowiki></pre><br />
<br />
确认密码之后,smbpasswd 将为用户在 SAMBA 密码文件中添加一个条目。<br />
====== 5.3.2.2. 组 ======<br />
<br />
组定义了对指定网络资源拥有共同访问级别的一组计算机或用户,并提供对这些资源的访问控制粒度级别。举个例子,如果定义一个 qa 组并包含用户 freda、danika 和 rob,再定义第二个组 support 并包含 danika、jeremy 和 vincent。那么某个网络资源被配置为允许 qa 组访问时,则其可以被 freda、danika 和 rob访问,而不是 jeremy 或 vincent。因为用户 danika 属于 qa 和 support 两个组,所以她能够访问配置为两个组访问的资源,而所有其他用户则只能访问明确允许其所属组访问的资源。<br />
<br />
当在 SAMBA 配置文件 /etc/samba/smb.conf 中定义组时,被认可的写法是在用“@”符作为组名的开始。例如,如果你希望在 /etc/samba/smb.conf 某段中定义一个名为 sysadmin 的组,那么你需要输入 @sysadmin 来作为组名。<br />
====== 5.3.2.3. 组策略 ======<br />
<br />
组策略为 SAMBA 服务器定义属于域或工作组计算机帐号的 SAMBA 配置设置及其他全局设置。举个例子,如果 SAMBA 服务器属于一个名为 LEVELONE 的 Windows 计算机工作组,那么 /etc/samba/smb.conf 可以相应改成下面的值:<br />
<br />
<pre><nowiki><br />
workgroup = LEVELONE</nowiki></pre><br />
<br />
<br />
保存文件并重启 SAMBA 守护程序以使改变生效。<br />
<br />
其它重要的全局策略设置包括 server string,定义了 Ubuntu 系统向基于 Windows 网络上其它机器所宣称的 NETBIOS 服务器名称。该名称也使你的 Ubuntu 系统被 Windows 客户端及其它使用 SMB 协议浏览网络的计算机所识别。而且用户还可以通过 /etc/samba/smb.conf 文件中的 log file 指令来指定 SAMBA 服务器日志文件的名称和所在位置。<br />
<br />
还有一些可以管理全局组策略的附加指令包括对所有共享资源全局性能的说明。例如在 /etc/samba/smb.conf 中 [global] 标题下面的指令将影响所有共享资源,除非在某些共享资源标题下有覆盖全局设置的指令。你可以通过 browseable 指令来使网络中所有的客户机都能浏览全部共享。该指令使用一个布尔值,位于 /etc/samba/smb.conf 文件的 [global] 标题中。编辑该文件,并添加下面一行:<br />
<pre><nowiki><br />
browseable = true</nowiki></pre><br />
<br />
到 /etc/samba/smb.conf 文件的 [global] 节的下面。这样所有你 Ubuntu 系统中的共享将通过 SAMBA 被授权客户机浏览,除非该共享包含了覆盖全局指令的 browseable = false 指令。<br />
<br />
相同方式运作的其他例子还有 public 和 writeable 指令。public 指令接受一个布尔值并决定特定的共享资源对所有客户是否可见,而无论其被授权与否。writeable 指令也采用布尔值以定义特定共享资源是否对部分或所有网络客户可写。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E5%AD%97%E4%BD%93&diff=145598
字体
2011-10-02T08:15:08Z
<p>Lxr1234:已恢复112.205.235.54(对话)的编辑至Lxr1234的最后一个修订版本</p>
<hr />
<div>字体是计算机调用显示字形的仓库。<br />
<br />
<br />
==基础知识==<br />
<br />
Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体。<br />
<br />
Serif=衬线体=白体:同上<br />
<br />
Monospace=等宽字体,意思是字符宽度相同:同上<br />
<br />
点阵字体=位图字体<br />
<br />
无衬线体更适合电脑屏幕阅读,衬线体适合打印。——因为衬线可以使得人视线平齐于一行。也就是说不会读破行。<br />
<br />
中文显示时有不同的方式,一方面因为中文本身拥有的横和同高度就可以导致这种平齐。行距对中文更重要。<br />
<br />
[http://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) Archlinux Wiki 字体]有中文字体更详细的信息。<br />
<br />
==Linux字体==<br />
<br />
字体文件存放路径<br />
<br />
<pre>/usr/share/fonts/ #系统字体,需要root权限才能操作</pre><br />
<br />
<pre>~/.fonts #用户字体,随便怎么搞,推荐</pre><br />
<br />
配置文件路径<br />
<br />
<pre>/etc/fonts/fonts.conf #系统配置文件,需要root权限才能操作,对需要输入root密码的程序有效</pre><br />
<br />
<pre>~/.fonts.conf #用户配置文件,随便怎么搞,只对当前用户运行的程序有效</pre><br />
<br />
命令<br />
<pre>fc-cache -fv #通常复制字体进~/.fonts就会自动刷新字体,如果没有,用这个命令,如果复制进的是/usr/share/fonts/,用sudo fc-cache -fv</pre><br />
<pre>fc-match sans-serif #抓取当前用户sans-serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match serif #抓取当前用户serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match monospace #抓取当前用户monospace类字体优先级最高的那款字体</pre><br />
===配置.fonts.conf===<br />
文泉驿的视觉习惯工具<br />
<br />
http://wenq.org/cloud/fcdesigner_local.html<br />
<br />
<br />
<br />
<br />
<br />
把你最喜欢的字体拉到最上方,如果你特别注重英文字体(某些中文字体中的英文字型很难看),那把最喜欢的英文字体拉到最上方,其次是最喜欢的中文字体。这样,程序优先会使用你设定的英文字体,然后中文字再用其次的中文字体。(这个时候注意下[[Flash#.font.conf 挑剔英文字体需要注意的情况|Flash 问题]])。<br />
<br />
把生成的.fonts.conf复制到当前用户主目录,没有就新建,完成。<br />
<br />
===Qt3、Qt4、KDE3、KDE4、Gtk2、GNOME2===<br />
Qt3和Qt4应该不用设置就会用Sans Serif字体,调出qtconfig看看。<br />
<pre>/usr/lib/qt3/bin/qtconfig #Qt3配置工具</pre><br />
[[File:Fontqt3.jpeg]]<br />
<pre>qtconfig #Qt4配置工具,这个工具自身的保存字体功能一直有问题,不用管,改了.fonts.conf,这边一并会改的。</pre><br />
[[File:Fontqt4.jpeg]]<br />
<br />
KDE3和KDE4,需要设定<br />
<pre>kcontrol #KDE3配置工具-外观和主题-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde3.jpeg]]<br />
<pre>systemseetings #KDE4配置工具-观感-外观-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde4.jpeg]]<br />
<br />
随便下面的“圆整字体边角”都启用,取消“不包括范围”,勾选“使用次像素渲染”,其实这里修改的也是.fonts.conf中渲染部分 <span class="plainlinks">[http://www.diamondlinks.net <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">link building service</span>]<br />
<br />
'''非GNOME2环境'''下的Gtk2可以用gtk-chtheme工具,<span class="plainlinks">[http://www.gumball-machine.com/vending-machines.html <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">vending machines</span>] GNOME2用这个工具后会与GNOME2本身的设置起冲突,'''需要删除 .gtkrc-2.0(切记)'''。<br />
<pre>sudo apt-get gtk-chtheme</pre><br />
<pre>gtk-chtheme</pre><br />
[[File:Fontgtk2-gtk-chtheme.jpeg]]<br />
<br />
==Monospace==<br />
Monospace 字体族(family)的字体是用于终端下面以及编程使用。这类字体的要求是能区分 1 i l,o 0 O。<br />
{|<br />
|[[Image:Inconsolata.png|thumb|center|600px|Inconsolata 字体的终端效果]]<br />
|}<br />
<br />
==字体渲染==<br />
除了字体本身的设计外,文字显示的最终效果还受字体渲染和显示器硬件影响。<br />
<br />
参考[[字体渲染]]。<br />
<br />
==获取字体==<br />
<br />
===中文===<br />
{{main|免费中文字体}}<br />
<pre>sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑</pre><br />
<pre>sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑</pre><br />
<pre>sudo apt-get install xfonts-wqy #文泉驿-点阵宋体</pre><br />
<br />
===非中文===<br />
<br />
*[http://www.theleagueofmoveabletype.com/ 最漂亮的新开源字体集合,以下的均不包括]<br />
*[http://dejavu-fonts.org/wiki/index.php?title=Download DejaVu字体]<br />
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=DoulosSIL_download#FontsDownload SIL字体]<br />
*[http://ftp.gnu.org/gnu/freefont/ GNU FreeFont]<br />
*[https://fedorahosted.org/releases/l/i/liberation-fonts/ Liberation]<br />
*[http://robertgschwartz.homestead.com/ Dr. Robert Schwartz Greenville]<br />
*[http://sourceforge.net/projects/cm-unicode/files/ Computer Modern Unicode fonts]<br />
*[http://www.levien.com/type/myfonts/inconsolata.html inconsolata]<br />
<br />
==其他操作系统的字体==<br />
作为了解用,你可以将这些字体应用到 Ubuntu 上,当然前提是你有正版拷贝,不然……<br />
<br />
Windows 7 默认英文字体是 Segoe UI 。简体中文字体是微软雅黑(有hinting),繁体中文字体是微软正黑体。<br />
<br />
Snow Leopard 默认英文字体是 LucidaGrande,其中新加的经过中国政府认证的简体中文字体 Hiragino Sans GB(但非默认中文字体,有hinting)。<br />
[[Category:中文]]<br />
[[Category:美化]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E6%88%90%E6%89%B9%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6&diff=145597
成批重命名文件
2011-10-02T08:14:36Z
<p>Lxr1234:已恢复113.58.243.157(对话)的编辑至Oneleaf的最后一个修订版本</p>
<hr />
<div><br />
=== 如何一次就重新命名整个目录下的文件? ===<br />
* 安装 "mvb" file name renamer<br />
* <br />
<pre><nowiki><br />
wget -c http://frankandjacq.com/ubuntuguide/mvb_1.6.tgz<br />
sudo tar zxvf mvb_1.6.tgz -C /usr/share/<br />
sudo chown -R root:root /usr/share/mvb_1.6/<br />
sudo ln -fs /usr/share/mvb_1.6/mvb /usr/bin/mvb<br />
</nowiki></pre><br />
* 一次就重新命名整个目录下的文件 <br />
<pre><nowiki><br />
mvb NEW_NAME<br />
</nowiki></pre><br />
----<br />
[[支持所有版本类]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E5%AD%97%E4%BD%93&diff=145476
字体
2011-09-02T04:51:09Z
<p>Lxr1234:已恢复122.3.179.22(对话)的编辑至112.205.235.54的最后一个修订版本</p>
<hr />
<div>字体是计算机调用显示字形的仓库。<br />
<br />
<br />
==基础知识==<br />
<br />
Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体。<br />
<br />
Serif=衬线体=白体:同上<br />
<br />
Monospace=等宽字体,意思是字符宽度相同:同上<br />
<br />
点阵字体=位图字体<br />
<br />
无衬线体更适合电脑屏幕阅读,衬线体适合打印。——因为衬线可以使得人视线平齐于一行。也就是说不会读破行。<br />
<br />
中文显示时有不同的方式,一方面因为中文本身拥有的横和同高度就可以导致这种平齐。行距对中文更重要。<br />
<br />
[http://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) Archlinux Wiki 字体]有中文字体更详细的信息。<br />
<br />
==Linux字体==<br />
<br />
字体文件存放路径<br />
<br />
<pre>/usr/share/fonts/ #系统字体,需要root权限才能操作</pre><br />
<br />
<pre>~/.fonts #用户字体,随便怎么搞,推荐</pre><br />
<br />
配置文件路径<br />
<br />
<pre>/etc/fonts/fonts.conf #系统配置文件,需要root权限才能操作,对需要输入root密码的程序有效</pre><br />
<br />
<pre>~/.fonts.conf #用户配置文件,随便怎么搞,只对当前用户运行的程序有效</pre><br />
<br />
命令<br />
<pre>fc-cache -fv #通常复制字体进~/.fonts就会自动刷新字体,如果没有,用这个命令,如果复制进的是/usr/share/fonts/,用sudo fc-cache -fv</pre><br />
<pre>fc-match sans-serif #抓取当前用户sans-serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match serif #抓取当前用户serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match monospace #抓取当前用户monospace类字体优先级最高的那款字体</pre><br />
===配置.fonts.conf===<br />
文泉驿的视觉习惯工具<br />
<br />
http://wenq.org/cloud/fcdesigner_local.html<br />
<br />
<br />
<br />
<br />
<br />
把你最喜欢的字体拉到最上方,如果你特别注重英文字体(某些中文字体中的英文字型很难看),那把最喜欢的英文字体拉到最上方,其次是最喜欢的中文字体。这样,程序优先会使用你设定的英文字体,然后中文字再用其次的中文字体。(这个时候注意下[[Flash#.font.conf 挑剔英文字体需要注意的情况|Flash 问题]])。<br />
<br />
把生成的.fonts.conf复制到当前用户主目录,没有就新建,完成。<br />
<br />
===Qt3、Qt4、KDE3、KDE4、Gtk2、GNOME2===<br />
Qt3和Qt4应该不用设置就会用Sans Serif字体,调出qtconfig看看。<br />
<pre>/usr/lib/qt3/bin/qtconfig #Qt3配置工具</pre><br />
[[File:Fontqt3.jpeg]]<br />
<pre>qtconfig #Qt4配置工具,这个工具自身的保存字体功能一直有问题,不用管,改了.fonts.conf,这边一并会改的。</pre><br />
[[File:Fontqt4.jpeg]]<br />
<br />
KDE3和KDE4,需要设定<br />
<pre>kcontrol #KDE3配置工具-外观和主题-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde3.jpeg]]<br />
<pre>systemseetings #KDE4配置工具-观感-外观-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde4.jpeg]]<br />
<br />
随便下面的“圆整字体边角”都启用,取消“不包括范围”,勾选“使用次像素渲染”,其实这里修改的也是.fonts.conf中渲染部分 <span class="plainlinks">[http://www.diamondlinks.net <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">link building service</span>]<br />
<br />
'''非GNOME2环境'''下的Gtk2可以用gtk-chtheme工具,<span class="plainlinks">[http://www.gumball-machine.com/vending-machines.html <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">vending machines</span>] GNOME2用这个工具后会与GNOME2本身的设置起冲突,'''需要删除 .gtkrc-2.0(切记)'''。<br />
<pre>sudo apt-get gtk-chtheme</pre><br />
<pre>gtk-chtheme</pre><br />
[[File:Fontgtk2-gtk-chtheme.jpeg]]<br />
<br />
==Monospace==<br />
Monospace 字体族(family)的字体是用于终端下面以及编程使用。这类字体的要求是能区分 1 i l,o 0 O。<br />
{|<br />
|[[Image:Inconsolata.png|thumb|center|600px|Inconsolata 字体的终端效果]]<br />
|}<br />
<br />
==字体渲染==<br />
除了字体本身的设计外,文字显示的最终效果还受字体渲染和显示器硬件影响。<br />
<br />
参考[[字体渲染]]。<br />
<br />
==获取字体==<br />
<br />
===中文===<br />
{{main|免费中文字体}}<br />
<pre>sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑</pre><br />
<pre>sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑</pre><br />
<pre>sudo apt-get install xfonts-wqy #文泉驿-点阵宋体</pre><br />
<br />
===非中文===<br />
<br />
*[http://www.theleagueofmoveabletype.com/ 最漂亮的新开源字体集合,以下的均不包括]<br />
*[http://dejavu-fonts.org/wiki/index.php?title=Download DejaVu字体]<br />
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=DoulosSIL_download#FontsDownload SIL字体]<br />
*[http://ftp.gnu.org/gnu/freefont/ GNU FreeFont]<br />
*[https://fedorahosted.org/releases/l/i/liberation-fonts/ Liberation]<br />
*[http://robertgschwartz.homestead.com/ Dr. Robert Schwartz Greenville]<br />
*[http://sourceforge.net/projects/cm-unicode/files/ Computer Modern Unicode fonts]<br />
*[http://www.levien.com/type/myfonts/inconsolata.html inconsolata]<br />
<br />
==其他操作系统的字体==<br />
作为了解用,你可以将这些字体应用到 Ubuntu 上,当然前提是你有正版拷贝,不然……<br />
<br />
Windows 7 默认英文字体是 Segoe UI 。简体中文字体是微软雅黑(有hinting),繁体中文字体是微软正黑体。<br />
<br />
Snow Leopard 默认英文字体是 LucidaGrande,其中新加的经过中国政府认证的简体中文字体 Hiragino Sans GB(但非默认中文字体,有hinting)。<br />
[[Category:中文]]<br />
[[Category:美化]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E5%AD%97%E4%BD%93&diff=144716
字体
2011-07-18T14:42:30Z
<p>Lxr1234:清除广告链接</p>
<hr />
<div>字体是计算机调用显示字形的仓库。<br />
<br />
<br />
==基础知识==<br />
<br />
Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体。<br />
<br />
Serif=衬线体=白体:同上<br />
<br />
Monospace=等宽字体,意思是字符宽度相同:同上<br />
<br />
点阵字体=位图字体<br />
<br />
无衬线体更适合电脑屏幕阅读,衬线体适合打印。——因为衬线可以使得人视线平齐于一行。也就是说不会读破行。<br />
<br />
中文显示时有不同的方式,一方面因为中文本身拥有的横和同高度就可以导致这种平齐。行距对中文更重要。<br />
<br />
[http://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) Archlinux Wiki 字体]有中文字体更详细的信息。<br />
<br />
==Linux字体==<br />
<br />
字体文件存放路径<br />
<br />
<pre>/usr/share/fonts/ #系统字体,需要root权限才能操作</pre><br />
<br />
<pre>~/.fonts #用户字体,随便怎么搞,推荐</pre><br />
<br />
配置文件路径<br />
<br />
<pre>/etc/fonts/fonts.conf #系统配置文件,需要root权限才能操作,对需要输入root密码的程序有效</pre><br />
<br />
<pre>~/.fonts.conf #用户配置文件,随便怎么搞,只对当前用户运行的程序有效</pre><br />
<br />
命令<br />
<pre>fc-cache -fv #通常复制字体进~/.fonts就会自动刷新字体,如果没有,用这个命令,如果复制进的是/usr/share/fonts/,用sudo fc-cache -fv</pre><br />
<pre>fc-match sans-serif #抓取当前用户sans-serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match serif #抓取当前用户serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match monospace #抓取当前用户monospace类字体优先级最高的那款字体</pre><br />
===配置.fonts.conf===<br />
文泉驿的视觉习惯工具<br />
<br />
http://wenq.org/cloud/fcdesigner_local.html<br />
<br />
<br />
<br />
<br />
<br />
把你最喜欢的字体拉到最上方,如果你特别注重英文字体(某些中文字体中的英文字型很难看),那把最喜欢的英文字体拉到最上方,其次是最喜欢的中文字体。这样,程序优先会使用你设定的英文字体,然后中文字再用其次的中文字体。(这个时候注意下[[Flash#.font.conf 挑剔英文字体需要注意的情况|Flash 问题]])。<br />
<br />
把生成的.fonts.conf复制到当前用户主目录,没有就新建,完成。<br />
<br />
===Qt3、Qt4、KDE3、KDE4、Gtk2、GNOME2===<br />
Qt3和Qt4应该不用设置就会用Sans Serif字体,调出qtconfig看看。<br />
<pre>/usr/lib/qt3/bin/qtconfig #Qt3配置工具</pre><br />
[[File:Fontqt3.jpeg]]<br />
<pre>qtconfig #Qt4配置工具,这个工具自身的保存字体功能一直有问题,不用管,改了.fonts.conf,这边一并会改的。</pre><br />
[[File:Fontqt4.jpeg]]<br />
<br />
KDE3和KDE4,需要设定<br />
<pre>kcontrol #KDE3配置工具-外观和主题-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde3.jpeg]]<br />
<pre>systemseetings #KDE4配置工具-观感-外观-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde4.jpeg]]<br />
<br />
随便下面的“圆整字体边角”都启用,取消“不包括范围”,勾选“使用次像素渲染”,其实这里修改的也是.fonts.conf中渲染部分。<br />
<br />
'''非GNOME2环境'''下的Gtk2可以用gtk-chtheme工具,<span class="plainlinks">[http://www.gumball-machine.com/vending-machines.html <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">vending machines</span>] GNOME2用这个工具后会与GNOME2本身的设置起冲突,'''需要删除 .gtkrc-2.0(切记)'''。<br />
<pre>sudo apt-get gtk-chtheme</pre><br />
<pre>gtk-chtheme</pre><br />
[[File:Fontgtk2-gtk-chtheme.jpeg]]<br />
<br />
==Monospace==<br />
Monospace 字体族(family)的字体是用于终端下面以及编程使用。这类字体的要求是能区分 1 i l,o 0 O。<br />
{|<br />
|[[Image:Inconsolata.png|thumb|center|600px|Inconsolata 字体的终端效果]]<br />
|}<br />
<br />
==字体渲染==<br />
除了字体本身的设计外,文字显示的最终效果还受字体渲染和显示器硬件影响。<br />
<br />
参考[[字体渲染]]。<br />
<br />
==获取字体==<br />
<br />
===中文===<br />
{{main|免费中文字体}}<br />
<pre>sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑</pre><br />
<pre>sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑</pre><br />
<pre>sudo apt-get install xfonts-wqy #文泉驿-点阵宋体</pre><br />
<br />
===非中文===<br />
<br />
*[http://www.theleagueofmoveabletype.com/ 最漂亮的新开源字体集合,以下的均不包括]<br />
*[http://dejavu-fonts.org/wiki/index.php?title=Download DejaVu字体]<br />
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=DoulosSIL_download#FontsDownload SIL字体]<br />
*[http://ftp.gnu.org/gnu/freefont/ GNU FreeFont]<br />
*[https://fedorahosted.org/releases/l/i/liberation-fonts/ Liberation]<br />
*[http://sourceforge.net/projects/cm-unicode/files/ Computer Modern Unicode fonts]<br />
*[http://www.levien.com/type/myfonts/inconsolata.html inconsolata]<br />
==其他操作系统的字体==<br />
作为了解用,你可以将这些字体应用到 Ubuntu 上,当然前提是你有正版拷贝,不然……<br />
<br />
Windows 7 默认英文字体是 Segoe UI 。简体中文字体是微软雅黑(有hinting),繁体中文字体是微软正黑体。<br />
<br />
Snow Leopard 默认英文字体是 LucidaGrande,其中新加的经过中国政府认证的简体中文字体 Hiragino Sans GB(但非默认中文字体,有hinting)。<br />
[[Category:中文]]<br />
[[Category:美化]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Google_Earth&diff=144682
Google Earth
2011-07-08T12:48:37Z
<p>Lxr1234:/* OK */ 无意义文字</p>
<hr />
<div>==介绍==<br />
<br />
''Google Earth 把我们这个地球有用的图像和地理信息显示在您的桌面上.我们可以观看外国,如毛伊和巴黎,以及一些我们感兴趣的地点,譬如本地餐馆,医院, 学校等等.''''''''&nbsp;'''<br />
<br />
==下载地址==<br />
<br />
[http://earth.google.com/ Google 地球]<br />
<br />
下载下来的是bin结尾的安装文件,右击属性-改成“可执行”,然后双击打开安装文件。<br />
<br />
<pre><br />
chmod +x GoogleEarthLinux.bin #命令的话这样<br />
</pre><br />
<br />
<pre>sudo ./GoogleEarthLinux.bin #这样就安装到系统目录<br />
</pre><br />
<br />
卸载<br />
<br />
<pre>安装路径下的uninstall</pre><br />
<br />
==3D 显卡驱动==<br />
<br />
Google Earth 需要启用 3D显卡驱动才能用。<br />
好<br />
<br />
==中文处理==<br />
通常这样装好的 Google Earth 没法显示中文,或是中文乱码。<br />
<br />
打开 Google Earth 安装目录,删除下列文件。<br />
<pre>libcrypto.so.0.9.8 libQtGui.so.4 libQtWebKit.so.4<br />
libQtCore.so.4 libQtNetwork.so.4 libssl.so.0.9.8</pre><br />
<br />
需要事先安装好 Qt4 库,这样删除后,Google Earth 会使用系统自带的 Qt4 库,不但解决中文显示问题,而且程序的外观也会与当前桌面一致。<br />
<pre>sudo apt-get install libqt4-webkit libqt4-gui libqt4-network libqt4-core #系统如果没有Qt4,安装之</pre><br />
随后,工具-选项-选择3D字体,最好改成 [[字体|Sans Serif]]。<br />
<br />
{|<br />
|[[Image:Google_earth.png|left|thumb|500px|处理中文显示后的 Google 地球]]<br />
<br />
|}<br />
<br />
==运行速度缓慢==<br />
最好终端下面启动googleearth看看错误提示。注意权限问题,比如说当前用户不在 video 用户组。<br />
<br />
<br />
<br />
<br />
[[Category:网络]]<br />
[[Category:科学]]<br />
[[Category:中文]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:Cat650&diff=144680
用户讨论:Cat650
2011-07-07T13:38:02Z
<p>Lxr1234:</p>
<hr />
<div>如果你对我的修改有异议,请及时通知我。我们可以讨论,同时把相关页面的链接发给我方便我查找。<br />
<br />
联系方式:http://forum.ubuntu.org.cn/ucp.php?i=pm&mode=compose&u=171468<br />
<br />
==请不要在正式页面上书写联系方式==<br />
不是指在用户也,是在正式页面,这一点我忘记说明了,对不起。<br />
另外感谢您写的关于wine的条目,不过要是能合并起来就比较好呢。<br />
--[[User:Lxr1234|Lxr1234]] 2011年7月7日 (四) 21:38 (CST)</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E5%AD%97%E4%BD%93&diff=144679
字体
2011-07-07T13:02:03Z
<p>Lxr1234:/* 配置.fonts.conf */ 这个是广告链接</p>
<hr />
<div>字体是计算机调用显示字形的仓库。<br />
<br />
<br />
==基础知识==<br />
<br />
Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体。<br />
<br />
Serif=衬线体=白体:同上<br />
<br />
Monospace=等宽字体,意思是字符宽度相同:同上<br />
<br />
点阵字体=位图字体<br />
<br />
无衬线体更适合电脑屏幕阅读,衬线体适合打印。——因为衬线可以使得人视线平齐于一行。也就是说不会读破行。<br />
<br />
中文显示时有不同的方式,一方面因为中文本身拥有的横和同高度就可以导致这种平齐。行距对中文更重要。<br />
<br />
[http://wiki.archlinux.org/index.php/Fonts_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) Archlinux Wiki 字体]有中文字体更详细的信息。<br />
<br />
==Linux字体==<br />
<br />
字体文件存放路径<br />
<br />
<pre>/usr/share/fonts/ #系统字体,需要root权限才能操作</pre><br />
<br />
<pre>~/.fonts #用户字体,随便怎么搞,推荐</pre><br />
<br />
配置文件路径<br />
<br />
<pre>/etc/fonts/fonts.conf #系统配置文件,需要root权限才能操作,对需要输入root密码的程序有效</pre><br />
<br />
<pre>~/.fonts.conf #用户配置文件,随便怎么搞,只对当前用户运行的程序有效</pre><br />
<br />
命令<br />
<pre>fc-cache -fv #通常复制字体进~/.fonts就会自动刷新字体,如果没有,用这个命令,如果复制进的是/usr/share/fonts/,用sudo fc-cache -fv</pre><br />
<pre>fc-match sans-serif #抓取当前用户sans-serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match serif #抓取当前用户serif类字体优先级最高的那款字体</pre><br />
<pre>fc-match monospace #抓取当前用户monospace类字体优先级最高的那款字体</pre><br />
===配置.fonts.conf===<br />
文泉驿的视觉习惯工具<br />
<br />
http://wenq.org/cloud/fcdesigner_local.html<br />
<br />
<br />
<br />
<br />
<br />
把你最喜欢的字体拉到最上方,[http://www.mycaal.com loan modification] 如果你特别注重英文字体(某些中文字体中的英文字型很难看),那把最喜欢的英文字体拉到最上方,其次是最喜欢的中文字体。这样,程序优先会使用你设定的英文字体,然后中文字再用其次的中文字体。(这个时候注意下[[Flash#.font.conf 挑剔英文字体需要注意的情况|Flash 问题]])。<br />
<br />
把生成的.fonts.conf复制到当前用户主目录,没有就新建,完成。<br />
<br />
===Qt3、Qt4、KDE3、KDE4、Gtk2、GNOME2===<br />
Qt3和Qt4应该不用设置就会用Sans Serif字体,调出qtconfig看看。<br />
<pre>/usr/lib/qt3/bin/qtconfig #Qt3配置工具</pre><br />
[[File:Fontqt3.jpeg]]<br />
<pre>qtconfig #Qt4配置工具,这个工具自身的保存字体功能一直有问题,不用管,改了.fonts.conf,这边一并会改的。</pre><br />
[[File:Fontqt4.jpeg]]<br />
<br />
KDE3和KDE4,需要设定<br />
<pre>kcontrol #KDE3配置工具-外观和主题-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde3.jpeg]]<br />
<pre>systemseetings #KDE4配置工具-观感-外观-字体,等宽选择Monospace,其余选择Sans Serif</pre><br />
[[File:Fontkde4.jpeg]]<br />
<br />
随便下面的“圆整字体边角”都启用,取消“不包括范围”,勾选“使用次像素渲染”,其实这里修改的也是.fonts.conf中渲染部分。<br />
<br />
'''非GNOME2环境'''下的Gtk2可以用gtk-chtheme工具,<span class="plainlinks">[http://www.gumball-machine.com/vending-machines.html <span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">vending machines</span>] GNOME2用这个工具后会与GNOME2本身的设置起冲突,'''需要删除 .gtkrc-2.0(切记)'''。<br />
<pre>sudo apt-get gtk-chtheme</pre><br />
<pre>gtk-chtheme</pre><br />
[[File:Fontgtk2-gtk-chtheme.jpeg]]<br />
<br />
==Monospace==<br />
Monospace 字体族(family)的字体是用于终端下面以及编程使用。这类字体的要求是能区分 1 i l,o 0 O。<br />
{|<br />
|[[Image:Inconsolata.png|thumb|center|600px|Inconsolata 字体的终端效果]]<br />
|}<br />
<br />
==字体渲染==<br />
除了字体本身的设计外,文字显示的最终效果还受字体渲染和显示器硬件影响。<br />
<br />
参考[[字体渲染]]。<br />
<br />
==获取字体==<br />
<br />
===中文===<br />
{{main|免费中文字体}}<br />
<pre>sudo apt-get install ttf-wqy-microhei #文泉驿-微米黑</pre><br />
<pre>sudo apt-get install ttf-wqy-zenhei #文泉驿-正黑</pre><br />
<pre>sudo apt-get install xfonts-wqy #文泉驿-点阵宋体</pre><br />
<br />
===非中文===<br />
<br />
*[http://www.theleagueofmoveabletype.com/ 最漂亮的新开源字体集合,以下的均不包括]<br />
*[http://dejavu-fonts.org/wiki/index.php?title=Download DejaVu字体]<br />
*[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=DoulosSIL_download#FontsDownload SIL字体]<br />
*[http://ftp.gnu.org/gnu/freefont/ GNU FreeFont]<br />
*[https://fedorahosted.org/releases/l/i/liberation-fonts/ Liberation]<br />
*[http://sourceforge.net/projects/cm-unicode/files/ Computer Modern Unicode fonts]<br />
*[http://www.levien.com/type/myfonts/inconsolata.html inconsolata]<br />
==其他操作系统的字体==<br />
作为了解用,你可以将这些字体应用到 Ubuntu 上,当然前提是你有正版拷贝,不然……<br />
<br />
Windows 7 默认英文字体是 Segoe UI 。简体中文字体是微软雅黑(有hinting),繁体中文字体是微软正黑体。<br />
<br />
Snow Leopard 默认英文字体是 LucidaGrande,其中新加的经过中国政府认证的简体中文字体 Hiragino Sans GB(但非默认中文字体,有hinting)。<br />
[[Category:中文]]<br />
[[Category:美化]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=WineOffice&diff=144678
WineOffice
2011-07-07T13:01:35Z
<p>Lxr1234:不要写这些在这里</p>
<hr />
<div><br />
==前提==<br />
首先要安装wine<br />
sudo apt-get install wine<br />
== DEB包自动安装 ==<br />
感谢(文章源地址):http://forum.ubuntu.org.cn/viewtopic.php?f=121&t=254638&start=0<br />
<br />
DEB包下载:<br />
https://dl.dropbox.com/u/411494/msoffice_11.6568.5606_all.deb<br />
<br />
大小只有28M,是最简洁版。<br />
<br />
== 正常安装 ==<br />
1.安装play on linux<br />
sudo apt-get install playonlinux<br />
2.使用playOnLinux中是office分类进行安装。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Ubuntu%E4%B8%AD%E6%96%87:%E6%96%B9%E9%92%88&diff=144381
Ubuntu中文:方针
2011-06-15T04:43:32Z
<p>Lxr1234:/* 草案一 */</p>
<hr />
<div>==草案一==<br />
'''这个只是我个人观点,具体请询问行政员'''<br />
;1.本wiki乃关于ubuntu和linux技术站点,不得再此发布广告。<br />
;2.任何页面至少要有30字节的纯文字,否则将于12小时后删除。<br />
;3.也不可在自己或他人的用户页发布广告。<br />
;4.不得侮辱他人和挑起事端。<br />
;5.发布广告者封 IP 6个月,注册用户的帐号一年。<br />
;6.不要在此处发问,这里是总结知识的地方。<br />
;7.不要发布重复的内容,请整合一下。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E8%AE%A8%E8%AE%BA:SSHHowto&diff=144051
讨论:SSHHowto
2011-05-27T09:34:12Z
<p>Lxr1234:以内容'这个页面建议合并到/OpenSSH高级教程中。'创建新页面</p>
<hr />
<div>这个页面建议合并到/OpenSSH高级教程中。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=OpenSSH%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B&diff=144050
OpenSSH高级教程
2011-05-27T09:28:09Z
<p>Lxr1234:/* OpenSSH 高级教程 */</p>
<hr />
<div>= '''OpenSSH 高级教程''' =<br />
<br />
原文出处:官方Wiki-[https://help.ubuntu.com/community/AdvancedOpenSSH AdvancedOpenSSH] (已经失效) <br />
<br />
原文作者: <br />
<br />
授权许可: <br />
<br />
*[http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0] <br />
*[http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:fiftymetre <br />
<br />
校正人员:millenniumdark <br />
<br />
贡献人员:sighforever lxr1234<br />
<br />
适用版本: <br />
<br />
文章状态:原文丢失<br />
<br />
----<br />
<br />
译者的话:第一次翻译这英文文章,译的不好的地方也许大家包含,我会努力在下一章中尽我所能的提高翻译质量。翻译这篇文章时,还特意找一了本“SSH权威指南”研究了一下,以前在win下都是用SSH Secure Shell来跟ubuntn来传文件的呵呵。但ubuntu6.06桌面版本默认安装却没有安装SSH。 <br />
<br />
----<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
这翻译。。。非常生硬。我改了几句,发现要改的太多了。只好算了。&nbsp; 有的地方把配置文件中的指令都翻译了。这OpenSSH可不懂中文写的配置文件。&nbsp; -- millenniumdark <br />
<br />
要改的地方实在太多,正好我这两天在学这个,一点点改吧&nbsp; -- sighforever <br />
<br />
<br><br />
<br />
= '''简介''' =<br />
<br />
这篇指南在Ubuntu OpenSSH的默认配置基础上,着重介绍了能够大幅增加安全性的高级配置技巧。它详细论述了两方面内容:<br />
#服务器端的特定配置方式;<br />
#通过与明文密码相比较,阐述了利用Rivest Shamir Adleman (RSA) 算法(注1)生成密钥登陆 OpenSSH 服务器的过程。<br> <br />
<br />
<br><br />
<br />
= '''目标读者''' =<br />
<br />
为了能够更好的使用本教程 ,读者应该是一个善于使用命令行程序的Ubuntu用户,能够使用bash环境,并能够在基于控制台的文本编辑器中编辑系统配置文件。另外,读者应该知道如何启动和关闭系统守护进程,并且对OpenSSH程序的安装方式和使用目的有一个大致的了解。 <br />
<br />
<br><br />
<br />
<br><br />
<br />
<h1> <b>关于 OpenSSH</b> </h1><br />
<p>OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。<br /> <br />
</p><p><br /><br />
</p><p><br /><br />
</p><br />
<br />
= '''OpenSSH 服务 (sshd)''' =<br />
<br />
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:''Port 22''), 然后在下一行中使用粗体字 (如:'''Protocol 2''')介绍为了增强安全防护而作的修改。 <br />
<br />
在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令: <br />
<br />
<code><nowiki>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
<code>如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注<br />
意,在/etc/ssh/文件夹下<br />
还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。</code><code></code> <br />
<br />
如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。 <br />
<br />
<code><nowiki>sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。 <br />
<br />
如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
== OpenSSH服务的建议设定 ==<br />
<br />
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。<br> <br />
<br />
=== 登录 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki></nowiki></code>'' ''<tt>LogLevel&nbsp;INFO</tt>''<br />
|}<br />
<br />
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>LogLevel&nbsp;VERBOSE</tt>'''<br />
|}<br />
<br />
<br> 这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。<br />
<br />
=== 验证 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>LoginGraceTime 120</nowiki></code>''<br />
|}<br />
<br />
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>LoginGraceTime 20</nowiki></code>'''<br />
|}<br />
<br />
<br> 将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>X11Forwarding yes</nowiki></code>''<br />
|}<br />
<br />
<br>如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>X11Forwarding no</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,sshd的X11 forwarding功能被关闭了。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconWarning3.png '''警告''': 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#Banner /etc/issue.net</nowiki></code>''<br />
|}<br />
<br />
<br> 显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。 <br />
<br />
<br> <br />
<br />
有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Banner /etc/issue.net</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子: <br />
<br />
使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容: <br />
<pre>***************************************************************************<br />
NOTICE TO USERS<br />
This computer system is the private property of its owner, whether<br />
individual, corporate or government. It is for authorized use only.<br />
Users (authorized or unauthorized) have no explicit or implicit<br />
expectation of privacy.<br />
Any or all uses of this system and all files on this system may be<br />
intercepted, monitored, recorded, copied, audited, inspected, and<br />
disclosed to your employer, to authorized site, government, and law<br />
enforcement personnel, as well as authorized officials of government<br />
agencies, both domestic and foreign.<br />
By using this system, the user consents to such interception, monitoring,<br />
recording, copying, auditing, inspection, and disclosure at the<br />
discretion of such personnel or officials. Unauthorized or improper use<br />
of this system may result in civil and criminal penalties and<br />
administrative or disciplinary action, as appropriate. By continuing to<br />
use this system you indicate your awareness of and consent to these terms<br />
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the<br />
conditions stated in this warning.<br />
****************************************************************************<br />
</pre> <br />
<code><nowiki>保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:</nowiki></code> <br />
<br />
<code><nowiki>sudo ln -s /etc/issue /etc/issue.net</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息"你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。 <br />
<br />
另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。<br />
<br />
= '''进一步的配置技巧''' =<br />
<br />
下面的内容是一些额外的暗示和一些配置一个更加安全的openssh安装的技巧,这些技巧利用一些不包含在默认的ubuntussh配置文件中的指令,并且提出其他加强你的ssh安装安全的方法。 <br />
<br />
==== 允许和拒绝用户和用户组 ====<br />
<br />
在配置文件中你可以使用一些指令来允许或者拒绝一些特定用户或者用户组用ssh登陆.这个方法更加细致的控制哪些人可以通过ssh来进入你的Ubuntu电脑。 <br />
<br />
例如,如果你想只允许jhendrix和svaughan通过ssh登陆,你可以向这样在你的/etc/ssh中使用allowusers指令。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>AllowUsers</tt>'''''' jhendrix svaughan'''<br />
|}<br />
<br />
<br> 如果你不想让所有用户能过 ssh 登陆,除了使用者 wgates,或sballmer然后你可以使用DenyUsers命令添加到/etc/ssh/sshd_config中,像这样: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>DenyUsers</tt>''''''wgates sballmer'''<br />
|}<br />
<br />
<br> 最后,再看一个例子,你可以这样配置你的OpenSSH服务,只有用户属于系统组才允许通过ssh 登录。在这个例子中,我们将执行一些必要手段只允许SSH的用户都是小组成员sshlogin。 <br />
<br />
<code><nowiki>sudo addgroup --gid 450 sshlogin</nowiki></code> <br />
<br />
<code><nowiki>sudo adduser <username> sshlogin</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
在以上的例子中是用'&lt;username&gt;'代替你的用户名加入到sshlogin系统组。最后,编辑你的 /etc/ssh/sshd_config,并增添allowgroups指令: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>AllowGroups sshlogin</nowiki></code>'''<br />
|}<br />
<br />
<br> 重新启动 sshd,并且只有属于sshlogin组的用户才可以通过ssh 登录到你的Ubuntu计算机。<br />
<br />
==== 启动 sshd来监听不同的端口 ====<br />
<br />
由于近来自动扫描ssh和暴力攻击工具的大量增长,很多装有ssh的用户和管理员决定给ssh用一个非标准的tcp端口,标准的sshd侦听端口是 tcp/22,并且暴力扫描攻击工具都典型的被配置成侦听这个端口用来查找后门。 <br />
<br />
尽管从使用简单密码的ssh登陆切换到使用基于键盘方式的登陆,就象在指南中下部分我们要讨论的显著减少了自动工具猜测出一个正确的在你的系统的登陆的机会,一些人觉得加入更多偏僻字的层数可能更会增强安全性。 <br />
<br />
如果你曾考虑过在非标准端口上运行的你的sshd分支,例如一个常量需要使用-p或者-P来切换不同的ssh工具,或者通过修改配置文件这种更长久的方式来检验端口改变的正确,并且接受那些协议,然后改变侦听端口是十分琐碎的。 <br />
<br />
仅仅增加一个或更多的端口在你的 /etc/ssh/sshd_config 文件中,因此: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
如果你希望侦听tcp/22,和tcp/2222端口,例如,局域网连接使用传统方式,但外部连接使用tcp/2222端口。要完成这些,不需要在你的路由器配置网络地址翻译规则或者类似的东西,只要增加这2条指令到 /etc/ssh/sshd_cfig:&nbsp; <br><br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 22</nowiki></code>'''<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要忘记保存文件,和重新启动你的sshd指令: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
使改变生效。 <br />
<br />
= '''基于RSA key登陆''' =<br />
<br />
基于key的授权是可用的ssh授权方法中的一种,因此简单的密码(Ubuntu默认密码)和Kerberos标签。基于Key的验证的几个优点比密码验证更好,至于例子这个key的值就十分明显的很难被暴力破解,或以大量的关键字为条件来猜测弱密码。 <br />
<br />
数字键也是如此,是对极其相似事物的一个比方,所以可以在可能出现弱密码的地方显示密码安全的程度。使用基于Key登录的ssh 是比使用弱密码的登录,普遍认为更安全的。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png ''注解''''':''' ''同时生成一套能够使用openssh的RSA key而不需要密码是可能的,简单讲,通过ssh登陆不要密码,这个指导书没有描述或者认定这种用法是很不安全的.如果这个缺少密码的key落入其他人手 中,就如你的授权一样,应此所有允许这些key的系统安全都很容易受到威胁,在一些情况下,例如不安全的群环境中,需要有完全没有密码的登陆,但是,这本书没有解释制造这种key的过程。'' <br />
<br />
' <br />
<br />
这部分将说明启动基本Key登录的ssh ,生成一套公有/私有RSA密匙,并使用它们由OpenSSH登录你的Ubuntu计算机。 <br />
<br />
注意:Key是在本地(客户机)生成的,并且传输到远程计算机(服务器)上,用于在本地(客户机)登入到远程计算机(服务器)。<br />
<br />
==== 生成 RSA 密匙 ====<br />
<br />
第一步包括生成一组用于验证的RSA 密匙。代表性意思是,你将在想要通过某台电脑去远程登陆其他电脑的这台机器上做这些事情,但是这不是非常重要,因为你总是可以到处把你的密匙安装到需要的机器上。到生成一个RSA 公有/私有密匙,使用下列命令行: <br />
<br />
<code><nowiki>b@tsh:~$ ssh-keygen -t rsa</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
你必须在一个位置保存你的密匙,和一串对应于你的密匙的passphrase(密码短语口令)注5。当选择passphrase对于密匙时,应选择非常坚 固的passphrase,和便于记忆的,和记录它的位置的安全。这passphrase必须使用钥匙,在每次你要登录到一个基于密匙的系统: <br />
<pre>生成公有/私有RSA密匙对。<br />
进入保证密匙的文件(/home/b/.ssh/id_rsa):<br />
进入passphrase(empty for no passphrase):<br />
再次进入同一passphrase:<br />
你的验证文件保存在/home/b/.ssh/id_rsa.<br />
你的公有密匙保存在 /home/b/.ssh/id_rsa.pub.<br />
</pre> <br />
祝贺你现在已经有了密匙组。现在布置你的系统已允许你的登录它们。 <br />
<br />
==== 在远程电脑寄存密匙 ====<br />
<br />
假设你想使用key的远程ubuntu已经运行了ssh后台程序,接下来放置你自己key对的公共部分在那些电脑上是十分简单的,例如,如果你喜 欢开始用基于key的方式登陆一个叫madsion的远程电脑,并且madsion正在运行sshd,并且能够用名字通过网络来到达这台机器,就可以很简 单的用sshcopy这个命令来恰当的放置你的key: <code><nowiki>b@tsh:~$ssh-copy-id -i ~/.ssh/id_rsa.pub b@madison</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
==== 登录测试 ====<br />
<br />
接下来, 你将要登录测试,配置连接到机器并使用你的passphrase来解开密匙: <br />
<br />
<code><nowiki>b@tsh:~$ssh madison</nowiki></code> <br />
<br />
你会看到一个要你给出key的passphrase的命令提示符: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| Enter passphrase for key '/home/b/.ssh/id_rsa':<br />
|}<br />
<br />
<br> 输入你的passphrase,并把madison设置为允许从基于密匙的登录,你将要使用它登录。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png '''''注解'':''' 上述的例子只是:一个例子!代替用户名,在这个例子中,机器名用你自己实际的名字是为了增加你成功的机会。&nbsp;;-) <br />
<br />
== '''疑难解答''' ==<br />
<br />
如果你不是被提示要求passphrase,而是仅仅得到 <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| b@madison's password:<br />
|}<br />
<br />
<br> 提示同样使用密码登录,然后读取。有一些情况可以预防向上面提到的这种情况。在默认的Ubuntu安装里,上面的例子能够运行。如果不,下列各项条件,例如这些时常发生的原因: <br />
<br />
在远程计算机上,确认 /etc/ssh/sshd_config包含下列各项,和删除它们的注解; <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
|}<br />
<br />
<br> 如果已经加它们,或已删除注解,那么重要启动sshd,并重新再试一个登录。如果你现在得到了passphrase的提示,那要祝贺你可以用密匙登录了!<br />
<br />
== '''远程登录''' ==<br />
<br />
如过你已经成功建立了一个基于RAS密匙的登陆,你可能希望这是你Ubuntu系统上唯一可接受的授权方式,完全放弃弱密码授权.按照这个路线,将能确保自动暴力扫描和攻击工具对你的公共系统攻击更加困难,提前提醒,你一旦丢失了密匙,你会发现你自己也被关在系统外面! <br />
<br />
从通知你的sshd不允许弱密码,到只是简单的使用sudo和你喜欢的编辑软件编辑 /etc/ssh/sshd_config,修改下例选项: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#PasswordAuthentication yes</nowiki></code>''<br />
|}<br />
<br />
<br> 删去注释,修改 ''yes'' 为 ''no'': <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PasswordAuthentication no</nowiki></code>'''<br />
|}<br />
<br />
<br> 保存文件,并重新启动sshd以使弱密码验证无效。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconDialog-Warning1.png '''警告'''&nbsp;: 第二次警告,使弱密码验证无效行为,和没有使用密匙登录,或丢失了你的密匙,你并被锁在你的机器外面了。当然,你仍然可以经过控制台登录机器上,但这可能不是那么容易,如果你的电脑是500哩远呢!你已被再次警告这样是不行的''!'' <br />
<br />
此外,你可以改变允许使用基于密匙的登录的登录指令,到执行策略为以基于密码的登录。你可以做这个通过改变: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>PermitRootLogin yes</nowiki></code>''<br />
|}<br />
<br />
<br> to <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PermitRootLogin without-password</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要由于没有密码而被警告.这并不意味着一个人用root登陆的时候不需要提供密码,仅仅相当,这意味着没有人可以用密码认证的方法使用root来登陆,意味着用root登陆的时候可能只能使用公共密匙方式登陆。<br />
<br />
= '''资源''' =<br />
<br />
更多资源与高级配置OpenSSH的安全性在以下表格中。 <br />
<br />
==== 本地系统资源 ====<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>man sshd</nowiki></code> <br />
| System manual page for the <code><nowiki>sshd</nowiki></code> server daemon<br />
|-<br />
| <code><nowiki>man sshd_config</nowiki></code> <br />
| System manual page for the <code><nowiki>/etc/ssh/sshd_config</nowiki></code> configuration file<br />
|-<br />
| <code><nowiki>man ssh-copy-id</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-copy-id</nowiki></code> application<br />
|-<br />
| <code><nowiki>man ssh-keygen</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-keygen</nowiki></code> application<br />
|-<br />
| <code><nowiki>/etc/ssh/sshd_config</nowiki></code> <br />
| The OpenSSH Secure Shell Daemon (<code><nowiki>sshd</nowiki></code>) configuration file<br />
|}<br />
<br />
==== WWW Resources ====<br />
<br />
[http://www.debian-administration.org/articles/87 Keeping SSH access secure] <br />
<br />
[http://www.openssh.org/ OpenSSH Website] <br />
<br />
[http://www.debian-administration.org/articles/152 Password-less logins with OpenSSH] <br />
<br />
注1: 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 <br />
<br />
注2: (rcp) 远端复制协议。该协议允许用户从网络的一个远端主机或者服务器上的文件系统中上载和下载文件。远端复制协议使用TCP协议来确保数据传输的可靠性。 <br />
<br />
注3: 原处为"inetd" 意思就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。 <br />
<br />
注4: xinetd(eXtended InterNET services daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。 <br />
<br />
注5: 相对“密码”(password)而言,密码短语(passphrase)口令以其更为严密的安全性正受到IT界的广泛关注。在功能上,passphrase同密码一样,只是长度较密码长。通常passphrase使用4到5个单词取代原来数字、字母结合的方式。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=OpenSSH%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B&diff=144048
OpenSSH高级教程
2011-05-27T09:25:00Z
<p>Lxr1234:这里比较容易出错/* 基于RSA key登陆 */</p>
<hr />
<div>= '''OpenSSH 高级教程''' =<br />
<br />
原文出处:官方Wiki-[https://help.ubuntu.com/community/AdvancedOpenSSH AdvancedOpenSSH] <br />
<br />
原文作者: <br />
<br />
授权许可: <br />
<br />
*[http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0] <br />
*[http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]<br />
<br />
翻译人员:fiftymetre <br />
<br />
校正人员:millenniumdark <br />
<br />
贡献人员:sighforever <br />
<br />
适用版本: <br />
<br />
文章状态:等待校正 <br />
<br />
----<br />
<br />
译者的话:第一次翻译这英文文章,译的不好的地方也许大家包含,我会努力在下一章中尽我所能的提高翻译质量。翻译这篇文章时,还特意找一了本“SSH权威指南”研究了一下,以前在win下都是用SSH Secure Shell来跟ubuntn来传文件的呵呵。但ubuntu6.06桌面版本默认安装却没有安装SSH。 <br />
<br />
----<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
这翻译。。。非常生硬。我改了几句,发现要改的太多了。只好算了。&nbsp; 有的地方把配置文件中的指令都翻译了。这OpenSSH可不懂中文写的配置文件。&nbsp; -- millenniumdark <br />
<br />
要改的地方实在太多,正好我这两天在学这个,一点点改吧&nbsp; -- sighforever <br />
<br />
<br><br />
<br />
= '''简介''' =<br />
<br />
这篇指南在Ubuntu OpenSSH的默认配置基础上,着重介绍了能够大幅增加安全性的高级配置技巧。它详细论述了两方面内容:<br />
#服务器端的特定配置方式;<br />
#通过与明文密码相比较,阐述了利用Rivest Shamir Adleman (RSA) 算法(注1)生成密钥登陆 OpenSSH 服务器的过程。<br> <br />
<br />
<br><br />
<br />
= '''目标读者''' =<br />
<br />
为了能够更好的使用本教程 ,读者应该是一个善于使用命令行程序的Ubuntu用户,能够使用bash环境,并能够在基于控制台的文本编辑器中编辑系统配置文件。另外,读者应该知道如何启动和关闭系统守护进程,并且对OpenSSH程序的安装方式和使用目的有一个大致的了解。 <br />
<br />
<br><br />
<br />
<br><br />
<br />
<h1> <b>关于 OpenSSH</b> </h1><br />
<p>OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议), rcp(注2)都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。<br /> <br />
</p><p><br /><br />
</p><p><br /><br />
</p><br />
<br />
= '''OpenSSH 服务 (sshd)''' =<br />
<br />
OpenSSH服务,sshd,是一个典型的独立守护进程(standalone daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。本章将介绍此配置文件中的默认配置,并说明如何修改这些配置来提高sshd的安全性。本章的行文方式为:先使用斜体字简单说明默认设置(如:''Port 22''), 然后在下一行中使用粗体字 (如:'''Protocol 2''')介绍为了增强安全防护而作的修改。 <br />
<br />
在改变您的sshd配置文件之前,请先备份您的/etc/ssh/sshd_config文件,在终端(shell)中输入下列命令: <br />
<br />
<code><nowiki>sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
<code>如果这个文件不存在,证明您还没有安装OpenSSH,请通过软件仓库安装OpenSSH-server程序。注<br />
意,在/etc/ssh/文件夹下<br />
还有一个ssh_conf文件,它是SSH客户端的配置文件,在此请不要修改它。</code><code></code> <br />
<br />
如果您愿意,您可以使用下面的命令保护您的配置文件不会被意外的修改。 <br />
<br />
<code><nowiki>sudo chmod a-w /etc/ssh/sshd_config.original</nowiki></code> <br />
<br />
以这种方式备份配置文件是管理您的Ubuntu GNU/Linux系统的最好方法。如果当您需要将应用程序恢复到默认配置或者当您因为操作失误或配置文件修改错误而导致应用程序不能运行的时候,您可以很方便的进行操作。 <br />
<br />
如果您已经保存好了您的/etc/ssh/sshd_config文件,你就可以放心的实验本教程中所提到的配置方法了。当您修改完配置文件后,您必须保存/etc/ssh/sshd_config文件,并使用下面的命令重新启动sshd,才能使更改结果起作用: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
== OpenSSH服务的建议设定 ==<br />
<br />
Ubuntu中,OpenSSH的默认配置要比其他GNU linux发行版中的配置更为安全,但是,如果按照本章讲解的方式进行配置,其安全程度还可以进一步提高。但是在一些特殊条件下,本文中的配置可能不适合您的环境要求,这时,您就要权衡环境需求与安全性要求,做出折中的配置。<br> <br />
<br />
=== 登录 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki></nowiki></code>'' ''<tt>LogLevel&nbsp;INFO</tt>''<br />
|}<br />
<br />
在默认的设置下,sshd的登录日志以INFO级别写入AUTH系统日志设备(SyslogFacility)。如果ssh作为你远程控制Ubuntu主机的主要方式,您应该考虑将日志级别由INFO提升为VERBOSE。这样,在日志中将会记录更多有关登录成功和登录失败的信息。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>LogLevel&nbsp;VERBOSE</tt>'''<br />
|}<br />
<br />
<br> 这样,所有ssh登录成功信息,和未成功登录的信息都以VERBOSE的日志级别记录在你的AUTH文件中(/var/log/auth.log)。<br />
<br />
=== 验证 ===<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>LoginGraceTime 120</nowiki></code>''<br />
|}<br />
<br />
默认设置下,通过sshd登录Ubuntu后,必须在出现操作提示符的120秒(2分钟)内登录系统,不然sshd将会自动切断与主机的连接。这个时间值可以通过LoginGraceTime进行设置 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>LoginGraceTime 20</nowiki></code>'''<br />
|}<br />
<br />
<br> 将LoginGraceTime设置为20秒。可以有效的防御自动化阻遏(thwarting automated),暴力攻击ssh,和拒绝服务式攻击(DDOS)。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>X11Forwarding yes</nowiki></code>''<br />
|}<br />
<br />
<br>如果你不希望有人能够通过ssh使用图形用户界面的程序(这些程序通过SSH通道-SSH tunnel显示),你可以通过X11Forwarding指令将其关闭,由此来减少很多攻击的可能。<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>X11Forwarding no</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,sshd的X11 forwarding功能被关闭了。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconWarning3.png '''警告''': 我们并不推荐关闭X11 forwarding,如果某个服务是基于使用X11或LTSP的,将X11 Forwarding关闭将导致此服务不可用。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#Banner /etc/issue.net</nowiki></code>''<br />
|}<br />
<br />
<br> 显示一个不欢迎的警示条,或更好的方法对于安全是件好事。它将告知好奇的人,或者未经许可的恶意登录到你的OpenSSH服务器的人,远程访问你的计算机是必须经过许可,并且需要用户授权。 <br />
<br />
<br> <br />
<br />
有一个的不欢迎警示条目可以帮你成功起诉攻击者,或别的组织未经许可的尝试经由ssh访问你的服务器。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Banner /etc/issue.net</nowiki></code>'''<br />
|}<br />
<br />
<br> 现在,/etc/ssh/sshd_config中的警示条已经被激活。您可以使用下列的流程创建警句条的实际实际内容。在这里我们给出了一个例子: <br />
<br />
使用sudo启动你喜欢的文本编辑软件,创建文件/etc/issue,并把下面的文字拷入此文件作为警示条的内容: <br />
<pre>***************************************************************************<br />
NOTICE TO USERS<br />
This computer system is the private property of its owner, whether<br />
individual, corporate or government. It is for authorized use only.<br />
Users (authorized or unauthorized) have no explicit or implicit<br />
expectation of privacy.<br />
Any or all uses of this system and all files on this system may be<br />
intercepted, monitored, recorded, copied, audited, inspected, and<br />
disclosed to your employer, to authorized site, government, and law<br />
enforcement personnel, as well as authorized officials of government<br />
agencies, both domestic and foreign.<br />
By using this system, the user consents to such interception, monitoring,<br />
recording, copying, auditing, inspection, and disclosure at the<br />
discretion of such personnel or officials. Unauthorized or improper use<br />
of this system may result in civil and criminal penalties and<br />
administrative or disciplinary action, as appropriate. By continuing to<br />
use this system you indicate your awareness of and consent to these terms<br />
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the<br />
conditions stated in this warning.<br />
****************************************************************************<br />
</pre> <br />
<code><nowiki>保存文件,并且创建一个符号连结到 /etc/issue.net 文件使用下列命令:</nowiki></code> <br />
<br />
<code><nowiki>sudo ln -s /etc/issue /etc/issue.net</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
重新启动sshd后,任何用户想要登陆时都会在登陆提示符前看到上面的信息。所有的非授权访问者将受到一个明确的消息"你的电脑只能通过授权才能使用,不欢迎非授权用户使用。上面例子中的警告条是根据美国国防部(US DEPARTMENT OF DEFENCE)的警告条的修改而成的,完全适合专业用户使用,而且更适合个人用户。 <br />
<br />
另外,当您作了此设定时,本地控制台的登录会同样显示来自/etc/issue文件的信息,也就是说坐到您电脑前使用你电脑的人也会收到同样的警告信息。如果你不想这样,请删除由符号链接生成的issue.net文件,然后新建一个/etc/issue.net文件并将警示信息写入到这个文件中,并且将/etc/issue清空。/etc/issue没有警示信息,警告将只显示给那些远程访问系统的人。<br />
<br />
= '''进一步的配置技巧''' =<br />
<br />
下面的内容是一些额外的暗示和一些配置一个更加安全的openssh安装的技巧,这些技巧利用一些不包含在默认的ubuntussh配置文件中的指令,并且提出其他加强你的ssh安装安全的方法。 <br />
<br />
==== 允许和拒绝用户和用户组 ====<br />
<br />
在配置文件中你可以使用一些指令来允许或者拒绝一些特定用户或者用户组用ssh登陆.这个方法更加细致的控制哪些人可以通过ssh来进入你的Ubuntu电脑。 <br />
<br />
例如,如果你想只允许jhendrix和svaughan通过ssh登陆,你可以向这样在你的/etc/ssh中使用allowusers指令。 <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>AllowUsers</tt>'''''' jhendrix svaughan'''<br />
|}<br />
<br />
<br> 如果你不想让所有用户能过 ssh 登陆,除了使用者 wgates,或sballmer然后你可以使用DenyUsers命令添加到/etc/ssh/sshd_config中,像这样: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<tt>DenyUsers</tt>''''''wgates sballmer'''<br />
|}<br />
<br />
<br> 最后,再看一个例子,你可以这样配置你的OpenSSH服务,只有用户属于系统组才允许通过ssh 登录。在这个例子中,我们将执行一些必要手段只允许SSH的用户都是小组成员sshlogin。 <br />
<br />
<code><nowiki>sudo addgroup --gid 450 sshlogin</nowiki></code> <br />
<br />
<code><nowiki>sudo adduser <username> sshlogin</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
在以上的例子中是用'&lt;username&gt;'代替你的用户名加入到sshlogin系统组。最后,编辑你的 /etc/ssh/sshd_config,并增添allowgroups指令: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>AllowGroups sshlogin</nowiki></code>'''<br />
|}<br />
<br />
<br> 重新启动 sshd,并且只有属于sshlogin组的用户才可以通过ssh 登录到你的Ubuntu计算机。<br />
<br />
==== 启动 sshd来监听不同的端口 ====<br />
<br />
由于近来自动扫描ssh和暴力攻击工具的大量增长,很多装有ssh的用户和管理员决定给ssh用一个非标准的tcp端口,标准的sshd侦听端口是 tcp/22,并且暴力扫描攻击工具都典型的被配置成侦听这个端口用来查找后门。 <br />
<br />
尽管从使用简单密码的ssh登陆切换到使用基于键盘方式的登陆,就象在指南中下部分我们要讨论的显著减少了自动工具猜测出一个正确的在你的系统的登陆的机会,一些人觉得加入更多偏僻字的层数可能更会增强安全性。 <br />
<br />
如果你曾考虑过在非标准端口上运行的你的sshd分支,例如一个常量需要使用-p或者-P来切换不同的ssh工具,或者通过修改配置文件这种更长久的方式来检验端口改变的正确,并且接受那些协议,然后改变侦听端口是十分琐碎的。 <br />
<br />
仅仅增加一个或更多的端口在你的 /etc/ssh/sshd_config 文件中,因此: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
如果你希望侦听tcp/22,和tcp/2222端口,例如,局域网连接使用传统方式,但外部连接使用tcp/2222端口。要完成这些,不需要在你的路由器配置网络地址翻译规则或者类似的东西,只要增加这2条指令到 /etc/ssh/sshd_cfig:&nbsp; <br><br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
<br> <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>Port 22</nowiki></code>'''<br />
|-<br />
| '''<code><nowiki>Port 2222</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要忘记保存文件,和重新启动你的sshd指令: <br />
<br />
<code><nowiki>sudo /etc/init.d/ssh restart</nowiki></code> <br />
<br />
使改变生效。 <br />
<br />
= '''基于RSA key登陆''' =<br />
<br />
基于key的授权是可用的ssh授权方法中的一种,因此简单的密码(Ubuntu默认密码)和Kerberos标签。基于Key的验证的几个优点比密码验证更好,至于例子这个key的值就十分明显的很难被暴力破解,或以大量的关键字为条件来猜测弱密码。 <br />
<br />
数字键也是如此,是对极其相似事物的一个比方,所以可以在可能出现弱密码的地方显示密码安全的程度。使用基于Key登录的ssh 是比使用弱密码的登录,普遍认为更安全的。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png ''注解''''':''' ''同时生成一套能够使用openssh的RSA key而不需要密码是可能的,简单讲,通过ssh登陆不要密码,这个指导书没有描述或者认定这种用法是很不安全的.如果这个缺少密码的key落入其他人手 中,就如你的授权一样,应此所有允许这些key的系统安全都很容易受到威胁,在一些情况下,例如不安全的群环境中,需要有完全没有密码的登陆,但是,这本书没有解释制造这种key的过程。'' <br />
<br />
' <br />
<br />
这部分将说明启动基本Key登录的ssh ,生成一套公有/私有RSA密匙,并使用它们由OpenSSH登录你的Ubuntu计算机。 <br />
<br />
注意:Key是在本地(客户机)生成的,并且传输到远程计算机(服务器)上,用于在本地(客户机)登入到远程计算机(服务器)。<br />
<br />
==== 生成 RSA 密匙 ====<br />
<br />
第一步包括生成一组用于验证的RSA 密匙。代表性意思是,你将在想要通过某台电脑去远程登陆其他电脑的这台机器上做这些事情,但是这不是非常重要,因为你总是可以到处把你的密匙安装到需要的机器上。到生成一个RSA 公有/私有密匙,使用下列命令行: <br />
<br />
<code><nowiki>b@tsh:~$ ssh-keygen -t rsa</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
你必须在一个位置保存你的密匙,和一串对应于你的密匙的passphrase(密码短语口令)注5。当选择passphrase对于密匙时,应选择非常坚 固的passphrase,和便于记忆的,和记录它的位置的安全。这passphrase必须使用钥匙,在每次你要登录到一个基于密匙的系统: <br />
<pre>生成公有/私有RSA密匙对。<br />
进入保证密匙的文件(/home/b/.ssh/id_rsa):<br />
进入passphrase(empty for no passphrase):<br />
再次进入同一passphrase:<br />
你的验证文件保存在/home/b/.ssh/id_rsa.<br />
你的公有密匙保存在 /home/b/.ssh/id_rsa.pub.<br />
</pre> <br />
祝贺你现在已经有了密匙组。现在布置你的系统已允许你的登录它们。 <br />
<br />
==== 在远程电脑寄存密匙 ====<br />
<br />
假设你想使用key的远程ubuntu已经运行了ssh后台程序,接下来放置你自己key对的公共部分在那些电脑上是十分简单的,例如,如果你喜 欢开始用基于key的方式登陆一个叫madsion的远程电脑,并且madsion正在运行sshd,并且能够用名字通过网络来到达这台机器,就可以很简 单的用sshcopy这个命令来恰当的放置你的key: <code><nowiki>b@tsh:~$ssh-copy-id -i ~/.ssh/id_rsa.pub b@madison</nowiki></code> <br />
<br />
<code><nowiki></nowiki></code> <br />
<br />
==== 登录测试 ====<br />
<br />
接下来, 你将要登录测试,配置连接到机器并使用你的passphrase来解开密匙: <br />
<br />
<code><nowiki>b@tsh:~$ssh madison</nowiki></code> <br />
<br />
你会看到一个要你给出key的passphrase的命令提示符: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| Enter passphrase for key '/home/b/.ssh/id_rsa':<br />
|}<br />
<br />
<br> 输入你的passphrase,并把madison设置为允许从基于密匙的登录,你将要使用它登录。 <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconNote.png '''''注解'':''' 上述的例子只是:一个例子!代替用户名,在这个例子中,机器名用你自己实际的名字是为了增加你成功的机会。&nbsp;;-) <br />
<br />
== '''疑难解答''' ==<br />
<br />
如果你不是被提示要求passphrase,而是仅仅得到 <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| b@madison's password:<br />
|}<br />
<br />
<br> 提示同样使用密码登录,然后读取。有一些情况可以预防向上面提到的这种情况。在默认的Ubuntu安装里,上面的例子能够运行。如果不,下列各项条件,例如这些时常发生的原因: <br />
<br />
在远程计算机上,确认 /etc/ssh/sshd_config包含下列各项,和删除它们的注解; <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>PubkeyAuthentication yes</nowiki></code><br />
|}<br />
<br />
<br> 如果已经加它们,或已删除注解,那么重要启动sshd,并重新再试一个登录。如果你现在得到了passphrase的提示,那要祝贺你可以用密匙登录了!<br />
<br />
== '''远程登录''' ==<br />
<br />
如过你已经成功建立了一个基于RAS密匙的登陆,你可能希望这是你Ubuntu系统上唯一可接受的授权方式,完全放弃弱密码授权.按照这个路线,将能确保自动暴力扫描和攻击工具对你的公共系统攻击更加困难,提前提醒,你一旦丢失了密匙,你会发现你自己也被关在系统外面! <br />
<br />
从通知你的sshd不允许弱密码,到只是简单的使用sudo和你喜欢的编辑软件编辑 /etc/ssh/sshd_config,修改下例选项: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>#PasswordAuthentication yes</nowiki></code>''<br />
|}<br />
<br />
<br> 删去注释,修改 ''yes'' 为 ''no'': <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PasswordAuthentication no</nowiki></code>'''<br />
|}<br />
<br />
<br> 保存文件,并重新启动sshd以使弱密码验证无效。 <br />
<br />
<br> <br />
<br />
https://help.ubuntu.com/community/IconsPage?action=AttachFile&amp;do=get&amp;target=IconDialog-Warning1.png '''警告'''&nbsp;: 第二次警告,使弱密码验证无效行为,和没有使用密匙登录,或丢失了你的密匙,你并被锁在你的机器外面了。当然,你仍然可以经过控制台登录机器上,但这可能不是那么容易,如果你的电脑是500哩远呢!你已被再次警告这样是不行的''!'' <br />
<br />
此外,你可以改变允许使用基于密匙的登录的登录指令,到执行策略为以基于密码的登录。你可以做这个通过改变: <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| ''<code><nowiki>PermitRootLogin yes</nowiki></code>''<br />
|}<br />
<br />
<br> to <br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| '''<code><nowiki>PermitRootLogin without-password</nowiki></code>'''<br />
|}<br />
<br />
<br> 不要由于没有密码而被警告.这并不意味着一个人用root登陆的时候不需要提供密码,仅仅相当,这意味着没有人可以用密码认证的方法使用root来登陆,意味着用root登陆的时候可能只能使用公共密匙方式登陆。<br />
<br />
= '''资源''' =<br />
<br />
更多资源与高级配置OpenSSH的安全性在以下表格中。 <br />
<br />
==== 本地系统资源 ====<br />
<br />
{| cellspacing="0" border="1"<br />
|-<br />
| <code><nowiki>man sshd</nowiki></code> <br />
| System manual page for the <code><nowiki>sshd</nowiki></code> server daemon<br />
|-<br />
| <code><nowiki>man sshd_config</nowiki></code> <br />
| System manual page for the <code><nowiki>/etc/ssh/sshd_config</nowiki></code> configuration file<br />
|-<br />
| <code><nowiki>man ssh-copy-id</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-copy-id</nowiki></code> application<br />
|-<br />
| <code><nowiki>man ssh-keygen</nowiki></code> <br />
| System manual page for the <code><nowiki>ssh-keygen</nowiki></code> application<br />
|-<br />
| <code><nowiki>/etc/ssh/sshd_config</nowiki></code> <br />
| The OpenSSH Secure Shell Daemon (<code><nowiki>sshd</nowiki></code>) configuration file<br />
|}<br />
<br />
==== WWW Resources ====<br />
<br />
[http://www.debian-administration.org/articles/87 Keeping SSH access secure] <br />
<br />
[http://www.openssh.org/ OpenSSH Website] <br />
<br />
[http://www.debian-administration.org/articles/152 Password-less logins with OpenSSH] <br />
<br />
注1: 它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 <br />
<br />
注2: (rcp) 远端复制协议。该协议允许用户从网络的一个远端主机或者服务器上的文件系统中上载和下载文件。远端复制协议使用TCP协议来确保数据传输的可靠性。 <br />
<br />
注3: 原处为"inetd" 意思就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。 <br />
<br />
注4: xinetd(eXtended InterNET services daemon)提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。 <br />
<br />
注5: 相对“密码”(password)而言,密码短语(passphrase)口令以其更为严密的安全性正受到IT界的广泛关注。在功能上,passphrase同密码一样,只是长度较密码长。通常passphrase使用4到5个单词取代原来数字、字母结合的方式。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Ubuntu%E4%B8%AD%E6%96%87:%E6%96%B9%E9%92%88&diff=144026
Ubuntu中文:方针
2011-05-27T05:18:52Z
<p>Lxr1234:</p>
<hr />
<div>==草案一==<br />
'''这个只是我个人观点,具体请询问行政员'''<br />
;1.本wiki乃关于ubuntu和linux技术站点,不得再此发布广告。<br />
;2.任何页面至少要有30字节的纯文字,否则将于12小时后删除。<br />
;3.也不可在自己或他人的用户页发布广告。<br />
;4.不得侮辱他人和挑起事端。<br />
;5.发布广告者封 IP 6个月,注册用户的帐号一年。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=Ubuntu%E4%B8%AD%E6%96%87:%E6%96%B9%E9%92%88&diff=144025
Ubuntu中文:方针
2011-05-27T05:16:51Z
<p>Lxr1234:</p>
<hr />
<div>==草案一==<br />
'''这个只是我个人观点,具体请询问行政员'''<br />
;1.本wiki乃关于ubuntu和linux技术站点,不得再此发布广告。<br />
;2.任何页面至少要有30字节的纯文字,否则将于12小时后删除。<br />
;3.也不可在自己或他人的用户页发布广告。<br />
;4.不得侮辱他人和挑起事端。</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E7%BD%91%E7%AB%99%E6%9E%B6%E8%AE%BE%E6%9C%8D%E5%8A%A1&diff=143730
网站架设服务
2011-05-13T05:02:07Z
<p>Lxr1234:</p>
<hr />
<div>{| style="margin: 0pt 0pt 1em 1em; font-size: 0.9em; width: 95%;"<br />
|- style="background-color: rgb(219, 186, 117);"<br />
| style="width: 30%;" | '''网站架设''' <br />
| style="width: 33%;" | '''CMS架设''' <br />
| style="width: 32%;" | '''论坛服务'''<br />
|- style="vertical-align: top;"<br />
| style="background-color: rgb(255, 255, 204);" | <br />
*[[ubuntu-servers|菜鸟入门快速教程]]<br />
*[[LAMP 服务器安装配置|LAMP 服务器安装配置]] <br />
*[[Apache设置Chroot环境|Apache设置Chroot环境]] <br />
*[[Apache虚拟主机指南|Apache虚拟主机指南]] <br />
*[[CbandHowTo|限制Apache带宽流量]] <br />
*[[Apache配置文件httpd.conf内容翻译|Apache配置文件httpd.conf内容翻译]] <br />
*[[源码安装LAMP|源码安装LAMP]] <br />
*[[Tomcat6|Tomcat6架设,并设置成自动启动(8.04版本)]] <br />
*[[Tomcat与Apache整合配置指南|Tomcat与Apache整合配置指南]] <br />
*[[JBoss 5.0.0GA安装指南|JBoss 5.0.0GA安装指南]] <br />
*[[Zope3宝典|Zope3宝典]] <br />
*[[Zope组件架构和接口|Zope组件架构和接口]] <br />
*[[Zope中的基础对象|Zope中的基础对象]] <br />
*[[简单的TODO应用程序|简单的TODO应用程序]] <br />
*[[三十分钟学会Zope3|三十分钟学会Zope3]] <br />
*[[Zope配置文件参考|Zope配置文件参考]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
*[[Plone安装指南|Plone安装指南]] <br />
*[[Plone与Apache整合配置指南|Plone与Apache整合配置指南]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
*[[PhpBB3|PhpBB3服务安装设置]] <br />
<br />
|-<br />
| colspan="3" style="text-align: center;" | &nbsp;<br />
|- style="background-color: rgb(219, 186, 117);"<br />
| '''维基服务''' <br />
| '''版本控制''' <br />
| '''&nbsp;其它服务'''<br />
|- style="vertical-align: top;"<br />
| style="background-color: rgb(255, 255, 204);" | <div lang="zh" dir="ltr" id="Include_NetworkAdvancedSerivce.2FWikiService"><br />
*[[MoinMoin安装设置|MoinMoin安装设置]] <br />
*[http://moinmo.in/ MoinMoin] <br />
*[http://www.woodpecker.org.cn:9081/doc/SKSIG/DriveIntoMoinPub/ MoinMoin导览-从入门到精通] <br />
</div> <br />
| style="background-color: rgb(255, 255, 204);" | <br />
*[[CVS服务安装设置|CVS服务安装设置]] <br />
*[[SubVersion服务安装设置|SubVersion服务安装设置]] <br />
*[[Git服务器Gitosis安装设置|Git服务器Gitosis安装设置]] <br />
*[http://www.subversion.org.cn/svnbook/nightly/index.html 使用Subversion进行版本控制] <br />
*[[Bzr初学者的经历|Bzr初学者的经历]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
*[[Squid配置详解|Squid配置详解]] <br />
*[[EGroupware安装设置|eGroupware安装设置]] <br />
*[[Trac的安装设置|Trac的安装设置]]<br />
<br />
|}</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=NVIDIA&diff=143564
NVIDIA
2011-04-30T02:06:01Z
<p>Lxr1234:/* 被抛弃的Xorg.conf 配置文件 */</p>
<hr />
<div>(K)ubuntu 下安装NVIDIA官方显卡驱动(不同于开源驱动,官方驱动对显卡的支持显然更好,而且通常更新频繁)。这里的例子:Kubuntu 10.04 32位环境 ,Nvidia7300显卡,NVIDIA 185.18驱动。 <br />
==驱动的四种来源==<br />
Ubuntu 中的显卡要么是开源驱动nouveau(livecd安装时用的驱动),受限制驱动列表(源),要么是PPA源(一般是私人建的,方便群众用),要么是自己下载编译的驱动(也就是本页教程),自己编译驱动是需要卸载系统安装的旧驱动的。因为手动安装二进制包的时候不受本地软件库管理,也就不能自动卸载原来的驱动。<br />
<br />
==受限制驱动列表(源)==<br />
等同于该命令<br />
<pre>sudo apt-get install nvidia-current nvidia-settings</pre><br />
<br />
==编译驱动==<br />
=== 下载驱动 ===<br />
<br />
Nvidia中文官网是 [http://www.nvidia.cn/page/home.html http://www.nvidia.cn/page/home.html]<br> <br />
<br />
[[Image:Nvidia4.png]]<br />
<br />
点“驱动下载”,转到这里。<br />
<br />
[[Image:Nvidia2.jpg]] <br />
<br />
点“搜索”查找到 185.18驱动。<br />
<br />
[[Image:Nvidia1.jpg]] <br />
<br />
[[Image:Nvidia3.jpg]]<br> <br />
<br />
[[Image:Nvidia4.jpg]]<br> <br />
<br />
下载下来NVIDIA-Linux-x86-185.18.14-pkg1.run驱动文件,放到 /home/用户名/ 目录下面。<br> <br />
<br />
===编译依赖===<br />
<pre>sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-`uname -r`</pre><br />
===屏蔽开源驱动nouveau===<br />
其实可以跳过,在安装过程那一部,运行驱动安装程序,会问您要不要帮您屏蔽,选择yes退出后重启即可。<br />
下面两种方案只能采取一种。<br />
一、blacklist.conf法<br />
<pre>sudo nano /etc/modprobe.d/blacklist.conf</pre><br />
添加<br />
<pre>blacklist nouveau</pre><br />
二、也可以通过Grub2屏蔽<br />
<pre>sudo nano /etc/default/grub</pre><br />
<pre>GRUB_CMDLINE_LINUX="nomodeset" #修改这行</pre><br />
<pre>sudo update-grub</pre><br />
<br />
=== 注销系统,关闭图形环境 ===<br />
<pre>sudo /etc/init.d/kdm stop #适用于Kubuntu</pre> <br />
<pre>sudo /etc/init.d/gdm stop #适用于Ubuntu</pre><br />
<br />
=== 安装过程 ===<br />
<pre>cd /home/用户名</pre> <pre>sudo sh NVIDIA-Linux-x86-185.18.14-pkg1.run </pre> <br />
或者 <br />
<pre>sudo sh NVIDIA*.run </pre> <br />
安装过程中 <br />
<br />
如果提示有旧驱动,询问是否删除旧驱动,选Yes;<br>如果提示缺少某某模块(modules),询问是否上网下载,选no;<br>如果提示编译模块,询问是否进行编译,选ok;<br>如果提示将要修改Xorg.conf,询问是否允许,选Yes;<br />
===nvidia.ko问题===<br />
如果出现找不到nvidia.ko的问题,参照前面,安装一次受限制驱动列表(源)便可。<br />
=== 启动图形环境 ===<br />
<pre>sudo /etc/init.d/kdm restart #适用于Kubuntu</pre><br />
<pre>sudo /etc/init.d/gdm restart #适用于Ubuntu</pre><br />
===善后===<br />
卸载旧驱动<br />
<pre>sudo apt-get --purge remove nvidia-*<br />
sudo apt-get --purge xserver-xorg-video-nouveau</pre><br />
=== 删除nVidia标识 ===<br />
如果你想去掉在登录屏幕出现之前的nVidia标识,你需要在Xorg配置文件中做些手动修改。<br />
<br />
<pre><nowiki><br />
sudo nano /etc/X11/xorg.conf</nowiki></pre><br />
<br />
* 在Device部分找到Driver "nvidia"这一行 <br />
* 在这一行后面,加上:<br />
<pre><nowiki><br />
Option "NoLogo"</nowiki></pre><br />
* 保存文件,退出。<br />
* 关闭所有程序,然后按''Ctrl-Alt-Backspace''重启X服务器。如果nVidia标识没有了,应该是起作用了。<br />
<br />
== PPA源 ==<br />
<br />
每次升级内核后需要重新编译一次显卡驱动。。。受限制驱动列表(源)那种倒是没事。<br />
<br />
如果嫌弃手动编译安装麻烦,其实如果有人已经有编译好的NVIDIA驱动,方便群众,不需要注销系统去终端,就像安装一个普通软件deb包,完事后重启电脑就可以了。比如 https://launchpad.net/~nvidia-vdpau/+archive/ppa?field.name_filter=&amp;field.status_filter=published&amp;field.series_filter=any&nbsp; 就有打包最新驱动。<br><br />
<br />
参考 [http://wiki.ubuntu.org.cn/Kpackagekit#PPA http://wiki.ubuntu.org.cn/Kpackagekit#PPA] 使用<br />
==被抛弃的Xorg.conf 配置文件==<br />
Xorg.conf之前一直是Ubuntu显卡设定需要修改的文件,某版Xorg更新后,可以不需要该文件就能正常使用显卡设备(默认的 Ubuntu 就是取消了该文件),但是有些应用(删除开机NVIDIA Logo、屏幕旋转)还是得用到它。<br />
其实是改用了/etc/xorg.conf.d/目录存放,这里可以存放多个文件。<br />
<br />
== Nvidia驱动工具 ==<br />
<br />
NVIDIA Server Settings,实际就是编辑的Xorg.conf文件。 <br />
<br />
[[Image:Nvidia5.png]]<br />
<br />
[[Image:Nvidia.png|600px]] <br />
<br />
设定分辨率,Apply是立刻生效,Save to X Configurration File是保存到配置文件,重启后依旧有效。<br> <br />
<br />
[[Image:Nvidia1.png|642x587px]] <br />
<br />
Save to X Configuration File 如果出现如下错误,是因为你是用普通权限的帐号运行的这个工具,没有权限写入配置文件。 <br />
<br />
[[Image:Nvidia2.png]] <br />
<br />
按ALT+F2,输入 <br />
<pre>kdesudo nvidia-settings</pre> <br />
[[Image:Nvidia3.png]] <br />
<br />
这样就以root的身份运行了这个工具,重复之前的设置。<br />
==高清视频硬件加速(硬解)==<br />
<pre>sudo apt-get install libvdpau1</pre><br />
重启后,播放器的视频输出驱动改成'''vdpau''',通常播放高清视频时CPU占用率在10%以下,对比 Video Output driver 是否切换为'''vdpau''',CPU的占用降低应该很明显。<br />
发行版中的VDPAU比较老,而且不是基于官方驱动编译的,使用官方驱动的用户请参见<br />
[http://forum.ubuntu.org.cn/viewtopic.php?f=74&t=286315 Ubuntu 10.04 x64版编译安装ffmpeg,mplayer,x264全教程,支持VDPAU(高清硬解) ]<br />
<br />
==屏幕旋转==<br />
[[Image:NVIDIARight.png|thumb|300px|center|NVIDIA 显卡屏幕右转]]<br />
<br />
Xorg.conf 的NVIDIA字段添加,之后屏幕设置项就可以启用旋转功能。<br />
<pre>Option "RandRRotation" "true" </pre><br />
[[Image:NVIDIA-setting-Right.png|thumb|400px|center|NVIDIA 配置工具的旋转设定]]<br />
<pre>xrandr -o left #左转<br />
xrandr -o right #右转<br />
xrandr -o normal #恢复正常<br />
</pre><br />
==外接显示器==<br />
[[Image:NVIDIATwinView.png|thumb|550px|center|NVIDIA 双屏显示]]<br />
<pre>Option "TwinView" "on"</pre><br />
<br />
==glxgears==<br />
Ubuntu 常用glxgears来评估显卡性能,拿来检测驱动性能,FPS越高越好。<br />
<pre>sudo apt-get install mesa-utils</pre><br />
<pre>qii@qii-K40IN:~$ glxgears <br />
10701 frames in 5.0 seconds = 2140.038 FPS<br />
11023 frames in 5.0 seconds = 2204.520 FPS<br />
11027 frames in 5.0 seconds = 2205.321 FPS<br />
11018 frames in 5.0 seconds = 2203.521 FPS<br />
11024 frames in 5.0 seconds = 2204.797 FPS<br />
</pre><br />
==黑塊==<br />
屏幕莫名其妙出現一組黑塊,可以考慮試著禁用Plymouth,換成啟動過程文本顯示。<br />
<pre>sudo nano /etc/default/grub</pre><br />
相應字段改為<br />
<pre>GRUB_CMDLINE_LINUX_DEFAULT="splash=verbose"</pre><br />
更新Grub2<br />
<pre>sudo update-grub</pre><br />
<br />
== 需要更新的驱动? ==<br />
<br />
[ftp://download.nvidia.com/XFree86/Linux-x86/ ftp://download.nvidia.com/XFree86/Linux-x86/]<br />
<br />
[ftp://download.nvidia.com/XFree86/Linux-x86_64/ ftp://download.nvidia.com/XFree86/Linux-x86_64/]<br />
<br />
[http://linuxtoy.org/search/nvidia http://linuxtoy.org/search/nvidia]<br />
<br />
==参考==<br />
[http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=263478&hilit=nvidia nvidia驱动从安装到配置(解决刷新率, 无标题栏和使用开源驱动等问题)]<br />
<br />
[http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=141431 在内核升级后自动安装nvdia驱动]<br />
[[Category:硬件]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=MySQL&diff=143469
MySQL
2011-04-23T19:24:49Z
<p>Lxr1234:/* 介绍 */</p>
<hr />
<div>==介绍==<br />
是一款免费的数据库程序,为Oracle公司旗下产品。<br />
<br />
==安装MySQL==<br />
要安装 MySQL,可以在终端提示符后运行下列命令:<br />
<pre>sudo apt-get install mysql-server mysql-client #中途会让你输入一次root用户密码</pre><br />
<pre>sudo apt-get install php5-mysql #安装php5-mysql 是将php和mysql连接起来</pre><br />
一旦安装完成,MySQL 服务器应该自动启动。<br />
<br />
<pre>sudo start mysql #手动的话这样启动</pre><br />
<pre>sudo stop mysql #手动停止</pre><br />
<br />
当你修改了配置文件後,你需要重启 mysqld 才能使这些修改生效。<br />
<br />
要想检查 mysqld 进程是否已经开启,可以使用下面的命令:<br />
<pre>pgrep mysqld</pre><br />
如果进程开启,这个命令将会返回该进程的 id。<br />
<br />
==文件结构==<br />
MySQL配置文件:/etc/mysql/my.cnf ,其中指定了数据文件存放路径<br />
<pre>datadir = /var/lib/mysql</pre><br />
如果你创建了一个名为 test 的数据库,那么这个数据库的数据会存放到 /var/lib/mysql/test 目录下。<br />
<br />
==进入MySQL==<br />
<br />
mysql -uroot -p <br />
(输入mysql的root密码)<br />
<pre>qii@ubuntu:~$ mysql -u root -p<br />
Enter password: <br />
Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 37<br />
Server version: 5.1.41-3ubuntu12.3 (Ubuntu)<br />
<br />
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br />
<br />
mysql> <br />
</pre><br />
修改 MySQL 的管理员密码:<br />
<br />
sudo mysqladmin -u root password newpassword<br />
==简单的操作==<br />
显示数据库:<br />
<pre>mysql> show databases;<br />
+--------------------+<br />
| Database |<br />
+--------------------+<br />
| information_schema |<br />
| mysql |<br />
+--------------------+<br />
2 rows in set (0.00 sec)<br />
</pre><br />
<br />
==phpmyadmin管理==<br />
用随便一个支持PHP的web服务器(如[[LAMP 服务器安装配置|Apache]]、[[Nginx]]、[[Lighttpd]]),下载[http://www.phpmyadmin.net/ phpmyadmin],装之。<br />
<pre>sudo apt-get install phpmyadmin #注意这是安装到/usr/share/phpmyadmin</pre><br />
[[Category:服务器]]<br />
[[Category:程序开发]]</div>
Lxr1234
https://wiki.ubuntu.org.cn/index.php?title=%E4%B8%BB%E6%B5%81%E6%A1%8C%E9%9D%A2&diff=143331
主流桌面
2011-04-14T04:31:01Z
<p>Lxr1234:</p>
<hr />
<div>{| style="margin: 0pt 0pt 1em 1em; font-size: 0.9em; width: 95%;"<br />
|- style="background-color: rgb(219, 186, 117);"<br />
| style="width: 31%;" | '''Gnome 桌面'''<br />
| style="width: 33%;" | '''KDE 桌面'''<br />
| style="width: 31%;" | '''Xfce 桌面'''<br />
|- style="vertical-align: top;"<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Ubuntu]]<br />
* [[Gnome桌面技巧]]<br />
* [[Gnome快捷键]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Kubuntu]]<br />
* [[KDE]] <br />
* [[KDE推荐软件]]<br />
<br />
| style="background-color: rgb(255, 255, 204);" | <br />
* [[Xubuntu]]<br />
* [[Xfce4.2用户指南|Xfce4.2官方用户指南]] <br />
* [[Xfce4.2操作手册|Xfce4.2官方操作手册]]<br />
<br />
|}<br />
<br />
[[Category:桌面环境]]</div>
Lxr1234