
Для простоты следующим шагом в качестве web-сервера я запущу apache. Его большое преимущество в том, что php очень просто ставится, как модуль, и не требуется дополнительных ухищрений. Поэтому я запущу сайт именно под apache, а уже после этого переделаю всё под nginx, который мне нравится больше.
В Mac OS X есть штатный apache, его можно запустить в System Preferences/Sharing/Web Sharing:

Это полноценный Apache/2.2.13, но для наших целей он не подходит - PHP в портах требует установленного apache, причём из портов. Ухищряться можно было бы, но особого желания у меня делать это не было. Поэтому я спокойно смиряюсь с мыслью, что в системе будет стоять Apache родной и Apache из портов.
Установка Apache2 проста:
$ sudo port install apache2
Запуск (пока его запускать не нужно):
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
Остановка:
$ sudo launchctl unload -w /Library/LaunchDaemons/org.macports.apache2.plist
Я привык управлять apache через apachectl, и не собираюсь изменять своим привычкам. Но apachectl от штатного Apache находится в /usr/sbin/apachectl:
$ which apachectl
/usr/sbin/apachectl
Apachectl же свежеустановленного порта лежит в /opt/local/apache22/bin/apachectl, для простоты делаем симлинк в каталог, находящийся первее в путях, чем /usr/sbin:
$ sudo ln -s /opt/local/apache22/bin/apachectl /opt/local/bin/
Теперь очередь за PHP, ставим полный набор, который нужен для Wordpress (некоторые модули не нужны, но я их использую все). В процессе установки читаем сообщения:
$ sudo port install php5-web
To customize php, copy
/opt/local/etc/php5/php.ini-development (if this is a development server) or
/opt/local/etc/php5/php.ini-production (if this is a production server) to
/opt/local/etc/php5/php.ini and then make changes.
$ sudo port install php5-mysql
To use mysqlnd with a local MySQL server, edit /opt/local/etc/php5/php.ini and set
mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket
to /opt/local/var/run/mysql5/mysqld.sock
Дальше полезных сообщений не будет:
$ sudo port install php5-mbstring
$ sudo port install php5-mcrypt
$ sudo port install php5-zip
$ sudo port install php5-gd
$ sudo port install php5-eaccelerator
$ sudo port install php5-openssl
$ sudo port install php5-sockets
$ sudo port install libssh2
Для eaccelerator создаю нужный каталог:
$ sudo mkdir /tmp/eaccelerator/
$ sudo chown www:www /tmp/eaccelerator/
Беру php.ini-production и делаю в нём базовые правки (тюнинг PHP-тема отдельная)
$ sudo cp /opt/local/etc/php5/php.ini-production \
/opt/local/etc/php5/php.ini
$ sudo vim /opt/local/etc/php5/php.ini
date.timezone = Europe/Kiev
error_log = /var/log/php_errors.log
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Не забываю создать файл для логов, иначе они могут не писаться
$ sudo touch /var/log/php_errors.log
$ sudo chown www:www /var/log/php_errors.log
Для интересующихся модули PHP поставились в каталог:
$ ls -al /opt/local/lib/php/extensions/no-debug-non-zts-20090626/
-rwxr-xr-x 2 root admin 71880 Jan 9 22:29 eaccelerator.so
-rwxr-xr-x 2 root admin 338560 Jan 9 22:32 gd.so
-rwxr-xr-x 2 root admin 2031040 Jan 9 22:27 mbstring.so
-rwxr-xr-x 2 root admin 38384 Jan 9 22:29 mcrypt.so
-rwxr-xr-x 2 root admin 46648 Jan 9 22:26 mysql.so
-rwxr-xr-x 2 root admin 111672 Jan 9 22:26 mysqli.so
-rwxr-xr-x 2 root admin 117480 Jan 10 21:41 openssl.so
-rwxr-xr-x 2 root admin 30496 Jan 9 22:26 pdo_mysql.so
-rwxr-xr-x 2 root admin 45016 Jan 10 21:47 sockets.so
-rwxr-xr-x 2 root admin 81680 Jan 9 22:29 zip.so
Теперь приступаем к конфигурированию Apache. Я отключаю ненужные мне модули, убираю все комментарии и вычищаю мусор. Рассказывать об этом не буду подробно, могу сказать, что и в “дефолтовом” состоянии Apache работает хорошо, главное сделать несколько коррекций, которые я приведу ниже:
$ sudo vim /opt/local/apache2/conf/httpd.conf
В конце секции загрузки модулей добавляем:
LoadModule php5_module modules/libphp5.so
Меняем строку
DirectoryIndex index.html
на
DirectoryIndex index.html index.php
Раскомментариваем включаемые файлы
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-default.conf
Добавляем конфиг для php (файл установился, я удивился, почему сам модуль не активировался в LoadModule):
Include conf/extra/mod_php.conf
httpd-mpm.conf можем не править, там всё в порядке.
В httpd-default.conf нужно подправить параметры, которые я выделил жирным. Если на сервер будет большое количество коннектов, и, например, база данных будет не справляться, то стоит выключить KeepAlive и размышлять о кешировании.
$ sudo vim /opt/local/apache2/conf/extra/httpd-default.conf
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
ServerTokens Prod
ServerSignature Off
HostnameLookups Off
В httpd-vhosts.conf описываются виртуальные хосты. Я это делаю так:
$ sudo vim /opt/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
ServerAdmin webmaster@theapplegeek.ru
ServerName theapplegeek.ru
ErrorLog "logs/theapplegeek.ru-error_log"
CustomLog "logs/theapplegeek.ru-access_log" common
DocumentRoot "/Users/ctrld/Sites/theapplegeek/public_html"
Options FollowSymLinks -Indexes
AllowOverride All
Order allow,deny
Allow from all
php_admin_flag engine off
AddType text/plain .html .htm .shtml
ServerName www.theapplegeek.ru
RedirectPermanent / "http://theapplegeek.ru/"
Обратите внимание на запрет php для /wp-content/uploads. Также вы видите, что основное имя хоста у меня без www - этот рудимент меня удивлял ещё лет семь назад. Но так как есть некоторые посетители, пытающиеся вводить www, то переучивать их можно только с помощью Permanent Redirect на основной домен.
Всё, Apache сконфигурирован. Конечно же, путь /Users/ctrld/Sites/theapplegeek/public_html должен существовать. Делаем тестовый файл для проверки php:
$ vim /Users/ctrld/Sites/theapplegeek/public_html/info.php
phpinfo()
System | Linux sat.multihost.cloud 3.10.0-962.3.2.lve1.5.39.el7.x86_64 #1 SMP Thu Sep 17 06:10:33 EDT 2020 x86_64 |
Build Date | Nov 3 2020 05:22:34 |
Configure Command | './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/opt/alt/php52' '--exec-prefix=/opt/alt/php52' '--bindir=/opt/alt/php52/usr/bin' '--sbindir=/opt/alt/php52/usr/sbin' '--sysconfdir=/opt/alt/php52/etc' '--datadir=/opt/alt/php52/usr/share' '--includedir=/opt/alt/php52/usr/include' '--libdir=/opt/alt/php52/usr/lib64' '--libexecdir=/opt/alt/php52/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/opt/alt/php52/usr/share/man' '--infodir=/opt/alt/php52/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/opt/alt/php52/etc' '--with-config-file-scan-dir=/opt/alt/php52/link/conf' '--with-exec-dir=/usr/bin' '--with-layout=GNU' '--disable-debug' '--without-pear' '--without-gdbm' '--with-pic' '--with-bz2' '--with-zlib' '--with-gettext' '--with-gmp' '--with-iconv' '--with-kerberos' '--with-mhash' '--with-readline' '--with-pcre-regex=/opt/alt/pcre802/usr' '--with-libxml-dir=/opt/alt/libxml2/usr' '--with-curl=/opt/alt/curlssl11/usr' '--with-openssl=/opt/alt/openssl11' '--with-openssl-dir=/opt/alt/openssl11' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-shmop' '--enable-calendar' '--enable-xml' '--with-litespeed' '--enable-pcntl' '--disable-bcmath' '--disable-dbase' '--disable-dba' '--disable-dom' '--disable-dbx' '--disable-intl' '--disable-json' '--disable-mbstring' '--disable-pcntl' '--disable-pdo' '--disable-phar' '--disable-posix' '--disable-soap' '--disable-sockets' '--disable-sysvsem' '--disable-sysvshm' '--disable-sysvmsg' '--disable-wddx' '--disable-xmlreader' '--disable-xmlwriter' '--disable-zip' '--without-imap' '--without-ncurses' '--without-gd' '--without-xmlrpc' '--without-ldap' '--without-pgsql' '--without-snmp' '--without-pspell' '--without-unixODBC' '--without-fileinfo' '--without-sqlite' '--without-mcrypt' '--without-enchant' '--without-tidy' '--without-xsl' '--without-pdo-odbc' '--without-pdo-pgsql' '--without-pdo-sqlite' '--without-mssql' '--without-pdo-dblib' '--without-interbase' '--without-pdo-firebird' '--without-recode' '--without-unixODBC' '--without-sybase-ct' '--disable-cli' |
Server API | LiteSpeed V7.8 CloudLinux 1.2 |
Virtual Directory Support | disabled |
Configuration File (php.ini) Path | /opt/alt/php52/etc |
Loaded Configuration File | /opt/alt/php52/etc/php.ini |
Scan this dir for additional .ini files | /opt/alt/php52/link/conf |
additional .ini files parsed | /opt/alt/php52/link/conf/alt_php.ini
|
PHP API | 20041225 |
PHP Extension | 20060613 |
Zend Extension | 220060519 |
Debug Build | no |
Thread Safety | disabled |
Zend Memory Manager | enabled |
IPv6 Support | enabled |
Registered PHP Streams | https, ftps, compress.zlib, compress.bzip2, php, file, data, http, ftp, zip |
Registered Stream Socket Transports | tcp, udp, unix, udg, ssl, sslv3, sslv2, tls |
Registered Stream Filters | zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed |
This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies with XCache v3.2.0, Copyright (c) 2005-2014, by mOo with the ionCube PHP Loader v10.4.3, Copyright (c) 2002-2020, by ionCube Ltd. with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies with XCache Optimizer v3.2.0, Copyright (c) 2005-2014, by mOo with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo with XCache Coverager v3.2.0, Copyright (c) 2005-2014, by mOo
|
Configuration
PHP Core
Directive | Local Value | Master Value |
allow_call_time_pass_reference | Off | Off |
allow_url_fopen | On | On |
allow_url_include | On | On |
always_populate_raw_post_data | Off | Off |
arg_separator.input | & | & |
arg_separator.output | & | & |
asp_tags | Off | Off |
auto_append_file | no value | no value |
auto_globals_jit | On | On |
auto_prepend_file | no value | no value |
browscap | no value | no value |
default_charset | no value | no value |
default_mimetype | text/html | text/html |
define_syslog_variables | Off | Off |
disable_classes | no value | no value |
disable_functions | no value | no value |
display_errors | Off | Off |
display_startup_errors | Off | Off |
doc_root | no value | no value |
docref_ext | no value | no value |
docref_root | no value | no value |
enable_dl | On | On |
error_append_string | no value | no value |
error_log | error_log | error_log |
error_prepend_string | no value | no value |
error_reporting | 8183 | 8183 |
expose_php | Off | Off |
extension_dir | /opt/alt/php52/usr/lib64/php/modules | /opt/alt/php52/usr/lib64/php/modules |
file_uploads | On | On |
highlight.bg | #FFFFFF | #FFFFFF |
highlight.comment | #FF8000 | #FF8000 |
highlight.default | #0000BB | #0000BB |
highlight.html | #000000 | #000000 |
highlight.keyword | #007700 | #007700 |
highlight.string | #DD0000 | #DD0000 |
html_errors | On | On |
ignore_repeated_errors | Off | Off |
ignore_repeated_source | Off | Off |
ignore_user_abort | Off | Off |
implicit_flush | Off | Off |
include_path | .:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php | .:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php |
log_errors | Off | Off |
log_errors_max_len | 1024 | 1024 |
magic_quotes_gpc | Off | Off |
magic_quotes_runtime | Off | Off |
magic_quotes_sybase | Off | Off |
mail.add_x_header | Off | Off |
mail.force_extra_parameters | no value | no value |
mail.log | no value | no value |
max_execution_time | 30 | 30 |
max_file_uploads | 20 | 20 |
max_input_nesting_level | 64 | 64 |
max_input_time | -1 | -1 |
max_input_vars | 100000 | 100000 |
memory_limit | 128M | 128M |
open_basedir | no value | no value |
output_buffering | 4096 | 4096 |
output_handler | no value | no value |
post_max_size | 100M | 100M |
precision | 14 | 14 |
realpath_cache_size | 4096k | 4096k |
realpath_cache_ttl | 120 | 120 |
register_argc_argv | Off | Off |
register_globals | Off | Off |
register_long_arrays | Off | Off |
report_memleaks | On | On |
report_zend_debug | On | On |
safe_mode | Off | Off |
safe_mode_exec_dir | no value | no value |
safe_mode_gid | Off | Off |
safe_mode_include_dir | no value | no value |
sendmail_from | no value | no value |
sendmail_path | /usr/sbin/sendmail -t -i | /usr/sbin/sendmail -t -i |
serialize_precision | 100 | 100 |
short_open_tag | On | On |
SMTP | localhost | localhost |
smtp_port | 25 | 25 |
sql.safe_mode | Off | Off |
track_errors | Off | Off |
unserialize_callback_func | no value | no value |
upload_max_filesize | 100M | 100M |
upload_tmp_dir | no value | no value |
user_dir | no value | no value |
variables_order | EGPCS | EGPCS |
xmlrpc_error_number | 0 | 0 |
xmlrpc_errors | Off | Off |
y2k_compliance | On | On |
zend.ze1_compatibility_mode | Off | Off |
BZip2 Support | Enabled |
Stream Wrapper support | compress.bz2:// |
Stream Filter support | bzip2.decompress, bzip2.compress |
BZip2 Version | 1.0.6, 6-Sept-2010 |
cURL support | enabled |
cURL Information | libcurl/7.71.0 OpenSSL/1.1.1d zlib/1.2.7 libssh2/1.8.0 nghttp2/1.33.0 |
date/time support | enabled |
"Olson" Timezone Database Version | 2020.4 |
Timezone Database | external |
Default timezone | Europe/Moscow |
Directive | Local Value | Master Value |
date.default_latitude | 31.7667 | 31.7667 |
date.default_longitude | 35.2333 | 35.2333 |
date.sunrise_zenith | 90.583333 | 90.583333 |
date.sunset_zenith | 90.583333 | 90.583333 |
date.timezone | Europe/Moscow | Europe/Moscow |
DOM/XML | enabled |
DOM/XML API Version | 20031129 |
libxml Version | 2.9.4 |
HTML Support | enabled |
XPath Support | enabled |
XPointer Support | enabled |
Schema Support | enabled |
RelaxNG Support | enabled |
EXIF Support | enabled |
EXIF Version | 1.4 $Id: exif.c 293036 2010-01-03 09:23:27Z sebastian $ |
Supported EXIF Version | 0220 |
Supported filetypes | JPEG,TIFF |
Input Validation and Filtering | enabled |
Revision | $Revision: 298196 $ |
Directive | Local Value | Master Value |
filter.default | unsafe_raw | unsafe_raw |
filter.default_flags | no value | no value |
GD Support | enabled |
GD Version | bundled (2.0.34 compatible) |
FreeType Support | enabled |
FreeType Linkage | with freetype |
FreeType Version | 2.8.0 |
T1Lib Support | enabled |
GIF Read Support | enabled |
GIF Create Support | enabled |
JPG Support | enabled |
PNG Support | enabled |
WBMP Support | enabled |
XPM Support | enabled |
XBM Support | enabled |
gmp support | enabled |
GMP version | 6.0.0 |
hash support | enabled |
Hashing Engines | md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 |
iconv support | enabled |
iconv implementation | glibc |
iconv library version | 2.17 |
Directive | Local Value | Master Value |
iconv.input_encoding | ISO-8859-1 | ISO-8859-1 |
iconv.internal_encoding | ISO-8859-1 | ISO-8859-1 |
iconv.output_encoding | ISO-8859-1 | ISO-8859-1 |
imagick module | enabled |
imagick module version | 3.4.4 |
imagick classes | Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel |
Imagick compiled with ImageMagick version | ImageMagick 7.0.10-10 Q16 x86_64 2020-07-16 https://imagemagick.org |
Imagick using ImageMagick library version | ImageMagick 7.0.10-10 Q16 x86_64 2020-07-09 https://imagemagick.org |
ImageMagick copyright | © 1999-2020 ImageMagick Studio LLC |
ImageMagick release date | 2020-07-09 |
ImageMagick number of supported formats: | 239 |
ImageMagick supported formats | 3FR, 3G2, 3GP, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FLV, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, JBG, JBIG, JNG, JNX, JPE, JPEG, JPG, JPS, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGB565, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TM2, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV |
Directive | Local Value | Master Value |
imagick.locale_fix | 0 | 0 |
imagick.progress_monitor | 0 | 0 |
imagick.skip_version_check | 0 | 0 |
Directive | Local Value | Master Value |
ioncube.loader.encoded_paths | no value | no value |
json support | enabled |
json version | 1.2.1 |
libXML support | active |
libXML Version | 2.9.4 |
libXML streams | enabled |
mailparse support | enabled |
Extension Version | 2.1.6 |
Revision | $Revision: 305002 $ |
Directive | Local Value | Master Value |
mailparse.def_charset | us-ascii | us-ascii |
Multibyte Support | enabled |
Multibyte string engine | libmbfl |
Multibyte (japanese) regex support | enabled |
Multibyte regex (oniguruma) version | 4.4.4 |
Multibyte regex (oniguruma) backtrack check | On |
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. |
Directive | Local Value | Master Value |
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | pass | pass |
mbstring.http_output | pass | pass |
mbstring.internal_encoding | utf-8 | utf-8 |
mbstring.language | neutral | neutral |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
MHASH support | Enabled |
MHASH API Version | 20060101 |
MySQL Support | enabled |
Active Persistent Links | 0 |
Active Links | 0 |
Client API version | 10.3.27 |
MYSQL_MODULE_TYPE | no value |
MYSQL_SOCKET | /var/lib/mysql/mysql.sock |
MYSQL_INCLUDE | no value |
MYSQL_LIBS | no value |
Directive | Local Value | Master Value |
mysql.allow_persistent | Off | Off |
mysql.connect_timeout | 60 | 60 |
mysql.default_host | no value | no value |
mysql.default_password | no value | no value |
mysql.default_port | no value | no value |
mysql.default_socket | no value | no value |
mysql.default_user | no value | no value |
mysql.max_links | Unlimited | Unlimited |
mysql.max_persistent | Unlimited | Unlimited |
mysql.trace_mode | Off | Off |
MysqlI Support | enabled |
Client API library version | 10.3.27 |
Client API header version | 10.3.9-MariaDB |
MYSQLI_SOCKET | /var/lib/mysql/mysql.sock |
Directive | Local Value | Master Value |
mysqli.default_host | no value | no value |
mysqli.default_port | 3306 | 3306 |
mysqli.default_pw | no value | no value |
mysqli.default_socket | no value | no value |
mysqli.default_user | no value | no value |
mysqli.max_links | Unlimited | Unlimited |
mysqli.reconnect | Off | Off |
OpenSSL support | enabled |
OpenSSL Version | OpenSSL 1.1.1d 10 Sep 2019 |
PCRE (Perl Compatible Regular Expressions) Support | enabled |
PCRE Library Version | 8.02 2010-03-19 |
Directive | Local Value | Master Value |
pcre.backtrack_limit | 100000 | 100000 |
pcre.recursion_limit | 100000 | 100000 |
PDO support | enabled |
PDO drivers | dblib, mysql, sqlite, sqlite2 |
PDO Driver for FreeTDS/Sybase DB-lib | enabled |
Flavour | freetds |
PDO Driver for MySQL, client library version | 10.3.27 |
PDO Driver for SQLite 3.x | enabled |
PECL Module version | 1.0.1 $Id: pdo_sqlite.c 293036 2010-01-03 09:23:27Z sebastian $ |
SQLite Library | 3.26.0 |
Reflection | enabled |
Version | $Id: php_reflection.c 300129 2010-06-03 00:43:37Z felipe $ |
Session Support | enabled |
Registered save handlers | files user sqlite |
Registered serializer handlers | php php_binary |
Directive | Local Value | Master Value |
session.auto_start | Off | Off |
session.bug_compat_42 | Off | Off |
session.bug_compat_warn | On | On |
session.cache_expire | 180 | 180 |
session.cache_limiter | nocache | nocache |
session.cookie_domain | no value | no value |
session.cookie_httponly | Off | Off |
session.cookie_lifetime | 0 | 0 |
session.cookie_path | / | / |
session.cookie_secure | Off | Off |
session.entropy_file | no value | no value |
session.entropy_length | 0 | 0 |
session.gc_divisor | 1000 | 1000 |
session.gc_maxlifetime | 1440 | 1440 |
session.gc_probability | 1 | 1 |
session.hash_bits_per_character | 5 | 5 |
session.hash_function | 0 | 0 |
session.name | PHPSESSID | PHPSESSID |
session.referer_check | no value | no value |
session.save_handler | files | files |
session.save_path | /tmp | /tmp |
session.serialize_handler | php | php |
session.use_cookies | On | On |
session.use_only_cookies | Off | Off |
session.use_trans_sid | 0 | 0 |
Simplexml support | enabled |
Revision | $Revision: 299016 $ |
Schema support | enabled |
SPL support | enabled |
Interfaces | Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject |
Classes | AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilterIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage, SplTempFileObject, UnderflowException, UnexpectedValueException |
SQLite support | enabled |
PECL Module version | 2.0-dev $Id: sqlite.c 298697 2010-04-28 12:10:10Z iliaa $ |
SQLite Library | 2.8.17 |
SQLite Encoding | UTF-8 |
Directive | Local Value | Master Value |
sqlite.assoc_case | 0 | 0 |
Regex Library | Bundled library enabled |
Dynamic Library Support | enabled |
Path to sendmail | /usr/sbin/sendmail -t -i |
Directive | Local Value | Master Value |
assert.active | 1 | 1 |
assert.bail | 0 | 0 |
assert.callback | no value | no value |
assert.quiet_eval | 0 | 0 |
assert.warning | 1 | 1 |
auto_detect_line_endings | 0 | 0 |
default_socket_timeout | 60 | 60 |
safe_mode_allowed_env_vars | PHP_ | PHP_ |
safe_mode_protected_env_vars | LD_LIBRARY_PATH | LD_LIBRARY_PATH |
url_rewriter.tags | a=href,area=href,frame=src,input=src,form=fakeentry | a=href,area=href,frame=src,input=src,form=fakeentry |
user_agent | no value | no value |
Alternative Timezone Database | enabled |
Timezone Database Version | 2020.4 |
Tokenizer Support | enabled |
XCache Version | 3.2.0 |
Modules Built | cacher optimizer coverager |
Directive | Local Value | Master Value |
xcache.coredump_directory | no value | no value |
xcache.disable_on_crash | Off | Off |
xcache.experimental | Off | Off |
xcache.test | Off | Off |
XCache Cacher Module | enabled |
Readonly Protection | disabled |
Page Request Time | 2021-01-18 00:49:29 |
Cache Init Time | 2021-01-18 00:49:28 |
Cache Instance Id | 30490 |
Opcode Cache | enabled, 62,914,560 bytes, 2 split(s), with 8192 slots each |
Variable Cache | enabled, 67,108,864 bytes, 1 split(s), with 8192 slots each |
Shared Memory Schemes | mmap |
Directive | Local Value | Master Value |
xcache.admin.enable_auth | On | On |
xcache.allocator | bestfit | bestfit |
xcache.cacher | On | On |
xcache.count | 2 | 2 |
xcache.gc_interval | 300 | 300 |
xcache.mmap_path | /dev/zero | /dev/zero |
xcache.readonly_protection | Off | Off |
xcache.shm_scheme | mmap | mmap |
xcache.size | 60M | 60M |
xcache.slots | 8K | 8K |
xcache.stat | On | On |
xcache.ttl | 86400 | 86400 |
xcache.var_allocator | bestfit | bestfit |
xcache.var_count | 1 | 1 |
xcache.var_gc_interval | 300 | 300 |
xcache.var_maxttl | 2592000 | 2592000 |
xcache.var_namespace | no value | no value |
xcache.var_namespace_mode | 0 | 0 |
xcache.var_size | 64M | 64M |
xcache.var_slots | 8K | 8K |
xcache.var_ttl | 2592000 | 2592000 |
XCache Coverager Module | enabled |
Coverage Started | Off |
Directive | Local Value | Master Value |
xcache.coveragedump_directory | no value | no value |
xcache.coverager | Off | Off |
xcache.coverager_autostart | On | On |
XCache Optimizer Module | enabled |
Directive | Local Value | Master Value |
xcache.optimizer | Off | Off |
XML Support | active |
XML Namespace Support | active |
libxml2 Version | 2.9.4 |
core library version | xmlrpc-epi v. 0.51 |
php extension version | 0.51 |
author | Dan Libby |
homepage | http://xmlrpc-epi.sourceforge.net |
open sourced by | Epinions.com |
XSL | enabled |
libxslt Version | 1.1.28 |
libxslt compiled against libxml Version | 2.9.1 |
EXSLT | enabled |
libexslt Version | 1.1.28 |
Optimization Pass 1 | enabled |
Optimization Pass 2 | enabled |
Optimization Pass 3 | enabled |
Optimization Pass 4 | enabled |
Optimization Pass 9 | enabled |
Zend Loader | enabled |
License Path | no value |
Obfuscation level | 3 |
Zip | enabled |
Extension Version | $Id: php_zip.c 305848 2010-11-30 11:04:06Z pajoye $ |
Zip version | 1.8.11 |
Libzip version | 0.9.0 |
ZLib Support | enabled |
Stream Wrapper support | compress.zlib:// |
Stream Filter support | zlib.inflate, zlib.deflate |
Compiled Version | 1.2.7 |
Linked Version | 1.2.7 |
Directive | Local Value | Master Value |
zlib.output_compression | Off | Off |
zlib.output_compression_level | -1 | -1 |
zlib.output_handler | no value | no value |
Additional Modules
Environment
Variable | Value |
PATH | /usr/local/bin:/usr/bin:/bin |
TEMP | /tmp |
TMP | /tmp |
TMPDIR | /tmp |
PWD | / |
PHP Variables
Variable | Value |
_SERVER["PATH"] | /usr/local/bin:/usr/bin:/bin |
_SERVER["TEMP"] | /tmp |
_SERVER["TMP"] | /tmp |
_SERVER["TMPDIR"] | /tmp |
_SERVER["PWD"] | / |
_SERVER["HTTP_ACCEPT"] | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
_SERVER["HTTP_ACCEPT_ENCODING"] | br,gzip |
_SERVER["HTTP_ACCEPT_LANGUAGE"] | en-US,en;q=0.5 |
_SERVER["HTTP_CONNECTION"] | Keep-Alive |
_SERVER["CONTENT_LENGTH"] | 0 |
_SERVER["HTTP_HOST"] | misterbond.ru |
_SERVER["HTTP_USER_AGENT"] | CCBot/2.0 (https://commoncrawl.org/faq/) |
_SERVER["HTTP_IF_MODIFIED_SINCE"] | Thu, 24 Sep 2020 14:32:32 GMT |
_SERVER["UNIQUE_ID"] | YASw6Blo-AihFEQ3iJBpPAAAABw |
_SERVER["SCRIPT_URL"] | /blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/ |
_SERVER["SCRIPT_URI"] | http://misterbond.ru/blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/ |
_SERVER["SERVER_SIGNATURE"] | no value |
_SERVER["SERVER_SOFTWARE"] | Apache |
_SERVER["SERVER_NAME"] | misterbond.ru |
_SERVER["SERVER_ADDR"] | 92.63.111.182 |
_SERVER["SERVER_PORT"] | 80 |
_SERVER["REMOTE_ADDR"] | 3.237.205.144 |
_SERVER["DOCUMENT_ROOT"] | /home/aqq14383/public_html/misterbond.ru |
_SERVER["REQUEST_SCHEME"] | http |
_SERVER["CONTEXT_PREFIX"] | no value |
_SERVER["CONTEXT_DOCUMENT_ROOT"] | /home/aqq14383/public_html/misterbond.ru |
_SERVER["SERVER_ADMIN"] | webmaster@misterbond.14383.aqq.ru |
_SERVER["SCRIPT_FILENAME"] | /home/aqq14383/public_html/misterbond.ru/blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/index.html |
_SERVER["REMOTE_PORT"] | 37650 |
_SERVER["SERVER_PROTOCOL"] | HTTP/1.1 |
_SERVER["REQUEST_METHOD"] | GET |
_SERVER["QUERY_STRING"] | no value |
_SERVER["REQUEST_URI"] | /blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/ |
_SERVER["SCRIPT_NAME"] | /blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/index.html |
_SERVER["PHP_SELF"] | /blog/2010/01/12/nastrojka-bloga-wordpress-na-mac-os-x-chast-2-apache/index.html |
_SERVER["REQUEST_TIME"] | 1610920169 |
_ENV["PATH"] | /usr/local/bin:/usr/bin:/bin |
_ENV["TEMP"] | /tmp |
_ENV["TMP"] | /tmp |
_ENV["TMPDIR"] | /tmp |
_ENV["PWD"] | / |
PHP License
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.
|
Проверим конфигурацию apache:
$ sudo /opt/local/apache2/bin/apachectl configtest
Syntax OK
Если всё в порядке, то запускаем его (в первый раз - через launchctl load -w, чтобы он смог стартовать после перезапуска системы):
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
А в дальнейшем можем использовать apachectl:
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl restart
$ sudo apachectl graceful
Последняя команда (graceful) позволяет рестартовать apache без обрыва соединений, что вежливо по отношению к посетителям.
Можно убедиться, что apache запущен:
$ ps ax | grep htt
37877 ?? Ss 0:00.10 /opt/local/apache2/bin/httpd -k start
37878 ?? S 0:00.00 /opt/local/apache2/bin/httpd -k start
37879 ?? S 0:00.00 /opt/local/apache2/bin/httpd -k start
37880 ?? S 0:00.00 /opt/local/apache2/bin/httpd -k start
37881 ?? S 0:00.00 /opt/local/apache2/bin/httpd -k start
37882 ?? S 0:00.00 /opt/local/apache2/bin/httpd -k start
Теперь небольшой “хинт”. Я описал виртуальный хост реального сайта theapplegeek.ru. Но я ещё ничего не переносил и контента там нет. Для того, чтобы оттестировать сайт и исправить ошибки, я направляю запросы на новое место, модифицируя /etc/hosts на том компьютере, с которого я тестирую сайт, но другие посетители будут ходить до переключения в DNS на старое место.
$ sudo vim /etc/hosts
94.45.55.146 theapplegeek.ru
94.45.55.146 www.theapplegeek.ru
Всё, подготовительные работы сделаны, можно проверять. Открываю в браузере URL http://theapplegeek.ru/info.php с тестовым скриптом PHP. Всё работает. Благодать. Если же есть какие-то проблемы, то нужно смотреть логи:
$ tail -f /opt/local/apache2/logs/theapplegeek.ru-error_log
$ tail -f /opt/local/apache2/logs/theapplegeek.ru-access_log
$ tail -f /opt/local/apache2/logs/error_log
$ tail -f /var/log/php_errors.log
Установка Wordpress не отличается от установки на любом Unix, его можно поставить по отличной инструкции на русском языке. Но если нужно, то напишите в комментариях, и я в отдельной части рассмотрю этот процесс.
Домашняя сеть у меня подключена через TimeCapsule, и проброс обращений извне к web-серверу, находящемся на адресе 192.168.98.2, я сделал через Port Mapping:


Внешний адрес я обычно смотрю через сервис WhatIsMyIP (94.45.55.146). Как только я перенёс сайт и проверил его работу, я зашёл в панель управления моими DNS-зонами и переключил записи со старого места на новое:

И затем начал следить за логами и корректировать проблемы, которые я пропустил. На помощь приходит в том числе такая конструкция, позволяющая искать 404/etc:
$ tail -1000 /opt/local/apache2/logs/theapplegeek.ru-access_log \
| awk '$9 != 200 && $9 != 304 {print $9, $7}' | sort | uniq -c
Вуаля.
Через несколько часов убираем из /etc/hosts добавленные ранее записи.
Следующим шагом я сконфигурирую nginx с использованием fastcgi для обработки PHP. Ещё (это больше памятка самому себе) нужно будет включить ежедневную ротацию логов. И сделать тюнинг PHP и сетевых параметров Mac OS X.