Рубрики
Uncategorized

Centos7 компилирует и устанавливает LNMP — вероятно, самую полную сеть

Автор оригинала: David Wong.

Пожалуйста, используйте этот документ для изучения и осторожно используйте его в производственной среде

Об этом много написано в Интернете Windows возможно Linux Установка ниже LNMP Много учебных пособий. Но я все равно решаю внедрять его шаг за шагом, даже несмотря на то, что я устанавливал его в разных системах в соответствии с онлайн-учебниками N Много раз. Почему? Потому что я не понимаю. Я не знаю, зачем мне нужно это системное программное обеспечение и зачем я добавляю эти скомпилированные элементы? В чем смысл? Только копирование и вставка.

Некоторые предложения:

  • Компиляция и установка-это только начало создания среды. Не пытайтесь решить все проблемы на этом этапе
  • Продолжайте компиляцию по требованию, минимизируйте установку, выявляйте проблемы и решайте их
  • Отвечает за каждый используемый скомпилированный параметр
  • Держитесь подальше от копирования и вставки, вы можете быть сохранены
  • Избегайте компиляции и установки программного обеспечения, которого вы совсем не знаете

Мы ставим Laravel Беги!

Список программных документов

Документ здесь является базовым программным документом, не очень полным. Некоторые программные документы содержатся в содержимом.

  • Nginx
  • Mysql
  • Редис
  • Php
  • Свул

системные требования

#View CentOS version
[[email protected] source]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[[email protected] source]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018

Список программного обеспечения

В системе есть встроенная команда curl, поэтому мы выбираем CURL Загрузить программное обеспечение curl-O xxx , если у пакета проблемы с распаковкой, это не потому, что tar-zxf Я не могу распаковать пакет. Это означает, что пакет не полностью загружен или это всего лишь пустой пакет по сетевым причинам. Решение состоит в том, чтобы удалить его и загрузить снова. Кроме того, чтобы предотвратить миграцию веб-сайтов ресурсов, пожалуйста, используйте параметры curl-OL . -L : перенаправление трассировки Загрузка иностранных ресурсов происходит слишком медленно. Пожалуйста, используйте Xunlei для загрузки, а затем используйте scp Загрузка на сервер, общие параметры:

  • Переданным объектом является каталог
  • -p Укажите порт, по умолчанию 22

Сценарий использования:

  • scp <порт сервера> <пользователь сервера>@ сервера>:<путь к серверу>/<файл сервера> <локальный путь> Это ресурс сервера загрузки. Ресурс будет сохранен в <локальный путь> 。 сервера>:<путь к серверу>/<файл сервера> <локальный путь>
  • Это ресурс сервера загрузки. Ресурс будет сохранен в <локальный путь>
mysql-8.0.17.tar.gz
nginx-1.16.1.tar.gz
php-7.3.9.tar.gz
redis-5.0.5.tar.gz
swoole-4.4.4.tgz

Коллекции программного обеспечения

Почему ты говоришь это первым? Чтобы предоставить вам тот , на который вам не нужно обращать внимание snmp | Системная зависимость , просто скомпилируйте и установите метод lnmp .

принцип

Обычно мы устанавливаем переменные среды после установки программного обеспечения, чтобы мы могли использовать программное обеспечение с удовольствием и удобством. Если мы не используем переменные среды, мы перейдем в каталог установки, чтобы найти исполняемые файлы и выполнить команды.

Если существует несколько версий программного обеспечения, мы установим их по разным путям, чтобы мы могли перейти к разным версиям каталогов и запустить их. Если у вас установлено и используется слишком много версий PHP, это будет очень знакомо.

Конечно инструменты разработки yum groupinstall Они работают одинаково, но масштаб Может быть установлен по требованию, загрузка по требованию несравнима.

Этот инструмент делает то же самое. Он выполняет две задачи: во-первых, устанавливает различные версии программного обеспечения, а во-вторых, загружает файлы глобальных переменных, созданные во время установки, в систему при их использовании. Хотя существует три разных способа использования, принцип в основном один и тот же.

Вы можете просмотреть включить (файл глобальной переменной, созданный после установки инструментария) содержимое файла:

[[email protected] bld]# cat /opt/rh/devtoolset-8/enable 
# General environment variables
export PATH=/opt/rh/devtoolset-8/root/usr/bin${PATH:+:${PATH}}
export MANPATH=/opt/rh/devtoolset-8/root/usr/share/man:${MANPATH}
export INFOPATH=/opt/rh/devtoolset-8/root/usr/share/info${INFOPATH:+:${INFOPATH}}
export PCP_DIR=/opt/rh/devtoolset-8/root
# Some perl Ext::MakeMaker versions install things under /usr/lib/perl5
# even though the system otherwise would go to /usr/lib64/perl5.
export PERL5LIB=/opt/rh/devtoolset-8/root//usr/lib64/perl5/vendor_perl:/opt/rh/devtoolset-8/root/usr/lib/perl5:/opt/rh/devtoolset-8/root//usr/share/perl5/vendor_perl${PERL5LIB:+:${PERL5LIB}}
# bz847911 workaround:
# we need to evaluate rpm's installed run-time % { _libdir }, not rpmbuild time
# or else /etc/ld.so.conf.d files?
rpmlibdir=$(rpm --eval "%{_libdir}")
# bz1017604: On 64-bit hosts, we should include also the 32-bit library path.
if [ "$rpmlibdir" != "${rpmlibdir/lib64/}" ]; then
  rpmlibdir32=":/opt/rh/devtoolset-8/root${rpmlibdir/lib64/lib}"
