Mac系统自带Apache环境,终端查看Apache的版本号:
sudo apachectl -v
了解下apache的三个基本命令
sudo apachectl -k start //启动Apache
sudo apachectl -k stop //停止Apache
sudo apachectl -k restart //重启Apache
一、服务开启
启动apache之后,可在浏览器输入http://127.0.0.1或者localhost,若显示It works!说明服务已启动。但若未配置过,则可能出现Forbidden!字样。打开终端,继续下面的步骤:
1.cd到apache的根目录
cd /etc/apache2
2.先对原本的配置文件进行拷贝,以防配置出现错误时恢复文件。
sudo cp httpd.conf httpd.conf.bak
附:恢复文件的命令
sudo cp httpd.conf.bak httpd.conf
3.更改网站根目录
(也可设置自定义用户访问目录,参考https://www.jianshu.com/p/f56815569234)
网站根目录就是存放我们网站文件的最顶层目录,通常 URL 中域名后面的第一个斜线对应(映射)的就是网 站根目录。
默认 Apache 的网站根目录是安装目录中的 htdocs 文件夹,为了方便对网站文件的管理,一般我们会将其设置在 一个自定义目录中(如果你不介意其实不修改也无所谓)。
3.1在用户-【用户名】文件夹中,新建文件夹,命名为Sites,例如:
3.2终端中编辑httpd.conf 文件
sudo vim httpd.conf
输入用户密码后,如下
4.在 Apache 添加 PHP 处理模块
终端输入/php,找到:#LoadModule php5_module libexec/apache2/libphp5.so 或者 #LoadModule php7_module libexec/apache2/libphp5.so,按住i进入编辑模式后,去掉该行前面的#,然后ESC退出编辑模式
附:若需切换php版本,就修改这行代码。
5.继续输入/DocumentRoot 查找,出现类似下图,
终端中按住i键,进入编辑模式后
5.1更改路径,修改两个lib/WebSer/Docume改成我们自己的服务器文件夹路径(/Users/用户名/Sites)如下:
然后按ESC键退出编辑模式,继续下一步
5.2继续进行配置(也可退出编辑后,搜索options)
找到
Options FollowSymLinks Multiviews
按i进入编辑模式后,修改为
Options Indexes FollowSymLinks Multiviews
修改AllowOverride None为
AllowOverride All
如图:
5.3我们现在应该启用默认情况下注释掉的 mod_rewrite 。搜索mod_rewrite.so 并通过删除领先取消注释行 #:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
5.4修改用户与组
现在我们有阿帕奇的配置指向一个 Sites
我们的主目录中的文件夹。但是,仍然存在一个问题。默认情况下,阿帕奇的作为用户运行daemon
和组 daemon
。当试图访问我们的主目录中的文件时,这将导致权限问题。大约三分之一的路httpd.conf
文件有两个设置来设置 User
和 Group
阿帕奇将在下运行。更改这些以匹配您的用户帐户(替换your_user
与你真正的用户名),与一组 staff
:
User your_user
Group staff
5.5 服务器名称
阿帕奇喜欢在配置中有一个服务器名称,但默认情况下这是禁用的,所以搜索:
#ServerName www.example.com:8080
并将其替换为:
ServerName localhost
ESC退出编辑后,终端继续输入:wq进行保存并退出
此时基本配置完毕,可重启Apache后,在网站根目录中创建一个php文件,然后在浏览器中输入localhost可查看到php文件列表。
6.端口设置
http默认使用端口80,若需添加其他端口,终端继续编辑httpd.conf文件,
例如搜索/Listen后,添加8080端口
7.修改默认文档
当客户端访问的是一个目录而不是具体文件时,服务端默认返回这个目录下的某个文档(文件),这个文档就称之为默认文档。
默认文档可以配置多个(有前到后依次去找,找到为止,如 果没找到任何一个则启用目录浏览):
终端继续编辑配置文件,输入/DirectoryIndex进行搜索,找到DirectoryIndex index.html,一般无需修改。
修改后类似于下面
二、多站点开启
1.虚拟主机
如果一台机器上只有一个网站的话,没有任何问题,但是如果想要在一台机器上部署多个站点,就必须通过配置虚
拟主机的方式解决。
由于后期对虚拟主机的配置操作非常常见,所以我们一般将虚拟主机的配置单独放到一个配置文件中,然后
在主配置文件中引入,避免破坏主配置文件中的其他配置。
Include conf/extra/httpd-vhosts.conf 配置的作用就将另外一个配置文件引入(使其生效)
具体操作:
1.1 在主配置文件 httpd.conf中,终端输入/hosts,找到
# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf
按i进入编辑模式后将第二行前面的#去除
ESC退出编辑模式后,终端输入
:wq
进行保存
1.2编辑httpd-vhosts.conf文件
sudo vim /etc/apache2/extra/httpd-vhosts.conf
按i进入编辑模式,配置想要的虚拟主机目录,
绿框部分是默认的示例,仿照示例编辑.另外这两个虚拟主机实际上是不存在的,需删除或在每行前面添加#。
退出编辑模式后,:wq退出并保存
8.3在vhosts文件中添加 127.0.0.1 主机名,配置这个的作用就是将你配置的主机地址指向127.0.0.1(本机地址)
sudo vim /etc/hosts
编辑完后 退出并保存。
然后重启apache,在虚拟主机目录下可新建index.html,浏览器打开进行测试。
注意:虚拟主机的目录,若是Library/WebServer/Documents,或者其他自定义目录,记得设置打开目录的权限(设置主机的权限),在http.conf文件中配置。或者httpd-vhosts.conf文件中配置虚拟主机时。
额外注意:某些时候,多站点配置以后,可能会存在The requested URL / was not found on this server.
在httpd-vhosts.conf中增加下面代码,直接用localhost就能访问。即把localhost也当成一个虚拟站点,其对应的目录即可访问。
<VirtualHost *:80>
DocumentRoot "F:/Demo"
ServerName localhost
</VirtualHost>
https://www.imooc.com/qadetail/62113
三、mbstring扩展开启及错误日志开启
1.备份
cd /etc/
sudo cp php.ini.default php.ini
2.获取php.ini文件的权限并编辑
sudo chmod 755 /etc/php.ini
sudo vim /etc/php.ini
2.1 找到;extension=php_mbstring.dll,去除注释——将前面的;去掉
2.2 找到下面的对应项并修改其值如下
mbstring.language = Chinese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = UTF-8
mbstring.detect_order = UTF-8
mbstring.encoding_translation = On
mbstring.substitute_character = none
2.4 退出编辑 找到display_errors 去除Default_Value:On前面的分号
2.5退出编辑并保存,后重启Apache
sudo apachectl -k restart