溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在mac中安裝nginx和php

發(fā)布時(shí)間:2021-02-24 16:59:32 來(lái)源:億速云 閱讀:229 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章為大家展示了怎么在mac中安裝nginx和php,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

1.1、環(huán)境選擇:
重新在mac上配置php,原本mac上就自帶有apach、php以及pgsql,如果圖簡(jiǎn)單的話,直接用就可以了,不過(guò)在安裝前我仔細(xì)思考了一下幾個(gè)問(wèn)題:
選apache還是nginx:兩個(gè)我了解的都比較少,相對(duì)而言我接觸nginx比較多,服務(wù)器用的也是nginx,沒(méi)辦法誰(shuí)叫nginx負(fù)載高呢。為了更好的接觸nginx的環(huán)境,我決定還是統(tǒng)一下環(huán)境,方便今后使用,這是這次的主要關(guān)鍵;
安裝php:Mac os自帶了php,好像是5.3.8,版本比較落后,不過(guò)這不礙事,因?yàn)橐郧拔叶际峭ㄟ^(guò)php-osx by Liip來(lái)管理php,所以不擔(dān)心版本問(wèn)題。不過(guò)php-osx by Liip好像沒(méi)有fmp相關(guān)的配置,這樣我我要和nginx一起用的話就相對(duì)比較麻煩了,那我只能選擇其他方案了
安裝mysql:這個(gè)就沒(méi)有什么好疑問(wèn)的了,目前我肯定不會(huì)去用pgsql,畢竟沒(méi)接觸過(guò),需要有學(xué)習(xí)成本的,所以我在這篇紀(jì)錄中把關(guān)于pgsql的部分都去掉了
1.2、那該如何安裝:
既然我否定了系統(tǒng)自帶的環(huán)境,那么就要通過(guò)別的方式去安裝了,比如說(shuō)手動(dòng)編譯。如果是手動(dòng)編譯的話,那么就會(huì)遇到下面幾個(gè)問(wèn)題:
編譯費(fèi)事,php依賴那么多程序,一個(gè)個(gè)安裝,太累!
如果以后更新怎么辦?災(zāi)難??!
不過(guò)好在mac下有自己的第三方管理程序:homebrew,而且相對(duì)而言我覺(jué)得他可能在某些方面更優(yōu)越于linux下的apt-get、yum。如果通過(guò)homebrew來(lái)安裝、管理運(yùn)行環(huán)境的話,至少可以解決我?guī)讉€(gè)問(wèn)題:
安裝問(wèn)題,我不用繁瑣的去安裝依賴程序
升級(jí)問(wèn)題,只需要brew update一次升級(jí)所有程序
版本問(wèn)題,homebrew版本更新比較及時(shí),而apt-get、yum來(lái)說(shuō),今年用的基本是幾年前的穩(wěn)定版本了
OK,下面的安裝都是基于 homebrew,如果不熟悉或者還沒(méi)安裝有 homebrew 的話,可以查看這篇關(guān)于:Mac開(kāi)發(fā)者利器-Homebrew介紹及安裝。
二、安裝nginx
2.1、安裝:
用 brew 一鍵安裝 nignx:
1
brew install nginx
如果需要安裝其他 nginx 的版本,可以 “brew edit nginx” 打開(kāi)修改 nginx 的安裝信息包 formula,默認(rèn)會(huì)用 vi 打開(kāi),在文件開(kāi)頭處修改 nginx 相應(yīng)版本的下載地址就行。
2.2、配置
brew 執(zhí)行完后,nginx 就安裝好了。可以用以下指令對(duì) nginx 進(jìn)行操作:

復(fù)制代碼 代碼如下:


#打開(kāi) nginx
sudo nginx
 


#重新加載|重啟|停止|退出 nginx
nginx -s reload|reopen|stop|quit
打開(kāi) nginx 后,默認(rèn)的訪問(wèn)端口 8080,如果要改為常用的 80 端口,則要修改 “/usr/local/etc/nginx/nginx.conf” 下監(jiān)聽(tīng)(listen)端口值。
默認(rèn)的文件訪問(wèn)目錄(root)是 “/usr/local/Cellar/nginx/1.4.2/html”(這里的1.4.2是安裝的nginx的版本,文件夾名以安裝的nginx版本為準(zhǔn))。
2.3、把 nginx 設(shè)置為開(kāi)機(jī)啟動(dòng)運(yùn)行:

復(fù)制代碼 代碼如下:


mkdir -p ~/Library/LaunchAgents/

cp /usr/local/Cellar/nginx/1.4.2/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist


不過(guò)試了一下,不是超級(jí)用戶登陸,而是普通用戶登陸,并且監(jiān)聽(tīng)的端口在1024以下的(例如把默認(rèn)的8080端口改為了80端口),nginx 開(kāi)機(jī)是啟動(dòng)不了。因此,要 nginx 開(kāi)機(jī)啟動(dòng)的話,需要給予它管理員權(quán)限:

