目錄
PHP-FPM的加载与启动
安装Nginx
Nginx + PHP-FPM配置
安装MySQL
Memcache
Redis
设置别名
安装其他项目支持
安装Oh My Zsh
首頁 後端開發 php教程 Mac下安裝LNMP環境教程

Mac下安裝LNMP環境教程

Feb 27, 2018 am 10:02 AM
lnmp 教學 環境

最近工作環境切換到Mac,所以以OS X Yosemite(10.10.1)為例,記錄一下從零開始安裝Mac下LNMP環境的過程

##確保系統已經安裝xcode,然後使用一行指令安裝依賴管理工具Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
登入後複製
之後就可以使用

brew install FORMULA
登入後複製
來安裝所需的依賴了。

brew(意為釀酒)的命名很有意思,全部都使用了釀酒過程中採用的材料/器具,名詞對應以下的概念:

  • Formula(配方) 程式包定義,本質上是一個rb檔

  • Keg(桶)套件的安裝路徑

  • Cellar(地窖)所有程式包(桶)的根目錄

  • Tap(水龍頭)套件的來源

  • Bottle (瓶子)編譯打包好的套件

最終編譯安裝完畢的程式就是一桶釀造好的酒

#更詳細的資訊參考Homebrew的官方Cookbook

因此使用Homebrew常見的流程是:

  1. 增加一個程式來源(新增一個水龍頭) 

    brew tap homebrew/php

  2. 更新程式來源 

    brew update

  3. 安裝程式包(依照配方釀酒) 

    brew install git

  4. #查看配置 

    brew config 可以看到套件預設安裝在/usr/local/Cellar下(酒桶放在地窖內)

#安裝PHP5.6(FPM方式)

首先加入Homebrew官方的幾個軟體來源

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/php
登入後複製

PHP如果采用默认配置安装,会编译mod_php模块并只运行在Apache环境下,为了使用Nginx,这里需要编译php-fpm并且禁用apache,主要通过参数--without-fpm --without-apache来实现。完整的安装指令为

brew install php56 \--without-snmp \--without-apache \--with-debug \--with-fpm \--with-intl \--with-homebrew-curl \--with-homebrew-libxslt \--with-homebrew-openssl \--with-imap \--with-mysql \--with-tidy
登入後複製

由于OSX已经自带了PHP环境,因此需要修改系统路径,优先运行brew安装的版本,在~/.bashrc里加入:

export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
登入後複製

如果要安装新的php扩展,可以直接安装而不用每次重新编译php,所有的扩展可以通过

brew search php56
登入後複製

看到,下面是我自己所需要的扩展,可以支持Phalcon框架:

brew install php56-gearman php56-msgpack php56-memcache php56-memcached php56-mongo  php56-phalcon php56-redis php56-xdebug
登入後複製

PHP-FPM的加载与启动

安装完毕后可以通过以下指令启动和停止php-fpm

php-fpm -D
killall php-fpm
登入後複製

同时可以将php-fpm加入开机启动

ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
登入後複製

安装Nginx

brew install nginx
登入後複製

安装完毕后可以通过

nginx
nginx -s quit
登入後複製

启动和关闭,同时也支持重载配置文件等操作

nginx -s reload|reopen|stop|quit
登入後複製

nginx安装后默认监听8080端口,可以访问http://localhost:8080查看状态。如果要想监听80端口需要root权限,运行

sudo chown root:wheel /usr/local/Cellar/nginx/1.6.2/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.6.2/bin/nginx
登入後複製

并使用root权限启动

sudo nginx
登入後複製

开机启动

ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
登入後複製

Nginx + PHP-FPM配置

Nginx一般都会运行多个域名,因此这里参考了@fish的方法,按Ubuntu的文件夹结构来存放Nginx的配置文件

mkdir -p /usr/local/var/logs/nginx
mkdir -p /usr/local/etc/nginx/sites-available
mkdir -p /usr/local/etc/nginx/sites-enabled
mkdir -p /usr/local/etc/nginx/conf.d
mkdir -p /usr/local/etc/nginx/ssl
登入後複製

编辑Nginx全局配置

vim /usr/local/etc/nginx/nginx.conf
登入後複製
worker_processes  1;
error_log   /usr/local/var/logs/nginx/error.log debug;
pid        /usr/local/var/run/nginx.pid;

events {
    worker_connections  256;
}


