如何在 ubuntu 上停止 apache 服务器

How to stop an apache server on ubuntu

我正在尝试设置我的 django 项目以在 http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html 之后的 EC2 Ubuntu 实例上使用 nginx 作为其网络服务器。作为其中的一部分,如果 nginx 处于活动状态,我需要 install/test:

sudo apt-get install nginx
sudo /etc/init.d/nginx start    # start nginx

然后在 80 端口访问我的亚马逊 dns。

当我这样做并导致错误时,我看到:

mod_wsgi.listener_port      

'80'    

mod_wsgi.listener_host      

''    

CONTEXT_DOCUMENT_ROOT       

'/var/www/html'    

SERVER_SOFTWARE       

'Apache/2.4.7 (Ubuntu)'    

SCRIPT_NAME       

u''    

mod_wsgi.enable_sendfile      

'0'    

mod_wsgi.handler_script       

''    

SERVER_SIGNATURE      

'<address>Apache/2.4.7 (Ubuntu) Server at ec2-**-**.us-west-2.compute.amazonaws.com Port 80</address>\n'    

REQUEST_METHOD      

'GET'    

PATH_INFO       

u'/index'    

SERVER_PROTOCOL       

'HTTP/1.1'    

QUERY_STRING      

''    

HTTP_USER_AGENT       

'Mozilla/5.0 (Windows NT 6.1; rv:35.0) Gecko/20100101 Firefox/35.0'    

HTTP_CONNECTION       

'keep-alive'    

SERVER_NAME       

'ec2-**-**.us-west-2.compute.amazonaws.com'    

REMOTE_ADDR       

'107.0.193.131'    

mod_wsgi.request_handler      

'wsgi-script'    

wsgi.url_scheme       

'http'    

PATH_TRANSLATED       

'/home/ubuntu/tproxy/tp/tp/wsgi.py/index'    

SERVER_PORT       

'80'    

wsgi.multiprocess       

True    

mod_wsgi.input_chunked      

'0'    

SERVER_ADDR       

'172.31.28.196'    

DOCUMENT_ROOT       

'/var/www/html'    

mod_wsgi.process_group      

''    

SCRIPT_FILENAME       

'/home/ubuntu/tproxy/tp/tp/wsgi.py'    

SERVER_ADMIN      

'webmaster@localhost'    

wsgi.input      

<mod_wsgi.Input object at 0x7fdd5e046af0>    

HTTP_HOST       

'ec2-**-**.us-west-2.compute.amazonaws.com'

显然是 运行 apache 2 服务器。在 http://httpd.apache.org/docs/2.2/stopping.html 之后,我尝试了:

(env1)ubuntu@ip-172-31-28-196:~/tproxy/tp$ apachectl -k stop
httpd (pid 1132?) not running

这没有用。如何关闭 apache 服务器?

我一直都是

sudo apachectl stop

但是这不会阻止它在启动时再次启动。也可能有某种主管脚本会在发现服务已停止时重新启动该服务。

有几件事你应该看看。首先使用这样的命令找出端口 80 上的实际 运行 是什么。

lsof -i -P | grep :80

端口 80 上的任何 运行 都会返回一个 PID,如下所示

httpd  1046  apache2 10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:80 (LISTEN)

那就是你要杀的。

最后,如果所有其他方法都失败了,您可以尝试使用 pidFile 方法向 Parent 发送 Kill TERM 信号,如下所示。

kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

这将杀死所有 children 然后 Parent 将退出。如果您关闭 child 个 httpd 进程,您将看到新的 httpd 进程回来,因为 parent 仍然处于活动状态。

sudo service apache2 stop

另请参考此link 了解更多 谢谢