fi
export LD_LIBRARY_PATH=/opt/rh/devtoolset-8/root$rpmlibdir$rpmlibdir32${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/opt/rh/devtoolset-8/root$rpmlibdir$rpmlibdir32:/opt/rh/devtoolset-8/root$rpmlibdir/dyninst$rpmlibdir32/dyninst${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# duplicate python site.py logic for sitepackages
pythonvers=2.7
export PYTHONPATH=/opt/rh/devtoolset-8/root/usr/lib64/python$pythonvers/site-packages:/opt/rh/devtoolset-8/root/usr/lib/python$pythonvers/site-packages${PYTHONPATH:+:${PYTHONPATH}}
export PKG_CONFIG_PATH=/opt/rh/devtoolset-8/root/usr/lib64/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}

краткое введение

Коллекции программного обеспечения предоставляют вам возможность создавать, устанавливать и использовать несколько версий программного обеспечения в одной и той же системе, не влияя на общесистемные установленные пакеты.

устанавливать

yum install centos-release-scl

Воспользуйся

  • Список установленных коллекций программного обеспечения scl --список
  • Включить сбор программного обеспечения: четыре способа (три в документе, другой)

    • Форма команды действие scl software_collection_1 software_collection_2 'команда --аргумент'
    • Форма оболочки scl включить software_collection_1 software_collection_2 bash . Речь идет о повторном открытии для вас оболочки , которая загружает переменные среды установленного им программного обеспечения.
    • Прямое использование scl включить software_collection_1 'perl --версия'
    • Постоянно добавляйте DTS в свою среду разработки

Инструкции по использованию приведены в этой статье

Этот инструмент управления не был известен в начале, чтобы решить mysql Время компиляции gcc Версия слишком низкая, чтобы знать. Только в mysql Используется во время компиляции, а не где-либо еще. Дело не в том, что этот инструмент не прост в использовании, это просто для того, чтобы показать вам больше о нашем использовании. yum , scl Вы не видите проблемы с зависимостями, когда используете его. Вы обнаружите, что средство действительно ароматное! Когда системе требуется какая-либо зависимость в наборе инструментов, вы можете решить эту зависимость с помощью вышеуказанных четырех способов использования.

Рекомендуется использовать Особенно при установке зависимого программного обеспечения, о котором вы мало что знаете , например: gcc , после чего следует процесс обновления GCC с помощью SCL

Перед началом установки мы создаем трех пользователей: www |/web mysql И соответствующие группы пользователей php-fpm nginx | mysql Используйте оставайтесь Linux При установке служб создавайте пользователей и группы пользователей для служб, насколько это возможно, чтобы облегчить управление этими службами. Например, задайте разрешения для каталогов и файлов, к которым могут обращаться службы

groupadd www
groupadd web
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
useradd -r -g www   -s /bin/false www
useradd -r -g web   -s /bin/false web

Интерпретация параметров:

  • -g Указанная группа
  • -s Установить оболочку

    • /bin/ложь Это относится к невозможности доступа к системным ресурсам с этим пользователем, включая логин , sftp , ftp Ожидание
    • /usr/sbin/nologin Ограничить только вход пользователя
  • -r Системная учетная запись: по умолчанию домашний каталог отсутствует, и идентификатор uid не будет превышать 1000, то есть 0-999. Без добавления -r Учетная запись пользователя будет создана, UID По умолчанию из 1000 Во-первых, по умолчанию существует домашний каталог. Вы можете использовать -M Запретить создание домашнего каталога

Дружественные советы: После установки всех следующих служб не спешите запускать, сначала измените конфигурацию, а затем запустите. В противном случае, если вы измените его после запуска, вам также может потребоваться очистить файлы по умолчанию, созданные службой. LNMP Как правило, элементами конфигурации, которые по умолчанию должны генерировать файлы, являются либо каталог журнала, либо каталог хранилища данных.

Nginx

Давайте потренируемся и установим в соответствии с примером, приведенным в документе по установке. Команда выглядит следующим образом:

./configure --sbin-path=/usr/local/nginx/nginx \
    --conf-path=/usr/local/nginx/nginx.conf \
    --pid-path=/usr/local/nginx/nginx.pid \
    --with-http_ssl_module \
    --with-pcre=../pcre-8.43 \
    --with-zlib=../zlib-1.2.11

Пакеты PCRE и zlib необходимо загружать локально

Описание функций PCRE (с официального сайта)

задает путь к источникам библиотеки PCRE. Дистрибутив библиотеки (версии 4.4 — 8.43) необходимо загрузить с сайта PCRE и извлечь. Остальное делает nginx ./настройте и сделайте. Библиотека необходима для поддержки регулярных выражений в директиве location и для модуля ngx_http_rewrite_module.

Описание функции Zlib (с официального сайта)

задает путь к источникам библиотеки zlib. Дистрибутив библиотеки (версии 1.1.3 — 1.2.11) необходимо загрузить с сайта zlib и извлечь. Остальное делает nginx ./настройте и сделайте. Библиотека необходима для модуля ngx_http_gzip_module.

Примечание при загрузке nginx Требуемая версия

сценарий настройки

#Unzip and enter
tar -zxf nginx-1.16.1.tar.gz
tar -zxf pcre-8.43.tar.gz
tar -zxf zlib-1.2.11.tar.gz
cd nginx-1.16.1

#Perform compilation
[[email protected] nginx-1.16.1]# ./configure --sbin-path=/usr/local/nginx/nginx \
    --conf-path=/usr/local/nginx/nginx.conf \
    --pid-path=/usr/local/nginx/nginx.pid \
    --with-http_ssl_module \
    --with-pcre=../pcre-8.43 \
    --with-zlib=../zlib-1.2.11

#View nginx? Error? 1
checking for OS
'+' Linux 3.10.0-957.el7.x86 × 64 × 64 × 64 + signs have typesetting problems and are enclosed in double quotation marks
checking for C compiler ... not found
./configure: error: C compiler cc is not found

#Recompile

#View nginx? Error? 2
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl= option.

#Recompile

#Make & & make install
[[email protected] nginx-1.16.1]# make && make install
#This indicates that the installation is OK: make [1]: leaving directory ` / root / source / nginx-1.16.1 '

До сих пор мы будем Nginx После компиляции и установки, параметры выборки компиляции не очень соответствуют нашей производственной среде, потому что все настроено в каталог. При развертывании в рабочей среде мы стараемся как можно больше различать каталоги, чтобы облегчить обслуживание, поэтому мы используем Nginx Параметры компиляции по умолчанию. По умолчанию вы можете настроить следующий каталог установки (укажите следующих пользователей и группы пользователей):

./configure --prefix=/usr/local/nginx --user=web --group=web --with-http_ssl_module --with-pcre=../pcre-8.43 --with-zlib=../zlib-1.2.11
make && make install
#File directory after installation
drwxr-xr-x. 2 root root 4096 Sep  2 23:04 conf
drwxr-xr-x. 2 root root   40 Sep  2 23:04 html
drwxr-xr-x. 2 root root    6 Sep  2 23:04 logs
drwxr-xr-x. 2 root root   19 Sep  2 23:04 sbin

Для получения дополнительных параметров компиляции мы можем использовать ./configure --help См. По некоторым причинам, таким как открытие другой функции nginx , нам необходимо перекомпилировать, шаги следующие:

  • Затем непосредственно войдите в каталог извлеченных пакетов и выполните команду make clean
  • еще раз ./настройка ххх
  • сделать && сделать установку

nginx Для команды запуска службы, пожалуйста, поймите: /usr/локальный/nginx/sbin/nginx -h

Возникшие проблемы

  • NGINX_ERROR_1 ./настройка: ошибка: c-компилятор cc не найден yum install -y gcc-c++ Этот пакет поддерживает компиляцию C и C++ программы, предотвращает наличие кода C++ Кода Википедия:

    • ССАГПЗ
  • NGINX_ERROR_2

    Nginx Открыт openssl Но для этого требуется установка системы openssl реализация yum install-y openssl openssl-разработка Википедия:

    • OpenSSL

    Пакет разработки предназначен в основном для разработки, включая, по крайней мере, следующие две вещи:

    1. Файл заголовка
    2. Библиотека ссылок

    Некоторые из них также содержат документацию по разработке или демонстрационный код. с glib и glib-devel Например: Если вы устанавливаете на основе glib Разработки программы, нужно только установить glib Сумка подойдет. Но если вы собираетесь скомпилировать его glib Исходный код XXX ), требуется установка glib-devel ( XXX-devil ) В общем, мы не используем программное обеспечение, а устанавливаем его напрямую XXX-devel