http {    include       mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '"$http_x_forwarded_for" $host $request_time $upstream_response_time $scheme '
        '$cookie_evalogin';

    access_log  /usr/local/var/logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;
    port_in_redirect off;    include /usr/local/etc/nginx/sites-enabled/*;
}
登入後複製

这样一来首先可以把一些可复用配置独立出来放在/usr/local/etc/nginx/conf.d下,比如fastcgi的设置就可以独立出来

vim /usr/local/etc/nginx/conf.d/php-fpm
登入後複製

内容为

location ~ \.php$ {
    try_files                   $uri = 404;
    fastcgi_pass                127.0.0.1:9000;
    fastcgi_index               index.php;
    fastcgi_intercept_errors    on;    include /usr/local/etc/nginx/fastcgi.conf;
}
登入後複製

然后/usr/local/etc/nginx/sites-enabled目录下可以一个文件对应一个域名的配置,比如web服务器目录是/opt/htdocs

vim /usr/local/etc/nginx/sites-enabled/default
登入後複製
server {
    listen       80;
    server_name  localhost;
    root         /opt/htdocs/;

    location / {
        index  index.html index.htm index.php;        include     /usr/local/etc/nginx/conf.d/php-fpm;
    }
}
登入後複製

此时启动了php-fpm并且启动了Nginx后,就可以通过http://localhost来运行php程序了

安装MySQL

brew install mysql
登入後複製

可以通过

mysql.server startmysql.server stop
登入後複製

来启动/停止,启动后默认应为空密码,可以通过mysqladmin设置一个密码

mysqladmin -uroot password "mypassword"
登入後複製

但是在操作的时候出现了空密码无法登入的情况,最终只能通过mysqld_safe来设置

sudo mysqld_safe --skip-grant-tables
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';mysql> FLUSH PRIVILEGES;
登入後複製

最后将MySQL加入开机启动

cp /usr/local/Cellar/mysql/5.6.22/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
登入後複製

Memcache

brew install memcached
登入後複製

启动/停止指令

memcached -d
killall memcached
登入後複製

加入开机启动

cp /usr/local/Cellar/memcached/1.4.20/homebrew.mxcl.memcached.plist ~/Library/LaunchAgents/
登入後複製

Redis

brew install redis
登入後複製

Redis默认配置文件不允许以Deamon方式运行,因此需要先修改配置文件

vim /usr/local/etc/redis.conf
登入後複製

将daemonize修改为yes,然后载入配置文件即可实现后台进程启动

redis-server /usr/local/etc/redis.conf
登入後複製

加入开机启动

cp /usr/local/Cellar/redis/2.8.19/homebrew.mxcl.redis.plist ~/Library/LaunchAgents/
登入後複製

设置别名

最后可以对所有服务的启动停止设置别名方便操作

vim ~/.bash_profile
登入後複製

加入

alias nginx.start='launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'alias nginx.stop='launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'alias nginx.restart='nginx.stop && nginx.start'alias php-fpm.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"alias php-fpm.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"alias php-fpm.restart='php-fpm.stop && php-fpm.start'alias mysql.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"alias mysql.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"alias mysql.restart='mysql.stop && mysql.start'alias redis.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"alias redis.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"alias redis.restart='redis.stop && redis.start'alias memcached.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"alias memcached.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"alias memcached.restart='memcached.stop && memcached.start'
登入後複製

安装其他项目支持

brew install composer node
登入後複製

安装Oh My Zsh

brew install zsh-completions
chsh -s /usr/local/bin/zsh
vim ~/.zshenv
登入後複製

加入内容

export PATH=/usr/local/bin:$PATH
登入後複製

然后

vim ~/.zshrc
登入後複製

加入内容

fpath=(/usr/local/share/zsh-completions $fpath)
autoload -Uz compinit
compinit -u
登入後複製

最后运行

rm -f ~/.zcompdump; compinit
登入後複製

查看正在使用的shell

dscl localhost -read Local/Default/Users/$USER UserShell
登入後複製

安装Oh My Zsh

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
登入後複製

相关推荐:

LNMP编译安装PHP以及LNMP配置和验证实例分享

两种lnmp重置mysql数据库root密码的方法

LNMP环境更换Nginx服务器为Tengine的示例代码

以上是Mac下安裝LNMP環境教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

得物使用教程 得物使用教程 Mar 21, 2024 pm 01:40 PM

得物APP是當前十分火爆品牌購物的軟體,但是多數的用戶不知道得物APP中功能如何的使用,下方會整理最詳細的使用教程攻略,接下來就是小編為用戶帶來的得物多功能使用教學匯總,有興趣的用戶快來一起看看吧!得物使用教學【2024-03-20】得物分期購怎麼使用【2024-03-20】得物優惠券怎麼獲得【2024-03-20】得物人工客服怎麼找【2024-03-20】得物取件碼怎麼查看【2024-03-20】得物求購在哪裡看【2024-03-20】得物vip怎麼開【2024-03-20】得物怎麼申請退換貨

夏天,一定要試試拍攝彩虹 夏天,一定要試試拍攝彩虹 Jul 21, 2024 pm 05:16 PM

夏天雨後,常常能見到美麗又神奇的特殊天氣景象-彩虹。這也是攝影中可遇而不可求的難得景象,非常出片。彩虹出現有這樣幾個條件:一是空氣中有充足的水滴,二是太陽以較低的角度照射。所以下午雨過天晴後的一段時間內,是最容易看到彩虹的時候。不過彩虹的形成受天氣、光線等條件的影響較大,因此一般只會持續一小段時間,而最佳觀賞、拍攝時間更為短暫。那麼遇到彩虹,怎樣才能合理地記錄下來並拍出質感呢? 1.尋找彩虹除了上面提到的條件外,彩虹通常出現在陽光照射的方向,即如果太陽由西向東照射,彩虹更有可能出現在東

photoshopcs5是什麼軟體? -photoshopcs5使用教學課程 photoshopcs5是什麼軟體? -photoshopcs5使用教學課程 Mar 19, 2024 am 09:04 AM

PhotoshopCS是PhotoshopCreativeSuite的縮寫,由Adobe公司出品的軟體,被廣泛用於平面設計和圖像處理,作為新手學習PS,今天就讓小編為您解答一下photoshopcs5是什麼軟體以及photoshopcs5使用教程。一、photoshopcs5是什麼軟體AdobePhotoshopCS5Extended是電影、視訊和多媒體領域的專業人士,使用3D和動畫的圖形和Web設計人員,以及工程和科學領域的專業人士的理想選擇。呈現3D影像並將它合併到2D複合影像中。輕鬆編輯視

DisplayX(顯示器測試軟體)使用教學課程 DisplayX(顯示器測試軟體)使用教學課程 Mar 04, 2024 pm 04:00 PM

在購買顯示器的時候對其進行測試是必不可少的一環,能夠避免買到有損壞的,今天小編教大家來使用軟體對顯示器進行測試。方法步驟1.首先要在本站搜尋下載DisplayX這款軟體,安裝打開,會看到提供給用戶很多種檢測方法。 2.使用者點擊常規完全測試,首先是測試顯示器的亮度,使用者調整顯示器使得方框都能看得清楚。 3.之後點選滑鼠即可進入下一節,如果顯示器能夠分辨每個黑色白色區域那表示顯示器還是不錯的。 4.再次按一下滑鼠左鍵,會看到顯示器的灰階測試,顏色過渡越平滑表示顯示器越好。 5.另外在displayx軟體中我們

微信關收款聲音的步驟教程 微信關收款聲音的步驟教程 Mar 26, 2024 am 08:30 AM

1.首先打開微信。 2.點選右上角【+】。 3.點選二維碼收款。 4.點擊右上角三個小點。 5.點選關閉收款到帳語音提醒。

專家教你!華為手機截長圖的正確方法 專家教你!華為手機截長圖的正確方法 Mar 22, 2024 pm 12:21 PM

隨著智慧型手機的不斷發展,手機的功能也變得越來越強大,其中截長圖功能成為了許多用戶日常使用的重要功能之一。截長圖可以幫助使用者將較長的網頁、對話記錄或圖片一次儲存下來,方便查閱和分享。而在眾多手機品牌中,華為手機也是備受用戶推崇的一款品牌之一,其截長圖功能也備受好評。本文將為大家介紹華為手機截長圖的正確方法,以及一些專家技巧,幫助大家更好地利用華為手機的

PHP教學:如何將int型別轉換為字串 PHP教學:如何將int型別轉換為字串 Mar 27, 2024 pm 06:03 PM

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼

榮耀手機鴻蒙系統升級教程 榮耀手機鴻蒙系統升級教程 Mar 23, 2024 pm 12:45 PM

榮耀手機一直以來都備受消費者青睞,其出色的性能和穩定的系統讓人愛不釋手。而近日,榮耀手機發表了全新的鴻蒙系統,引起了許多用戶的關注與期待。鴻蒙系統被稱為「一統天下」的系統,具有更流暢的操作體驗和更高的安全性,讓使用者體驗到全新的智慧型手機世界。不少用戶紛紛表示想要升級自己的榮耀手機系統為鴻蒙系統,那麼,接下來我們就一起來看看榮耀手機鴻蒙系統的升級教學。首先,我

See all articles