Install U mobile System
Server Nginx
Установка и настройка брокера сообщений RabbitMQ
$ sudo apt-get install rabbitmq-server
$ sudo rabbitmq-plugins enable rabbitmq_management
$ sudo systemctl enable rabbitmq-server
$ sudo rabbitmqctl add_user <имя_пользователя> <пароль>
$ sudo rabbitmqctl set_user_tags <имя_пользователя> administrator
$ sudo rabbitmqctl set_permissions -p / <имя_пользователя> '.*' '.*' '.*'
RabbitMQ Manager Установка и настройка общей распределенной сетевой памяти Redis
$ sudo apt install redis-server
$ sudo systemctl enable redis
Installation Redis Manager$ sudo curl -s http://getcomposer.org/installer | php composer.phar create-project -s dev erik-dubbelboer/php-redis-admin /var/www/html/redis
mbstring установлена
BC Math установлена
Управление разделяемой памятью установлено
Расширение Redis установлено
Your Redis ManagerРасширение Thread не установлено
$ sudo apt install php-pear php-dev
$ sudo apt update
$ sudo apt install -y
libzip-dev
bison
autoconf
build-essential
pkg-config
git-core
libltdl-dev
libbz2-dev
libxml2-dev
libxslt1-dev
libssl-dev
libicu-dev
libpspell-dev
libenchant-dev
libmcrypt-dev
libpng-dev
libjpeg8-dev
libfreetype6-dev
libmysqlclient-dev
libreadline-dev
libcurl4-openssl-dev
tcl
tcl-dev
tk-dev
libonig-dev
libffi-dev
libgmp-dev
libxpm-dev
libc-client-dev
libkrb5-dev
libpq-dev
cd $HOME
git clone https://github.com/php/php-src.git
cd php-src
./buildconf --force
CONFIGURE_STRING="
--prefix=/etc/php/7.4
--with-bz2
--with-zlib
--enable-zip
--enable-shmop
--enable-soap
--enable-intl
--with-openssl
--with-readline
--with-curl
--enable-ftp
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-sockets
--enable-pcntl
--with-pspell
--with-enchant
--with-gettext
--enable-gd
--enable-exif
--with-jpeg
--with-freetype
--with-xsl
--enable-bcmath
--enable-mbstring
--enable-calendar
--enable-simplexml
--enable-json
--with-mhash
--enable-session
--enable-xml
--enable-wddx
--enable-opcache
--with-pcre-jit
--with-config-file-path=/etc/php/7.4/cli
--with-config-file-scan-dir=/etc/php/7.4/etc
--enable-cli
--enable-maintainer-zts
--with-tsrm-pthreads
--enable-debug
--enable-fpm
--with-fpm-user=www-data
--with-fpm-group=www-data
--with-litespeed
--enable-phpdbg
--disable-short-tags
--without-sqlite3
--enable-dba
--with-ffi
--with-xpm
--with-gmp
--with-imap
--with-kerberos
--with-imap-ssl
--with-pgsql
--with-libzip
--enable-shared
--enable-static
"
./configure $CONFIGURE_STRING
make
sudo make install
Add Pthreads
cd $HOME/php
sudo chmod o+x /etc/php7/bin/phpize
sudo chmod o+x /etc/php7/bin/php-config
git clone https://github.com/krakjoe/pthreads.git
cd pthreads
/etc/php7/bin/phpize
Set configuration options for pthreads. --enable-pthreads=shared is the main aspect of the configuration
./configure
--prefix='/etc/php7'
--with-libdir='/lib/x86_64-linux-gnu'
--enable-pthreads=shared
--with-php-config='/etc/php7/bin/php-config'
sudo make && sudo make install
Now create the php ini file.
cd $HOME/php-src-php
sudo mkdir -p /etc/php7/cli/
sudo cp php.ini-production /etc/php7/cli/php.ini
Add the pthreads extension to the ini file.
echo "extension=pthreads.so" | sudo tee -a /etc/php7/cli/php.ini
echo "zend_extension=opcache.so" | sudo tee -a /etc/php7/cli/php.ini
Remove any link to PHP if it already exists. If this was a server from scratch and you only ran the steps in this tutorial, this step should do nothing.
sudo rm /usr/bin/php
Link to our newly compiled PHP binary.
sudo ln -s /etc/php7/bin/php /usr/bin/php
Устанавливаем SSL сертификат
apt-get install dehydrated
wget https://github.com/lukas2511/dehydrated/archive/master.tar.gz
После установки прописываем домены, для которых необходим сертификат, в файле /etc/dehydrated/domains.txt (можно определить несколько строк с разными доменами для разных сертификатов):
example.com www.example.com
example2.com www.example2.com test.example2.com
В иерархии каталогов, в которых хранится контент example.com, создаём каталог .well-known и подкаталог acme-challenge, в которых будет создан временный файл для проверки наличия контроля за сайтом:
mkdir /var/www/htdocs/.well-known
mkdir /var/www/htdocs/.well-known/acme-challenge
Указываем в файле конфигурации /etc/dehydrated/config каталоги и email для связи, остальные параметры можно оставить по умолчанию:
WELLKNOWN="/var/www/htdocs/.well-known/acme-challenge"
CONTACT_EMAIL="example@examplemail.com"
Далее запускаем скрипт dehydrated с опцией "-с", которой достаточно для большинства ситуаций. После первого запуска будет совершена регистрация в Let's Encrypt, после чего будет инициирован процесс проверки путем генерации токена в директории .well-known/acme-challenge с его последующим внешним запросом.
dehydrated -c
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing example.com with alternative names: www.example.com
+ Signing domains...
+ Creating new directory /etc/dehydrated/certs/example.com ...
+ Generating private key...
+ Generating signing request...
+ Requesting challenge for example.com...
Если проверка прошла удачно, готовые сертификаты будут сохранены в каталог /etc/dehydrated/certs/example.com, который можно указать в настройках сервера.
Например, в nginx:
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key /etc/dehydrated/certs/example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparams.pem; # генерируется через "openssl dhparam -dsaparam -out /etc/nginx/ssl/dhparams.pem 2048"
В случае повторного запуска "dehydrated -c" будет выполнена проверка срока действия сертификата и если до окончания его действия остаётся менее 30 дней будет запрошено обновление. Для автоматизации поддержания сертификатов можно добавить "dehydrated -c" в cron.
dehydrated -c
# INFO: Using main config file /etc/dehydrated/config
# INFO: Using additional config file /etc/dehydrated/conf.d/local.sh
Processing example.com with alternative names: www.example.com
+ Checking domain name(s) of existing cert... unchanged.
+ Checking expire date of existing cert...
+ Valid till Sep 11 03:53:00 2017 GMT (Longer than 30 days). Skipping renew!
После обновления сертификата не забудьте перезапустить HTTP-сервер:
systemctl restart nginx
В случае необходимости получения сертификатов для нескольких доменов, следует для всех сайтов позаботиться о пробросе проверочных запросов в каталог, заданный в переменной WELLKNOWN (проверка осуществляется через запрос http://example.com/.well-known/acme-challenge/m4g1C-t0k3n). Например, можно добавить в конфигурацию хоста в nginx:
location /.well-known/acme-challenge {
alias /var/www/htdocs/.well-known/acme-challenge;
}