• Как установить PHP 5.4 на Nginx в Ubuntu Server 16.04?

    Если кратко, то можно так собрать:

    Установка php-5.4.45 + fpm

    mkdir -p /opt/php-5.4.45
    rm -rf /usr/local/src/php5-build && mkdir /usr/local/src/php5-build
    cd /usr/local/src/php5-build
    wget de2.php.net/distributions/php-5.4.45.tar.gz
    tar -vzxf php-5.4.45.tar.gz && cd php-5.4.45
    ./configure --prefix=/opt/php-5.4.45 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --enable-zip --with-pcre-regex --with-mysqli --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-fpm
    make && make install
    cp /usr/local/src/php5-build/php-5.4.45/php.ini-production /opt/php-5.4.45/lib/php.ini
    cp /opt/php-5.4.45/etc/php-fpm.conf.default /opt/php-5.4.45/etc/php-fpm.conf
    mkdir /opt/php-5.4.45/etc/php-fpm.d

    Редактируем некоторые параметры в /opt/php-5.4.45/etc/php-fpm.conf

    include=etc/php-fpm.d/*.conf
    [global]
    pid = run/php-fpm.pid
    log_level = error

    Меняем настройки в /opt/php-5.4.45/lib/php.ini по своему вкусу, у меня так:

    date.timezone = "Asia/Yekaterinburg"
    expose_php = Off
    short_open_tag = On
    max_execution_time = 600
    max_input_time = 300
    max_input_vars = 5000
    memory_limit = 512M
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
    post_max_size = 128M
    ;default_charset = "UTF-8"
    upload_max_filesize = 128M
    default_socket_timeout = 120
    mysql.connect_timeout = 120

    Если в Linux используется sysv, то создаем файл /etc/init.d/php-5.4.45-fpm, см. https://gist.github.com/CHERTS/bcf1006e90777ead77c...

    Назначаем права и автостарт
    # chmod 755 /etc/init.d/php-5.4.45-fpm
    # insserv -v /etc/init.d/php-5.4.45-fpm
    Запускаем:
    # /etc/init.d/php-5.4.45-fpm start

    Если в Linux используется systemd, то создаем файл
    /lib/systemd/system/php-5.4.45-fpm.service
    исходник https://gist.github.com/CHERTS/bcf1006e90777ead77c...

    Если в Linux используется systemd выполняем:
    # chown root:root /lib/systemd/system/php-5.4.45-fpm.service
    # systemctl daemon-reload
    # systemctl enable php-5.4.45-fpm.service
    # systemctl start php-5.4.45-fpm.service

    Проверить статус можно командой
    # systemctl status php-5.4.45-fpm.service

    Удалить
    # systemctl stop php-5.4.45-fpm.service
    # systemctl disable php-5.4.45-fpm.service
    # systemctl daemon-reload
    # systemctl reset-failed
    # rm /lib/systemd/system/php-5.4.45-fpm.service
    # systemctl daemon-reload

    Далее в каталоге /opt/php-5.4.45/etc/php-fpm.d/ создаем файл пула php-fpm с именем к примеру mysite.conf
    Содержание mysite.conf например такое (mysiteuser и mysitegroup - это имена системного пользователя и группу от имени которых будет работать данный пулл, в php_admin_value[open_basedir] указывается путь до корневого каталога сайта, на этот каталог у mysiteuser и mysitegroup должны быть полные права):

    [mysite]
    listen = /var/lib/php5-fpm/mysite.sock
    listen.owner = mysiteuser
    listen.group = mysitegroup
    listen.mode = 0660
    user = mysiteuser
    group = mysitegroup
    pm = dynamic
    pm.max_children = 8
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 5
    pm.max_requests = 500
    chdir = /
    php_admin_value[open_basedir] = /var/www/mysite/web:/usr/share/php5:/usr/share/php:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin
    php_admin_value[session.save_path] = /var/www/mysite/tmp
    php_admin_value[upload_tmp_dir] = /var/www/mysite/tmp

    После рестартуем
    systemctl status php-5.4.45-fpm.service
    или
    /etc/init.d/php-5.4.45-fpm restart

    В настройках nginx в качестве сокета php-fpm указываем /var/lib/php5-fpm/mysite.sock

    Вот как то так.
    Ответ написан
    Комментировать
  • Хостинги с секундным cron?

    thewind
    @thewind
    php программист, front / backend developer
    Сам cron не поддерживает запуск раз в несколько секунд. Только программно модифицировать, уже внутри скрипта
    Ответ написан
    Комментировать
  • Как развернуть домен на Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    поднимите ldap, синхронизируйте его с AD, и на линуксовые машины раздавайте авторизацию по ldap.
    Ответ написан
    Комментировать
  • Какие есть варианты разрешения сайтов(по dns-именам) на линуксе?

    leahch
    @leahch Куратор тега Linux
    3Д специалист. Долго, Дорого, Дерьмово.
    О сколько нам открытий чудных. Готовит просвещенья друг.

    Увы, это порочный путь! Абсолютно порочный!
    Если сотрудники нифига не делают (как я сейчас), то дрючить нужно не сотрудника, а руководство и начальство, или выгонять сотрудников в отпуск, отгул, переводить на сухари и дрожжи.
    Закрыв интернет, будут теребить планшеты и коммуникаторы, оплевывать курилку и целоваться за углом.

    Ну а теперь предложения. Ставьте простой proxy с авторизацией, остальные порты просто перекройте нафиг.
    Ответ написан
    Комментировать
  • Какие есть варианты разрешения сайтов(по dns-именам) на линуксе?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    А зачем поднимать на ПК впн, если с этим по идее справится роутер?
    Соберите весь трафик с офисов (без доступа в интернет для ПК) в центральный, дальше уже в интернет рулите как надо.
    Ответ написан
    Комментировать
  • Как правильно настроить Apache в моем случае?

    Bessome
    @Bessome
    Администратор Linux, Windows. 1С программист
    Берем конфиг апача. Если бы написали ОС я бы ответил чуть точнее. В конфиге пишем
    NameVirtualHost *
    Include sites-enabled/

    В директории с файлом конфига апача создаем директорию sites-enabled
    в ней создаем файлы виртуальных хостов вида:
    /sites-enabled# cat domain.ru
    
    <VirtualHost *>
    
            ServerName ИмяДоменаN
            ServerAlias www.ИмяДоменаN
            DocumentRoot /var/www/vhosts/ИмяДоменаN/httpdocs/
            <Directory />
                            Options FollowSymLinks
                            DirectoryIndex index.php
                            AllowOverride All
            </Directory>
    
            AccessFileName .htaccess
    
    
            ErrorLog /var/www/vhosts/ИмяДоменаN/logs/error.log
            CustomLog /var/www/vhosts/ИмяДоменаN/logs/access.log vhost_combined
    
    </VirtualHost>

    один файл - один домен.

    PS. Посоветую таки воспользоваться специальными системами управления сайтом типа ISPanel или EHCP
    Ответ написан
    1 комментарий
  • Как прочитать скриптом реальный ip из ZyXEL keenetic lite?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Можно почитать про DDNS, возможно это будет удобнее.

    Для питона, делайте expect EOF - вставить вот это:
    exp.expect(pexpect.EOF)

    после чего, пользоваться полученным текстом:
    print exp.before
    Ответ написан
  • Как сделать образ системы с виртуалки?

    @perminov_dot_im
    Linux администратор
    Если внутри VMWare - есть понятие Templates. Есть инструменты, позволяющие, при развёртывании темплэйта кастомизировать операционку каждый раз автоматом по заданным шаблонам.
    Если для установки на иное железо (baremetal) - то акронисом каким-нить.
    Ответ написан
    1 комментарий
  • Как настроить удаленный доступ к веб-серверу по FTP?

    @AlexLIn
    Поставить ftp server?
    Ответ написан
    Комментировать
  • О скорости SATA3 SSD на SATA2 контроллере. Есть ли резон?

    Jump
    @Jump Куратор тега Твердотельные накопители
    Системный администратор со стажем.
    Никакой разницы.
    В потолок SATA2 скорость упирается только при последовательном чтении, что крайне редко.
    В общем все что вы потеряете - не сможете получить шикарные показатели линейного чтения на синтетических тестах.
    Ответ написан
    2 комментария
  • Как сделать перенос строки Linux в Win?

    SagePtr
    @SagePtr
    Еда - это святое
    В более-менее продвинутых текстовых редакторах (Akelpad, Sublime text, Notepad++ и т.п.) обычно можно выбирать символ конца строки.

    А по поводу генерации текстового файла средствами PHP - смотря как именно туда записываете конец строки. Если константой PHP_EOL - то будет на линуксе LF, на винде CRLF. А если вручную ставить символы конца строки - то какие запишете, те и будут.
    Ответ написан
    Комментировать
  • Nginx rewrite - как получить значение нескольких переменных?

    Tark
    @Tark
    Pyramid'альный мир
    Есть три варианта решения этой проблемы, два из них одинаково плохи, а третий универсален.

    location / {
        rewrite ^(\d+)/(\d+)$ /index.php?a=$1&b=$2 last;
        .... 
        try_files $uri $uri/ /index.php?a=$uri;
    }

    Это плохо тем, что для КАЖДОГО запроса будет проверяться, не соответствует ли строка одному из заявленных регекспов. Для каждого запроса, включая стили, скрипты и статику. Насчёт last в рейврайте не уверен.

    location ~* /(\d+)/(\d+) {
        rewrite ^(\d+)/(\d+)$ /index.php?a=$1&b=$2 last;
    }
    
    location / {
        try_files $uri $uri/ /index.php?a=$uri;
    }

    Этот способ плох тем, что придётся повторять регексп в локейшне. Насчёт last в реврайте опять же не уверен.

    location / {
        try_files $uri $uri/ /index.php?a=$uri;
    }

    Самый уверсальный способ. Единая точка входа, роутингом рулит PHP. Идеально.
    Ответ написан
    2 комментария
  • Как сделать исключение в mod_rewrite?

    @IvanG
    Указанная ниже строка вставляется до RewriteRule и позволяет не обрабатывать значение адреса начинающееся с /res/
    RewriteCond %{REQUEST_URI} !^/res/
    Второй каталог в таком же виде ниже прописать можно, и так для всех вариантов исключений, либо рэгэкспы подвязать.
    Ответ написан
    2 комментария
  • Как с помощью htaccess сделать такой редирект?

    @IceJOKER
    Web/Android developer
    RewriteRule ^(.*?)prodact(.*?) $1product$2 [R=301] как-то так, может кто-то по-лучше вариант напишет )

    RewriteRule ^catalog/prodact(.*?) /catalog/product$1 [R=301]
    // ну еще вариант )
    Ответ написан
    4 комментария
  • Прошу совета по выбору RDP манажера(клиента) и SSH-менеджера в Линукс?

    alhray
    @alhray
    Однозначно remmina. она и ssh может, rdp, а так же vnc. Все работает отлично деление по группам есть (вид изменить и будет сортировать по группам. главное добавьте их репозитории,а не из стокового ставьте, ибо там старая версия. У них на основной страничке есть мануал по подключению.
    PS если лень искать:
    sudo apt-add-repository ppa:remmina-ppa-team/remmina-next -y
    sudo apt-get update
    sudo apt-get install remmina -y
    PSS еще можно посмотреть в сторону PAC Manager
    sourceforge.net/projects/pacmanager
    но это уже от предпочтений зависит. мне для поддержки пользователей и подключений к серверам хватает возможностей remmina. + корректно прокидывает всякие сканеры штрихкодов и прочее...но конечно бывает у и нее странности и глюки)
    Ответ написан
    2 комментария
  • [Решено] Shell echo не скролящийся вывод?

    mars_unique
    @mars_unique Автор вопроса
    #!/bin/sh
    И все-же на примере sh, а не баша решил вот так:
    #!bin/sh
    while true
     do
     a=`ipfw show | grep ng |wc -l`
     b=`date | cut -c12-19`
     sleep 1
    printf "$b Current ng interfaces count is:$a \r"
     done

    Вдруг залетит кто молодой в поиcках подобного решения, посоветую вам - man printf
    Ответ написан
    Комментировать
  • Как переписать через mod_rewrite?

    RewriteCond %{QUERY_STRING} ^option=(.*)$
    RewriteRule ^index.php$ /%1? [L,R=301]
    Ответ написан
    4 комментария
  • Почему grep не умеет групировать?

    @tossed
    В принципе, ваш вариант:
    ifconfig | grep '(inet addr\:)(.*)( B') =$2
    вполне логичен и работоспособен с небольшими переделками:

    Достаточно включить PCRE и исключить из выдачи все лишнее:
    ifconfig | grep -P '(?<=addr:)(.*?)(?=\h)' -o
    127.0.0.1
    10.100.104.90


    Или даже так:
    ifconfig | grep -P '(?<=addr:)(.*?)(?=\h)' -o | awk -e '!/^127/{print("RPAFproxy_ips 127.0.0.1 "$1)}'

    Но, как правильно говорят выше, ifconfig - не самый лучший способ.
    Ответ написан
    3 комментария
  • Как изменить вид урл?

    @HaveFun
    mod_rewrite используется для редиректа на другой адрес или подключения конкретного файла. Например, если известно, что за формирование страницы отвечает файл /nazvanie_categorii/index.php, то в .htaccess достаточно добавить
    RewriteRule /nazvanie-categorii /nazvanie_categorii/index.php

    Если же приложение использует CMS или фреймворк, то, как правило, подключается файл index.php из корневой директории и вопрос переходит в плоскость роутинга CMS/фреймворка.
    Ответ написан
    Комментировать