apache2无法停止,nginx无法启动

apache2无法停止,nginx无法启动

我安装了apache2和nginx作为web服务器,
发现很奇怪,service apache2 stop运行的时候在firefox中还是会显示apache2的logo,而运行的时候在firefox中却无法显示nginx的logo service nginx start
在此处输入图片描述

无论您停止 apache2 还是启动 nginx,apache2 debian 默认页面始终显示在我的 Firefox 中。

在此处输入图片描述

apache2的配置文件/etc/apache2/sites-available/000-default.conf如下:

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

nginx的配置文件/etc/nginx/sites-available/default如下:

server {
    listen       8080;
    server_name  127.0.0.1;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
            try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
            root /var/www/html;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
}

在我的操作系统中,

ls /var/www/html
index.nginx-debian.html  index.html

index.html 是 apache2 debian 的标志,每次执行 127.0.0.1:8080 时,不管是 apache2 还是 nginx,都会调用 index.html,显示 apache2 debian 的标志。
问题解决了。

答案1

这里确实有两个问题,所以我将尽力回答它们:

1.为什么Apache与Nginx显示的网页是一样的?

仔细查看你的配置文件。你会发现它们都加载了相同的内容:

Apache 正在加载(文档根目录):/var/www/html

Nginx 正在加载(root):/var/www/html;

这意味着两个服务器将显示相同的内容,因为它们正在加载相同的文件。您可以通过编辑配置文件将“根”目录更改为两个不同的位置。

例如阿帕奇:

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/apache
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

例如nginx:

server {
    listen       8080;
    server_name  127.0.0.1;
    root /var/www/html/nginx;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
            try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
            root /var/www/html/nginx;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
}

然后您需要创建每个目录并在其中放置一个文件:

mkdir /var/www/html/nginx

mkdir /var/www/html/apache

并将内容放入每个文件夹中。还值得检查每个文件夹的权限是否适合 Web 服务器访问它们。

2.如何检查 Apache 是否已停止且 Nginx 是否已启动

有一个简单的方法来检查每个服务的状态。假设您以 root 身份登录:

service apache2 stop #Stop apache
service apache2 status #is apache still running?

也可以使用ps命令来获取进程列表:

ps aux | grep -i apache

这可以有效地获取所有正在运行的进程,并搜索名为 apache 的任何进程。

然后您可以启动 nginx 并检查它是否正在运行:

service nginx start #start nginx
service nginx status #is nginx running?

(可选另一种方法来证明进程正在运行):ps aux | grep -i nginx

还可以查看哪个程序正在监听哪个端口:

netstat -ntlp

这将告诉您计算机上监听连接的所有程序的本地地址、端口和进程名称。您应该在此列表中看到 nginx 或 apache 正在运行,并且端口 8080(根据您的配置文件)已公开。

答案2

您正在使用相同的 Web 文件基本路径(/var/www/html),这就是使用 nginx 或 apache 时显示相同内容的原因。

了解谁在响应请求的最简单方法是查看响应标头:
curl -I 127.0.0.1
查看前面出现的内容Server

Network这也可以通过 Web 浏览器的开发者控制台中的或选项卡来完成Networking,在响应标头中查找“服务器”的值。

答案3

可能会出现这样的情况,即你的 Apache 服务已停止,但即便如此,你看到的也是/var/www/html目录作为根目录和 apache 网页。这是因为 nginx 中的目录 -/etc/nginx/sites-enabled/(由启用的虚拟托管服务器组成)和/etc/nginx/站点可用/(由可用的虚拟托管服务器组成)。一个选项是删除/清理这些带有配置文件的目录,另一个选项是仅注释掉/etc/nginx/nginx.conf

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;

############Comment out the following line############

#include /etc/nginx/sites-enabled/*;

############Comment out the following line############

然后检查以下内容:

Nginx 配置测试

sudo service nginx configtest
  • 测试 nginx 配置 [ 确定 ]

或者

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 Nginx 服务

sudo service nginx restart
  • 重新启动 nginx nginx [确定]

Nginx 服务状态

sudo service nginx status
  • nginx 正在运行

相关内容