在Mac OS下搭建LNMP/LNPP开发环境的步骤详解

下载.jpeg

概述

大家应该都知道LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。由于目前公司部分项目中使用的是PostgreSQL数据库。所以我们还存在另外一种架构模式LNPP:Linux系统下Nginx+PostgreSQL+PHP.

准备安装

为了减少上线错误,我们保持安装版本与服务器版本一致:PHP7.2、MySQL5.7、PostgreSQL9.5。

Mac电脑版本:MacOS 10.14

xcode-select --install
sudo mkdir -p /data/www && sudo chmod -R 777 /data/www

安装HomeBrew

使用Mac的程序员必不可少的一步便是安装Homebrew,他就像是centOS的yum命令和ubuntu的apt-get命令一样,通过brew命令,我们可以快速的安装一些软件包。

使用命令行安装Homebrew的命令如下:

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

使用brew doctor检查是否存在冲突,然后使用brew update && brew upgrade对brew进行升级

安装Nginx

Nginx在Mac OS中可以直接使用brew命令进行安装:

brew install nginx

如果需要使用80端口的话,需要将nginx加入root组当中同时设置开机启动:

sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/

sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

启动nginx服务:

sudo nginx

测试nginx是否安装成功,因为默认配置文件监听的是8080端口,所以先对8080端口发起请求:

curl -IL http://127.0.0.1:8080

结果应该类似于下:

HTTP/1.1 200 OK
Server: nginx/1.9.1
Date: Fri, 29 May 2015 14:50:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 29 May 2015 14:40:47 GMT
Connection: keep-alive
ETag: "5444dea7-264"
Accept-Ranges: bytes

安装PHP

PHP在Mac OS中可以直接使用brew命令进行安装:

brew install php@7.2

安装完成后,还需要将php加入环境变量$PATH当中:

# 如果使用bash的话
vim ~/.bash_profile
export PATH="/usr/local/sbin:$PATH"
source ~/.bash_profile
 
# 如果使用ZSH的话
vim ~/.zshrc
export PATH="/usr/local/sbin:$PATH"
source ~/.zshrc

然后可以设置php-fpm的开机自启动:

mkdir -p ~/Library/LaunchAgents

ln -sfv /usr/local/opt/php@7.2/homebrew.mxcl.php@7.2.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php@7.2.plist

使用以下命令监测php-fpm是否启动成功:

lsof -Pni4 | grep LISTEN | grep php

如果启动成功应当有以下类似输出:

安装MySQL

通过brew命令进行MySQL安装:

brew install mysql@5.7

同样,可以设置MySQL的开机自启动:

ln -sfv /usr/local/opt/mysql@5.7/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist

然后进行MySQL的安全安装,使用以下命令,可以更改root密码、删除匿名用户、关闭远程连接等:

mysql_secure_installation

然后会输出以下内容:

> Enter current password for root (enter for none):  //默认没有密码,直接回车即可
> Change the root password? [Y/n]      //是否更改root密码,选择是,然后输入并确认密码
> Remove anonymous users? [Y/n]       //是否删除匿名用户,选择是
> Disallow root login remotely? [Y/n]     //是否禁止远程登录,选择是
> Remove test database and access to it? [Y/n]   //是否删除test数据库,选择是
> Reload privilege tables now? [Y/n]     //是否重载表格数据,选择是

测试数据库是否安装成功:

mysql -u root -p

然后输入刚才设置的root密码,将会输出以下内容:

安装PostgreSQL

通过brew命令进行PostgreSQL安装:

brew install postgresql@9.5

为MacOS添加postgres用户

dscl . -create /Users/postgres
dscl . -create /Users/postgres UserShell /bin/bash
dscl . -create /Users/postgres RealName "Lucius Q. User"

// 注意 UniqueID必须唯一
dscl . -create /Users/postgres UniqueID "1010"
dscl . -create /Users/postgres PrimaryGroupID 80
dscl . -create /Users/postgres NFSHomeDirectory /Users/postgres

// 修改密码
dscl . -passwd /Users/postgres 'a'

// 加入指定用户组`admin`
dscl . -append /Groups/admin GroupMembership postgres

pgsql中创建postgres用户

sudo -u `whoami` createuser -s postgres

配置Nginx

修改nginx配置文件

vim /usr/local/etc/nginx/nginx.conf

将内容替换为:

worker_processes  1;

error_log   logs/error.log  debug;


events {
    worker_connections  1024;
}


http {

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

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
 
 access_log /usr/local/etc/nginx/logs/access.log main;

    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

    sendfile        on;

    keepalive_timeout  65;

    index index.html index.php;

    include sites-enabled/*;
}

然后创建php-fpm配置文件:

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_param SCRIPT_FILENAME
     $document_root$fastcgi_script_name;
     include  fastcgi_params;
}

添加一个主机(这个步骤根据自己的实际情况来):

vim /usr/local/ect/nginx/sites-enabled/haxibiao

输入以下内容:

server {
    listen       80;

    server_name l.haxibiao.com;

    root /data/www/haxibiao.com/public;

    location / {
          try_files $uri $uri/ /index.php$is_args$args;
    }
    include /usr/local/etc/nginx/conf.d/php-fpm;
}

重启nginx,至此,配置完成,在www下写一个测试文件,进行测试即可:

sudo nginx -t

sudo nginx -s reload

安装Composer与NPM

brew install composer 

brew install node

配置Git

最小化配置Git,根据自己的信息来:

git config --global user.name {你的名字}
git config --global user.email {公司邮箱地址}

公私钥生成:

ssh-keygen

配置config:

vi ~/.ssh/config

输入以下内容:

Host git.haxibiao.com
HostName git.haxibiao.com
User git
IdentityFile ~/.ssh/id_rsa_git

在gitlab账户中添加SSH秘钥信息:

部署项目

拉取项目:

cd /data/www && git clone git@git.haxibiao.com:web/haxibiao.com.git

文件夹赋予权限:

sudo chmod -R 644 /data/www/haxibiao.com/storage && sudo chmod -R 777 /data/www/haxibiao.com/public

安装项目前后端依赖包

composer install
npm install
npm run dev
cp .env.local .env

最后根据自己的实际情况配置项目信息

常见问题

访问项目504或502错误,请参考https://haxibiao.com/medium/33
访问项目404错误,是否配置/etc/hosts文件

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容