https://wiki.archlinux.org/api.php?action=feedcontributions&user=Liuzhengyi&feedformat=atom
ArchWiki - User contributions [en]
2024-03-29T06:26:24Z
User contributions
MediaWiki 1.41.0
https://wiki.archlinux.org/index.php?title=ArchWiki:Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236176
ArchWiki:Translation Team (简体中文)
2012-11-21T02:50:25Z
<p>Liuzhengyi: /* 页面维护列表 */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:ArchWiki (简体中文)]]<br />
[[en:ArchWiki Translation Team]]<br />
[[es:ArchWiki Translation Team]]<br />
[[hr:ArchWiki Translation Team]]<br />
[[it:ArchWiki Translation Team]]<br />
[[pl:ArchWiki Translation Team]]<br />
[[tr:ArchWiki_Çeviri_Ekibi]]<br />
Arch Wiki 上有许多中文页面,这些页面是无数中文志愿者劳动的结晶。随着时间推移,有些页面因为没有及时维护,内容严重过时。而目前的翻译工作缺少组织,效率偏低。所以参照西班牙和意大利翻译组的做法,添加这个页面。<br />
<br />
如果希望进行翻译和维护,只需要编辑下面的[[#页面维护列表]],将自己加为页面的维护者。如果列表中还没有要认领翻译的页面,请自行添加。如果因为时间原因无法再维护页面,请及时将自己从维护者列表中删除。<br />
<br />
== 创建翻译 ==<br />
{{注意|如果不准备翻译页面的大部分内容,请尽量不要新建简体中文页面。检查英文页面的更新需要花费不少精力,没有翻译的页面会增加维护负担。}}<br />
# 如果还不知道如何编辑 wiki,请阅读 [[Help:Editing (简体中文)|编辑帮助]]。<br />
# 阅读 [[Help:i18n (简体中文)|i18n帮助]],文章给出了 ArchWiki 国际化和本地化的指南。<br />
# [[Special:UserLogin |登录]] 以进行编辑。<br />
# 选择要翻译的页面,例如从 [[Special:Random|随机页面]] 或[[#页面维护列表 | 页面维护列表]] 中选择一个未翻译完成的页面。假设要翻译 [[Some Page]].<br />
# 进入选择的英文页面,点击页面顶部的 '''编辑'''。<br />
# 添加要翻译文件的语言间链接 (参见[[Help:i18n#Interlanguage links]])。<br />
# 复制所有页面代码。<br />
# 保存页面 (新加了语言链接)<br />
# 访问页面右边新添加的语言链接,应该会进到 [[Some Page (简体中文)]] : {{ic|<nowiki>https://wiki.archlinux.org/index.php/Some_Page_(</nowiki>''简体中文'')}}<br />
# 因为页面不存在,点击 '''创建'''。<br />
# 将显示一个编辑器 - 粘贴复制的英文页面。<br />
# 将文章分类修改为本地化版本,例如将 {{ic|<nowiki>[[Category:Internationalization]]</nowiki>}} 修改为 {{ic|<nowiki>[[Category:Internationalization (简体中文)]]</nowiki>}}<br />
# 修改语言间链接,指向英文页面(将 {{ic|zh-CN}} 修改为 {{ic|en}},并将英文页面移到文章顶部。<br />
# 翻译页面,进行保存。<br />
# (推荐)给翻译完成的页面加上[[Template:TranslationStatus (简体中文)|翻译状态]],后有详细介绍。<br />
# 更新所有其它语言页面,加入刚翻译文章的语言间链接。<br />
# (可选)创建一个简体中文名称的页面,指向新创建的页面:访问 {{ic|<nowiki>https://wiki.archlinux.org/index.php/</nowiki>''页面的中文名称''}}.<br />
# (可选)建立新页面,并加入:{{bc|<nowiki>#REDIRECT [[Some Page (简体中文)</nowiki>]]}}<br />
<br />
== 完善翻译 ==<br />
[https://wiki.archlinux.org/index.php?title=Special:WhatLinksHere/Template:Translateme_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&limit=100 这个页面] 包含了需要完善翻译的简体中文页面。完善翻译的基本步骤:<br />
# 选择自己比较熟悉的文章进行翻译<br />
# 先检查英文页面的对应段落,更新成最新的英文后再翻译,避免翻译过时的内容,减少信息遗漏。<br />
# 翻译完成后删除页面中的 <nowiki>{{translateme (简体中文)}}</nowiki> 标记<br />
# (推荐)给翻译完成的页面加上[[Template:TranslationStatus (简体中文)|翻译状态]],后有详细介绍。<br />
<br />
== 维护翻译 ==<br />
完成页面的翻译只是初步完成任务,即时同步英文页面改动、更新翻译是一个持续性的工作,可能会耗费更多的时间。<br />
<br />
=== 页面认领 ===<br />
所有人都可以认领页面。认领后的责任包括进行翻译,关注英文页面的改动,及时同步翻译。<br />
<br />
为了更好的跟踪英文页面的修改,请务必在设置中启用监视列表邮件通知,并监视对应的英文页面(从设置中找到监视列表,加入英文页面。或者直接到英文页面点击页面顶端的监视标签。这样只要有改动,就会收到邮件通知)。<br />
<br />
{{小贴士|如果收到邮件通知后没有访问页面或者访问了页面却没有登录用户,下次页面改动时就不会再发邮件通知。可以点击监视列表中的'''标记所有页面为已读'''再次获取更新。}}<br />
<br />
如果页面有维护者但长期得不到更新,将会在维护列表中删除维护者。<br />
<br />
=== 发现过期页面怎么办? === <br />
如果发现有 Wiki 页面过期或错误:<br />
* 小的改动,有时间可以立即进行修改同步,维护者并不控制页面的编辑权限,越多的人参与维护越好。如果改动较大,请先联系维护者,避免重复劳动。<br />
* 没有时间查看更改,请给页面加上 {{ic|<nowiki>{{out of date}}</nowiki>}} 模版,这样其他贡献者更容易发现需要更新的页面,而读者看到过期标记就可以直接查看英文页面,以免被错误内容误导,白白耽误时间。<br />
* 没有时间翻译,请将过期的中文部分删去,从英文页面中复制更改的部分到中文页面的相应部分,去掉{{ic|<nowiki>{{out of date}}</nowiki>}}模板(如果页面上有的话)并加上{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板,这样其他贡献者就更容易发现需要翻译的页面,而读者也不会被过期的内容误导。<br />
如果发现有页面未翻译:<br />
* 有时间的话,请将页面中的英文部分翻译为中文,并去掉{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板。<br />
* 没有时间翻译,请为页面添加{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板,这样其他的贡献者就能更容易发现需要翻译的页面。<br />
{{注意|在修改页面上的模板时,请同时更新页面维护列表的翻译状态。}}<br />
<br />
=== 翻译状态模板 ===<br />
Arch 作为滚动发行版,软件变化比较快,对应的文档变化也比较快。许多翻译的文章由于缺乏更新,会产生命令运行出错或不起作用等问题。而由于这些过期页面没有及时标记出来,所以用户无法及时获得更新。[[Template:TranslationStatus (简体中文)|翻译状态模板]]就是为了解决这个问题而创建。<br />
<br />
此模板可以起到如下作用:<br />
* 为用户提供翻译状况,包括翻译时间、英文页面的最后版本等<br />
* 用户可以点击查看翻译后,英文页面的改动,这样英文不是很好的用户可以只查看很小一部分英文内容,并判断出是否影响操作。<br />
* 翻译人员可以跟踪页面状况,通过[https://wiki.archlinux.org/index.php/Special:WhatLinksHere/Template:TranslationStatus_(简体中文) 模板的反向链接]可以查找到所有标记页面,查看需要更新翻译的部分。<br />
<br />
[[Template:TranslationStatus (简体中文)|模板页面]]有详细的使用方法。<br />
<br />
=== 页面维护列表 ===<br />
{{注意|请按照拉丁字母顺序添加页面。}}<br />
翻译状态说明:<br />
;过期:页面内容未与英文页面同步,对应{{ic|<nowiki>{{out of date}}</nowiki>}} 模版<br />
;未翻译:页面中含有英文内容,对应{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板<br />
;完成:页面已与英文页面同步<br />
{| class="wikitable sortable collapsible" border="1"<br />
|-<br />
! 页面<br />
! 翻译状态<br />
! 维护者<br />
! class="unsortable" width="30%" | 备注<br />
|-<br />
| [[acpid (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[ACPI hotkeys (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ACPI modules (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Activating Numlock on Bootup (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Ad-hoc networking (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Advanced Linux Sound Architecture (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[AHCI (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Allow Users to Shutdown (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[aMule (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Android (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Apache, suEXEC and Virtual Hosts (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Arch Based Distributions (Active) (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Arch Build System (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ArchWiki:About (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ATI (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[AUR Helpers (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Avant Window Navigator (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[awesome (简体中文)]]<br />
| 进行中<br />
| Cael<br />
| 无<br />
|-<br />
| [[Bash (简体中文)]]<br />
| 完成<br />
| Jaurung<br />
| 无<br />
|-<br />
| [[Bumblebee (简体中文)]]<br />
| 完成<br />
| Peter<br />
| 无<br />
|-<br />
| [[AMD Catalyst (简体中文)]]<br />
| 完成<br />
| Shibao Zhao<br />
| 无<br />
|-<br />
| [[Common Applications (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Compiz (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Configuring Network (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Creating Packages (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[Disabling IPv6 (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Downgrading Packages (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[Emacs (简体中文)]]<br />
| 翻译中<br />
| Jaurung<br />
| 未完成<br />
|-<br />
|-<br />
| [[Font Configuration (简体中文)]]<br />
| 翻译中<br />
| Jaurung<br />
| 完善中<br />
|-<br />
| [[Fonts (简体中文)]]<br />
| 翻译中<br />
| zhangwen<br />
| 完善中<br />
|-<br />
| [[Fstab (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无<br />
|-<br />
| [[GRUB (简体中文)]]<br />
| 翻译中<br />
| 无<br />
| 无<br />
|-<br />
| [[Help:Style (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无<br />
|-<br />
| [[IBus (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Improve_Pacman_Performance_(简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Kernel Compilation (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Kernel Compilation/Arch Build System (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[LAMP (简体中文)]]<br />
| 完成<br />
| Liuzhengyi<br />
| 勘误中<br />
|-<br />
| [[Laptop Mode Tools (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[LibreOffice (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Local Mirror (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Makepkg (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[mkinitcpio (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Network Time Protocol daemon (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 部分未翻译<br />
|-<br />
| [[Official Repositories (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Openbox (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[OpenOffice (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Pacman (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Pacman GUI Frontends (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[pacman Tips (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Pidgin (简体中文)]]<br />
| 进行中<br />
| Cael<br />
| 无 <br />
|- <br />
| [[Plasma (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|- <br />
| [[Polipo (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无 <br />
|-<br />
| [[Python (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无 <br />
|-<br />
| [[Smart Common Input Method platform (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Common Applications/Science (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Secure Shell (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 部分未翻译<br />
|-<br />
| [[Systemd (简体中文)]]<br />
| 完成<br />
| cuihao<br />
| 无<br />
|-<br />
| [[TeXLive (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Vim (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[VMware (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Wine (简体中文)]]<br />
| 完成<br />
| cuihao<br />
| 无<br />
|-<br />
| [[Xscreensaver (简体中文)]]<br />
| 完成<br />
| liuyix<br />
| 无<br />
|-<br />
| [[Xmonad (简体中文)]]<br />
| 未翻译<br />
| Rns<br />
| 翻译中<br />
<br />
|}<br />
<br />
== 贡献列表 ==<br />
为翻译做出贡献的用户请加入列表,感谢所有人做出的贡献。<br />
* [[User:Fengchao|Fengchao]] &ndash; [[Special:Contributions/Fengchao|贡献]] &ndash; [[Special:EmailUser/Fengchao|Send Email]] &ndash; [[ArchWiki:Maintainers|ArchWiki Maintainers]]<br />
* [[User:Skydiver|Skydiver]] &ndash; [[Special:Contributions/Skydiver|贡献]] &ndash; [[Special:EmailUser/Skydiver|Send Email]] &ndash; [[ArchWiki:Maintainers|ArchWiki Maintainers]]<br />
* [[User:Alswl|Alswl]] &ndash; [[Special:Contributions/Alswl|贡献]] &ndash; [[Special:EmailUser/Alswl|Send Email]]<br />
* [[User:Reverland|Reverland]] &ndash; [[Special:Contributions/Reverland|贡献]] &ndash; [[Special:EmailUser/Reverland|Send Email]]<br />
* [[User:Cuihao|cuihao]] &ndash; [[Special:Contributions/Cuihao|贡献]] &ndash; [[Special:EmailUser/Cuihao|Send Email]]<br />
* [[User:Cael|Cael]] &ndash; [[Special:Contributions/Cael|贡献]] &ndash; [[Special:EmailUser/Cael|Send Email]]</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236103
Apache HTTP Server (简体中文)
2012-11-20T13:57:42Z
<p>Liuzhengyi: /* 链接 */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Asia/Shanghai}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
<br />
===MySQL===<br />
* 按照[[MySQL]]中所述配置MySQL。<br />
<br />
* 取消{{ic|/etc/php/php.ini}}中如下行的注释:<br />
;extension=mysqli.so<br />
;extension=mysql.so<br />
<br />
* 你可以通过编辑{{ic|mysql}}数据库中的表来为你的web脚本添加一个最小权限的用户。你需要重启MySQL以使更改生效。记得检查{{ic:mysql.user}}表:{{ic|select User, Password from mysql.user;}}。如果有两个root项,并且你的主机名没有设置密码,所有从你机器上登录的用户都可能获取全部权限。查看下一小节来解决这些问题。<br />
<br />
* [[Systemd#Using units|重启]] '''httpd'''.<br />
<br />
* 你也许希望通过编辑{{ic|/etc/mysql/my.cnf}}文件,取消{{ic|skip-networking}}行的注释以使MySQL服务器只能通过本地主机访问。<br />
<br />
{{Tip|你也许希望安装[[PhpMyAdmin|phpmyadmin]], {{AUT|mysql-workbench}} 或者 [[Adminer|adminer]] 来配合你的数据库一起工作。}}<br />
<br />
==参见==<br />
* [[MySQL]] - 关于MySQL的文章<br />
* [[PhpMyAdmin]] - LAMP环境下典型的MySQL Web前端<br />
* [[Adminer]] - 一个课用于MySQL,PostgreSQL,SQLite,MS SQL和Oracle的功能全面的数据库管理工具<br />
* [[Xampp]] - 支持PHP,Perl和MySQL的自包含的web服务器<br />
* [[mod_perl]] - Apache + Perl<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/<br />
* http://www.akadia.com/services/ssh_test_certificate.html<br />
* http://wiki.apache.org/httpd/CommonMisconfigurations</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236102
Apache HTTP Server (简体中文)
2012-11-20T13:57:08Z
<p>Liuzhengyi: /* 参考 */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Asia/Shanghai}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
<br />
===MySQL===<br />
* 按照[[MySQL]]中所述配置MySQL。<br />
<br />
* 取消{{ic|/etc/php/php.ini}}中如下行的注释:<br />
;extension=mysqli.so<br />
;extension=mysql.so<br />
<br />
* 你可以通过编辑{{ic|mysql}}数据库中的表来为你的web脚本添加一个最小权限的用户。你需要重启MySQL以使更改生效。记得检查{{ic:mysql.user}}表:{{ic|select User, Password from mysql.user;}}。如果有两个root项,并且你的主机名没有设置密码,所有从你机器上登录的用户都可能获取全部权限。查看下一小节来解决这些问题。<br />
<br />
* [[Systemd#Using units|重启]] '''httpd'''.<br />
<br />
* 你也许希望通过编辑{{ic|/etc/mysql/my.cnf}}文件,取消{{ic|skip-networking}}行的注释以使MySQL服务器只能通过本地主机访问。<br />
<br />
{{Tip|你也许希望安装[[PhpMyAdmin|phpmyadmin]], {{AUT|mysql-workbench}} 或者 [[Adminer|adminer]] 来配合你的数据库一起工作。}}<br />
<br />
==参见==<br />
* [[MySQL]] - 关于MySQL的文章<br />
* [[PhpMyAdmin]] - LAMP环境下典型的MySQL Web前端<br />
* [[Adminer]] - 一个课用于MySQL,PostgreSQL,SQLite,MS SQL和Oracle的功能全面的数据库管理工具<br />
* [[Xampp]] - 支持PHP,Perl和MySQL的自包含的web服务器<br />
* [[mod_perl]] - Apache + Perl<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236101
Apache HTTP Server (简体中文)
2012-11-20T13:51:12Z
<p>Liuzhengyi: /* MySQL */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Asia/Shanghai}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
<br />
===MySQL===<br />
* 按照[[MySQL]]中所述配置MySQL。<br />
<br />
* 取消{{ic|/etc/php/php.ini}}中如下行的注释:<br />
;extension=mysqli.so<br />
;extension=mysql.so<br />
<br />
* 你可以通过编辑{{ic|mysql}}数据库中的表来为你的web脚本添加一个最小权限的用户。你需要重启MySQL以使更改生效。记得检查{{ic:mysql.user}}表:{{ic|select User, Password from mysql.user;}}。如果有两个root项,并且你的主机名没有设置密码,所有从你机器上登录的用户都可能获取全部权限。查看下一小节来解决这些问题。<br />
<br />
* [[Systemd#Using units|重启]] '''httpd'''.<br />
<br />
* 你也许希望通过编辑{{ic|/etc/mysql/my.cnf}}文件,取消{{ic|skip-networking}}行的注释以使MySQL服务器只能通过本地主机访问。<br />
<br />
{{Tip|你也许希望安装[[PhpMyAdmin|phpmyadmin]], {{AUT|mysql-workbench}} 或者 [[Adminer|adminer]] 来配合你的数据库一起工作。}}<br />
<br />
==参考==<br />
* [[MySQL]] - MySQL相关内容<br />
* [[Xampp]] - 一个支持PHP, Perl和MySQL的服务器套件<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236100
Apache HTTP Server (简体中文)
2012-11-20T13:49:36Z
<p>Liuzhengyi: /* 高级选项 */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Asia/Shanghai}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
<br />
===MySQL===<br />
* Configure MySQL as described in [[MySQL]].<br />
按照[[MySQL]]中所述配置MySQL。<br />
<br />
* Uncomment the following lines in {{ic|/etc/php/php.ini}} (''by removing {{ic|;}}''):<br />
取消{{ic|/etc/php/php.ini}}中如下行的注释:<br />
;extension=mysqli.so<br />
;extension=mysql.so<br />
<br />
* You can add minor privileged users for your web scripts by editing the tables found in the {{ic|mysql}} database. You have to restart MySQL for changes to take effect. Do not forget to check the {{ic|mysql.user}} table: {{ic|select User,Password from mysql.user;}}. If there is a second entry for root and your hostname is left with no password set, everybody from your host probably could gain full access. Perhaps see next section for these jobs.<br />
你可以通过编辑{{ic|mysql}}数据库中的表来为你的web脚本添加一个最小权限的用户。你需要重启MySQL以使更改生效。记得检查{{ic:mysql.user}}表:{{ic|select User, Password from mysql.user;}}。如果有两个root项,并且你的主机名没有设置密码,所有从你机器上登录的用户都可能获取全部权限。查看下一小节来解决这些问题。<br />
<br />
* [[Systemd#Using units|重启]] '''httpd'''.<br />
<br />
* You might want to edit {{ic|/etc/mysql/my.cnf}} and uncomment the {{ic|skip-networking}} line so the MySQL server is only accessible by the localhost.<br />
你也许希望通过编辑{{ic|/etc/mysql/my.cnf}}文件,取消{{ic|skip-networking}}行的注释以使MySQL服务器只能通过本地主机访问。<br />
<br />
{{Tip|You may want to install [[PhpMyAdmin|phpmyadmin]], {{AUR|mysql-workbench}} or [[Adminer|adminer]] to work with your databases.}}<br />
{{Tip|你也许希望安装[[PhpMyAdmin|phpmyadmin]], {{AUT|mysql-workbench}} 或者 [[Adminer|adminer]] 来配合你的数据库一起工作。}}<br />
<br />
==参考==<br />
* [[MySQL]] - MySQL相关内容<br />
* [[Xampp]] - 一个支持PHP, Perl和MySQL的服务器套件<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236099
Apache HTTP Server (简体中文)
2012-11-20T13:48:31Z
<p>Liuzhengyi: /* 配置MySQL */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Europe/Berlin}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
<br />
===MySQL===<br />
* Configure MySQL as described in [[MySQL]].<br />
按照[[MySQL]]中所述配置MySQL。<br />
<br />
* Uncomment the following lines in {{ic|/etc/php/php.ini}} (''by removing {{ic|;}}''):<br />
取消{{ic|/etc/php/php.ini}}中如下行的注释:<br />
;extension=mysqli.so<br />
;extension=mysql.so<br />
<br />
* You can add minor privileged users for your web scripts by editing the tables found in the {{ic|mysql}} database. You have to restart MySQL for changes to take effect. Do not forget to check the {{ic|mysql.user}} table: {{ic|select User,Password from mysql.user;}}. If there is a second entry for root and your hostname is left with no password set, everybody from your host probably could gain full access. Perhaps see next section for these jobs.<br />
你可以通过编辑{{ic|mysql}}数据库中的表来为你的web脚本添加一个最小权限的用户。你需要重启MySQL以使更改生效。记得检查{{ic:mysql.user}}表:{{ic|select User, Password from mysql.user;}}。如果有两个root项,并且你的主机名没有设置密码,所有从你机器上登录的用户都可能获取全部权限。查看下一小节来解决这些问题。<br />
<br />
* [[Systemd#Using units|重启]] '''httpd'''.<br />
<br />
* You might want to edit {{ic|/etc/mysql/my.cnf}} and uncomment the {{ic|skip-networking}} line so the MySQL server is only accessible by the localhost.<br />
你也许希望通过编辑{{ic|/etc/mysql/my.cnf}}文件,取消{{ic|skip-networking}}行的注释以使MySQL服务器只能通过本地主机访问。<br />
<br />
{{Tip|You may want to install [[PhpMyAdmin|phpmyadmin]], {{AUR|mysql-workbench}} or [[Adminer|adminer]] to work with your databases.}}<br />
{{Tip|你也许希望安装[[PhpMyAdmin|phpmyadmin]], {{AUT|mysql-workbench}} 或者 [[Adminer|adminer]] 来配合你的数据库一起工作。}}<br />
<br />
==参考==<br />
* [[MySQL]] - MySQL相关内容<br />
* [[Xampp]] - 一个支持PHP, Perl和MySQL的服务器套件<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236098
Apache HTTP Server (简体中文)
2012-11-20T13:20:36Z
<p>Liuzhengyi: /* 配置PHP */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===PHP===<br />
* 从官方源[[pacman|安装]] {{pkg|php-apache}}。<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加如下行:<br />
:将这一行放在{{ic|LoadModule}}列表中 {{ic|LoadModule dir_module modules/mod_dir.so}} 之后的任意地方:<br />
LoadModule php5_module modules/libphp5.so<br />
<br />
:将这一行放到{{ic|Include}}列表的末尾:<br />
Include conf/extra/php5_module.conf<br />
<br />
:确保{{ic|<IfModule mime_module>}}部分中的如下行被取消注释:<br />
TypesConfig conf/mime.types<br />
<br />
:取消如下行的注释(可选):<br />
MIMEMagicFile conf/magic<br />
<br />
* 将这一行添加到{{ic|/etc/httpd/conf/mime.types}}中:<br />
application/x-httpd-php5 php php5<br />
<br />
{{注意|如果你在Apache的模块目录({{ic|/etc/httpd/modules}})中没有看到{{ic|libphp5.so}},你可能忘了安装{{Pkg|php-apache}}。}}<br />
<br />
* 如果你的{{ic|文件跟目录}}不是{{ic|/srv/http}},将其添加到{{ic|/etc/php/php.ini}}的{{ic|open_basedir}}部分,如下:<br />
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* [[systemd#Using units|重启]] '''httpd'''。<br />
<br />
* 测试PHP:在你的apache文档根目录(即{{ic|/srv/http/}}或{{ic|~public_html}})中创建test.php文件,在其中写入:<br />
<?php phpinfo(); ?><br />
:看它是否能用: http://localhost/test.php 或者 http://localhost/~myname/test.php<br />
<br />
:如果PHP代码没有被执行(你看到了:<html>...</html>),检查一下{{ic|/etc/httpd/conf/httpd.conf}}看你是否将你的根目录“Includes”到“Options”行中。<br />
如果还不行,检查<IfModule mime_module>部分中{{ic|TypesConfig conf/mime.types}} 是否被取消注释,你可以尝试将以下行添加到httpd.conf中的<IfModule mime_module>部分中:<br />
AddHandler application/x-httpd-php .php<br />
<br />
====高级选项====<br />
* 建议你在{{ic|/etc/php/php.ini}}中将你的时区设置为这样:([http://www.php.net/manual/en/timezones.php 时区列表])<br />
{{bc|1=date.timezone = Europe/Berlin}}<br />
<br />
* 如果你想显示出错信息以调试你的PHP代码,将{{ic|/etc/php/php.ini}}中的{{ic|display_errors}}设置为{{ic|On}}:<br />
display_errors=On<br />
<br />
* 如果你想使用libGD模块,安装{{}Pkg|php-gd}并且将{{ic|/etc/php/php.ini}}中的{{ic|1=extension=gd.so}}取消注释:<br />
{{注意|php-gd 需要 libpng,libjpeg和freetype2}}<br />
extension=gd.so<br />
{{注意|看清楚你注释的是哪一行,这个扩展有时会在你需要注释掉的那一行之前的解释性的注释中被提到}}<br />
<br />
* 如果你需要mcrypt模块,安装{{Pkg|php-mcrypt}}并且取消{{ic|/etc/php/php.ini}}中{{ic|1=extension=mcrypt.so}}的注释:<br />
extension=mcrypt.so<br />
<br />
* 如果你需要,记得在{{ic|/etc/httpd/conf/extra/php5_module.conf}}中为.phtml添加一个文件处理器:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
<br />
==== 与apache2-mpm-worker和mod_fcgid一起使用php5 ====<br />
取消{{ic|/etc/conf.d/apache}}中如下行的注释:<br />
HTTPD=/usr/sbin/httpd.worker<br />
取消{{ic|/etc/httpd/conf/httpd.conf}}中如下行的注释:<br />
<br />
Include conf/extra/httpd-mpm.conf<br />
安装mod_fcgid和php-cgi包:<br />
# pacman -S mod_fcgid php-cgi<br />
创建{{ic|/etc/httpd/conf/extra/php5_fcgid.conf}},写入以下内容:<br />
{{bc|1=<br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
PHP_Fix_Pathinfo_Enable 1<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
}}<br />
<br />
为PHP包装器创建需要的目录和符号链接:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
编辑 {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#LoadModule php5_module modules/libphp5.so<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/php5_fcgid.conf<br />
确保{{ic|/etc/php/php.ini}}中的如下指令被启用:<br />
cgi.fix_pathinfo=1<br />
并重启[[system#Using_units|restart]] '''httpd'''。<br />
<br />
{{注意|1=Apache2.4([http://aur.archlinux.org/package.php?ID=60719 AUR package]中可用)中已经可以与PHP-FPM(以及新的event MPM)一起使用[http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi](官方发行版的一部分)。参见[http://wiki.apache.org/httpd/PHP-FPM configuration example]}}<br />
<br />
===配置MySQL===<br />
<br />
如果只要设置支持MySQL,做以下步骤就行了,至于具体配置MySQL请参考: [[MySQL]]<br />
<br />
* 编辑{{ic|/etc/php/php.ini}} (旧系统在{{ic|/usr/etc}}里) to 取消注释如下行(<i>移除{{ic|;}}</i>即可):<br />
{{ic|1=;extension=mysql.so}}<br />
<br />
* You can add minor privileged users for your web scripts by editing the tables found in the {{ic|mysql}} database. You have to restart MySQL for changes to take effect. Don't forget to check the {{ic|mysql/users}} table. If there's a second entry for root and your hostname is left with no password set, everybody from your host probably could gain full access. Perhaps see next section for these jobs.<br />
<br />
* 在终端下运行:<br />
# /etc/rc.d/mysqld start<br />
<br />
* 有必要的话重启Apache,在终端下运行:<br />
# /etc/rc.d/httpd restart<br />
<br />
* MySQL应该在运行了。设置 root 密码并进行测试:<br />
# mysqladmin -u root password ''password''<br />
# mysql -u root -p<br />
<br />
:输入 ''exit'' 退出MySQL命令行客户端<br />
<br />
* 编辑 {{ic|/etc/rc.conf}} (设置MySQL开机运行):<br />
DAEMONS=(... '''mysqld''' ...)<br />
或者在 {{ic|rc.local}}中添加:<br />
/etc/rc.d/mysqld start<br />
<br />
* You can get the "{{ic|error no. 2013: Lost Connection to mysql server during query}}" message instantly whenever you try to connect to the MySQL daemon by TCP/IP. This is the TCP wrappers system (tcpd), which uses the {{ic|hosts_access(5)}} system to allow or disallow connections.<br />
<br />
* 如果你出现这个问题,请在{{ic|/etc/hosts.allow}} 添加以下行:<br />
<br />
# mysqld : ALL : ALLOW<br />
# mysqld-max : ALL : ALLOW<br />
# and similar for the other MySQL daemons.<br />
<br />
* 注意: The examples above are the simplest case, telling tcpd to allow connections from anywhere. You may wish to use a more-appropriate choice of permissible sources instead of ALL. Just make sure that localhost and the IP address (numeric or DNS) of the interface by which you connect are specified.<br />
<br />
* 你可能需要编辑{{ic|/etc/my.cnf}}把{{ic|skip-networking}}注释掉:<br />
<br />
skip-networking<br />
<br />
修改为<br />
<br />
#skip-networking<br />
<br />
==参考==<br />
* [[MySQL]] - MySQL相关内容<br />
* [[Xampp]] - 一个支持PHP, Perl和MySQL的服务器套件<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=Apache_HTTP_Server_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236087
Apache HTTP Server (简体中文)
2012-11-20T12:04:33Z
<p>Liuzhengyi: /* 配置Apache */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:Web Server (简体中文)]]<br />
[[cs:LAMP]]<br />
[[de:LAMP Installation]]<br />
[[el:LAMP]]<br />
[[en:LAMP]]<br />
[[es:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:LAMP]]<br />
[[pl:LAMP]]<br />
[[ru:LAMP]]<br />
[[sr:LAMP]]<br />
[[tr:LAMP]]<br />
这个文档描述了怎样在Archlinux系统上安装设置Apache网页服务器。以及选择安装PHP和MySQL并集成到Apache服务器中。<br />
<br />
如果你只是用来开发和测试, [[Xampp]] 可能更简便一些。<br />
==安装==<br />
<br />
# pacman -S apache php php-apache mysql<br />
<br />
你可以只单独安装Apache,PHP或者MySQL,也可以安装所有包。这个文档假设你安装全部,当然你可以忽略任何部分。<br />
<br />
{{注意| 新默认用户和用户组: 取代了原先的用户组group "nobody" ,现在默认以user/group "http" 来运行Apache。根据这个变化,需要调整httpd.conf,虽然仍然能够用nobody来运行httpd。}}<br />
<br />
==配置==<br />
===Apache===<br />
出于安全原因,Apache以root用户身份启动(直接的或者通过启动脚本)后将立即切换为 {{ic|/etc/httpd/conf/httpd.conf}}中指定的UID/GID。<br />
<br />
* 通过寻找如下命令的输出中的http来判断http user的存在:<br />
# grep http /etc/passwd<br />
<br />
* 如果还不存在用户http,创建他:<br />
# useradd -d /srv/http -r -s /bin/false -U http<br />
:这将创建一个以目录/srv/http/为家目录的http用户,作为系统帐号(-r),使用bogus shell(-s /bin/false)并且创建一个相同名称的用户组(-U)。<br />
<br />
*确保在/etc/hosts中设置了主机名,否则apache将无法启动。或者,你也可以编辑/etc/httpd/conf/httpd.conf文件,注释掉如下模块:<br />
LoadModule unique_id_module modules/mod_unique_id.so<br />
<br />
* 按照你的喜好更改{{ic|httpd.conf}} 和 {{ic|extra/httpd-default.conf}} 。。出于安全原因,你可能想将 {{ic|extra/httpd-default.conf}}中的 '''ServerTokens Full''' 改为 '''ServerTokens Prod''' 并且将 '''ServerSignature On''' 改为 '''ServerSignature Off''' 。<br />
<br />
* [[Daemons#Starting manually|启动]] '''httpd''' (Apache 的守护进程).<br />
<br />
:Apache现在应该在运行中了。通过使用浏览器访问http://localhost/ 来测试之。。应该有一个简单的Apache测试页面出现。如果你得到一个403错误,注释掉{{ic|/etc/httpd/conf/httpd.conf}}中的如下行:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 可以在系统 [[Daemons#Starting on boot|启动时自动启动]] '''httpd'''进程。<br />
<br />
====用户目录====<br />
*如果你不希望用户目录在web上可以访问 (即, 机器上的{{ic|~/public_html}} 在web上以 http://localhost/~user/ 访问 -注意,你可以在{{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}文件中修改它所指向的目录), 注释掉 {{ic|/etc/httpd/conf/httpd.conf}} 文件中的如下行,他们默认时激活的:<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
* 你应该确保你的家目录权限时合适的以便Apache能够访问它。你的家目录和 {{ic|~/public_html/}} 应该可以被其他用户执行。这样应该就可以了:<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
<br />
* 更安全的通过apache共享你的家目录的方法时将用户 '''http''' 添加到你的家目录所属的用户组中。 例如,如果你的家目录和他的子目录属于'''piter'''用户组,你需要做的就是:<br />
<br />
$ usermod -aG piter http<br />
<br />
* 当然了,你还需要开放{{ic|~/}}目录, {{ic|~/public_html}}以及他们所有的子目录的‘读’权限和‘写’权限给这个组(在我们的例子中时用户组'''piter''')。 如下这样做('''根据自己的情况修改命令'''):<br />
<br />
$ chmod g+xr-w /home/''yourusername''<br />
$ chmod -R g+xr-w /home/''yourusername''/public_html<br />
<br />
{{注意|使用此种方法你不必为了将权限开放给用户http而开放权限给所有的用户。只有用户'''http'''和同属于'''piter'''用户组的其他用户可以访问你的家目录}}<br />
<br />
并重启'''httpd'''.<br />
<br />
====SSL====<br />
创建自签名的证书(你可以改变密钥长度和有效天数)<br />
# cd /etc/httpd/conf<br />
# openssl genrsa -des3 -out server.key 1024<br />
# openssl req -new -key server.key -out server.csr<br />
# cp server.key server.key.org<br />
# openssl rsa -in server.key.org -out server.key<br />
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}中,取消如下行的注释:<br />
Include conf/extra/httpd-ssl.conf<br />
并重启'''httpd'''。<br />
<br />
====Virtual Hosts====<br />
如果你需要不止一个主机,确保你有<br />
{{bc|<br />
# Virtual hosts<br />
Include conf/extra/httpd-vhosts.conf<br />
}}<br />
在 {{ic|/etc/httpd/conf/httpd.conf}}文件中.<br />
<br />
参考下面的例子,在 {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}}中设置你的虚拟主机:<br />
{{bc|<br />
NameVirtualHost *:80<br />
<br />
#this first virtualhost enables: http://127.0.0.1, or: http://localhost, <br />
#to still go to /srv/http/*index.html(otherwise it will 404_error).<br />
#the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, <br />
#ALL vhosts are handled in httpd-vhosts.conf(including the default one),<br />
# E.G. the default virtualhost in httpd.conf is not used and must be included here, <br />
#otherwise, only domainname1.dom & domainname2.dom will be accessible<br />
#from your web browser and NOT http://127.0.0.1, or: http://localhost, etc.<br />
#<br />
<br />
<VirtualHost *:80><br />
DocumentRoot "/srv/http"<br />
ServerAdmin root@localhost<br />
ErrorLog "/var/log/httpd/127.0.0.1-error_log"<br />
CustomLog "/var/log/httpd/127.0.0.1-access_log" common<br />
<Directory /srv/http/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname1.dom<br />
DocumentRoot "/home/username/yoursites/domainname1.dom/www"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
<Directory /home/username/yoursites/domainname1.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:80><br />
ServerAdmin your@domainname2.dom<br />
DocumentRoot "/home/username/yoursites/domainname2.dom/www"<br />
ServerName domainname2.dom<br />
ServerAlias domainname2.dom<br />
<Directory /home/username/yoursites/domainname2.dom/www/><br />
DirectoryIndex index.htm index.html<br />
AddHandler cgi-script .cgi .pl<br />
Options ExecCGI Indexes FollowSymLinks MultiViews +Includes<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
</Directory><br />
</VirtualHost><br />
}}<br />
<br />
将你的虚拟主机的名称添加到你的 /etc/hosts 文件(如果bind已经在为这些域名服务了,则非必需,但是加上也无妨):<br />
{{bc|127.0.0.1 domainname1.dom<br />
127.0.0.1 domainname2.dom}}<br />
<br />
并重启'''httpd'''。<br />
<br />
如果你将虚拟主机设定在你的用户目录中,有时这会干扰Apache的'Userdir'设定。注释掉以下行以避免此问题:<br />
{{bc|<br />
# User home directories<br />
#Include conf/extra/httpd-userdir.conf}}<br />
<br />
如上所述,确保你有合适的权限:<br />
# chmod 0775 /home/yourusername/<br />
<br />
如果你有非常多的虚拟主机并且希望轻松的激活或禁用他们,建议你为每一个虚拟主机创建一个配置文件并且将所有的这些配置文件存储到一个文件夹中,如:{{ic|/etc/httpd/conf/vhosts}}。<br />
<br />
首先创建这个文件夹:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
然后将单个的配置文件放到里面:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
最后一步,"Include"单个的配置文件们到你的 {{ic|/etc/httpd/conf/httpd.conf}}文件:<br />
{{bc|#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
#Include conf/vhosts/domainname1.dom}}<br />
<br />
你可以通过注释或去注释来激活或禁用单个的虚拟主机。<br />
<br />
====高级选项====<br />
你也许会对 {{ic|/etc/httpd/conf/httpd.conf}}中的这些选项感兴趣:<br />
<br />
# Listen 80<br />
这是Apache监听的端口。为了跨路由器的访问,你需要转发这个端口。<br />
<br />
如果你只是用于本地开发,你可能希望她只能被你自己的计算机访问。那么将这一行改为:<br />
# Listen 127.0.0.1:80<br />
<br />
这是管理员的电子邮件地址,该地址可以在错误页面等处见到:<br />
# ServerAdmin sample@sample.com<br />
<br />
这是存放你的网页文件的目录:<br />
# DocumentRoot "/srv/http"<br />
<br />
如果愿意,可以修改,不过不要忘了同时修改<br />
<Directory "/srv/http"><br />
为你所修改的文档根目录,否则当你试图访问新的文档根目录时可能会得到一个403错误(缺少权限)。不要忘记修改"Deny from all"行,否则你也可能遇到403错误。<br />
<br />
# AllowOverride None<br />
<br />
{{ic|<Directory>}}部分中的这条指令将使得Apache完全忽略.htaccess文件。如果你希望使用重写模块或.htaccess文件中的其他设定,你可以允许那个文件中声明的>指令覆盖服务器配置。请参考 http://httpd.apache.org/docs/current/mod/core.html#allowoverride 以获得更多信息。<br />
<br />
{{注意|如果你对自己的配置文件有问题,你可以用如下命令让apache来检查一下你的配置文件:{{Ic|apachectl configtest}}}}<br />
<br />
===配置PHP===<br />
<br />
* 用pacman安装php-apache<br />
<br />
* 在{{ic|/etc/httpd/conf/httpd.conf}}中添加:<br />
:把它添加到 "LoadModule" 列表的后面。<br />
LoadModule php5_module modules/libphp5.so<br />
:把它添加到 "include" 列表的后面。<br />
Include /etc/httpd/conf/extra/php5_module.conf<br />
{{注意| 如果在Apache的modules目录中没有{{ic|libphp.so}},请检查是否安装了''php-apache''包。}}<br />
<br />
* 如果你的{{ic|DocumentRoot}}不在{{ic|/srv/http}},在{{ic|/etc/php/php.ini}}添加这个{{ic|open_basedir}} 成:<br />
open_basedir = /home/:/tmp/:/usr/share/pear/:/path/to/documentroot<br />
<br />
* 重启Apache服务使修改生效(以root用户):<br />
# /etc/rc.d/httpd restart<br />
<br />
* 默认有一个测试PHP的文件,它在{{ic|/srv/http}}目录下<br />
<br />
* 如果你想使用其它目录,比如{{ic|~/public-html/}},请把该文件复制过去。<br />
<br />
* 测试 PHP: http://localhost/test.php 或 http://localhost/~myname/test.php<br />
<br />
* 如果该文件不存在,只须在/srv/http/test.php中添加:<br />
# <?php phpinfo(); ?><br />
<br />
* 用非常简单而又强大的脚本测试:<br />
<br />
<html><br />
<head><br />
<title>PHP Test Page</title><br />
</head><br />
<br />
<body><br />
This is Arch Linux, running PHP.<br />
<br />
<?php<br />
phpinfo();<br />
?><br />
</p><br />
</body><br />
</html><br />
<br />
保存此文件为{{ic|test.php}} 复制到{{ic|/srv/http/}} 或 {{ic|~/public_html}}如果你允许此权限。当然请把它设置为可执行文件({{ic|chmod o+x test.php}}).<br />
<br />
<br />
<br />
:如果php脚本没有执行 (你看到了: <html>...</html>),在{{ic|/etc/httpd/conf/httpd.conf}}中添加:<br />
AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps<br />
<br />
====高级选项====<br />
* 如果有需要默认解析.phtml文件,请记住在 {{ic|/etc/httpd/conf/extra/php5_module.conf}}中添加.phtml:<br />
DirectoryIndex index.php index.phtml index.html<br />
<br />
* 如果你要libGD模块请把{{ic|/etc/php/php.ini}}里的<br />
;extension=gd.so<br />
取消注释为<br />
extension=gd.so<br />
<br />
* 如果你在调试PHP时需要显示PHP的错误信息,将 {{ic|/etc/php/php.ini}}当中的这行:<br />
display_errors=Off<br />
修改为<br />
display_errors=On<br />
<br />
* 如果你需要使用 mcrypt module,安装php-mcrypt包,并将 {{ic|/etc/php/php.ini}}这行:<br />
;extension=mcrypt.so<br />
:前面的注释取消<br />
extension=mcrypt.so<br />
<br />
===配置MySQL===<br />
<br />
如果只要设置支持MySQL,做以下步骤就行了,至于具体配置MySQL请参考: [[MySQL]]<br />
<br />
* 编辑{{ic|/etc/php/php.ini}} (旧系统在{{ic|/usr/etc}}里) to 取消注释如下行(<i>移除{{ic|;}}</i>即可):<br />
{{ic|1=;extension=mysql.so}}<br />
<br />
* You can add minor privileged users for your web scripts by editing the tables found in the {{ic|mysql}} database. You have to restart MySQL for changes to take effect. Don't forget to check the {{ic|mysql/users}} table. If there's a second entry for root and your hostname is left with no password set, everybody from your host probably could gain full access. Perhaps see next section for these jobs.<br />
<br />
* 在终端下运行:<br />
# /etc/rc.d/mysqld start<br />
<br />
* 有必要的话重启Apache,在终端下运行:<br />
# /etc/rc.d/httpd restart<br />
<br />
* MySQL应该在运行了。设置 root 密码并进行测试:<br />
# mysqladmin -u root password ''password''<br />
# mysql -u root -p<br />
<br />
:输入 ''exit'' 退出MySQL命令行客户端<br />
<br />
* 编辑 {{ic|/etc/rc.conf}} (设置MySQL开机运行):<br />
DAEMONS=(... '''mysqld''' ...)<br />
或者在 {{ic|rc.local}}中添加:<br />
/etc/rc.d/mysqld start<br />
<br />
* You can get the "{{ic|error no. 2013: Lost Connection to mysql server during query}}" message instantly whenever you try to connect to the MySQL daemon by TCP/IP. This is the TCP wrappers system (tcpd), which uses the {{ic|hosts_access(5)}} system to allow or disallow connections.<br />
<br />
* 如果你出现这个问题,请在{{ic|/etc/hosts.allow}} 添加以下行:<br />
<br />
# mysqld : ALL : ALLOW<br />
# mysqld-max : ALL : ALLOW<br />
# and similar for the other MySQL daemons.<br />
<br />
* 注意: The examples above are the simplest case, telling tcpd to allow connections from anywhere. You may wish to use a more-appropriate choice of permissible sources instead of ALL. Just make sure that localhost and the IP address (numeric or DNS) of the interface by which you connect are specified.<br />
<br />
* 你可能需要编辑{{ic|/etc/my.cnf}}把{{ic|skip-networking}}注释掉:<br />
<br />
skip-networking<br />
<br />
修改为<br />
<br />
#skip-networking<br />
<br />
==参考==<br />
* [[MySQL]] - MySQL相关内容<br />
* [[Xampp]] - 一个支持PHP, Perl和MySQL的服务器套件<br />
<br />
==链接==<br />
* http://www.apache.org/<br />
* http://www.php.net/<br />
* http://www.mysql.com/</div>
Liuzhengyi
https://wiki.archlinux.org/index.php?title=ArchWiki:Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&diff=236075
ArchWiki:Translation Team (简体中文)
2012-11-20T05:39:56Z
<p>Liuzhengyi: /* 页面维护列表 */</p>
<hr />
<div>[[Category:简体中文]]<br />
[[Category:ArchWiki (简体中文)]]<br />
[[en:ArchWiki Translation Team]]<br />
[[es:ArchWiki Translation Team]]<br />
[[hr:ArchWiki Translation Team]]<br />
[[it:ArchWiki Translation Team]]<br />
[[pl:ArchWiki Translation Team]]<br />
[[tr:ArchWiki_Çeviri_Ekibi]]<br />
Arch Wiki 上有许多中文页面,这些页面是无数中文志愿者劳动的结晶。随着时间推移,有些页面因为没有及时维护,内容严重过时。而目前的翻译工作缺少组织,效率偏低。所以参照西班牙和意大利翻译组的做法,添加这个页面。<br />
<br />
如果希望进行翻译和维护,只需要编辑下面的[[#页面维护列表]],将自己加为页面的维护者。如果列表中还没有要认领翻译的页面,请自行添加。如果因为时间原因无法再维护页面,请及时将自己从维护者列表中删除。<br />
<br />
== 创建翻译 ==<br />
{{注意|如果不准备翻译页面的大部分内容,请尽量不要新建简体中文页面。检查英文页面的更新需要花费不少精力,没有翻译的页面会增加维护负担。}}<br />
# 如果还不知道如何编辑 wiki,请阅读 [[Help:Editing (简体中文)|编辑帮助]]。<br />
# 阅读 [[Help:i18n (简体中文)|i18n帮助]],文章给出了 ArchWiki 国际化和本地化的指南。<br />
# [[Special:UserLogin |登录]] 以进行编辑。<br />
# 选择要翻译的页面,例如从 [[Special:Random|随机页面]] 或[[#页面维护列表 | 页面维护列表]] 中选择一个未翻译完成的页面。假设要翻译 [[Some Page]].<br />
# 进入选择的英文页面,点击页面顶部的 '''编辑'''。<br />
# 添加要翻译文件的语言间链接 (参见[[Help:i18n#Interlanguage links]])。<br />
# 复制所有页面代码。<br />
# 保存页面 (新加了语言链接)<br />
# 访问页面右边新添加的语言链接,应该会进到 [[Some Page (简体中文)]] : {{ic|<nowiki>https://wiki.archlinux.org/index.php/Some_Page_(</nowiki>''简体中文'')}}<br />
# 因为页面不存在,点击 '''创建'''。<br />
# 将显示一个编辑器 - 粘贴复制的英文页面。<br />
# 将文章分类修改为本地化版本,例如将 {{ic|<nowiki>[[Category:Internationalization]]</nowiki>}} 修改为 {{ic|<nowiki>[[Category:Internationalization (简体中文)]]</nowiki>}}<br />
# 修改语言间链接,指向英文页面(将 {{ic|zh-CN}} 修改为 {{ic|en}},并将英文页面移到文章顶部。<br />
# 翻译页面,进行保存。<br />
# (推荐)给翻译完成的页面加上[[Template:TranslationStatus (简体中文)|翻译状态]],后有详细介绍。<br />
# 更新所有其它语言页面,加入刚翻译文章的语言间链接。<br />
# (可选)创建一个简体中文名称的页面,指向新创建的页面:访问 {{ic|<nowiki>https://wiki.archlinux.org/index.php/</nowiki>''页面的中文名称''}}.<br />
# (可选)建立新页面,并加入:{{bc|<nowiki>#REDIRECT [[Some Page (简体中文)</nowiki>]]}}<br />
<br />
== 完善翻译 ==<br />
[https://wiki.archlinux.org/index.php?title=Special:WhatLinksHere/Template:Translateme_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&limit=100 这个页面] 包含了需要完善翻译的简体中文页面。完善翻译的基本步骤:<br />
# 选择自己比较熟悉的文章进行翻译<br />
# 先检查英文页面的对应段落,更新成最新的英文后再翻译,避免翻译过时的内容,减少信息遗漏。<br />
# 翻译完成后删除页面中的 <nowiki>{{translateme (简体中文)}}</nowiki> 标记<br />
# (推荐)给翻译完成的页面加上[[Template:TranslationStatus (简体中文)|翻译状态]],后有详细介绍。<br />
<br />
== 维护翻译 ==<br />
完成页面的翻译只是初步完成任务,即时同步英文页面改动、更新翻译是一个持续性的工作,可能会耗费更多的时间。<br />
<br />
=== 页面认领 ===<br />
所有人都可以认领页面。认领后的责任包括进行翻译,关注英文页面的改动,及时同步翻译。<br />
<br />
为了更好的跟踪英文页面的修改,请务必在设置中启用监视列表邮件通知,并监视对应的英文页面(从设置中找到监视列表,加入英文页面。或者直接到英文页面点击页面顶端的监视标签。这样只要有改动,就会收到邮件通知)。<br />
<br />
{{小贴士|如果收到邮件通知后没有访问页面或者访问了页面却没有登录用户,下次页面改动时就不会再发邮件通知。可以点击监视列表中的'''标记所有页面为已读'''再次获取更新。}}<br />
<br />
如果页面有维护者但长期得不到更新,将会在维护列表中删除维护者。<br />
<br />
=== 发现过期页面怎么办? === <br />
如果发现有 Wiki 页面过期或错误:<br />
* 小的改动,有时间可以立即进行修改同步,维护者并不控制页面的编辑权限,越多的人参与维护越好。如果改动较大,请先联系维护者,避免重复劳动。<br />
* 没有时间查看更改,请给页面加上 {{ic|<nowiki>{{out of date}}</nowiki>}} 模版,这样其他贡献者更容易发现需要更新的页面,而读者看到过期标记就可以直接查看英文页面,以免被错误内容误导,白白耽误时间。<br />
* 没有时间翻译,请将过期的中文部分删去,从英文页面中复制更改的部分到中文页面的相应部分,去掉{{ic|<nowiki>{{out of date}}</nowiki>}}模板(如果页面上有的话)并加上{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板,这样其他贡献者就更容易发现需要翻译的页面,而读者也不会被过期的内容误导。<br />
如果发现有页面未翻译:<br />
* 有时间的话,请将页面中的英文部分翻译为中文,并去掉{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板。<br />
* 没有时间翻译,请为页面添加{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板,这样其他的贡献者就能更容易发现需要翻译的页面。<br />
{{注意|在修改页面上的模板时,请同时更新页面维护列表的翻译状态。}}<br />
<br />
=== 翻译状态模板 ===<br />
Arch 作为滚动发行版,软件变化比较快,对应的文档变化也比较快。许多翻译的文章由于缺乏更新,会产生命令运行出错或不起作用等问题。而由于这些过期页面没有及时标记出来,所以用户无法及时获得更新。[[Template:TranslationStatus (简体中文)|翻译状态模板]]就是为了解决这个问题而创建。<br />
<br />
此模板可以起到如下作用:<br />
* 为用户提供翻译状况,包括翻译时间、英文页面的最后版本等<br />
* 用户可以点击查看翻译后,英文页面的改动,这样英文不是很好的用户可以只查看很小一部分英文内容,并判断出是否影响操作。<br />
* 翻译人员可以跟踪页面状况,通过[https://wiki.archlinux.org/index.php/Special:WhatLinksHere/Template:TranslationStatus_(简体中文) 模板的反向链接]可以查找到所有标记页面,查看需要更新翻译的部分。<br />
<br />
[[Template:TranslationStatus (简体中文)|模板页面]]有详细的使用方法。<br />
<br />
=== 页面维护列表 ===<br />
{{注意|请按照拉丁字母顺序添加页面。}}<br />
翻译状态说明:<br />
;过期:页面内容未与英文页面同步,对应{{ic|<nowiki>{{out of date}}</nowiki>}} 模版<br />
;未翻译:页面中含有英文内容,对应{{ic|<nowiki>{{translateme (简体中文)}}</nowiki>}}模板<br />
;完成:页面已与英文页面同步<br />
{| class="wikitable sortable collapsible" border="1"<br />
|-<br />
! 页面<br />
! 翻译状态<br />
! 维护者<br />
! class="unsortable" width="30%" | 备注<br />
|-<br />
| [[acpid (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[ACPI hotkeys (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ACPI modules (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Activating Numlock on Bootup (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Ad-hoc networking (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Advanced Linux Sound Architecture (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[AHCI (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Allow Users to Shutdown (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[aMule (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Android (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Apache, suEXEC and Virtual Hosts (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Arch Based Distributions (Active) (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Arch Build System (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ArchWiki:About (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[ATI (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[AUR Helpers (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Avant Window Navigator (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[awesome (简体中文)]]<br />
| 进行中<br />
| Cael<br />
| 无<br />
|-<br />
| [[Bash (简体中文)]]<br />
| 完成<br />
| Jaurung<br />
| 无<br />
|-<br />
| [[Bumblebee (简体中文)]]<br />
| 完成<br />
| Peter<br />
| 无<br />
|-<br />
| [[AMD Catalyst (简体中文)]]<br />
| 完成<br />
| Shibao Zhao<br />
| 无<br />
|-<br />
| [[Common Applications (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Compiz (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Configuring Network (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Creating Packages (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[Disabling IPv6 (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Downgrading Packages (简体中文)]]<br />
| 完成<br />
| Cael<br />
| 无<br />
|-<br />
| [[Emacs (简体中文)]]<br />
| 翻译中<br />
| Jaurung<br />
| 未完成<br />
|-<br />
|-<br />
| [[Font Configuration (简体中文)]]<br />
| 翻译中<br />
| Jaurung<br />
| 完善中<br />
|-<br />
| [[Fonts (简体中文)]]<br />
| 翻译中<br />
| zhangwen<br />
| 完善中<br />
|-<br />
| [[Fstab (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无<br />
|-<br />
| [[GRUB (简体中文)]]<br />
| 翻译中<br />
| 无<br />
| 无<br />
|-<br />
| [[Help:Style (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无<br />
|-<br />
| [[IBus (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Improve_Pacman_Performance_(简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Kernel Compilation (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Kernel Compilation/Arch Build System (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Laptop Mode Tools (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[LibreOffice (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Local Mirror (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Makepkg (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[mkinitcpio (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Network Time Protocol daemon (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 部分未翻译<br />
|-<br />
| [[Official Repositories (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Openbox (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[OpenOffice (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Pacman (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Pacman GUI Frontends (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[pacman Tips (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[Pidgin (简体中文)]]<br />
| 进行中<br />
| Cael<br />
| 无 <br />
|- <br />
| [[Plasma (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|- <br />
| [[Polipo (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无 <br />
|-<br />
| [[Python (简体中文)]]<br />
| 完成<br />
| Fengchao<br />
| 无 <br />
|-<br />
| [[Smart Common Input Method platform (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Common Applications/Science (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Secure Shell (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 部分未翻译<br />
|-<br />
| [[Systemd (简体中文)]]<br />
| 完成<br />
| cuihao<br />
| 无<br />
|-<br />
| [[TeXLive (简体中文)]]<br />
| 未翻译<br />
| 无<br />
| 无<br />
|-<br />
| [[Vim (简体中文)]]<br />
| 完成<br />
| 无<br />
| 无<br />
|-<br />
| [[VMware (简体中文)]]<br />
| 过期<br />
| 无<br />
| 无<br />
|-<br />
| [[Wine (简体中文)]]<br />
| 完成<br />
| cuihao<br />
| 无<br />
|-<br />
| [[Xscreensaver (简体中文)]]<br />
| 完成<br />
| liuyix<br />
| 无<br />
|-<br />
| [[Xmonad (简体中文)]]<br />
| 未翻译<br />
| Rns<br />
| 翻译中<br />
|-<br />
| [[LAMP (简体中文)]]<br />
| 过期<br />
| Liuzhengyi<br />
| 更新中<br />
|}<br />
<br />
== 贡献列表 ==<br />
为翻译做出贡献的用户请加入列表,感谢所有人做出的贡献。<br />
* [[User:Fengchao|Fengchao]] &ndash; [[Special:Contributions/Fengchao|贡献]] &ndash; [[Special:EmailUser/Fengchao|Send Email]] &ndash; [[ArchWiki:Maintainers|ArchWiki Maintainers]]<br />
* [[User:Skydiver|Skydiver]] &ndash; [[Special:Contributions/Skydiver|贡献]] &ndash; [[Special:EmailUser/Skydiver|Send Email]] &ndash; [[ArchWiki:Maintainers|ArchWiki Maintainers]]<br />
* [[User:Alswl|Alswl]] &ndash; [[Special:Contributions/Alswl|贡献]] &ndash; [[Special:EmailUser/Alswl|Send Email]]<br />
* [[User:Reverland|Reverland]] &ndash; [[Special:Contributions/Reverland|贡献]] &ndash; [[Special:EmailUser/Reverland|Send Email]]<br />
* [[User:Cuihao|cuihao]] &ndash; [[Special:Contributions/Cuihao|贡献]] &ndash; [[Special:EmailUser/Cuihao|Send Email]]<br />
* [[User:Cael|Cael]] &ndash; [[Special:Contributions/Cael|贡献]] &ndash; [[Special:EmailUser/Cael|Send Email]]</div>
Liuzhengyi