тест

Установка на основе компиляции по умолчанию (feiyashi)

  • запуск

    Значение чтения по умолчанию указывается во время компиляции Nginx Конфигурационный файл. Путь к файлу конфигурации не указан. По умолчанию файл conf/nginx.conf . Если вы хотите изменить файл конфигурации, пожалуйста, используйте -c Параметры: /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf

  • Доступ запрещен через IP – доступ сервера. Метод обработки следующий: Просмотр состояния брандмауэра:

    Отключить: systemctl остановить firewalld.service (обратите внимание на производственную среду, вы должны выбрать включение 80 Порт) Посетите еще раз!

PHP

сценарий настройки

  • Как правило, если нет особой ситуации, мы откроем его php-fpm
  • Мы не можем гарантировать , что нам нужна только одна версия php , поэтому при создании каталога установки вы обычно указываете версию в качестве каталога установки, например: /usr/local/php/7.3/
  • Многие люди могут подумать, что в моем проекте используется много расширений. На данном этапе компиляции и установки, что я могу сделать, если проект не запускается? Не бойтесь перекомпилировать или установить его, если он отсутствует. Настаивать Строить по требованию, устанавливать по требованию
[[email protected] source]# tar -zxf php-7.3.9.tar.gz 
[[email protected] source]# cd php-7.3.9
[[email protected] php-7.3.9]# ./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www
[[email protected] php-7.3.9]# make && make install

# PHP_ERROR_1
configure: error: libxml2 not found. Please check your libxml2 installation.

#Recompile
#There is a thank you for using PHP. It means that there is no problem in compiling. Continue

make && make install

#The installation PDO headers appear. / usr / local / PHP / 7.3/include/php/ext/pdo/ indicating that the installation is successful

