登录 | 注册

轻扣指间,静听心声

MacOS lamp

发表于 06-22 / 1654 阅读 / 0 评论 / 需时5.4’

mac下没有绿色环保的lamp一键包;简单记录一下配置过程,偶尔能用上。
主要利用Homebrew安装mysql,并替换自带apache,建议使用前先可以“科学上网”,不然可能会有障碍。
另外这个组合的名字应该叫UAMP或者MAMP才对!

osx-mamp.png

2024年4月更新

写在最前面

你应该有一款好用的代码编辑器,如Visual Studio Code或者Sublime Text

关于homebrew

在进行以下内容前,安装好homebrew是必要的!
如果没有“通畅的”网络,请使用如下命令安装

/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"

这里再提一句,如果不想折腾,MAMP Pro这个方案仍旧是多数人明智的选择。

用到的工具

除了homebrew以外,还需要Xcode和openssl,事实上安装homebrew时会自动安装xcode,但由于网络问题往往会失败。
安装XCode命令工具

xcode-select --install

如果安装失败,请自己去官网下载对应版本。官网地址
安装openssl(这是为了防止过程中遇到一些运行库缺失的情况)

brew install openssl

Apache安装

最新的macOS预装了Apache 2.4,但是苹果已经删除了此版本中一些必需的脚本。解决方案是通过Homebrew安装Apache 2.4,然后将其配置为在标准端口(80/443)上运行。

如果你已经运行了内置的Apache,则需要先关闭它,并删除任何自动加载脚本。

sudo apachectl -k stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

现在我们需要安装Brew提供的新版本:

brew install httpd

你也许会看到已经安装的提醒,可以尝试再执行

brew reinstall httpd

现在需要配置一些东西,以便新的Apache服务自动启动

brew services start httpd

现在已经安装了Homebrew的Apache,可以访问http://localhost:8080,应该会看到“It works!”。
顺带一提,通过这些命令操作Apache服务:

brew services stop httpd
brew services start httpd
brew services restart httpd

Apache配置

Apache的配置文件位置为:/opt/homebrew/etc/httpd/httpd.conf
需要更改:
1,将监听端口从默认值8080设置为80

Listen 8080改为Listen 80

2,更改Apache的文档根目录

搜索DocumentRoot,您应该会看到:

DocumentRoot "/opt/homebrew/var/www"

将此更改为指向您的用户目录,其中your_user是您用户帐户的名称:即在mac访达的个人文件夹中新建www目录。

DocumentRoot "/Users/your_user/www"

还需要更改DocumentRoot行下方的标签引用,改为指向您的新文档根目录。

<Directory "/Users/your_user/Sites">

在同一块中,您将找到AllowOverride设置,应更改None为All:

AllowOverride All

3,启用apache的重定向

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

删除上面这一行前面的#即可。

4,更改用户和组

现在还有一个问题存在。默认情况下,apache以用户_www和组_www身份运行。当尝试访问我们主目录中的文件时,这将导致权限问题。在httpd.conf文件的大约三分之一处,有两个设置来设置Apache将运行的User和Group。更改这些以匹配您的用户帐户(用您的真实用户名替换your_user),并将Group设置为staff:

即更改

User _www
Group _www

User your_user
Group staff

这一点设置至关重要,否则你会无奈地遇到403无权访问。

5,设置服务器名称

Apache配置中有一个服务器名称,默认是禁用的:

#ServerName www.example.com:8080

可以将其替换为(或某域名,并将该域名在hosts中指定到localhost):

ServerName localhost

设置网站文件夹

上面将网站默认目录改为了个人文件夹下的www目录,所以别忘记新建这个文件夹:

mkdir ~/www

并在里面放入一个index.html文件,内容随便吧,比如:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我的macOS 网络开发环境</title>
</head>
<body>
<h1>我的macOS 网络开发环境</h1>
</body>
</html>

完成了以上的配置,重启apache使之生效

brew services stop httpd
brew services start httpd

PHP安装

这里我安装的是7.4版本

