我之前安装过 Apache2,现在当我再次尝试运行它时,却无法运行。
我的 Apache2 设置如下:
jatin@jatin-ubuntu:/var/run$ apache2 -V
Server version: Apache/2.2.14 (Ubuntu)
Server built: Nov 18 2010 21:17:19
Server's Module Magic Number: 20051115:23
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=""
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"
当我执行此操作时,出现以下错误:
jatin@jatin-ubuntu:/var/run$ httpd status
No command 'httpd' found, did you mean:
Command 'dhttpd' from package 'dhttpd' (universe)
Command 'xttpd' from package 'xtide' (universe)
Command 'thttpd' from package 'thttpd' (universe)
httpd: command not found
我的/etc/apache2/ports.conf
样子是:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
#NameVirtualHost *:80
Listen 80
#<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
# Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
# Listen 443
#</IfModule>
我的sites-available
目录有这两个文件:
jatin@jatin-ubuntu:/etc/apache2$ cd sites-available/
jatin@jatin-ubuntu:/etc/apache2/sites-available$ ls
default default-ssl
当我查看sites-enabled
目录时,它什么也没有:
jatin@jatin-ubuntu:/etc/apache2/sites-available$ cd ../sites-enabled/
jatin@jatin-ubuntu:/etc/apache2/sites-enabled$ ls
我的 /var/log/apache2/error.log 文件显示以下内容:
[Sat Mar 26 17:54:08 2011] [error] [client 127.0.0.1] File does not exist: /htdocs
[Sat Mar 26 17:54:15 2011] [error] [client 127.0.0.1] File does not exist: /htdocs
[Sat Mar 26 17:54:23 2011] [notice] caught SIGTERM, shutting down
[Sat Mar 26 17:54:26 2011] [notice] Apache/2.2.14 (Ubuntu) DAV/2 SVN/1.6.6 configured -- resuming normal operations
我在网上看到说,这与服务器根目录设置不正确有关,因此它会查找 /htdocs 文件夹。
问题:
- 为什么
httpd status
什么都没显示? - 我的文件中的所有内容都
ports.conf
正确吗?我只有一行取消了注释Listen
。 - 在启用站点的目录中,难道不应该有默认的符号链接吗???
- 当我这样做时,
sudo /etc/init.d/apache2 restart/stop/start
一切正常,但是当我打开http://localhost/
或http://localhost:80/
或http://localhost:8080/
???时什么都没有显示出来。 - 服务器根目录是什么东西?我是否已正确设置它?
答案1
- 为什么 httpd 状态没有显示任何内容?
因为你还没有httpd
安装。也许你的意思是/etc/init.d/httpd status
?Ubuntu 系统上的等效命令是/etc/init.d/apache2 status
。
- 我的 ports.conf 文件中的所有内容都正确吗?
如果您只打算运行一个网站,那么应该没问题。如果您希望让更多网站以虚拟主机的形式运行,您也需要取消注释该NameVirtualHost
行。
- 在启用站点的目录中,难道不应该有默认的符号链接吗?
它们是在您使用时创建的a2ensite启用站点的命令例如
a2ensite default
将通过创建链接启用默认网站。
- 当我这样做时
sudo /etc/init.d/apache2 restart/stop/start
一切都正常......
查看问题中的错误消息,它们会表明您没有看到任何内容。您将看到 404 Not Found 错误消息。这是因为您没有启用任何网站。
- 服务器根目录是干什么的?我是否设置正确
我怀疑你的意思是文档根目录,如果没有配置 DocumentRoot,Apache 默认为 /htdocs。使用上面的命令启用站点并查看会发生什么。您应该收到一条消息,内容如下“有用“……”
答案2
我记得前一段时间有一项服务抱怨说“嘿,这在将来不会起作用 - 您应该使用服务停止/启动/重新启动”
我以为是 apache,但是当我运行:
sudo /etc/init.d/apache2 restart
今天它没有给出警告信息,但我认为你也可以这样做
sudo service apache2 restart
我将检查 /etc/apache2/sites-available/default 并确保文档根目录设置为:
DocumentRoot /var/www
您是使用 taskel 安装 Apache 还是在安装过程中安装的?