Возникшие проблемы

  • PHP_ERROR_1 настройка: ошибка: libxml2 не найден. Пожалуйста, проверьте вашу установку libxml2. Прямая установка, не забудьте установить пакет разработки yum install-y libxml2 libxml2-devel установка libxml2 Система подсказывает мне, что я уже существую, но php Ошибка, возвращенная во время компиляции, описание Пакет зависимостей необходимо установить при компиляции и установке devel Edition

Настройки Php-fpm

Мы по очереди решаем следующие задачи:

  • Решить PHP_FPM Исполняемый файл не найден

    • Время компиляции плюс --sbindir=/usr/локальный/php/7.3/sbin возможно --sbindir=/usr/локальный/php/7.3/bin (единое управление)
  • Решить PHP_FPM Его можно отключить только командой Kill (рекомендуется, чтобы вы понимали управление процессом) и перезапустить

Для настройки

  • Сначала установите php.ini Если вы не добавляете --with-config-путь к файлу , скопируйте php.ini-разработку php.ini-производство reach php Путь к файлу конфигурации по умолчанию, доступ к которому можно получить через php –ini См. Об этих двух ini Различия между файлами описаны в файле конфигурации. Ключевые слова:
  • Об этом файле Настройте php-fpm.conf В каталоге установки /usr/local/php/7.3/и т. Д./ Есть следующий. php-fpm.conf.по умолчанию Сделайте копию и переименуйте ее php-fpm.conf
  • cp php-fpm.conf.по умолчанию php-fpm.conf Настройка www.conf В каталоге установки /usr/local/php/7.3/etc/php-fpm.d/ Есть следующий. www.conf.default Сделайте копию и переименуйте ее www.conf

Крепление на диск

Проще говоря, речь идет о хранении кода, многим людям нравится помещать код в домашний каталог, что не очень хорошо. Не имеет значения, используется ли он одним человеком, но сервером управляют многие люди, поэтому мы обычно создаем отдельный файл для хранения. Кроме того, лучше смонтировать файл на отдельный диск, что удобно, скажем, для резервного копирования, и не иметь дело с системными файлами.

#Check for free disks
[[email protected] conf]# fdisk -l

Disk /dev/sda: 549.8 GB, 549755813888 bytes, 1073741824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0000e7dc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200  1073741823   535821312   8e  Linux LVM

Disk /dev/sdb: 549.8 GB, 549755813888 bytes, 1073741824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 490.7 GB, 490695819264 bytes, 958390272 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Вы можете увидеть мой /dev/sdb Он не используется для монтажа. Давайте смонтируем его следующим образом: Я не буду говорить о разделе. Я найду учебник для себя

  • Новая точка монтирования mkdir/данные
  • mkfs.ext4/dev/sdb Формат
  • монтировать/dev/sdb/данные монтировать
  • См. UUID

  • измените /etc/fstab , добавьте в конце следующее содержимое, запустите машину и автоматически смонтируйте

  • создание каталогов

  • останься index.php Запись в файл phpinfo(); phpinfo();

тест

  • Испытание на установку

  • запуск php-fpm тест

  • nginx && php-fpm тест Настройка одного сервера , использование профиля laradock Среда laravel.conf.пример

    Следующий:

    • Создайте upstream.conf Документы для унифицированного управления php-fpm Ссылка, балансировка нагрузки

    • Установите vhost Каталог и измените nginx.conf В http {} Добавьте следующую конфигурацию в нижней части модуля

    • оставайтесь vhost Создайте в папке nginx_php_test.conf Файл, вверху nginx Вставьте конфигурацию в
    • Привязать локально хосты |/имя ip-сервера Например, 192.168.2.41 nginx_php.test Посетите
    • nginx_php.test Посмотреть журнал

На данный момент тест завершен

Редис

красный-это Установка относительно проста. Просто следуйте инструкциям на странице загрузки

