2016-12-01 135 views
5

不知道我的Mac是否带有Apache2.4并且没有检查过我操作的操作系统,我按照本指南在我的机器上使用Homebrew获取Apache/MySQL/PHP :https://echo.co/blog/os-x-109-local-development-environment-apache-php-and-mysql-homebrew在MacOS Sierra上安装/卸载Apache2 Sierra 10.12.1

这导致我在我的机器上运行了两个版本的Apache2:2.2和2.4。当在终端上询问apache运行的时候,答案是2.4,但是当试图在我的虚拟主机上打开我的程序实例时,我无法到达页面。 之后发生了什么事情让我感到困惑,因为我有一些其他人正在努力解决这个问题,他们改变并移动了文件,所以当我把电脑拿回来时,我甚至不知道从哪里开始了解我的位置,所以我试图卸载两个Apache版本并重新安装2.4。

因为我找不到任何指导帮助我卸载apache,并且brew命令删除不起作用,所以我去擦除了apache文件夹,并且搜索了包含“apache”或“ httpd“(任何我可以找到的,这意味着我可能也错过了一些文件,因为我只是不知道在哪里搜索它们)。

当我这样做后,我重新安装apache 2.4遵循这个其他指南https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions直到PHP安装(我没有执行)。

再次安装Apache后,我插在的httpd-vhost.conf我的虚拟主机中的数据如下:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "/Users/username/apache_vh/myApp" 
    ServerName myApp.username.com 
    ErrorLog "/usr/local/var/log/apache2/myApp-error_log" 
    CustomLog "/usr/local/var/log/apache2/myApp-access_log" common 
<Directory /> 
     Options Indexes FollowSymLinks Includes ExecCGI 
     AllowOverride All 
     Require all granted 
</Directory> 
</VirtualHost> 

,然后我修改httpd.conf文件位于/ usr/local/etc中/的apache2/2.4文件夹与以下(我省略注释行):

ServerRoot "/usr/local/opt/httpd24" 
Listen 80 

LoadModule authn_file_module libexec/mod_authn_file.so 
[...] 
LoadModule authn_core_module libexec/mod_authn_core.so 
LoadModule authz_host_module libexec/mod_authz_host.so 
LoadModule authz_groupfile_module libexec/mod_authz_groupfile.so 
LoadModule authz_user_module libexec/mod_authz_user.so 
[...] 
LoadModule authz_core_module libexec/mod_authz_core.so 
LoadModule access_compat_module libexec/mod_access_compat.so 
LoadModule auth_basic_module libexec/mod_auth_basic.so 
[...] 
LoadModule reqtimeout_module libexec/mod_reqtimeout.so 
[...] 
LoadModule filter_module libexec/mod_filter.so 
[...] 
LoadModule mime_module libexec/mod_mime.so 
LoadModule log_config_module libexec/mod_log_config.so 
[...] 
LoadModule env_module libexec/mod_env.so 
[...] 
LoadModule headers_module libexec/mod_headers.so 
[...] 
LoadModule setenvif_module libexec/mod_setenvif.so 
LoadModule version_module libexec/mod_version.so 
[...] 
LoadModule unixd_module libexec/mod_unixd.so 
[...] 
LoadModule status_module libexec/mod_status.so 
LoadModule autoindex_module libexec/mod_autoindex.so 
[...] 
<IfModule mpm_prefork_module> 
    #LoadModule cgi_module libexec/mod_cgi.so 
</IfModule> 
<IfModule !mpm_prefork_module> 
    #LoadModule cgid_module libexec/mod_cgid.so 
</IfModule> 
[...] 
LoadModule dir_module libexec/mod_dir.so 
[...] 
LoadModule alias_module libexec/mod_alias.so 
LoadModule rewrite_module libexec/mod_rewrite.so 

<IfModule unixd_module> 
User _www 
Group staff 
</IfModule> 

ServerAdmin [email protected] 

ServerName localhost 

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

<Directory "/Users/username/Sites"> 
    MultiViews 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

<IfModule dir_module> 
    DirectoryIndex index.html 
</IfModule> 

<Files ".ht*"> 
    Require all denied 
</Files> 

ErrorLog "/usr/local/var/log/apache2/error_log" 

