PHP7.3.18-MariaDB-phpmyadmin-NginX (orangePI)
Эта инструкция была собрана из мануалов и кучи других инструкцией и проверена на orange pi (Armbian).
Также подходит под сборку на Debian
Обновляем репозиторий
apt-get update
Установка nginx
apt-get install nginx
Для начала установим все необходимые для сборки и работы PHP 7 зависимости:
apt-get install build-essential autoconf re2c bison libssl-dev libcurl4-openssl-dev pkg-config libpng-dev libxml2-dev libxml2 libcurl3
Если вы хотите добавить другие модули, возможно, понадобиться дополнительно установить необходимые для сборки пакеты. Иначе в процессе выполнения команды ./configure вы получите ошибку.
Все действия будем выполнять в директории:
cd /usr/src
Скачиваем и распаковываем исходники PHP 7.3.18:
wget http://de1.php.net/get/php-7.3.18.tar.bz2/from/this/mirror -O php-7.3.18.tar.bz2 tar -xvjf php-7.3.18.tar.bz2
Если на момент чтения этой статьи, уже вышла более свежая версия PHP 7, скачайте самостоятельно исходники с официального сайта. http://de1.php.net/downloads.php
Переходим в каталог с исходниками PHP 7:
cd php-7.3.18
Для того чтобы установить PHP 7, нам необходимо выполнить компиляцию из исходников. Перед тем как начать, добавьте или удалите неиспользуемые модули из состава PHP 7 и укажите параметры сборки.
./buildconf --force CONFIGURE_STRING="--prefix=/usr/local/php-fpm --enable-fpm --enable-mysqlnd --enable-mbstring --disable-pdo --disable-phar --with-config-file-scan-dir=/usr/local/php-fpm/etc/conf.d --with-curl --with-gd --with-fpm-user=www-data --with-fpm-group=www-data --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd --with-zlib --without-sqlite3 --without-pdo-sqlite"
Если вы хотите добавить в PHP 7 другие модули, найдите их в списке доступных параметров сборки:
./configure --help
Для компиляции и установки PHP 7, необходимо выполнить команду:
./configure $CONFIGURE_STRING make && make install
Настройка PHP 7
Если в процессе компиляции не было ошибок, файлы PHP 7 должны быть расположены в директории:
/usr/local/php-fpm
Нам осталось внести изменения в конфигурационный файлы и добавить PHP 7 в автозагрузку. Для начала скопируем файл php.ini из каталога с исходниками в каталог установки PHP 7:
cp /usr/src/php-7.3.18/php.ini-production /usr/local/php-fpm/lib/php.ini
Чтобы включить модуль Zend OPcache, создайте файл:
mkdir -p /usr/local/php-fpm/etc/conf.d/ nano /usr/local/php-fpm/etc/conf.d/modules.ini
Скопируйте в него следующие параметры:
# Zend OPcache zend_extension=opcache.so
Для настройки работы PHP-FPM создайте файл:
nano /usr/local/php-fpm/etc/php-fpm.conf
И добавьте в него следующие параметры:
[global] pid = /var/run/php-fpm.pid error_log = /var/log/php-fpm.log
include=/usr/local/php-fpm/etc/php-fpm.d/*.conf
Затем создайте файл:
nano /usr/local/php-fpm/etc/php-fpm.d/www.conf
И добавьте в него параметры:
[www] user = www-data group = www-data listen = /var/run/php7-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0777 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
Добавим PHP 7 в автозагрузку, создадим символическую ссылку на файл php-fpm:
ln -s /usr/local/php-fpm/sbin/php-fpm /usr/local/php-fpm/sbin/php7-fpm
Создадим в каталоге init.d скрипт для запуска PHP-FPM:
nano /etc/init.d/php-fpm
Добавьте содержимое :
#! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO prefix=/usr/local/php-fpm exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm php_fpm_CONF=${prefix}/etc/php-fpm.conf php_fpm_conf_PID=$(sed -n 's/^pid[ =]*//p' $php_fpm_CONF) php_fpm_PID=${php_fpm_conf_PID:-/var/run/php-fpm.pid} php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN --daemonize $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; status) if [ ! -r $php_fpm_PID ] ; then echo "php-fpm is stopped" exit 0 fi PID=`cat $php_fpm_PID` if ps -p $PID | grep -q $PID; then echo "php-fpm (pid $PID) is running..." else echo "php-fpm dead but pid file exists" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; configtest) $php_fpm_BIN -t ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}" exit 1 ;; esac
Дадим права на запуск, добавим скрипт в автозагрузку:
chmod +x /etc/init.d/php-fpm update-rc.d php-fpm defaults
Затем необходимо выполнить команду:
service php-fpm restart
Открываем конфигурацию php.ini путь /usr/local/php-fpm/lib
правим строчки, расскоментируем cgi.fix_pathinfo=1, и правим на cgi.fix_pathinfo=0 .
Устанавливаем базу данных MariaDB
apt-get install mariadb-client mariadb-server mysql_secure_installation
Since we need to tough the security loopholes let’s make MySQL more secure…
In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
… Success!
By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
– Dropping test database…
ERROR 1008 (HY000) at line 1: Can’t drop database ‘test’; database doesn’t exist
… Failed! Not critical, keep moving…
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Устанавливаем PHPMyAdmin.
Добавляем ссылку.
Перезагружаем сервис.
apt-get install phpmyadmin ln -s /usr/share/phpmyadmin/ /var/www/html/ sudo service nginx restart
Во время установки вам будет предложено выбрать веб-сервер (Apache или Lighttpd), ничего не выбираем. Следующее окно выбираем Да и вводим пароль для доступа к PHPMyAdmin.
Если рут пользователя нету, то можно создать нового.
mysql -u root -p CREATE USER 'user'@'localhost' IDENTIFIED BY 'userPassword'; GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; exit
User — на своего ,userPassword — придумываем свой
PHPMyAdmin будет доступен по ссылке http://IP_or_DomainName/phpmyadmin (после конфигурирования и перезапуска NGINX’s Server)
Конфигурация NGINX’s Server Blocks
правим по пути /etc/nginx/sites-available/default , удаляем все и вставляем конфигурацию.
Не забудьте изменить имя домена из указанных ниже конфигураций.
server { listen 80 default_server; root /var/www/html; index index.php index.html index.htm; server_name blabla.com www.blabla.com; charset UTF-8; location / { try_files $uri/ /index.php?$args; } location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/run/php7-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } location ~* .(js|css|png|jpg|jpeg|gif|ico|eot|otf|ttf|woff)$ { add_header Access-Control-Allow-Origin *; access_log off; log_not_found off; expires 30d; } location = /robots.txt { access_log off; log_not_found off; } location ~ /. { deny all; access_log off; log_not_found off; } }
Этот конфиг проверен по минимальному, ему сильно нужна доработку, немного позже выложу новый,
Перезагрузка всех служб.
service nginx restart service php-fpm restart service mysql restart
Возникла ошибка NGINX’s при старте служб, не было каталога логов по пути, добавление каталогов исправило ситуацию
Все готово!
Дополнительные настройки.
Увеличение файла загрузки, путем правки PHP, возникает ошибка ограничения в 2МБ. Идем в путь /usr/local/php-fpm/lib/php.ini и правим файл. Ищем строчки и правим их.
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
Так же дополнительно нужно добавить настройку в nginx.
Правим конфиг /etc/nginx/nginx.conf
user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http {##
# Basic Settings
##
client_max_body_size 150m;
large_client_header_buffers 4 16k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Команда добавление ярлыка сайта для nginx
ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Свежие комментарии