...

Инасталация на ДЕВ машина под MacOS Catalina

част първа - brew, https, composer, nodejs
преди 2 месеца

Подготовката на дев машина за работа с apache/php/mysql изисква малко модификации. Първо започваме с инсталиране на brew - пакетен мениджър.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

в хода на инсталация може да се наложи да се инсталира xcode-select - ще стане автоматично. Проверете дали е инсталиран brew:

brew --version
Homebrew 2.4.2
Homebrew/homebrew-core (git revision 29f3d; last commit 2020-06-30)

Инсталирайте iTerm2 - богат на възможности и настройки заметител на Terminal. Инсталирайте oh-my-zsh: https://github.com/ohmyzsh/ohmyzsh Проверете и допълнете конфигурацията му в .zshrc Инсталирайте следните нужни пакети:

brew install openldap libiconv

Понеже Каталина идва с инсталиран Апах - трябва да го спрем и да му кажем да не се стартира със ситемата:

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

Сега можем да пристъпим към инсталиране на локална версия на апаха, както и на php и нужните за Laravel модули:

brew install httpd php@7.4

По подразбиране апаха се стартира на портове 8080 и 8443 - така не са нужни привилегии за отваряне на нови портове. Конфигурацията му може да намерите в /usr/local/etc/httpd/httpd.conf Лично аз си правя следните папки, чрез които лесно и без права ще мога да добавям/махам виртуални хостове и да чета логовете без да се заравям надълбоко:

mkdir -p Sites/{vhosts.d,logs,mac}

Правим следните промени в /usr/local/etc/httpd/httpd.conf:

Listen 80
...
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
...
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

<IfModule unixd_module>
    User your_user
    Group staff
</IfModule>

ServerAdmin your_user@laravel-vue.eu

#помнете да добавите съответният запис в /etc/hosts
ServerName mac.your_user

<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/Users/your_user/Sites/mac"
<Directory "/Users/your_user/Sites/mac">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "/Users/your_user/Sites/logs/00.error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "/Users/your_user/Sites/logs/00.access_log" common
</IfModule>

<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>

<IfModule mime_module>
    TypesConfig /usr/local/etc/httpd/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>

<IfModule proxy_html_module>
    Include /usr/local/etc/httpd/extra/proxy-html.conf
</IfModule>

<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
</IfModule>

# това ще го разкоментираме когато ще добавим виртуални хостове
#Include /Users/your_user/Sites/vhosts.d/*.conf

Създаваме файл, който да тестваме конфигурацията на php:

echo "<?php phpinfo();" > ~/Sites/mac/index.php

Добавяме mac.your_user в /etc/hosts на реда за 127.0.0.1 За да влезе промяната на хостовете в сила изпълняваме:

sudo dscacheutil -flushcache

иначе ще трябва да рестартирате. Инсталираме и composer, node и добавяме инсталатора на Ларавел:

brew install composer nodeje
composer global require laravel/installer

Добавяме към ~/.zshrc:

export PATH="$HOME/.composer/vendor/bin:$PATH"

Вече сме готови за първият проект на Ларавел! Аз си правя проектите на Ларавел в ~/proj/php затова създаваме директорията и в нея създаваме проекта laravel-fresh:

mkdir -p ~/proj/php
cd ~/proj/php
laravel new laravel-fresh

Сега трябва да добавим нашият виртуален хост laravel-fresh - първо добавяме хост записа и рефрешваме dns кеша:

sudo sh -c 'echo "127.0.0.1 laravel-fresh" >> /etc/hosts'
sudo dscacheutil -flushcache

Добавяме конфигурация за този виртуален хост, създавайки файла ~/Sites/vhosts.d/00.laravel-fresh.conf:

<VirtualHost laravel-fresh:80>
    ServerAdmin me@laravel-vue.eu
        DocumentRoot /Users/your_user/proj/php/laravel-fresh/public
        ServerName laravel-fresh

    setenvIf Request_URI ".(jpg|jpeg|png|css|gif|ico|js)$" dontlog
        ErrorLog "/Users/your_user/Sites/logs/01.laravel-fresh.err.log"
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
        CustomLog "/Users/your_user/Sites/logs/01.laravel-fresh.acc.log" combined env=!dontlog

    <Directory /Users/your_user/proj/php/laravel-fresh/public>
        Options +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Махаме коментара от последната линия в /usr/local/etc/httpd/httpd.conf:

Include /Users/your_user/Sites/vhosts.d/*.conf

Редактираме /usr/local/etc/php/7.4/php.ini за да добавим timezone:

date.timezone = Europe/Bulgaria

Рестартираме апаха:

brew services restart httpd

И проверяваме двата сайта дали работят http://laravel-fresh http://mac.your_user