Установка на Unix-системы. Компиляция и установка программ из исходников Сборка php 7 из исходников
Этот раздел описывает установку и настройку PHP на Unix-системах. Пожалуйста, прочитайте все разделы, касающиеся вашей платформы или веб-сервера, прежде чем вы приступите к установке.
Замечание :
Некоторые Unix системы (такие как OpenBSD и SELinux) могут запрещать, из соображений безопасности, выделение памяти одновременно как записываемой и исполняемой. Это называется PaX MPROTECT или нарушение защиты W^X. Тем не менее, такой режим выделения памяти необходим для поддержки JIT компиляции PCRE JIT, так что в таких случаях необходимо собирать PHP без поддержки JIT компиляции PCRE , либо бинарные файлы должны быть внесены в белый список операционной системы,
Замечание : Кросс-компиляция под ARM с помощью "Android toolchain" на данный момент не поддерживается.
16 years ago
Users compiling under some versions of Solaris/SunOS may encounter the following error.
symbol ap_block_alarms: referenced symbol not found
To address this problem, add the following additional flag to the Apache build configure line:
--enable-rule=SHARED_CORE
So, adding this to the original instructions, you"d configure your Apache build like so:
./configure --prefix=/www --enable-module=so --enable-rule=SHARED_CORE
12 years ago
I am new to linux/apache/php (coming from server 2003/IIS/Asp.Net), so i was stumped as to why php/apache could only use static content. Also, it couldn"t access some documents that you created somewhere else, and then dragged into the HTML directory.
After some research, i found the problem was the SELinux context of the files. It took me forever to find the Proper command to use to change that, as all the examples on the net were out dated using old commands:
# chcon "user_u:object_r:httpd_sys_content_t" /var/www/html -Rc
This will change the SELinux context of all the documents under the /var/www/html directory (which is the web directory under Fedora), to allow the httpd process to access them, and the "-Rc" flag will make the changes Recursive, and will output it"s progress for each file that it sucessfully changes.
Не редко необходимые пакеты можно найти только в виде исходных текстов, в данной статье описывается метод установки пакета из исходных текстов.
Распаковка
Программы обычно распространяются в упакованных архивах, это файлы с расширениями
Нужно понимать отличие между архиватором и упаковщиком.
Для архивации директорий и файлов используется программа tar ; результатом её работы является файл с расширением .tar . Грубо говоря, это копия файловой системы - директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.
Данный файл по размеру будет чуть больше, чем суммарный размер файлов, которые были архивированы. Поэтому (а может и по другой причине) используют упаковщики - программы, которые позволяют уменьшить размер файла без потери данных.
Программа tar умеет распаковывать, поэтому не нужно вызывать gunzip , а можно просто указать программе tar , что файл нужно cначала распаковать. Например, команда
tar -xvf < some_app_name> .tar.gzсразу распакует и разархивирует. Отличие файлов с расширениями
лишь в том, что использовались разные упаковщики, программа tar определяет метод сжатия автоматически и дополнительных опций в данном случае не требуется.
После распаковки необходимо перейти в полученный каталог, все описываемые ниже команды выполняются в каталоге с исходными текстами пакета.
cd < имя_пакета>*Сборка пакета
Для сборки программ в GNU/Linux используется (в основном) программа make , которая запускает инструкции из Makefile , но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, нужно для каждого дистрибутива отдельно прописывать пути,где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile . Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile . Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов …на этом они остановились
Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential , так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake .
Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить
./ bootstrap ./ autogen.shЕсли таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:
aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -WallВсе эти команды используют файл configure.in . После выполнения этих команд создастся файл configure . После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)
./ configureКонфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am . Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой
./ configure --helpТакже есть набор стандартных опций, вроде
Prefix=
Которая указывает, какой каталог использовать для установки. Для Ubuntu обычно
--prefix =/ usr --prefix =/ usr/ localБЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой
makeДля сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error . Теперь всё скомпилировано и готово для установки.
Установка
Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.
Правильная установка(Вариант №1)
Установка при помощи утилиты checkinstall . Для установки выполните
sudo apt-get install checkinstallМинус данного способа: checkinstall понимает не все исходники, поскольку автор программы может написать особые скрипты по установке и checkinstall их не поймёт.
Для создания и установки deb-пакета необходимо выполнить
sudo checkinstallПравильная установка(Вариант №2)
Быстрое создание deb-пакета «вручную».
Основное отличие от предыдущего способа заключается в том, что в данном случае вы создаете пакет вручную и отслеживаете все вносимые изменения. Так же этот способ подойдет вам, если исходники не поддерживают сборку пакета с checkinstall .
Производим установку во временную директорию, где получаем весь набор устанавливаемых файлов:
Создадим в «корне пакета» директорию DEBIAN и сложим в DEBIAN/conffiles список всех файлов, которые должны попасть в /etc:
После чего создаём файл DEBIAN/control следующего содержания:
При необходимости там же можно создать скрипты preinst, postinst, prerm и postrm.
Создаем deb-пакет, для чего выполняем:
Получаем на выходе tempinstall.deb, который и устанавливаем
Установка (вариант №3)
Неправильная установка
Минус данного способа заключается в том, что если вы устанавливаете напрямую через make install, то нормально удалить или обновить пакет вы, скорее всего, не сможете. Более того, установка новой версии поверх старой, скорее всего, затрёт ваши изменения в конфигах. make install делает ровно то, что ему сказано - производит установку файлов в нужные места, игнорируя тот факт, что там что-то уже есть. После этого процесса совершенно никакой информации о том, что и куда ставилось, получить в удобоваримом виде невозможно. Иногда, конечно, Makefile поддерживает действие uninstall, но это встречается не так часто, да и не факт, что корректно работает. Кроме того, вам будет необходимо хранить для деинсталяции распакованное дерево исходников и правил сборки.
Для установки необходимо выполнить
sudo make installДля удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).
sudo make uninstallОшибки
Часто на этапе конфигурации конфигуратор сообщает, что нехватает той или иной библиотеки. Название библиотеки, которое он сообщает, не всегда соответствует названию пакета в Ubuntu. Из собственного опыта могу посоветовать поискать в Синаптике нужный пакет, исключив префикс lib, если нашлось несколько пакетов различающихся приставкой -dev в названии, то вам нужно установить именно -dev пакет (обычно он тянет за собой и не -dev пакет). Можно ещё поискать с помощью http://packages.ubuntu.com/ , введя имя библиотеки в поиск по содержимому пакетов, аналогично, если найдётся dev и не dev, нужны оба . Ну или просто поискать в Google .
Необходимое программное обеспечение
Пакеты с буквами mm в конце описания - это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.
Compile: | Runtime: | |
---|---|---|
X | libx11-dev | libx11-6 |
GlibMM | libglibmm-2.4-dev | libglibmm-2.4-1c2a |
GTK+ | libgtk2.0-dev,gtk-doc-tools | libgtk2.0-0 |
GTKMM | libgtkmm-2.4-dev | libgtkmm-2.4-1c2a |
Glade | libglade2-dev | libglade2-0 |
GladeMM | libglademm-2.4-dev | libglademm-2.4-1c2a |
XML | libxml2-dev | libxml2 |
XML ++ | libxml++2.6-dev | libxml++2.6c2a |
DBus | libdbus-1-dev,libdbus-glib-1-dev | libdbus-1-2,libdbus-glib-1-2 |
Alsa | libasound2-dev | libasound2 |
HAL | libhal-dev,libhal-storage-dev | libhal1,libhal-storage1 |
Gamin | libgamin-dev | libgamin0 |
Neon | libneon25-dev | libneon25 |
TagLib | libtagc0-dev | libtagc0 |
Startup-Notify | libstartup-notification0-dev | libstartup-notification0 |
Boost | libboost-dev,libboost-filesystem-dev | libboost-filesystem1.33.1 |
MusicBrainz | libmusicbrainz4-dev | libmusicbrainz4c2a |
GStreamer | libgstreamer0.10-dev,libgstreamer-plugins-base0.10-dev | libgstreamer0.10-0,libgstreamer-plugins-base0.10-0 |
Н
а этом уроке мы покажем вам, как установить PHP 7 на Linux VPS. PHP это язык сценариев на стороне сервера используется для веб -разработки.
PHP 7 поставляется с множеством новых и усовершенствованных функций. Одним из самых заметных является новая версия Zend Engine. Кроме того, есть другие важные улучшения, которые способствуют повышению производительности и значительно уменьшено использование памяти. Таким образом, PHP 7 может быть в два раза быстрее, чем PHP 5.6.
Чтобы установить PHP 7 на Ubuntu VPS, вам необходимо войти на свой сервер через . После того, как вы вошли в систему, обновите все системное программное обеспечение до последней версии с помощью следующей команды:
Sudo apt-get update && sudo apt-get -y upgrade
Кроме того, убедитесь, что в вашей системе языковой стандарт установлен в UTF-8. PHP 7 PPA для Ubuntu поддерживается Ондржей Сури. Мы будем использовать этот PPA, чтобы установить PHP 7 на Ubuntu 14.04.
Добавьте PPA к списку источников APT:
Sudo add-apt-repository ppa:ondrej/php-7.0
Если вы получаете сообщение об ошибке, что команда ‘add-apt-repository’ не может быть найдена, то, скорее всего, ваша система не попадает в пакет ‘software-properties-common’. Идем дальше и установим нужный пакет.
Sudo apt-get install software-properties-common
После завершения установки, повторите команду, чтобы добавить PHP 7 PPA к вашему APT списку источников.
Обновление локального кэша пакетов с помощью команды:
Sudo apt-get update
Это может занять несколько минут, и после его завершения вы будете готовы установить пакет PHP 7.
Sudo apt-get install php7.0
Для того, чтобы гарантировать, что последняя стабильная версия PHP 7 установлена на вашем сервере, вы можете выполнить команду:
Вы должны получить что-то вроде этого:
PHP 7.0.1-1+deb.sury.org~trusty+2 (cli) (NTS) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
Для установки дополнительных PHP 7 модулей, например, ‘php7.0-MySQL “, вы можете использовать команду ниже:
Sudo apt-get install php7.0-mysql
Для поиска доступных модулей PHP7, выполните следующую команду:
Sudo apt-cache search php7
Если вы хотите проверить, как PHP 7 работает на вашем Ubuntu VPS, вы можете создать тестовый скрипт. Перейдите к корневой директории документов вашего веб – сервера:
Cd /var/www/html/
Создайте тестовый файл:
Nano info.php
Вставить следующее содержание:
Сохраните файл и закройте его. Изменение права:
Chown www-data: info.php
Теперь, чтобы получить доступ к файлу можно использовать IP-адрес вашего сервера. Откройте веб-браузер, которым вы пользуетесь и перейдите по ссылке:
Http://192.168.1.111/info.php
IP-адрес 192.168.1.111 используется для целей тестирования, поэтому убедитесь, что вы используете IP-адрес вашего сервера. Вы должны увидеть страницу с текущей информацией PHP, таких как версия, опции компиляции, расширения и т.д.
PS. Если вам понравился этот пост, пожалуйста, поделитесь им с друзьями в социальных сетях с помощью кнопок на левой стороне поста или просто оставьте комментарий ниже. Заранее благодарю.
Php - популярный язык веб программирования и разработки сайтов. С каждой новой версией язык становился все интереснее и интереснее, начиналось все с простого функционально ориентированного языка программирования пригодного только для создания веб страничек, и наконец Php 5 сейчас позиционируется как полнофункциональный объективно ориентированный скриптовый язык. php 7 преподносит много интересных улучшений и исправлений таких как тотальная оптимизация производительности и добавление многопоточности но сегодня не об этом, обзоров возможностей php 7 вы можете найти вагон и маленькую тележку на просторах интернета.
В этой инструкции будет описана установка php 7 в Linux, она рассчитана в первую очередь на пользователей Ubuntu но подойдет и для других дистрибутивов. Мы рассмотрим установку из PPA в Ubuntu и сборку из исходников.
Репозитории PPA позволяют сторонним разработчикам распространять пакеты своих программ в обход официальных репоизиториев Ubuntu. Обычно из PPA можно получить самые новые или даже бета версии программ. После официального релиза php 7 был сделан PPA для Ubuntu. Добавим его в систему:
$ sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get update
И можно устанавливать:
sudo apt-get install php7.0
Для поддержки mysql нужно установить библиотеку:
sudo apt-get install php7.0-mysql
Для установки php в виде модуля fpm выполните:
sudo apt-get install php7.0-fpm
Сборка php 7 из исходников
Сначала установим необходимые нам инструменты и библиотеки:
sudo apt-get install git autoconf bison libxml2 libxml2-dev opessllibcurl4-openssl-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libmcrypt-dev libmysqld-dev libpspell-dev librecode-dev
Создадим рабочую папку:
Синхронизируем исходники php с репозитория git:
git clone https://git.php.net/repository/php-src.git
Переходим непосредственно к сборке и установке, программа будет установлена в текущую папку - ~/tmp:
cd php-src
$ sudo ./buildconf
$ sudo ./configure \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-mysql=/usr \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config
$ make
Создаем папку для конфигурационного файла:
mkdir $HOME/tmp/usr/etc
Создаем конфигурационный файл php со следующим содержимым:
nano $HOME/tmp/usr/etc/php.ini
max_execution_time=600
memory_limit=128M
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0
zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0
Сохраните, и php 7 установлен и настроен, можно переходить к тестированию.
Тестирование
Смотрим версию php:
Или выполняем скрипт:
nano ~/tmp/script.php
phpinfo() ?>
sapi/cli/php ~/tmp/script.php
И наконец бенчмарки:
sapi/cli/php Zend/bench.php
$ sapi/cli/php Zend/micro_bench.php