Homebrew 2.2.15 Homebrew/homebrew-core (git revision 50345f; last commit 2020-05-07)
检测 Homebrew 是否配置完好brew doctor安装 macOS Catalina 系统必须的库brew install openldap libiconv安装 Apache停用预装的 Apache 版本最新的 macOS 10.15 Catalina 系统预装了 Apache 2.4.42。
苹果这个预装的 Apache 版本,移除了不少常用的软件和脚本,填上这个坑可不是件容易的事儿。
最好的选择是停用它。
sudo apachectl stopsudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null安装最新的 Apache 版本使用 Homebrew 安装brew install httpd设置 Apache 随系统自动运行sudo brew services start httpd打开浏览器,访问http://localhost:8080It works!
常用的 Apache 管理命令启动 Apache 服务sudo apachectl start停止 Apache 服务sudo apachectl stop重启 Apache 服务sudo apachectl restart快速重启 Apache 服务sudo apachectl -k restart查看 Apache 系统进程ps -aef | grep httpd查看 Apache 错误日志tail -f /usr/local/var/log/httpd/error_log配置 Apache 服务器确认 Apache 配置文件的位置:/usr/local/etc/httpd/httpd.conf配置好 VS Code 来编辑配置文件将 VS Code 设置为可以从命令行启动。
启动 VS Code。按 F1 键打开命令面板(Command Palette),输入“shell",
选择”Shell 命令:在 PATH 中安装“code”命令。
重新启动终端(Terminal),使其生效。修改 Apache 服务器配置文件使用 VS Code 打开配置文件code /usr/local/etc/httpd/httpd.conf修改 默认的监听端口找到:
Listen 8080修改为:
Listen 80修改默认的 DocumentRoot找到:
DocumentRoot "/usr/local/var/www"修改为:
DocumentRoot "/Users/yourName/pathToDir"yourName: 你的用户名
pathToDir:要修改的文件路径
修改默认的 Directory找到:
DocumentRoot /usr/local/var/www修改为:
DocumentRoot /Users/yourName/pathToDir启用 mod_rewrite找到:
#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so修改为:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so找到:
AllowOverride None修改为:
AllowOverride All修改 User和 Group找到:
User _www Group _www修改为:
User yourName Group staff修改 Servername找到:
#ServerName www.example.com:8080修改为:
ServerName localhost保存 /usr/local/etc/httpd/httpd.conf文件。测试 Apache 服务创建测试文件建立网站根目录文件夹
mkdir -P /Users/yourName/pathToDir创建测试用的 index.html
echo "<h1>It also works!!</h1>" > /Users/yourName/pathToDir/index.html重启 Apache 服务器sudo apachectl -k restart开打浏览器,访问 http://localhostIt also works!!
配置 Virtual Host启用 Virtual Host 支持打开 Apache 配置文件code /usr/local/etc/httpd/httpd.conf启用 mod_vhost_alias.so找到:
#LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so修改为
LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so启用 httpd-vhosts.conf找到:
# Virtual hosts #Include /usr/local/etc/httpd/extra/httpd-vhosts.conf修改为:
# Virtual hosts Include /usr/local/etc/httpd/extra/httpd-vhosts.conf创建 Virtual Host 站点打开 Virtual Host 配置文件code /usr/local/etc/httpd/extra/httpd-vhosts.conf配置 Virtual Host 站点找到:
<VirtualHost *:8080> ……… DocumentRoot "/usr/local/opt/httpd/docs/dummy-host.example.com" ServerName dummy-host.example.com ……… </VirtualHost> <VirtualHost *:8080> ……… DocumentRoot "/usr/local/opt/httpd/docs/dummy-host2.example.com" ServerName dummy-host2.example.com ……… </VirtualHost>修改为:
<VirtualHost *:80> DocumentRoot "/Users/yourName/pathToDir/redSite" ServerName localhost.dev </VirtualHost> <VirtualHost *:80> DocumentRoot "/Users/yourName/pathToDir/blueSite" ServerName localadmin.dev </VirtualHost>保存 /usr/local/etc/httpd/extra/httpd-vhosts.conf 文件创建 Virtual Host 站点测试文件echo "<h1>Welcome to redSite!</h1>" > /Users/yourName/pathToDir/redSite/index.htmlecho "<h1>Welcome to blueSite!</h1>" > /Users/yourName/pathToDir/blueSite/index.html重启 Apache 服务器sudo apachectl -k restart打开浏览器,访问 http://localhost.dev
Welcome to redSite!
访问 http://localadmin.dev
Welcome to blueSite!
注意:这里可能会访问失败,因为我们还没有配置本地的域名解析。接下来马上搞。
配置本地域名解析服务安装Dnsmasqbrew install dnsmasq创建 *.dev 域名echo 'address=/.dev/127.0.0.1' > /usr/local/etc/dnsmasq.conf配置 *.dev 域名解析规则sudo mkdir -v /etc/resolversudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'测试*.dev 域名解析随机 ping 一个*.dev` 域名ping youcanuse.devPING youcanuse.dev (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.019 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.032 ms
访问之前创建的 Virtual Host打开浏览器,
访问 http://localhost.dev
Welcome to redSite!
访问 http://localadmin.dev
Welcome to blueSite!
这个*.dev` 域名就完全在本地自由使用了。当然完全可以自定义成任何你想要的域名(只在本机有效)。
配置启用 SSL 服务启用 SSL支持打开 Apache 配置文件code /usr/local/etc/httpd/httpd.conf启用 mod_socache_shmcb.so找到:
#LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so修改为:
LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so启用 mod_ssl.so找到:
#LoadModule ssl_module lib/httpd/modules/mod_ssl.so修改为:
LoadModule ssl_module lib/httpd/modules/mod_ssl.so启用 httpd-ssl.conf找到:
#Include /usr/local/etc/httpd/extra/httpd-ssl.conf修改为:
Include /usr/local/etc/httpd/extra/httpd-ssl.conf配置 SSL 服务打开 SSL 配置文件code /usr/local/etc/httpd/extra/httpd-ssl.conf修改 SSL 监听端口找到:
Listen 8443修改为:
Listen 443修改 Virtual Host 的 SSL 配置找到:
<VirtualHost _default_:8443> #General setup for the virtual host DocumentRoot "/usr/local/var/www" ServerName www.example.com:8443修改为:
<VirtualHost _default_:443> #General setup for the virtual host #DocumentRoot "/usr/local/var/www" #ServerName www.example.com:443保存 /usr/local/etc/httpd/extra/httpd-ssl.conf 文件配置 SSL 站点打开 Virtual Host 配置文件code /usr/local/etc/httpd/extra/httpd-vhosts.conf创建 SSL 站点<VirtualHost *:443> DocumentRoot "/Users/yourName/pathToDir/" ServerName localhost.dev SSLEngine on SSLCertificateFile "/usr/local/etc/httpd/server.crt" SSLCertificateKeyFile "/usr/local/etc/httpd/server.key" </VirtualHost>保存 /usr/local/etc/httpd/extra/httpd-vhosts.conf 文件创建 SSL 证书修改 openssl 配置打开 openssl 配置文件code /usr/local/etc/openssl@1.1/openssl.cnf找到:# req_extensions = v3_req修改为:
req_extensions = v3_req找到:0.organizationName = Organization Name (eg, company) 0.organizationName_default = Internet Widgits Pty Ltd修改为:
#0.organizationName = Organization Name (eg, company) #0.organizationName_default = Internet Widgits Pty Ltd找到:[ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment修改为:
[ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names在文件末尾添加# At the bottom of openssl.cnf add this: [ alt_names ] IP.1. = 127.0.0.1 IP.2. = 192.168.12.08 DNS.1 = localhost.dev DNS.1 = localadmin.dev保存 /usr/local/etc/openssl@1.1/openssl.cnf 文件创建 SSL 自签署证书生成 SSL证书sudo openssl req -extensions san -config /usr/local/etc/openssl@1.1/openssl.cnf -x509 -nodes -newkey rsa:4096 -keyout /usr/local/etc/httpd/server.key -out /usr/local/etc/httpd/server.crt -days 365注:要求输入 Common Name 时,输入主要常用的域名即可。其他的可随意填写。
签署 SSL 证书sudo openssl req -extensions san -config /etc/ssl/openssl.cnf -x509 -nodes -newkey rsa:4096 -keyout /private/etc/apache2/server.key -out /private/etc/apache2/server.crt -days 365 -subj将生成的证书导入系统sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /usr/local/etc/httpd/server.crt这样,避免使用 Chrome 等浏览器可能的禁止访问。
下一篇,我们配置PHP,MySQL, APC caching, YAML, and Xdebug等
---来自腾讯云社区的---iguojun
微信扫一扫打赏
支付宝扫一扫打赏