LogLevel warn 

<IfModule log_config_module> 
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 
    LogFormat "%h %l %u %t \"%r\" %>s %b" common 

    <IfModule logio_module> 
     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 
</IfModule> 

    CustomLog "/usr/local/var/log/apache2/access_log" common 

</IfModule> 

<IfModule alias_module> 

    ScriptAlias /cgi-bin/ "/usr/local/var/apache2/cgi-bin/" 

</IfModule> 

<Directory "/usr/local/var/apache2/cgi-bin"> 
    AllowOverride None 
    Options None 
    Require all granted 
</Directory> 

<IfModule mime_module> 
    TypesConfig /usr/local/etc/apache2/2.4/mime.types 

    #AddType application/x-gzip .tgz 
    #AddEncoding x-compress .Z 
    #AddEncoding x-gzip .gz .tgz 
    AddType application/x-compress .Z 
    AddType application/x-gzip .gz .tgz 
    #AddHandler cgi-script .cgi 
    #AddHandler type-map var 
    #AddType text/html .shtml 
    #AddOutputFilter INCLUDES .shtml 
</IfModule> 

# Virtual hosts 
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf 

[...] 

<IfModule proxy_html_module> 
Include /usr/local/etc/apache2/2.4/extra/proxy-html.conf 
</IfModule> 

<IfModule ssl_module> 
SSLRandomSeed startup builtin 
SSLRandomSeed connect builtin 
</IfModule> 

上我后来加入下列到主机文件在/ etc文件夹(其是不一样的/ usr /本地/ etc,这一个驻留在root中,一级升起/ usr):

127.0.0.1 localhost 
255.255.255.255 broadcasthost 
::1    localhost 

127.0.0.1 myApp.username.com 

我希望看到“它的工作原理!”在本地主机上:8080和myApp在本地主机上:80。 我确实看到“它的工作原理!”在本地主机:8080,但如果我更新页面,我得到“本网站无法到达/本地主机拒绝连接。”。我已经开始,停止,重新启动apache,但我始终得到同样的行为。 在本地主机上:80而是我得到myApp,但我无法运行它,PHP没有被解析,我只能看到文件夹的树结构。

我跑了apachectl configtest,我得到语法OK。我跑了php -v,我得到了PHP 5.4.45(cli)(内置:2016年11月23日11:12:05)所以一切正常。

检查我粘贴以上我发现我失踪的PHP模块httpd.conf文件,所以我加了LoadModule php5_module libexec/libphp5.so

我仍然得到同样的问题。

我真的不明白是所有的文件夹结构,因为我试图遵循其他指南,但他们似乎指向一个apache2文件夹,我必须已经擦除,而我不应该有试图卸载旧版本,显然它在重新安装(/ etc/apache2/users)期间没有被重新创建。我在根目录下的etc文件夹中没有apache2文件夹,因此我假设我必须搜索/ etc/apache2中的/ usr/local下的/ users,但仅在该文件夹中搜索/ users有目录2.4。

我对所有这些目录和文件的组织感到非常困惑,我似乎无法理解他们是否曾被试图帮助我的人感动,如果我不小心擦掉了/ etc/apache2 /用户,同时卸载这些以前的版本,或者如果我基本上搞砸了太多的不同指南。

所以我的问题是:

我可以以某种方式解决这个问题,因为它是显示本地主机解析PHP正确的端口80上对myApp?

如果不是,我该如何以一种干净的方式卸载apache,确保我不会擦除不应该​​被触及的重要文件,同时我将带走所有会与之产生冲突的文件新安装的版本?

+0

我也有不止一个地方,它的“它的工作!”index.html。消息是: /Library/WebServer/Documents/index.html.en 和 /usr/local/var/www/htdocs/index.html 我试图改变他们两个,但我不能有成功文本更改,所以公共文件夹apache指的是在localhost上进行响应时:8080既不是这两个(或者我仍然缺少一些东西)。 –

回答

0

经过大量的研究和协作,再次让Apache工作的唯一方法是为我的操作系统重新设置一个工厂并返回到默认组织。 现在我的文件夹看起来很干净,Apache在端口80上运行,而不是8080.我现在继续为myApp创建一个虚拟主机。