1.Laravel环境搭建—Mac + Php + Nginx +Laravel

目录

  • 1.1 Mac PHP 升级
  • 1.2 Mac Nginx 安装
  • 1.3 Laravel安装
  • 1.4 打通环境

Mac PHP 升级到7.2

使用brew工具:

第一次安装可以直接以下命令:

    brew search php                    #刷新php版本
    brew install php72                 #安装php7.2稳定版

之前用brew安装过php,需要先卸载之前的php,再执行前文的安装命令:

    brew uninstall php

成功升级完成


php_update_done.png
    从上图可看出成功安装后:
    1. php 相关bin
        php 安装在/usr/local/opt/php@7.2/bin目录下,
        php-fpm 安装在/usr/local/opt/php@7.2/sbin目录下,
        按照上图提示将php相关的bin、sbin目录 export放到source文件中的环境变量中,然后生效文件:”source ~/.zshrc“。
    完成后可通过"php -v"确认新版本是否生效 
    2. php 相关配置文件
        配置文件放在:/usr/local/etc/php/7.2
        php.ini 是 php引擎的配置文件:主要用来控制php的某些功能,比如:错误提示,短标签,上传文件最大值,扩展等等可以通过php.ini文件设置
        php-fpm.conf 是PHP-FPM进程管理器的配置文件

Mac Nginx安装

  1. brew update
  2. brew search nginx //查询要安装的软件是否存在
  3. brew info nginx //此命令可查看当前环境是否安装了nginx,以及nginx的(预)安装信息


    nginx-not-install-info.png
上图可以看出:
    nginx在本地还未安装(Not installed),nginx的来源(From)
    Docroot默认为/usr/local/var/www
    在/usr/local/etc/nginx/nginx.conf配置文件中
    默认端口被配置为8080
    nginx将在/usr/local/etc/nginx/servers/目录中加载所有文件,
    用命令 ‘nginx’ 来启动nginx。
  1. brew install nginx //安装nginx


    image.png
  2. open /usr/local/etc/nginx/ //查看nginx配置目录


    image.png

    nginx.conf 是主要的配置文件,services目录是用来存放不同服务的具体配置的

  3. open /usr/local/Cellar/nginx //nginx的安装目录

  4. 启动nginx,执行:nginx

  5. 浏览器访问localhost:8080 验证
    若出现403


    image.png

    一般是因为:安装的nginx会默认在html(也就是/usr/local/var/www)目录下生成一个欢迎页面文件,而出现上面这种情况就是欢迎页面文件没有生成。
    cat /usr/local/etc/nginx/nginx.conf


    image.png

    通过配置文件我们可以看到其默认的网站根目录为html(即/usr/local/var/www),而默认的索引文件为index.html 和 index.htm,
  cd /usr/local/var/www/     //进入到www目录下
  touch index.html                            //创建一个新的      
  index.html文件
  vim index.html     //编辑该文件,随便来几句html
  :wq 保存信息

重新刷新localhost:8080 可看到你编辑的页面

Laravel安装(5.8)

laravel 对php扩展有一定的要求:

  PHP >= 7.1.3
  PHP OpenSSL 扩展
  PHP PDO 扩展
  PHP Mbstring 扩展
  PHP Tokenizer 扩展
  PHP XML 扩展
  PHP Ctype 扩展
  PHP JSON 扩展
  PHP BCMath 扩展

php在模特步安装的时候,已经加载了这些扩展,可以使用命令查看当前自己环境的支持的扩展

  php -m  //查看当前自己环境的php支持的扩展

Laravel 使用 Composer管理依赖,所以,安装之前确保已经在机器上安装了 Composer

  1. 在终端中执行以下命令下载Composer可执行文件,这会在当前目录下安装
        curl -sS https://getcomposer.org/installer | php
  2. 想全局生效需把composer.phar移到系统/usr/local/bin/目录下:
       mv composer.phar /usr/local/bin/composer

laravel安装

  1. 安装
        composer global require laravel/installer
  2. 将laravel的bin目录增加到PATH中:
        目录:$HOME/.composer/vendor/bin
        vim ~/.zshrc   //打开source文件
        在底部增加:export PATH="$HOME/.composer/vendor/bin:$PATH"  //修改文件
        wq!  //保存
        source  ~/.zshrc  //生效环境信息

安装完成后,只需通过 laravel new 命令即可在当前目录下创建一个新的 Laravel 应用

  laravel new blog
  cd 到blog的目录下:执行 
  php artisan serve   //  访问http://localhost:8000 可查看项目