[[email protected] redis-5.0.5]# make test
cd src && make test
make[1]: Entering directory `/root/source/redis-5.0.5/src'
    CC Makefile.dep
make[1]: Leaving directory `/root/source/redis-5.0.5/src'
make[1]: Entering directory `/root/source/redis-5.0.5/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/root/source/redis-5.0.5/src'
make: *** [test] Error 2

yum install -y tcl

Чтобы узнать о TCL, пожалуйста, перейдите по этой ссылке Пункты внимания :

  • Пожалуйста, прочтите README.md В документации содержится множество инструкций по установке и учебных пособий.
  • редис Если вы хотите указать каталог установки во время компиляции, выполните make ПРЕФИКС=/некоторые/другие/каталог установки
  • redis Есть сценарий установки, и документация также очень понятна

    Make install просто установит двоичные файлы в вашей системе, но не будет настраивать сценарии инициализации и файлы конфигурации в соответствующем месте. Это не необходимо, если вы хотите просто немного поиграть с Redis, но если вы устанавливаете это правильно для производственной системы, у нас есть скрипт, делающий это для систем Ubuntu и Debian:

    Скрипт задаст вам несколько вопросов и настроит все, что вам нужно для правильного запуска Redis в качестве фонового демона, который снова запустится при перезагрузке системы.c

    Какова его функция? Я выполнил для вас несколько шагов раньше времени (создана куча онлайн-руководств по установке для копирования redis.conf в etc, о чем я не хочу говорить).:

  • redis Запуск и остановка сервисов

Mysql

Адрес загрузки Почему вы выбрали именно это? Потому что нам нужно скомпилировать и установить из исходного кода. Centos Его нет в списке, поэтому выберите общие. Наконец, выбираются два пакета. Один пакет содержит то, чего мы не знаем, чистую версию. Скачайте чистую версию. Руководство по установке исходного кода MySQL на официальном сайте , Я предлагаю вам прочитать его еще раз, потому что в Baidu мы обнаружили беспомощную вещь:

Механизмы InnoDB, MyISAM, СЛИЯНИЯ, ПАМЯТИ и CSV являются обязательными (всегда компилируются на сервере) и не должны устанавливаться явно.

В документе ясно указано, что эти механизмы баз данных должны быть установлены принудительно. В Интернете есть множество настроек cmake Параметра для запуска руководства по установке этих четырех движков. Если вам нужно отключить движок по умолчанию или установить новый движок, я думаю, вы можете задать параметры.

Зависимая установка

Это является предварительным условием официального сайта MySQL. Давайте кратко поговорим об этом здесь.

  • Рекомендуемое использование GNU make Соответствующая команда – gmake Компиляция. Вы можете узнать, что вас интересует cmake make make Их история, разные, сценарии использования (вот яма, описанная ниже).
  • Нужен cmake, Википедия. Официальный адрес загрузки официальный учебник по компиляции и установке Будьте осторожны: CMake загрузился. А теперь беги, сделай. Рекомендуется использовать сделать
  • Нужна поддержка, Википедия

    • Первый способ: Скачайте и распакуйте самостоятельно, сделайте Настройка времени cmake параметр -С > открыть = < указать каталог после распаковки >
    • Второй способ: сделать Настройка времени cmake параметр -Скачать? - с кем? Загрузка = < укажите путь к хранилищу после автоматической загрузки >
  • Нам нужны ncurses, Википедия. Эта библиотека уже существует в системе, но нет версии для разработки, то есть ncurses-devel Заказ: yum install-y ncurses-devel
  • mysql Скомпилированный документ с параметрами установки для

сценарий настройки

tar -zxf mysql-8.0.17.tar.gz
cd mysql-8.0.17
MKDIR BLD ා create a directory to store compiled files (at first, I didn't believe it, there were many files indeed)
cd bld

#Here we can add another compilation parameter, mysqlx ﹣ UNIX ﹣ addr & MySQL ﹣ UNIX ﹣ addr
#Because the default socket file location of MySQL is in / TMP / directory, but the MySQL configuration file is in / var / lib / MySQL / directory for consistency. Of course, you can also modify the configuration file.
#As for mysqlx, you can search for the keyword dwith ﹣ mysqlx on the page of compiling parameters, which is explained below.
Cmake.. - ddownload? Boot = 1 - dwith? Boot = < specify the storage path after automatic download > - dmysqlx? UNIX? Addr = file? Name - dmysql? UNIX? Addr = file? Name

Make & & make install ා the - J parameter is strongly recommended, otherwise it will be slow

#From official documents
# Postinstallation setup
shell> cd /usr/local/mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

Возникшие проблемы

Cmake не установлен. Объяснено в разделе установка зависимостей

[[email protected] bld]# cmake ..
-- Running cmake version 2.8.12.2
CMake Warning at CMakeLists.txt:43 (MESSAGE):
  Please use cmake3 rather than cmake on this platform


-- Please install cmake3 (yum install cmake3)
CMake Error at CMakeLists.txt:73 (CMAKE_MINIMUM_REQUIRED):
  CMake 3.5.1 or higher is required.  You are running version 2.8.12.2


-- Configuring incomplete, errors occurred!

Ncurses не установлен Объяснено в разделе установка зависимостей

-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

ССАГПЗ Устаревшая Версия

CMake Error at cmake/os/Linux.cmake:59 (MESSAGE):
  GCC 5.3 or newer is required (-dumpversion says 4.8.5)
Call Stack (most recent call first):
  CMakeLists.txt:424 (INCLUDE)

-- Configuring incomplete, errors occurred!
See also "/root/source/mysql-8.0.17/bld/CMakeFiles/CMakeOutput.log".

Отражение:

  • ССАГПЗ Если версия слишком высока, используйте более низкую версию до GCC Есть ли проблема с скомпилированным программным обеспечением? Если вам интересно, вы можете протестировать его
  • GCC Мало кто знает об этом. Я думаю, что при компиляции и установке существует много скрытых опасностей, поэтому Не рекомендуется устанавливать сборку . Если вы заинтересованы, пожалуйста, изучите эту коллекцию программного обеспечения

Опять же, при компиляции программного обеспечения существуют риски, с которыми вы не знакомы. Пожалуйста, будьте осторожны

  • SCL(Коллекции программного обеспечения) Обновите GCC gcc В этом наборе инструментов для разработчиков, если вы не хотите устанавливать весь набор инструментов для GCC, пожалуйста, используйте yum search devtoolset-8 Затем установите перечисленные пакеты, например:

    Вот статья о том, что такое коллекции программного обеспечения и как их использовать

  • Скомпилируйте и установите официальные документы. В документах есть пять шагов. Пожалуйста, прочтите их внимательно

    • Скачиваем, распаковываем, заходим в каталог программного обеспечения, скачиваем последнюю версию 9.2 (пожалуйста, обратите внимание на производственную среду).
    • реализация ./contrib/download_prerequisites Пакеты зависимостей для загрузки-это несколько библиотек зависимостей, упомянутых в официальных документах:

      Библиотека MPFR версии 2.4.2 (или более поздней) Библиотека MPC версии 0.8.1 (или более поздней) Библиотека isl версии 0.15 или более поздней. Библиотека zstd.

    • Создать каталог компиляции mkdir gcc-сборка && cd gcc-сборка
    • ../настройка --префикс=/usr/локальный/gcc/9.2.0,c++ --отключить-мультилиб –включить-проверку=выпуск Добавьте некоторые проверки, все в порядке –отключить-проверку Сгенерированный компилятор не выполняет дополнительных проверок во время компиляции –enable-languages=c,c++ Настройка gcc Поддерживаемые языки программирования –disable-multilib Отмена компиляции многоцелевой библиотеки (отмена компиляции 32-разрядной библиотеки) префикс Рекомендуется добавить параметр, иначе вы не знаете путь компиляции и установки
    • сделать && сделать установку Предлагаемое увеличение -j Параметры действительно медленные
    • Обновление динамической библиотеки GCC (резервное копирование для производственной среды) динамический соединитель Википедия Сведения о ldconfig

    • Сообщение о возможных ошибках

    • Газета не может его найти. ссагпз Пожалуйста, выйдите из терминала и снова войдите в систему или напрямую выполните команду source ~/. Bashrc. Эти два принципа одинаковы
    • сделать установку Ошибка: На официальном форуме есть описание этой проблемы, но решения нет:

      После тестирования выясняется, что это не проблема с версией, и причина этой проблемы в том, что библиотека динамических ссылок не была обновлена.

    • Ошибка посадки Ошибка сегментации Эта ошибка вызвана: Официальный совет: мы используем пистолет, чтобы

      Хорошая программа для создания. Хотя некоторые платформы поставляются со своими собственными реализациями make, настоятельно рекомендуется использовать GNU make 3.75 или выше. Возможно, он уже доступен в вашей системе как gmake. GNU make доступен с http://www.gnu.org/software/m…

      А затем посмотрите данные и узнайте centos 7 в GNU make А именно gmake , поэтому я использую gmake Скомпилированный и, наконец, выполненный mysql-uroot-p Времена сейчас неподходящие. Позже использовалось сделать Компиляция не является ошибкой Но когда я прочитал информацию о версиях gmake и make, это было так же запутанно:

Для настройки

  • Измените по мере необходимости /etc/my.cnf 。, Чтобы подчеркнуть один момент, пока это mysql Пожалуйста, установите группу пользователей как mysql В противном случае это может привести к mysql Сбою выполнения

  • Инициализация каталога данных bin/mysqld --инициализация Рекомендуется внимательно прочитать документ, чтобы понять: во время процесса инициализации mysql Что было сделано? Каков пароль учетной записи по умолчанию? Каковы параметры для инициализации? Почему не удалась инициализация? Дружественный совет: первоначальный пароль указан в журнале, а конкретный документ

  • запуск

  • База данных входа в систему

  • Измените пароль по умолчанию

тест

[[email protected] mysql]# ps -ef | grep mysql
root     12396     1  0 Sep05 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/bogon.pid

Здесь, mysql Установка завершена

Википедия и другие материалы

zlib mbstring автоконф

установите composer

#You can link the 'PHP' executable to '/ usr / local / bin' or add the 'PHP' executable path to the environment variable
#The following error reports may be that XX function is not enabled and XX extension is not installed. I won't explain.
#There is no CD command in the command, the path changes after bash name
[[email protected] website]# /usr/local/php/7.3/bin/php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

Warning: copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1

Warning: copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1

Warning: copy(https://install.phpcomposer.com/installer): failed to open stream: No such file or directory in Command line code on line 1

[[email protected] php-7.3.9]# make clean
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp7.la sapi/cli/php sapi/cgi/php-cgi  sapi/fpm/php-fpm  modules/* libs/*
#OpenSSL nginx has been talked about when compiling, not much here
[[email protected] php-7.3.9]# ./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www --sbindir=/usr/local/php/7.3/bin --with-config-file-path=/usr/local/php/7.3/etc --with-openssl
[[email protected] php-7.3.9]# make && make install
[[email protected] website]# /usr/local/php/7.3/bin/php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
[[email protected] website]# /usr/local/php/7.3/bin/php composer-setup.php
Downloading...

Composer (version 1.9.0) successfully installed to: /data/website/composer.phar
Use it: php composer.phar

Some settings on your machine may cause stability issues with Composer.
If you encounter issues, try to change the following:

The zlib extension is not loaded, this can slow down Composer a lot.
If possible, install it or recompile php with --with-zlib

A php.ini file does not exist. You will have to create one.
If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.
#Zlib is missing, add -- with zlib on the compiled item. Zlib Wikipedia link above
[[email protected] php-7.3.9]# make clean
[[email protected] php-7.3.9]# ./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www --sbindir=/usr/local/php/7.3/bin --with-config-file-path=/usr/local/php/7.3/etc --with-openssl --with-zlib
[[email protected] php-7.3.9]# make && make install
[[email protected] website]# /usr/local/php/7.3/bin/php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 1.9.0) successfully installed to: /data/website/composer.phar
Use it: php composer.phar

[[email protected] website]# /usr/local/php/7.3/bin/php -r "unlink('composer-setup.php');"
#Global installation, which means to add it to the environment variable, so that it can be used by the whole system
[[email protected] website]# mv composer.phar /usr/local/bin/composer
[[email protected] website]# composer -v
Do not run Composer as root/super user! See https://getcomposer.org/root for details
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.9.0 2019-08-02 20:55:32

установите Laravel

[[email protected] website]# composer config -g repo.packagist composer https://packagist.phpcomposer.com
[[email protected] website]# composer create-project --prefer-dist laravel/laravel blog
Installing laravel/laravel (v6.0.1)
  - Installing laravel/laravel (v6.0.1): Loading from cache
Created project in blog
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/framework v6.0.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - laravel/framework v6.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - laravel/framework 6.x-dev requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
    - Installation request for laravel/framework ^6.0 -> satisfiable by laravel/framework[6.x-dev, v6.0.0, v6.0.1].

#Missing mbstring extension
[[email protected] php-7.3.9]# ./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www --sbindir=/usr/local/php/7.3/bin --with-config-file-path=/usr/local/php/7.3/etc --with-openssl --with-zlib --enable-mbstring
[[email protected] php-7.3.9]# make clean
[[email protected] php-7.3.9]# make && make install
[[email protected] website]# rm -rf blog/
[[email protected] website]# composer create-project --prefer-dist laravel/laravel blog
#Laravel version 6.0 and below may report a problem that curl cannot find at this stage. Don't worry, read on
#Create a server in the nginx Vhost directory (that is, add a xx.conf file), and modify the server name self laravel.test
#Pay attention to naming: general format, < Enterprise Name | project name > < framework name > < development environment >. Conf, for example: self ﹤ laravel ﹤ test.conf is easy to manage. Later logs, database names, etc. also want to be named in the same way. Server name I suggest that you name it after enterprise name project name framework name development environment.
#Link mysql, create a database create database self? Laravel? Test character set utf8mb4 collate utf8mb4? Unicode? CI. I suggest you follow the name of nginx conf file, and there is no requirement for existing projects.
#Modify. Env file
#There is no make: auth command after laravel 6.0. Please execute composer require laravel / UI & & PHP artican UI Vue -- auth
#PHP artican migrate performs data migration
[[email protected] blog]# php artisan migrate

Illuminate\Database\QueryException  : could not find driver (SQL: select * from information_schema.tables where table_schema = alone_laravel_test and table_name = migrations and table_type = 'BASE TABLE')

pdo-mysql Диск не установлен: Позвольте мне кратко объяснить здесь php Драйвер базы данных: pdo да php Уровень абстракции базы данных позволяет использовать набор кода для подключения различных баз данных, который также можно понимать как pdo Вы можете пройти через pdo Функциональное подключение pdo Поддерживаемую базу данных, но вам все равно потребуется драйвер базы данных, требуемый проектом. Например mysql , вам необходимо установить mysql Вы можете передать pdo Функциональное соединение mysql . Конечно, вы не можете использовать его do , но через mysql Метод подключения, предоставляемый драйвером mysql . php Установлен по умолчанию pdo и pdo-sqlite Поэтому мы устанавливаем его по требованию. Связанные документы здесь: расширение базы данных В этом проекте нам нужно установить mysql Расширение и pdo-mysql Расширения, PHP о mysql У нас также есть много вариантов расширения php Официальный mysql Расширение mysqlnd. pdo-mysql да pdo |

[[email protected] php-7.3.9]# ./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www --sbindir=/usr/local/php/7.3/bin --with-config-file-path=/usr/local/php/7.3/etc --with-openssl --with-zlib --enable-mysqlnd --with-pdo-mysql=mysqlnd
[[email protected] php-7.3.9]# make clean
[[email protected] php-7.3.9]# make && make install

[[email protected] php-7.3.9]# php -m | grep pdo
pdo_mysql
pdo_sqlite

[[email protected] blog]# php artisan migrate
Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = alone_laravel_test and table_name = migrations and table_type = 'BASE TABLE')

Об этой ошибке, изменении в MySQL 8.0.4 (2018-01-23, релиз-кандидат) в статье есть четкое объяснение. Короче говоря, плагин аутентификации обновлен, но mysqlnd Это расширение не обновлялось. Итак, мы выбираем настройки mysql Подключаемый модуль аутентификации-это старый подключаемый модуль (глобальный режим). Конечно, мы также можем указать плагин аутентификации при создании нового пользователя , ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password (локальный), конечно, вы также можете использовать другой mysql Драйвер, кто это? mysqlimysqli да mysql Расширенная версия google One. Два из них mysql Официальное использование php Написано api (это документ: MySQL PHP API), который используется выше mysqlnd да php Официальное использование C Написано api . Что касается mysql и mysql В чем разница? Изучите это сами. Мы выбираем первый путь:

vi /etc/my.cnf
#Under the [mysqld] tab, add the following:
default_authentication_plugin=mysql_native_password

[[email protected] blog]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS! 
Starting MySQL.. SUCCESS!

#Is it wrong? Why? Because the root account's authentication plug-in defaults to caching? Sha2? Password
mysql> select plugin from user where user = 'root';
+-----------------------+
| plugin                |
+-----------------------+
| caching_sha2_password |
+-----------------------+
1 row in set (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password';
Query OK, 0 rows affected (0.01 sec)

mysql> select plugin from user where user = 'root';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
Query OK, 0 rows affected (0.00 sec)

mysql> select plugin from user where user = 'root';
+-----------------------+
| plugin                |
+-----------------------+
| mysql_native_password |
+-----------------------+
1 row in set (0.00 sec)

mysql> exit
Bye

[[email protected] blog]# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.12 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.02 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.01 seconds)

установка расширения curl (на этот раз я не столкнулся с проблемой расширения curl, но это также часто используемое расширение):

#First, install curl devel
yum install -y curl-devel
#Locate libcurl
whereis curl
#Then add -- with curl
./configure --prefix=/usr/local/php/7.3 --enable-fpm --with-fpm-user=www --with-fpm-group=www --sbindir=/usr/local/php/7.3/bin --with-config-file-path=/usr/local/php/7.3/etc --with-openssl --with-zlib --enable-mysqlnd --with-pdo-mysql=mysqlnd --with-curl=/usr/include/curl
make clean
make && make install
php -m | grep curl

В зависимости от разных компаний будут установлены разные расширения, официальные расширения php Указаны параметры компилятора и общие расширения php Один в пакете ext Каталог, все в нем, опущен шаг загрузки и соответствует некоторым неофициальным методам установки расширений. Неофициальные расширения не могут быть установлены с помощью параметров компиляции, например: swoole . Давайте посмотрим, как установить эти расширения: swoole Расширенная установка (официальный документ):

[[email protected] source]# tar -zxf swoole-4.4.5.tgz 
[[email protected] source]# cd swoole-4.4.5

[[email protected] swoole-4.4.5]# /usr/local/php/7.3/bin/phpize 
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
#Wikipedia has been given above. Here we use Yum to install it. We will compile and install it by ourselves

[[email protected] php-7.3.9]# yum install -y autoconf

[[email protected] swoole-4.4.5]# /usr/local/php/7.3/bin/phpize 
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

[[email protected] swoole-4.4.5]# ./configure --with-php-config=/usr/local/php/7.3/bin/php-config
[[email protected] swoole-4.4.5]# make && make install

#Add extension = swoole.so to the last line of php.ini, preferably with a label [swoole]
[[email protected] php-7.3.9]# vi /usr/local/php/7.3/etc/php.ini
[[email protected] php-7.3.9]# php -m | grep swoole
swoole
[[email protected] php-7.3.9]# php -i | grep swoole
swoole
Author => Swoole Team <[email protected]>
swoole.display_errors => On => On
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off
swoole.unixsock_buffer_size => 8388608 => 8388608
swoole.use_shortname => On => On
OLDPWD => /root/source/swoole-4.4.5
$_SERVER['OLDPWD'] => /root/source/swoole-4.4.5

Проверьте запуск службы

Убедитесь, что наши сервисы полностью загружены: php , mysql , nginx , redis

[[email protected] utils]# ps -ef | grep nginx && ps -ef | grep php && ps -ef | grep redis && ps -ef | grep mysql
root      5546  2417  0 03:17 pts/1    00:00:00 grep --color=auto nginx
root     15038     1  0 02:06 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
web      15039 15038  0 02:06 ?        00:00:00 nginx: worker process
root      5548  2417  0 03:17 pts/1    00:00:00 grep --color=auto php
root     27051     1  0 02:15 ?        00:00:00 php-fpm: master process (/usr/local/php/7.3/etc/php-fpm.conf)
www      27052 27051  0 02:15 ?        00:00:00 php-fpm: pool www
www      27053 27051  0 02:15 ?        00:00:00 php-fpm: pool www
root      5508     1  0 02:59 ?        00:00:01 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root      5550  2417  0 03:17 pts/1    00:00:00 grep --color=auto redis
root      5552  2417  0 03:17 pts/1    00:00:00 grep --color=auto mysql
root     20299     1  0 Sep06 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/bogon.pid
mysql    20466 20299  0 Sep06 ?        00:19:53 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/logs/mariadb/mariadb.log --pid-file=/data/mysql/bogon.pid --socket=/tmp/mysql.sock

Посетите веб-сайт

Немного некрасиво, ха-ха. Это не должно было быть реализовано npm Связанными командами.

Я всегда хотел написать такую статью или понять команду копирования и вставки. Это заняло пять дней, я все это отрепетировал и примерно узнал. Я думаю, что это очень хорошо. Эта статья написана не для того, чтобы вы копировали и вставляли, а для того, чтобы следовать этой строке и хорошо ее изучить. В статье приведено множество ссылок на документы. Я надеюсь, что вы научитесь обращаться к документам в будущей работе, а не только к Baidu, google . Наконец, есть еще некоторые вещи, которые не написаны, и многие вещи не очень понятны, такие как: различные параметры оптимизации, различные параметры компиляции, различные зависимости и т.д. Есть еще некоторые вещи, которые нельзя было сказать раньше, некоторые опасения и многое другое, что нельзя сказать правильно. Я надеюсь, что вы простите меня и приветствуете ваши комментарии и предложения.

Чжу Цзюнь: не отказывайся от поисков истины.

Не распыляйте, если вам это не нравится. Пожалуйста, укажите источник перепечатки.