brew install php@7.4
brew link php@7.4

设置环境变量

echo 'export PATH="/opt/homebrew/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/opt/homebrew/opt/php@7.4/lib"
export CPPFLAGS="-I/opt/homebrew/opt/php@7.4/include"

刷新

source ~/.zshrc

查看php版本

php -v

启动

brew services start php@7.4

关闭

brew services stop php@7.4

安装php版本切换工具

brew install brew-php-switcher

切换版本(如切换到7.2版本)

brew-php-switcher php@7.2

配置apache和php

1,安装完php,需要告诉apache去调用它。

同样打开/opt/homebrew/etc/httpd/httpd.conf滚动到LoadModule条目的底部。在

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

下面插入:

LoadModule php7_module /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp7.so

记得对应自己的php版本号!

2,设置默认文档类型

搜索:

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

替换为:

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

保存文件并重启Apache

brew services stop httpd
brew services restart httpd

4,验证PHP

在www目录中新建index.php,写入<?php phpinfo();?>访问http://localhost/index.php

安装mysql

建议安装5.7版本

brew install mysql@5.7

设置环境变量

echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/sbin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/opt/homebrew/opt/mysql@5.7/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql@5.7/include"

刷新

source ~/.zshrc

设置root密码

mysqladmin -u root -p "你的密码"

phpMyAdmin

建议下载phpmyadmin用来管理mysql,下载解压后,将文件夹放入www目录下,访问http://localhsot/phpmyadmin即可

开启伪静态

这部分应该在apache和php配置里面,遗漏了,补上。

在apache2.conf中添加一段代码:

<Directory /var/www/>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]
</Directory>

重启apache即可。

其它的事情

brew安装mysql后默认是打开“严格模式”的,这有好处也有坏处;比如我原先的代码就无法运行了。

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3
of SELECT list is not in GROUP BY clause and contains nonaggregated
column 'zizcn.typecho_comments.url' which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by

在MySQL5.7之后sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。
当然遇到问题应该修改自己的错误代码,但是当下需要来说,也可以先关闭mysql的严格模式。
打开/opt/homebrew/etc/my.cnf插入sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
结果如下:

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

重启mysq

lbrew services restart mysql@5.7

即可。

----------

以下为原内容

历经数年,以下内容已经不再有效了,文章最正面开始新的内容。

使用自带Apache

启动自带apache sudo apachectl start

开启php支持并配置伪静态

开启php支持并配置网站根目录

修改etc/apache2/httpd.conf 中两处参数。
a,启用 LoadModule php7_module libexec/apache2/libphp7.so 即可支持php
b,更改DocumentRoot为以下内容即可更改网站根目录,方便操作。

DocumentRoot "/users/username/sites"
<Directory "/users/username/sites">

开启apache伪静态

仍旧是修改etc/apache2/httpd.conf

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

找到上面这一行,去掉#注释
在你所定义的网站路径部分里找到如下内容

<Directory "/users/username/sites"">
    AllowOverride none
</Directory>

并修改为

<Directory "/users/username/sites"">
    AllowOverride All
</Directory>

建立.htaccess文件!

在终端中cd到你的网站目录vim .htaccess,以typecho为例,插入以下内容

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

修改权限sudo chmod -R 777 .htaccess 并重启apache sudo apachectl restart

安装配置 mysql

首先,安装 brew (可能需要f墙)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

用brew安装配置mysql5.7


brew install mysql@5.7
sudo chmod -R 777 /usr/local/share/man/man8
ln -sfv /usr/local/opt/mysql@5.7/*.plist ~/Library/LaunchAgents
mysql.server start

设置mysql密码 mysqladmin -u root password "123456"

phpmyadmin

下载phpmyadmin放在sites根目录下,更改config.sample.inc.php为config.inc.php并更改localhost为127.0.0.1,即可登录管理。

至此所有配置完成!

本文最后更新时间为 2024-06-19 10:36

评论功能已关闭!
本站仅用作个人记录,不交流、不讨论,留言板可以留言但无邮件回复。