復(fù)制代碼 代碼如下:


2
sudo chown root:wheel /usr/local/Cellar/nginx/1.4.2/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.4.2/bin/nginx


三、安裝mysql
3.1、安裝:

復(fù)制代碼 代碼如下:


brew install mysql


homebrew安裝的版本同樣是當(dāng)前最新的穩(wěn)定版,安裝的過(guò)程比較簡(jiǎn)單,不過(guò)初始化就相對(duì)麻煩很多了,這里我失敗了很多次。
3.2、配置:
3.2.1、初始化
初始安裝 mysql 的一些配置數(shù)據(jù)庫(kù)(例如:information_schema、mysql)

復(fù)制代碼 代碼如下:


sudo mysql_install_db \
--verbose --user=`whoami` \
--basedir="$(brew --prefix mysql)" \
--datadir=/usr/local/var/mysql \
--tmpdir=/tmp \
--explicit_defaults_for_timestamp


這里我遇到了兩個(gè)問(wèn)題,過(guò)程都沒(méi)紀(jì)錄,這里簡(jiǎn)單提下解決方案:
系統(tǒng)建議我添加“–explicit_defaults_for_timestamp”;
安裝過(guò)程中會(huì)遇到幾個(gè)error,說(shuō)是db的幾個(gè)文件不存在;
網(wǎng)上搜索了下,大多是建議將/usr/local/var/mysql這個(gè)目錄修改下權(quán)限;
我操作后發(fā)現(xiàn)可能不是這樣的,造成這個(gè)問(wèn)題在于我在之前操作遇到了錯(cuò)誤中止了,生成了一個(gè)不完整var目錄,所以每次安裝失敗我就刪除以下文件,重新初始化就好了

復(fù)制代碼 代碼如下:


sudo rm /usr/local/opt/mysql/my.cnf
sudo rm -R /usr/local/var/mysql/


待安裝完畢后,會(huì)出現(xiàn)一大段mysql相關(guān)信息,運(yùn)行下面的命令啟動(dòng)mysql

復(fù)制代碼 代碼如下:


/usr/local/opt/mysql/bin/mysqld_safe &


執(zhí)行完后,就可以在終端里運(yùn)行 “mysql”,直接進(jìn)入mysql數(shù)據(jù)庫(kù)里。對(duì),不用輸入密碼,可以直接連接,初始默認(rèn)是可以匿名訪問(wèn)的。
3.2.2、修改密碼
超級(jí)用戶 “root” 也是沒(méi)設(shè)密碼,要設(shè)密碼的話可以執(zhí)行下面指令

復(fù)制代碼 代碼如下:


/usr/local/opt/mysql/bin/mysqladmin -u root password 'new-password'


現(xiàn)在訪問(wèn) mysql 還是不用密碼就可以連接,如果要設(shè)置一些登陸密碼的安全訪問(wèn)限制,則需執(zhí)行下面的 mysql安全安裝指令

復(fù)制代碼 代碼如下:


/usr/local/opt/mysql/bin/mysql_secure_installation


主要是設(shè)置修改root密碼(設(shè)置過(guò)了可以不用設(shè)置,略過(guò))、刪除匿名訪問(wèn)、刪除root網(wǎng)絡(luò)訪問(wèn)、刪除test數(shù)據(jù)庫(kù)。指令執(zhí)行完后,登陸mysql就需要密碼驗(yàn)證了

復(fù)制代碼 代碼如下:


mysql -u root -p


3.3、開(kāi)機(jī)啟動(dòng)mysql

復(fù)制代碼 代碼如下:


mkdir -p ~/Library/LaunchAgents/

cp /usr/local/Cellar/mysql/5.6.13/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist


至此,mysql安裝完畢。
四、安裝php、php-fpm…
4.1、安裝
Mac是預(yù)裝了php,不過(guò)很多擴(kuò)展都沒(méi)安裝,目測(cè)最多只能在終端里執(zhí)行下php指令,所以我選擇重新安裝php。由于 brew 默認(rèn)是沒(méi)有 php 安裝,所以要使用 “brew tap” 來(lái)安裝 brew 的第三方程序包,這里使用 josegonzalez 的php安裝包,具體操作如下:

復(fù)制代碼 代碼如下:


brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php


執(zhí)行完后,就可以用 brew 安裝php了。這里php有幾個(gè)版本可以安裝,具體可以執(zhí)行 “brew search php” 查看一下有什么php版本可以安裝,一般會(huì)有“php52、php53、php54、php55”版本,我安裝的是最新的php5.5版本。由于PHP5.5版本已經(jīng)內(nèi)嵌了 FPM(FastCGI Process Manager),在安裝選項(xiàng)里標(biāo)明就行,本人 php 的安裝配置指令如下:

復(fù)制代碼 代碼如下:


sudo brew install php55 \
--with-debug \
--with-fpm \
--with-gmp \
--with-homebrew-openssl \
--with-imap --with-intl \
--with-libmysql \
--without-bz2 \
--without-mysql \
--without-pcntl \
--without-pear


更多的安裝選項(xiàng)可以通過(guò) “brew options php55″ 查看。
提示:–with-cgi不能和–with-fpm一起安裝,互相沖突
指令執(zhí)行完后,php 跟 php-fpm 就安裝好了。
4.2、配置
由于是重裝php,之前系統(tǒng)預(yù)裝的php還沒(méi)卸載,因此在終端調(diào)用php時(shí),還是以之前系統(tǒng)的php版本做解析,所以這里需要修改path,指定 php 的解析路徑。在~/.bashrc(沒(méi)有則創(chuàng)建)最后加入一行:

復(fù)制代碼 代碼如下:


export PATH="$(brew --prefix php54)/bin:$PATH"
[html]
[code]
source ./.profile


不存在這個(gè)文件的朋友請(qǐng)參照這片文章進(jìn)行配置:Mac系統(tǒng)終端命令行不執(zhí)行命令 總出現(xiàn)command not found解決方法
OK,php-fpm安裝完成。
要修改配置 php 或者 php-fpm 的話,可以修改 “/usr/local/etc/php/5.5/php.ini” 、 “/usr/local/etc/php/5.5/php-fpm.conf”。
詳細(xì)配置方法可以參照相關(guān)資料:
php-fpm 啟動(dòng)參數(shù)及重要配置詳解
Linux平滑編譯升級(jí)php至5.5.0
啟動(dòng) php-fpm 的話就直接在終端里執(zhí)行 “php-fpm”,默認(rèn)打開(kāi) php-fpm 會(huì)顯示一個(gè)狀態(tài) shell 出來(lái),也可以把 php-fpm 的配置文件里的 “daemonize = no” 改為 “daemonize = yes”,就會(huì)以后臺(tái)守護(hù)進(jìn)程的方式啟動(dòng),對(duì)于剛修改的配置文件,可以執(zhí)行 “php-fpm -t” 來(lái)檢測(cè)配置有沒(méi)有問(wèn)題。
4.3、開(kāi)機(jī)啟動(dòng)
開(kāi)機(jī)啟動(dòng) php-fpm(下面的 5.5.3 是當(dāng)前安裝 php 的具體版本號(hào)):

復(fù)制代碼 代碼如下:


mkdir -p ~/Library/LaunchAgents/

cp /usr/local/Cellar/php54/5.5.3/homebrew-php.josegonzalez.php55.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php55.plist


為了方便,寫了個(gè)啟動(dòng)、關(guān)閉、重啟 php-fpm 的 shell 腳本:

復(fù)制代碼 代碼如下:


#!/bin/sh

param=$1

start()
{
    fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'`
    if [ ! -n "$fpms" ]; then
        php-fpm
        echo "PHP-FPM Start"
    else
        echo "PHP-FPM Already Start"
    fi
}

stop()
{
    fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'`
    echo $fpms | xargs kill -9

    for pid in $fpms; do
        if echo $pid | egrep -q '^[0-9]+$'; then
            echo "PHP-FPM Pid $pid Kill"
        else
            echo "$pid IS Not A PHP-FPM Pid"
        fi
    done
}

case $param in
    'start')
        start;;
    'stop')
        stop;;
    'restart')
        stop
        start;;
    *)
        echo "Usage: ./phpfpm.sh start|stop|restart";;
esac


五、設(shè)置 nginx 的 php-fpm 配置
在server塊中添加解析文件類型“index index.html index.htm index.php;”

復(fù)制代碼 代碼如下:


server {
        listen       80;
        server_name  localhost;
        index index.html index.htm index.php;
        ......
}


打開(kāi) nginx 默認(rèn)注釋掉的php location設(shè)置,修改如下(具體配置參數(shù),例如路徑,這里以我本地安裝為準(zhǔn)):

復(fù)制代碼 代碼如下:


location ~ .*\.(php|php5)?$ {
        #fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /Library/WebServer/public_html$fastcgi_script_name;
        include /usr/local/etc/nginx/fastcgi_params;
        #include fcgi.conf;
}


修改目錄用戶、用戶組:

復(fù)制代碼 代碼如下:


sudo chown www:www /Library/WebServer/public_html


OK,這樣就可以在訪問(wèn)目錄下(默認(rèn)是/Library/WebServer/public_html)執(zhí)行 php 文件了。嗯,趕快輸出一下 “phpinfo()” 吧~

復(fù)制代碼 代碼如下:


<?php
phpinfo();

上述內(nèi)容就是怎么在mac中安裝nginx和php,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI