This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| php:macos-installation [2021-10-28] – dcai | php:macos-installation [2021-10-31] (current) – dcai | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | == mac installation == | + | ===== PHP 7.4 macOS installation |
| + | |||
| + | ==== install packages ==== | ||
| < | < | ||
| - | # fish shell | + | brew install php@7.4 nginx postgresql@12 |
| - | brew install php@7.4 nginx | + | # pecl install zip libsodium |
| - | pecl install zip libsodium | + | |
| # remove duplicated extension added in / | # remove duplicated extension added in / | ||
| + | brew link php@7.4 | ||
| + | brew link postgresql@12 | ||
| </ | </ | ||
| - | == update php fpm config == | + | |
| + | ==== setup postgres ==== | ||
| + | < | ||
| + | # init db | ||
| + | initdb -D / | ||
| + | # start db | ||
| + | postgres -D ~/ | ||
| + | echo "ALTER USER postgres WITH PASSWORD ' | ||
| + | </ | ||
| + | |||
| + | ==== update php fpm config | ||
| ''/ | ''/ | ||
| < | < | ||
| - | |||
| - | ; Start a new pool named ' | ||
| - | ; the variable $pool can be used in any directive and will be replaced by the | ||
| - | ; pool name (' | ||
| [www] | [www] | ||
| - | |||
| - | ; Per pool prefix | ||
| - | ; It only applies on the following directives: | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; - ' | ||
| - | ; When not set, the global prefix (or / | ||
| - | ; Note: This directive can also be relative to the global prefix. | ||
| - | ; Default Value: none | ||
| - | ;prefix = / | ||
| - | |||
| - | ; Unix user/group of processes | ||
| - | ; Note: The user is mandatory. If the group is not set, the default user's group | ||
| - | ; will be used. | ||
| user = _www | user = _www | ||
| group = _www | group = _www | ||
| - | |||
| - | ; The address on which to accept FastCGI requests. | ||
| - | ; Valid syntaxes are: | ||
| - | ; ' | ||
| - | ; a specific port; | ||
| - | ; ' | ||
| - | ; a specific port; | ||
| - | ; ' | ||
| - | ; (IPv6 and IPv4-mapped) on a specific port; | ||
| - | ; '/ | ||
| - | ; Note: This value is mandatory. | ||
| listen = 127.0.0.1: | listen = 127.0.0.1: | ||
| - | + | pm = ondemand | |
| - | ; Set listen(2) backlog. | + | |
| - | ; Default Value: 511 (-1 on FreeBSD and OpenBSD) | + | |
| - | ; | + | |
| - | + | ||
| - | ; Set permissions for unix socket, if one is used. In Linux, read/ | + | |
| - | ; permissions must be set in order to allow connections from a web server. Many | + | |
| - | ; BSD-derived systems allow connections regardless of permissions. The owner | + | |
| - | ; and group can be specified either by name or by their numeric IDs. | + | |
| - | ; Default Values: user and group are set as the running user | + | |
| - | ; mode is set to 0660 | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; When POSIX Access Control Lists are supported you can set them using | + | |
| - | ; these options, value is a comma separated list of user/group names. | + | |
| - | ; When set, listen.owner and listen.group are ignored | + | |
| - | ; | + | |
| - | ; | + | |
| - | + | ||
| - | ; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. | + | |
| - | ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original | + | |
| - | ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address | + | |
| - | ; must be separated by a comma. If this value is left blank, connections will be | + | |
| - | ; accepted from any ip address. | + | |
| - | ; Default Value: any | + | |
| - | ; | + | |
| - | + | ||
| - | ; Specify the nice(2) priority to apply to the pool processes (only if set) | + | |
| - | ; The value can vary from -19 (highest priority) to 20 (lower priority) | + | |
| - | ; Note: - It will only work if the FPM master process is launched as root | + | |
| - | ; - The pool processes will inherit the master process priority | + | |
| - | ; | + | |
| - | ; Default Value: no set | + | |
| - | ; process.priority = -19 | + | |
| - | + | ||
| - | ; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user | + | |
| - | ; or group is differrent than the master process user. It allows to create process | + | |
| - | ; core dump and ptrace the process for the pool user. | + | |
| - | ; Default Value: no | + | |
| - | ; process.dumpable = yes | + | |
| - | + | ||
| - | ; Choose how the process manager will control the number of child processes. | + | |
| - | ; Possible Values: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; be alive at the same time. | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; state (waiting to process). If the number | + | |
| - | ; of ' | + | |
| - | ; number then some children will be created. | + | |
| - | ; | + | |
| - | ; state (waiting to process). If the number | + | |
| - | ; of ' | + | |
| - | ; number then some children will be killed. | + | |
| - | ; ondemand - no children are created at startup. Children will be forked when | + | |
| - | ; new requests will connect. The following parameter are used: | + | |
| - | ; | + | |
| - | ; can be alive at the same time. | + | |
| - | ; | + | |
| - | ; an idle process will be killed. | + | |
| - | ; Note: This value is mandatory. | + | |
| - | pm = dynamic | + | |
| - | + | ||
| - | ; The number of child processes to be created when pm is set to ' | + | |
| - | ; maximum number of child processes when pm is set to ' | + | |
| - | ; This value sets the limit on the number of simultaneous requests that will be | + | |
| - | ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. | + | |
| - | ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP | + | |
| - | ; CGI. The below defaults are based on a server without much resources. Don' | + | |
| - | ; forget to tweak pm.* to fit your needs. | + | |
| - | ; Note: Used when pm is set to ' | + | |
| - | ; Note: This value is mandatory. | + | |
| pm.max_children = 5 | pm.max_children = 5 | ||
| - | ; The number of child processes created on startup. | + | php_admin_flag[log_errors] = on |
| - | ; Note: Used only when pm is set to ' | + | php_admin_flag[display_errors] = on |
| - | ; Default Value: (min_spare_servers + max_spare_servers) / 2 | + | |
| - | pm.start_servers = 2 | + | |
| - | + | ||
| - | ; The desired minimum number of idle server processes. | + | |
| - | ; Note: Used only when pm is set to ' | + | |
| - | ; Note: Mandatory when pm is set to ' | + | |
| - | pm.min_spare_servers = 1 | + | |
| - | + | ||
| - | ; The desired maximum number of idle server processes. | + | |
| - | ; Note: Used only when pm is set to ' | + | |
| - | ; Note: Mandatory when pm is set to ' | + | |
| - | pm.max_spare_servers = 3 | + | |
| - | + | ||
| - | ; The number of seconds after which an idle process will be killed. | + | |
| - | ; Note: Used only when pm is set to ' | + | |
| - | ; Default Value: 10s | + | |
| - | ; | + | |
| - | + | ||
| - | ; The number of requests each child process should execute before respawning. | + | |
| - | ; This can be useful to work around memory leaks in 3rd party libraries. For | + | |
| - | ; endless request processing specify ' | + | |
| - | ; Default Value: 0 | + | |
| - | ; | + | |
| - | + | ||
| - | ; The URI to view the FPM status page. If this value is not set, no URI will be | + | |
| - | ; recognized as a status page. It shows the following informations: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; start time - the date and time FPM has started; | + | |
| - | ; start since - number of seconds since FPM has started; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; connections (see backlog in listen(2)); | + | |
| - | ; max listen queue - the maximum number of requests in the queue | + | |
| - | ; of pending connections since FPM has started; | + | |
| - | ; | + | |
| - | ; idle processes | + | |
| - | ; | + | |
| - | ; total processes | + | |
| - | ; max active processes - the maximum number of active processes since FPM | + | |
| - | ; has started; | + | |
| - | ; max children reached - number of times, the process limit has been reached, | + | |
| - | ; when pm tries to start more children (works only for | + | |
| - | ; pm ' | + | |
| - | ; Value are updated in real time. | + | |
| - | ; Example output: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; start time: | + | |
| - | ; start since: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; max listen queue: | + | |
| - | ; | + | |
| - | ; idle processes: | + | |
| - | ; | + | |
| - | ; total processes: | + | |
| - | ; max active processes: 12 | + | |
| - | ; max children reached: 0 | + | |
| - | ; | + | |
| - | ; By default the status page output is formatted as text/plain. Passing either | + | |
| - | ; ' | + | |
| - | ; output syntax. Example: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; By default the status page only outputs short status. Passing ' | + | |
| - | ; query string will also return status for each pool process. | + | |
| - | ; Example: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; The Full status returns for each process: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; start time - the date and time the process has started; | + | |
| - | ; start since - the number of seconds since the process has started; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; last request cpu - the %cpu the last request consumed | + | |
| - | ; it's always 0 if the process is not in Idle state | + | |
| - | ; because CPU calculation is done when the request | + | |
| - | ; processing has terminated; | + | |
| - | ; last request memory | + | |
| - | ; it's always 0 if the process is not in Idle state | + | |
| - | ; because memory calculation is done when the request | + | |
| - | ; processing has terminated; | + | |
| - | ; If the process is in Idle state, then informations are related to the | + | |
| - | ; last request the process has served. Otherwise informations are related to | + | |
| - | ; the current request being served. | + | |
| - | ; Example output: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; start time: | + | |
| - | ; start since: | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; last request cpu: | + | |
| - | ; last request memory: | + | |
| - | ; | + | |
| - | ; Note: There is a real-time FPM status monitoring sample web page available | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; Note: The value must start with a leading slash (/). The value can be | + | |
| - | ; | + | |
| - | ; may conflict with a real PHP file. | + | |
| - | ; Default Value: not set | + | |
| - | ; | + | |
| - | + | ||
| - | ; The ping URI to call the monitoring page of FPM. If this value is not set, no | + | |
| - | ; URI will be recognized as a ping page. This could be used to test from outside | + | |
| - | ; that FPM is alive and responding, or to | + | |
| - | ; - create a graph of FPM availability (rrd or such); | + | |
| - | ; - remove a server from a group if it is not responding (load balancing); | + | |
| - | ; - trigger alerts for the operating team (24/7). | + | |
| - | ; Note: The value must start with a leading slash (/). The value can be | + | |
| - | ; | + | |
| - | ; may conflict with a real PHP file. | + | |
| - | ; Default Value: not set | + | |
| - | ;ping.path = /ping | + | |
| - | + | ||
| - | ; This directive may be used to customize the response of a ping request. The | + | |
| - | ; response is formatted as text/plain with a 200 response code. | + | |
| - | ; Default Value: pong | + | |
| - | ; | + | |
| - | + | ||
| - | ; The access log file | + | |
| - | ; Default: not set | + | |
| - | ;access.log = log/ | + | |
| - | + | ||
| - | ; The access log format. | + | |
| - | ; The following syntax is allowed | + | |
| - | ; %%: the ' | + | |
| - | ; %C: %CPU used by the request | + | |
| - | ; it can accept the following format: | + | |
| - | ; - %{user}C for user CPU only | + | |
| - | ; - %{system}C for system CPU only | + | |
| - | ; - %{total}C | + | |
| - | ; %d: time taken to serve the request | + | |
| - | ; it can accept the following format: | + | |
| - | ; - %{seconds}d (default) | + | |
| - | ; - %{miliseconds}d | + | |
| - | ; - %{mili}d | + | |
| - | ; - %{microseconds}d | + | |
| - | ; - %{micro}d | + | |
| - | ; %e: an environment variable (same as $_ENV or $_SERVER) | + | |
| - | ; it must be associated with embraces to specify the name of the env | + | |
| - | ; variable. Some exemples: | + | |
| - | ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e | + | |
| - | ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e | + | |
| - | ; %f: script filename | + | |
| - | ; %l: content-length of the request (for POST request only) | + | |
| - | ; %m: request method | + | |
| - | ; %M: peak of memory allocated by PHP | + | |
| - | ; it can accept the following format: | + | |
| - | ; - %{bytes}M (default) | + | |
| - | ; - %{kilobytes}M | + | |
| - | ; - %{kilo}M | + | |
| - | ; - %{megabytes}M | + | |
| - | ; - %{mega}M | + | |
| - | ; %n: pool name | + | |
| - | ; %o: output header | + | |
| - | ; it must be associated with embraces to specify the name of the header: | + | |
| - | ; - %{Content-Type}o | + | |
| - | ; - %{X-Powered-By}o | + | |
| - | ; - %{Transfert-Encoding}o | + | |
| - | ; - .... | + | |
| - | ; %p: PID of the child that serviced the request | + | |
| - | ; %P: PID of the parent of the child that serviced the request | + | |
| - | ; %q: the query string | + | |
| - | ; %Q: the '?' | + | |
| - | ; %r: the request URI (without the query string, see %q and %Q) | + | |
| - | ; %R: remote IP address | + | |
| - | ; %s: status (response code) | + | |
| - | ; %t: server time the request was received | + | |
| - | ; it can accept a strftime(3) format: | + | |
| - | ; %d/ | + | |
| - | ; The strftime(3) format must be encapsuled in a %{< | + | |
| - | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H: | + | |
| - | ; %T: time the log has been written (the request has finished) | + | |
| - | ; it can accept a strftime(3) format: | + | |
| - | ; %d/ | + | |
| - | ; The strftime(3) format must be encapsuled in a %{< | + | |
| - | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H: | + | |
| - | ; %u: remote user | + | |
| - | ; | + | |
| - | ; Default: "%R - %u %t \"%m %r\" %s" | + | |
| - | ; | + | |
| - | + | ||
| - | ; The log file for slow requests | + | |
| - | ; Default Value: not set | + | |
| - | ; Note: slowlog is mandatory if request_slowlog_timeout is set | + | |
| - | ;slowlog = log/ | + | |
| - | + | ||
| - | ; The timeout for serving a single request after which a PHP backtrace will be | + | |
| - | ; dumped to the ' | + | |
| - | ; Available units: s(econds)(default), | + | |
| - | ; Default Value: 0 | + | |
| - | ; | + | |
| - | + | ||
| - | ; Depth of slow log stack trace. | + | |
| - | ; Default Value: 20 | + | |
| - | ; | + | |
| - | + | ||
| - | ; The timeout for serving a single request after which the worker process will | + | |
| - | ; be killed. This option should be used when the ' | + | |
| - | ; does not stop script execution for some reason. A value of ' | + | |
| - | ; Available units: s(econds)(default), | + | |
| - | ; Default Value: 0 | + | |
| - | ; | + | |
| - | + | ||
| - | ; The timeout set by ' | + | |
| - | ; application calls ' | + | |
| - | ; shutdown functions are being called (registered via register_shutdown_function). | + | |
| - | ; This option will enable timeout limit to be applied unconditionally | + | |
| - | ; even in such cases. | + | |
| - | ; Default Value: no | + | |
| - | ; | + | |
| - | + | ||
| - | ; Set open file descriptor rlimit. | + | |
| - | ; Default Value: system defined value | + | |
| - | ; | + | |
| - | + | ||
| - | ; Set max core size rlimit. | + | |
| - | ; Possible Values: ' | + | |
| - | ; Default Value: system defined value | + | |
| - | ; | + | |
| - | + | ||
| - | ; Chroot to this directory at the start. This value must be defined as an | + | |
| - | ; absolute path. When this value is not set, chroot is not used. | + | |
| - | ; Note: you can prefix with ' | + | |
| - | ; of its subdirectories. If the pool prefix is not set, the global prefix | + | |
| - | ; will be used instead. | + | |
| - | ; Note: chrooting is a great security feature and should be used whenever | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; Default Value: not set | + | |
| - | ;chroot = | + | |
| - | + | ||
| - | ; Chdir to this directory at the start. | + | |
| - | ; Note: relative path can be used. | + | |
| - | ; Default Value: current directory or / when chroot | + | |
| - | ;chdir = /var/www | + | |
| - | + | ||
| - | ; Redirect worker stdout and stderr into main error log. If not set, stdout and | + | |
| - | ; stderr will be redirected to /dev/null according to FastCGI specs. | + | |
| - | ; Note: on highloaded environement, | + | |
| - | ; process time (several ms). | + | |
| - | ; Default Value: no | + | |
| - | ; | + | |
| - | + | ||
| - | ; Decorate worker output with prefix and suffix containing information about | + | |
| - | ; the child that writes to the log and if stdout or stderr is used as well as | + | |
| - | ; log level and time. This options is used only if catch_workers_output is yes. | + | |
| - | ; Settings to " | + | |
| - | ; Default value: yes | + | |
| - | ; | + | |
| - | + | ||
| - | ; Clear environment in FPM workers | + | |
| - | ; Prevents arbitrary environment variables from reaching FPM worker processes | + | |
| - | ; by clearing the environment in workers before env vars specified in this | + | |
| - | ; pool configuration are added. | + | |
| - | ; Setting to " | + | |
| - | ; via getenv(), $_ENV and $_SERVER. | + | |
| - | ; Default Value: yes | + | |
| - | ;clear_env = no | + | |
| - | + | ||
| - | ; Limits the extensions of the main script FPM will allow to parse. This can | + | |
| - | ; prevent configuration mistakes on the web server side. You should only limit | + | |
| - | ; FPM to .php extensions to prevent malicious users to use other extensions to | + | |
| - | ; execute php code. | + | |
| - | ; Note: set an empty value to allow all extensions. | + | |
| - | ; Default Value: .php | + | |
| - | ; | + | |
| - | + | ||
| - | ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from | + | |
| - | ; the current environment. | + | |
| - | ; Default Value: clean env | + | |
| - | ;env[HOSTNAME] = $HOSTNAME | + | |
| - | ;env[PATH] = / | + | |
| - | ;env[TMP] = /tmp | + | |
| - | ; | + | |
| - | ;env[TEMP] = /tmp | + | |
| - | + | ||
| - | ; Additional php.ini defines, specific to this pool of workers. These settings | + | |
| - | ; overwrite the values previously defined in the php.ini. The directives are the | + | |
| - | ; same as the PHP SAPI: | + | |
| - | ; | + | |
| - | ; be overwritten from PHP call ' | + | |
| - | ; | + | |
| - | ; PHP call ' | + | |
| - | ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. | + | |
| - | + | ||
| - | ; Defining ' | + | |
| - | ; extension_dir. Defining ' | + | |
| - | ; overwrite previously defined php.ini values, but will append the new value | + | |
| - | ; instead. | + | |
| - | + | ||
| - | ; Note: path INI options can be relative and will be expanded with the prefix | + | |
| - | ; (pool, global or / | + | |
| - | + | ||
| - | ; Default Value: nothing is defined by default except the values in php.ini and | + | |
| - | ; specified at startup with the -d argument | + | |
| - | ; | + | |
| - | ;php_flag[display_errors] = off | + | |
| - | ; | + | |
| - | ; | + | |
| - | ; | + | |
| + | php_admin_value[memory_limit] = 1G | ||
| + | php_admin_value[upload_max_filesize] = 100M | ||
| + | php_admin_value[post_max_size] = 100M | ||
| + | php_admin_value[max_input_vars] = 5000 | ||
| + | php_admin_value[max_file_uploads] = 20 | ||
| + | php_admin_value[date.timezone] = Australia/ | ||
| + | php_admin_value[error_log] = / | ||
| </ | </ | ||
| - | == update nginx config == | + | ==== update nginx config |
| ''/ | ''/ | ||
| Line 461: | Line 50: | ||
| < | < | ||
| - | #user nobody; | ||
| worker_processes | worker_processes | ||
| - | |||
| error_log | error_log | ||
| - | |||
| - | #pid logs/ | ||
| - | |||
| - | |||
| events { | events { | ||
| worker_connections | worker_connections | ||
| } | } | ||
| - | |||
| http { | http { | ||
| include | include | ||
| default_type | default_type | ||
| - | |||
| - | # | ||
| - | # ' | ||
| - | # '" | ||
| - | |||
| - | # | ||
| - | |||
| sendfile | sendfile | ||
| - | # | ||
| - | |||
| - | # | ||
| keepalive_timeout | keepalive_timeout | ||
| - | |||
| - | #gzip on; | ||
| - | |||
| server { | server { | ||
| listen | listen | ||
| server_name | server_name | ||
| - | |||
| - | # | ||
| location / { | location / { | ||
| root / | root / | ||
| index index.php index.html index.htm; | index index.php index.html index.htm; | ||
| - | } | ||
| - | |||
| - | # | ||
| - | |||
| - | # redirect server error pages to the static page /50x.html | ||
| - | # | ||
| - | error_page | ||
| - | location = /50x.html { | ||
| - | root html; | ||
| } | } | ||
| Line 521: | Line 79: | ||
| fastcgi_param | fastcgi_param | ||
| } | } | ||
| - | |||
| - | # deny access to .htaccess files, if Apache' | ||
| - | # concurs with nginx' | ||
| - | # | ||
| - | #location ~ /\.ht { | ||
| - | # deny all; | ||
| - | #} | ||
| } | } | ||
| - | |||
| - | |||
| - | # another virtual host using mix of IP-, name-, and port-based configuration | ||
| - | # | ||
| - | #server { | ||
| - | # listen | ||
| - | # listen | ||
| - | # server_name | ||
| - | |||
| - | # location / { | ||
| - | # root html; | ||
| - | # index index.html index.htm; | ||
| - | # } | ||
| - | #} | ||
| - | |||
| - | |||
| - | # HTTPS server | ||
| - | # | ||
| - | #server { | ||
| - | # listen | ||
| - | # server_name | ||
| - | |||
| - | # ssl_certificate | ||
| - | # ssl_certificate_key | ||
| - | |||
| - | # ssl_session_cache | ||
| - | # ssl_session_timeout | ||
| - | |||
| - | # ssl_ciphers | ||
| - | # ssl_prefer_server_ciphers | ||
| - | |||
| - | # location / { | ||
| - | # root html; | ||
| - | # index index.html index.htm; | ||
| - | # } | ||
| - | #} | ||
| include servers/*; | include servers/*; | ||
| } | } | ||
| + | |||
| </ | </ | ||