image.png

image.png

访问连接遇到问题:

1. 访问页面出现500错误
    a. blog 目录权限问题 : chmod -R 775  ./blog
    b. blog的err日志中" No application encryption key has been specified.", 这是由于新生成的代码没有".env"文件导致的:
          cd blog
          mv .env.example .env
          php artisan key:generate

打通环境

上面三步,分别安装了php、nginx、laravel工程,并且实现了使用php启动laravel,下文将介绍如何 将nginx、larave、php打通,我们通过访问nginx的入口调用php引擎解析laravel项目,实现项目的访问。

php配置修改

忘记可通过 php --ini 查看配置路径
1. 修改 php.ini
vim  /usr/local/etc/php/7.2/php.ini
搜索 ;cgi.fix_pathinfo=1 ,改为cgi.fix_pathinfo=0

2. 修改php-fmp配置
vim /usr/local/etc/php/7.2/php-fpm.d/www.conf
将;listen = 127.0.0.1:9000改为listen = /Users/xxx/webserver/var/php-fpm/php-fpm.sock; 
将;listen.owner = nobody改为listen.owner = nobody
将;listen.group = nobody改为listen.group = nobody
将user = apache改为user = nobody
将group = apache改为group = nobody

nginx 配置修改

vim /usr/local/etc/nginx/nginx.conf //忘记可通过brew info nginx查看

user  nobody; // 需要跟php配置中listen.owner,listen.group保持一致
worker_processes  1; //工作进程个数
error_log  /Users/xxx/webserver/nginx_log/error.log; //nginx err日志存储路径,设置成自己的路径
pid        /Users/xxx/webserver/nginx_log/nginx.pid;//nginx 进程pid存储路径,设置成自己的路径

events {
    worker_connections  1024;//最大连接数
}

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"'; // 日志格式

    access_log  /Users/xxx/webserver/nginx_log/access.log  main; //access日志存储路径,设置成自己的路径

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        access_log  /Users/xxx/webserver/nginx_log/host.access.log  main; //设置成自己的路径

        root /Users/xxx/webserver/laravel_app/blog/public; //web root目录,设置成laravel项目的public目录
        index index.php;  //入口文件

        location / {  //路由规则
            try_files $uri $uri/ /index.php?$query_string; 
    }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /Users/xxx/webserver/laravel_app/blog/public;
        }
        location ~ \.php$ {
        fastcgi_pass   unix:/Users/xxx/webserver/var/php-fpm/php-fpm.sock; // fastcgi  设置成自己的php-fpm.sock的存放路径
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  //fastcgi_param
            include        fastcgi_params;
        }
    }

    include servers/*;
}

重启服务

1.php-fpm启动

  sudo php-fpm //fpm需要root角色启动,否则报错 [17-Jun-2019 08:11:17] ERROR: [pool www] failed to chown() the socket '/Users/xxx/webserver/var/php-fpm/php-fpm.sock': Operation not permitted (1)

  1. nginx 启动
sudo nginx //fpm 使用了root角色启动,生成的sock文件需要同样的权限访问,所以nginx也使用root启动最方便
  1. 访问http://localhost:8080/ 会出现laravel默认工程页面

  2. 其他问题:

问题1:nginx错误日志:2019/06/10 08:26:21 [error] 92105#0: *1 directory index of "/Users/xxx/webserver/laravel_app/blog/public/" is forbidden, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1:8080"
解决:nginx的目录配置的有问题,查看nginx配置的root目录下是否有 index.php


问题2:php错误日志:2019/06/11 08:30:29 [error] 54823#0: *13 FastCGI sent in stderr: "Unable to open primary script: /scripts/index.php (No such file or directory)" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/Users/xxx/webserver/var/php-fpm/php-fpm.sock:", host: "127.0.0.1:8080"
解决:
         a. nginx 和 php-fpm 配置需要使用同一个账号(上文中nobody部分) ,并且 php-fmp的目录需要授权给这个账号(chmod -R 777 php-fpm.sock)
         b.nginx 配置问题
         fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name; 需要修改成fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


问题3:laravel错误日志 :The stream or file "/Users/xxx/webserver/laravel_app/blog/storage/logs/laravel-2019-06-11.log" could not be opened: failed to open stream: Permission denied
解决: laravel 目录没权限  :目录+777 权限
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容