您的位置 首页 > 腾讯云社区

macOS Catalina 本地开发环境构建全攻略 Part-1---iguojun

macOS Catalina 本地开发环境构建全攻略安装 XCode 命令行工具xcode-select --install安装 Homebrew 软件包管理器安装 Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"确认安装的版本brew --version

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:8080

It 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://localhost

It 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.dev

PING 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

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: