Что делать, если автоматическое обновление WordPress завершилось неудачей

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

Как выглядит ошибка автоматического обновления в WordPress?

После инициации автоматического обновления ядра WordPress (скажем, от версии 3.1.0 до 3.1.1) на экране “Update WordPress” будут отображаться статусы, характеризующие каждый шаг обновления:

Пока, вроде бы, все в порядке. Давайте посмотрим, что произойдет дальше.

auto-update-failВ нашем случае сообщение, стоящее перед “Installation Failed”, раскрывает суть возникшей проблемы. Это самый простой вариант ошибки. В более сложных ситуациях статусы вообще не выводятся на экран, поэтому приходится разбираться в возникшей проблеме самостоятельно. Более того, в результате такой проблемы доступ к сайту может быть заблокирован для всех пользователей, включая администратора. Если администратор попытается загрузить какую-либо из страниц своего сайта, он получит на экран страницу со следующим содержанием:

Очень сложно справиться с проблемой, если вы не можете залогиниться как администратор. К счастью, решить вопрос можно и без администраторских полномочий. Достаточно использовать доступ через FTP: пройти в корневую директорию и удалить файл .maintenance. Если ваш FTP-клиент не видит файлов, начинающихся с точки, попробуйте войти в панель управления вашего сервера и использовать файловый менеджер для поиска и удаления требуемого файла. На следующем скриншоте представлен файл .maintenance в корневой директории WordPress:

auto-update-fileЭтот файл содержит переменную, которая используется функцией wp_maintenance:

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

auto-update-fail-message

 

 

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

Проверка прав доступа к файлам

Установка надлежащих прав доступа к файлам — один из способов справиться с различными неприятностями, возникающими в процессе автообновления. В разделе «Обновление Консоли» кодекса WordPress можно увидеть следующий совет, касающийся решения проблем:

Удостоверьтесь в том, что ваша директория WordPress связана с тем пользовательским именем, под которым запущен сервер Apache. К примеру, если ваш сервер запущен как https, и ваши файлы лежат в папке /var/wordpress, используйте “chown -R apache.apache /var/wordpress.”

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

 

auto-update-tmp

Для того чтобы временный файл был создан в каталоге /upgrade/, он (каталог) должен быть перезаписываемым для сервера. Чтобы понять, послужило ли это причиной возникновения проблем, попробуйте изменить права доступа для каталога на 777 (или на любой другой CHMOD эквивалент), после чего повторите процесс автоматического обновления. Если это сработало, то вопрос решен, правда, с небольшой оговоркой: вы должны использовать такие права доступа, которые выставляют самые жесткие ограничения из всех возможных. Получить такую комбинацию можно как опытным путем, так и с помощью изучения различных справок. Online CHMOD Calculator поможет вам с подбором подходящих прав доступа.

Отключение безопасного режима

Отключение безопасного режима, если оно разрешено, может помочь справиться с проблемами, вызванными автоматическим обновлением. Согласно PHP-руководству, начиная с версии PHP 5.3.0 безопасный режим считается устаревшей возможностью. Отключить безопасный режим можно несколькими способами. Самый простой способ — отключение безопасного режима в панели управления сервера, но этот способ не всегда доступен. Обходной путь — добавление следующего сниппета в файл php.ini:

или следующего сниппета в конфигурационный файл Apache:

Добавьте этот код в файл httpd.conf и перезапустите Apache.

Определение FTP переменных в файле wp-config.php

Еще один способ вернуть к работе автмоатическое обновление — задать необходимые переменные в файле wp-config.php. Для этого метода существует множество различных вариаций, так что вам придется экспериментально выяснять требуемые переменные. Лично у меня сейчас стоит следующая рабочая конфигурация:

Разместите этот фрагмент кода над строкой “That’s all, stop editing! Happy blogging.” Не забудьте изменить имя пользователя, пароль и другие данные, используемые в остальных переменных.

auto-updates-success

В качестве заключения хочется заметить, что функция автоматического обновления стоит того, чтобы решать проблемы с ее работоспособностью. Без автоматического обновления приведение всех компонентов в актуальный вид отнимает значительное время. Легче один раз разобраться с возникшими неприятностями, чем потом тратить лишние усилия на установку свежих обновлений для WordPress.


Источник: http://oddstyle.ru/wordpress-2/stati-wordpress/chto-delat-esli-avtomaticheskoe-obnovlenie-zavershilos-neudachej.html

3D визуализация и дизайн

Установка и настройка DNS сервера Ubuntu

Установка и настройка DNS сервера Ubuntu

Для начала нужно установить самые последние обновления системы

После этого установим службу DNS сервера Bind9


после установки службы, она автоматически запуститься

nastrojka-DNS-servera-Ubuntu-1

Следующим шагом, генерируем ключ для обновления DNS записей


выводим его на экран


на экране вы должны увидеть ключ, что то подобно этому:

Key: 4GD8OIb8pZk4vAueACAfUQ==

Настраиваем DNS сервер Bind9

Открываем файл конфигурации

Добавим следующий код:

 

 

  • forwaders – вышестоящий dns сервер (сервер гугла), используется если url запроса не найден в нашей базе.
  • listen-on – адреса через которые будет обслуживаться наш DNS сервер.

Сохраняем (Ctrl+O) и закрываем (Ctrl+X) файл.

Перезапустим bind9

Теперь можно протестировать работу нашего DNS сервера

Добавим в фал /etc/resolv.conf строчку с нашим DNS сервером (так как файл /etc/resolv.conf при перезагрузке меняет значения на дефолтные, добавить запись нужно в тот файл из которого будут браться дефолтные значения)

в этот файл пишем следующее:

Сохраняем файл, закрываем его и перезагружаем сервер. После перезагрузки протестируем работу сервера, выполните следующую команду:

в ответ вы получите ответ с временем выполнения запроса (выделено цветом)

nastrojka-DNS-servera-Ubuntu-1 otvet-komandy-dig-600x472Как видите запрос был выполнен за 284 мсек. Теперь еще раз выполним этот же запрос и проверим время запроса

otvet-komandy-dig-2-600x471Повторный запрос был выполнен за 7 мсек! Отлично! Кэширование запросов работает. Двигаемся дальше.

Настройка основного DNS сервера

Исходные данные:

  • Доменное имя – lab.loc
  • IP сервера – 192.168.0.1
  • Имя сервера – srv-01.lab.loc

Нам нужно будет указать две зоны (прямого и обратного просмотра) и прописать их в конфигурации сервера.

Я начну с конца и укажу настройки зон в файле конфигурации. Открываем его

и вставляем следующее:

  •  key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)
  • zone «lab.loc» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
  • zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра

Теперь создадим сами файлы в которых будут храниться данные зоны lab.loc. Для этого скопируем образец файла прямого просмотра:

откроем его

и внесем правки как у меня:

Теперь скопируем файл зоны обратного просмотра:

откроем его

Вносим в него следующее:

Сохраняем, закрываем, перезапускаем Bind9

Сохраняем, закрываем, проверяем работу DNS сервера:

в ответ вы должны увидеть следующее: forward-zone-test-600x435Как видите зона прямого просмотра работает, нам показался адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра

В ответ должны получить следующее:

reverse-zone-test-600x429Как видите в ответ мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.

Настройка динамического обновления зон DHCP сервером

Если вы вместе со мной настраивали сервер с самого начала, тогда у вас не должно возникнуть трудностей. Откроем файл /etc/dhcp/dhcpd.conf

Проверяем что опция option domain-name содержит имя домена lab.loc, строку ddns-update-style none; закомментировать. Теперь добавим строчку update-static-leases on; – она отвечает за создание зон для клиентов у которых статичный IP адрес. Для автоматизации этого процесса, добавим следующий код:

где secret это тот самый код который мы делали вначале статьи.

Вот пример моего файла /etc/dhcp/dhcpd.conf:

Больше никакие настройки DHCP не трогаем, перезапускаем bind9 и dhcp

Теперь нужно проверить как все это дело работает “в бою”. Запускаем клиентскую машину, которая находиться в сети с сервером. После включения машина получит IP адрес от DHCP сервера, а DHCP сервер создаст запись вроде klient-pc.lab.loc.

На запрос nslookup yos-pc (yos-pc это имя клиентской машины), мы должны увидеть ответ от сервера

Win7-600x450Как видите по скриншоту, работает и прямой и обратный запросы к DNS.

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


zapis-v-dns-596x480Источник: http://faqpc.ru/nastrojka-dns-servera-ubuntu/

Дизайн интерьеров

PHP-Barcode — генерация штрих кода

Для тех кто по каким-либо причинам стал изучать проблемы генерации штрих кода (barcode) средствами PHP, презентую open source библиотеку для реализации нескольких популярный стандартов кодирования.

Вообще библиотека существует не только в формате, php скрипта, а еще и в unix & windows source вариантах, которые способны работать с большим количеством штрих кодов, но, напомню, в большинстве случаев используется EAN-13.
Перечислю поддерживаемые стандарты:

EAN-8, EAN-12, EAN-13, UPC, ISBN, Code39, Code128, Code128B, Code128B, RAWCode128, Interleaved25, CBR, MSI, PLS and Code93

Для php библиотеки все немного скромнее — встроены в нее только EAN-13/ISBN, но если скрипт обнаружит распакованную утилиту genbarcode, то сразу становятся доступны все вышеперечисленные стандарты.

Подключение библиотеки происходит в 2 этапа:

  1. Распаковка
  2. Установка пути к библиотеке в файле  php-barcode.php

Строки выглядят примерно так:

$genbarcode_loc="c:\winnt\genbarcode.exe";
$genbarcode_loc="/usr/local/bin/genbarcode"; // используется по умолчанию

Не думаю что стоит описывать процесс установки 3-х скромных файлов, которые в свою очередь адекватно документированы в исходных текстах, тем более что для выполнения операции не требуется каких-либо сверх способностей :-)

Скачать файлы можно с сайта автора http://www.ashberg.de/php-barcode/download/

На этом все!

ЗЫ: думаю будет уместно упомянуть о генерации 2D штрих кода (Semacode), который в отличие от привычных нам «полосок», может хранить существенно больший объем информации, доходящий до нескольких килобайт. Подробнее на этой технологии я остановлюсь позже, а пока можете изучать вопрос самостоятельно, например тут: http://www.splitbrain.org/blog/2007-06/12-php_semacode_encoder

 


Источник: http://rulinux.org/?p=150

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

VirtualBox не видит USB в Linux Ubuntu (для Linux Ubuntu 2014 и 2015 года)

VirtualBox и USB, проблема которую мы сейчас будем решать.

Проблема не в связке, а в настройке. :)

Для решения этой задачки нужно соблюсти 3 условия:

1. Установить последний релиз VirtualBox.

2. Добавить пользователя в группу vboxusers.
Работаем в терминале (Ctrl+Shift+T)

Где user — это ваш логин, а vboxusers — группа в которую добавляем пользователя.

3. Выйти и зайти в систему Linux.

4. Для VirtualBox поставить дополнение Oracle VM VirtualBox Extension Pack.
Для того, чтобы виртуальная машина могла корректно работать в USB-хостами 2.0.

5. В запущенной гостевой ОС установить Дополнения гостевой ОС.

Вот и всё. Наслаждаемся проделанной работой :)

P.S. Вот помощь на сайте Ubuntu http://help.ubuntu.ru/wiki/virtualbox


Источник: http://tavportal.ru/archives/602

3D визуализация и интерьер

Предметная визуализация

Команда NSLOOKUP — работа с сервером DNS из командной строки

Утилита NSLOOKUP присутствует в операционных системах Windows, начиная с Windows NT , и предназначена для формирования запросов к серверам DNS из командной строки. Фактически, утилита является аналогом службы DNS-клиент и позволяет диагностировать проблемы с разрешением имен в системе DNS. По умолчанию, все запросы отправляются на DNS-сервер, адрес которого задан настройками сетевого подключения. В терминах утилиты такой сервер является сервером по умолчанию (default server). Команда ipconfig /all позволяет получить информацию о настройках протокола IP и, в том числе, о серверах DNS, используемых в системе.

При запуске nslookup без параметров, утилита переходит в интерактивный режим, ожидая ввод команд пользователя. Ввод знака вопроса или help позволяет отобразить справку о внутренних командах и опциях nslookup:

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

nslookup yandex.ru. — выполнить запрос к DNS-серверу, заданному по умолчанию, на разрешение доменного имени yandex.ru . Для уменьшения ненужных запросов к серверам имен имя домена нужно вводить в випе полностью определенного (fully qualified domain name) , т.е. с точкой в конце. Если этого не делать, то nslookup будет сначала выполнять запрос на разрешение имени относительно домена того компьютера, на котором она выполняется т.е. yandex.ru.mydomain.ru если имя локальнлгл домена mydomain.ru.

nslookup odnoklassniki.ru 8.8.8.8 — определить IP-адрес узла odnokassniki.ru с использованием DNS-сервера 8.8.8.8 (публичный DNS-сервер Google).

nslookup -type=mx -timeout=8 vk.com 208.67.220.220 — отобразить запись MX для домена vk.com из базы данных сервера с IP-адресом 208.67.220.220 (сервер OpenDNS). При выполнении команды, максимальное время ожидания ответа сервера — 8 секунд.

nslookup -type=any -timeout=8 vk.com 208.67.220.220 — то же, что и в предыдущем примере, но для любых типов записей.

Пример отображаемых данных:

 

Для разных версий nslookup и разных DNS-серверов, обслуживающих запрос, отображаемая информация может отличаться. Тот же запрос, сформированный англоязычной nslookup и направленный на обработку DNS-серверу Google прведет к отображению следующих данных:

 

Сообщение «Не заслуживающий доверия ответ:» (Non-authoritative answer: ) говорит о том, что выполняющий запрос DNS-сервер, не является владельцем зоны vk.com т.е. записи для узла vk.com в его базе отсутствуют, и для разрешения имени использовался рекурсивный запрос к другому DNS-серверу. Если отправить запрос DNS-серверу ns1.vkontakte.ru, то будет получен авторитетный ответ (authoritative answer) :

 

 

Использование опции отладки (debug) позволяет получить дополнительную информацию, содержащуюся в заголовках запросов клиента и ответов сервера (время жизни, флажки, типы записей и т.п.):

 

nslookup 8.8.4.4 — отобразить имя узла, соответствующее IP-адресу 8.8.4.4

nslookup -ls -d mydomain.ru. > listdns.txt — отобразить все записи для домена mydomain.ru, обслуживаемого текущим DNS-сервером. Вывод направляется в файл listdns.txt текущего каталога. Задавать абсолютный путь к файлу не следует, поскольку все существующие на данный момент версии nslookup.exe успешно перенаправляют стандартный вывод в файл, только если он располагается в текущем каталоге.

При работе в интерактивном режиме, после старта на экран выводится приглашение к вводу команд — символ «>» . При вводе команд необходимо учитывать регистр символов, например, LS -d mydomain.ru. будет воспринята как ошибочна команда, а ls -D mydomain.ru. — как команда с ошибочной опцией.


Источник: http://ab57.ru/cmdlist/nslookup.html

3D визуализация и дизайн

Команда Dig для проверки DNS-зоны

Dig (domain information groper) — утилита для роботы с DNS серверами. Входит в состав BIND. При запуске она отображает свою версию программы, которая обычно совпадает с версией BIND. Опишу несколько моментов, как ней пользоваться:
Для того, чтобы просто получить IP-адрес по имени хоста необходимо выполнить:

Для того, что бы получить доменное имя по IP-адресу (PTR-запись) для поиска в обратных зонах, необходимо DIG указать с параметром «-x»:

Для просмотра MX- записи для домена, необходимо указать парамерт «mx»:

Для отображения только имени хоста, можно использовать параметр «+short»:

По умолчанию в dig, отключен список поиска в /etc/resolv.conf, включаем с помощью опции в запросе «+search»:

Для того, что бы узнать серийный номер зоны, запускаем с параметром «soa»:

Если необходимо узнать версию DNS-сервера(не есть гуд!):

Для проверки возможности копирования зоны с с master сервера на slave сервер:

Проверим отдает ли DNS-сервер unigx.org.ua, зону unix.ck.ua:

Dig посылает DNS-серверу unigx.org.ua, запрос SOA-записи для unix.ck.ua:

Для того, что бы просмотреть трассу поиска информации в DNS, в dig предусмотрена опция «+trace»:

Для просмотра дополнительной текстовой информации о домене (запись TXT), необходимо выполнить:

 

Установка Postgresql и указание пароля

PostgreSQL — это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

Сразу после установки вы можете настроить сервер PostgreSQL по вашим потребностям, хотя стандартная настройка вполне жизнеспособна.

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к PostgreSQL Administrator’s Guide, если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql/<version>/main. Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

и замените ее на:

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените ‘localhost’ на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

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

Теперь, поскольку мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале для соединения со стандартной базой шаблонов PostgreSQL:

Эта команда подключится к PostgreSQL базе данных template1 как пользователь postgres. После подключения к серверу PostgreSQL вы окажетесь в SQL консоли. Вы можете выполнить следующую SQL команду в консоли psql для настройки пароля пользователя postgres:

После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:

Под конец вам потребуется перезапустить сервис PostgreSQL для применения новых настроек. Из терминала выполните следующее для перезапуска PostgreSQL:

Настройка выше в любом случае неполная. Пожалуйста обратитесь к руководству PostgreSQL Administrator’s Guide для настройки других параметров.

Ссылки

1. Как упоминалось выше, Administrator’s Guide — великолепный ресурс. Руководство также доступно из пакета postgresql-doc-8.4. Выполните следующую команду в терминале для установки пакета:

Чтобы увидеть руководство, введите file:///usr/share/doc/postgresql-doc-8.4/html/index.html в адресную строку вашего браузера.

2. Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

3. Также смотрите страницу PostgreSQL Ubuntu Wiki для дополнительной информации.


Источник: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

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

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

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

  1. $virtual_hosts_dir = «/etc/apache2/sites-available/»;
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4.     echo «You must run this script as root!\n«;
  5.     exit;
  6. }

 

Получение информации из параметров

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

  1. if ($argc>1)
  2. {
  3.     for ($i=1; $i<$argc; $i++)
  4.     {
  5.         $option = explode(«=», $argv[$i]);
  6.         switch ($option[0])
  7.         {
  8.             case «-h»:
  9.             case «—add-to-hosts»:
  10.                 $add_to_hosts = true;
  11.             break;
  12.             case «-n»:
  13.             case «—no-add-to-hosts»:
  14.                 $add_to_hosts = false;
  15.             break;
  16.             case «-a»:
  17.             case «—server-alias»:
  18.                 if (isset($option[1]))
  19.                 {
  20.                     $server_alias = $option[1];
  21.                 }
  22.                 else
  23.                 {
  24.                     echo «Wrong option: {$argv[$i]}\n«;
  25.                 }
  26.             break;
  27.             case «-d»:
  28.             case «—document-root»:
  29.                 if (isset($option[1]))
  30.                 {
  31.                     if ($option[1] == «default»)
  32.                     {
  33.                         $document_root = $default_doc_root
  34.                     }
  35.                     else if (is_dir(dirname($option[1])))
  36.                     {
  37.                         $document_root = $option[1];
  38.                     }
  39.                 }
  40.                 else
  41.                 {
  42.                     echo «Wrong option: {$argv[$i]}\n«;
  43.                 }
  44.             break;
  45.             default:
  46.                 if (substr($argv[$i], 1, 1) == ‘-‘)
  47.                 {
  48.                     echo «Unknown option: {$argv[$i]}\n«;
  49.                 }
  50.             break;
  51.         }
  52.     }
  53. }

 

Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:

  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:

  1. $stdin = fopen(«php://stdin», «r»);
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

Продолжаем писать наш скрипт. Пока у нас нет хоть какой-то строки в качестве имени хоста, продолжаем просить пользователя, чтобы он что-то ввел:

  1. while (!$server_alias)
  2. {
  3.     echo «Enter your hostname: «;
  4.     $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3.     echo «Add $server_alias to your /etc/hosts ? (Y/N) [Y]: «;
  4.     $line = trim(fgets(STDIN));
  5.     if ($line == ‘n’ || $line == ‘N’)
  6.     {
  7.         $add_to_hosts = false;
  8.     }
  9.     else
  10.     {
  11.         $add_to_hosts = true;
  12.     }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root)
  2. {
  3.     $default_doc_root = $default_doc_root.‘/’.$server_alias;
  4.     echo «Enter your document root [$default_doc_root]: «;
  5.     $line = trim(fgets(STDIN));
  6.     if ($line && is_dir(dirname($line)))
  7.     {
  8.         $document_root = $line;
  9.     }
  10.     else
  11.     {
  12.         $document_root = $default_doc_root;
  13.     }
  14. }

 

Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:

  1. if (!is_dir($document_root))
  2. {
  3.     mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3.     $hosts = file_get_contents(«/etc/hosts»);
  4.     $hosts .= «127.0.0.1\t$server_alias\n«;
  5.     file_put_contents(«/etc/hosts», $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80> 
  3. ServerAdmin i@bogus.in 
  4. ServerAlias $server_alias
  5.  
  6. DocumentRoot $document_root 
  7. <Directory $document_root> 
  8.     Options Indexes FollowSymLinks MultiViews 
  9.     AllowOverride All 
  10.     Order allow,deny 
  11.     allow from all 
  12. </Directory>
  13.  
  14. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log; 
  15. LogLevel warn 
  16. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  17. </VirtualHost>
  18. HOST;

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents(«/etc/apache2/sites-available/$server_alias«, $host_template);
  2. echo «Apache config for this hostname created successfully! Don’t forget to run a2ensite $server_alias\n«;

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:
chmod +x a2addsite

Использование

Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don’t forget to run a2ensite test.local

так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite —server-alias=test2.local —add-to-hosts —document-root=default
Apache config for this hostname created successfully! Don’t forget to run a2ensite test2.local

Выводы

PHP можно использовать не только для разработки сайтов, но и для решения мелких локальных задач на компьютере. Скрипт я писал под себя и, наверняка, кто-то из Вас переделает его под свои нужды.
Исходный код скрипта

Литература

Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output


Источник: http://habrahabr.ru/post/112146/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Низкоуровневое форматирование на Debian или Ubuntu

Случилось так, что понадобилось мне низкоуровневое форматирование. Винт на 2Тб, а значит и времени тоже надо было много, потому решил вставить винт в сервер и делать всё на нем. Процедура эта не трудоемкая, но очень длительная.

1. Подключаем винт
2. Перезагружаем железо
3. Сотрим список подключенных винтов и флешек

1
# fdisk -l

В результате получим нечто такого плана (для примера взял флешку на 4Гб):

1
2
3
4
5
6
7
8
9
10
11
Disk /dev/sdg: 4057 MB, 4057989120 bytes
255 heads, 63 sectors/track, 493 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcad4ebea
   Device Boot      Start         End      Blocks   Id  System
/dev/sdg4   *           1         494     3962848+   c  W95 FAT32 (LBA)
Partition 4 has different physical/logical endings:
     phys=(492, 254, 63) logical=(493, 90, 45)

/dev/sdg — это наш пациент (последняя буква может отличатся!)
4. Отмонитируем все разделы:

1
# umount /dev/sdg*

5. Запускаем форматирование

1
# dd if=/dev/zero of=/dev/sdg

По завершению форматирования получим объем флешки (должен соответствовать заявленному), скорость и время записи.
По памяти, жесткий диск форматировался со скоростью 1 Гб/мин (~16,5 Мб/сек), ибо подключен был через sata, а флешка куда дольше будет.

 


Источник: http://g13.org.ua/%D0%BD%D0%B8%D0%B7%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D0%BE%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-debian-%D0%B8/

Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой «1С:Підприємство» 8.3

Конспект установки и настройки терминального сервера XRDP на базе Ubuntu server 12.04 LTS 64-bit для работы пользователей с конфигурациями, которые запускаются на платформе «1С:Підприємство» 8.3 в native режиме, без эмулятора Windows.

Устанавливаем дистрибутив ubuntu-12.04.2-server-amd64.iso, процедура стандартная почти автоматическая, в интернете можно найти подробное описание процесса.

Рекомендую поставить эти службы, ненужное можно будет потом временно отключить.

Linux Ubuntu

Устанавливаем графическую оболочку LXDE  (http://xaxatyxa.ru/_ubuntu/ustanavlivaem-lxde-ubuntu.html) :

sudo apt-get update && apt-get upgrade

sudo apt-get install lxde

перезагрузка.

После ребута ubuntu загрузится уже в графическом режиме.

LXDE

Делаем автоматический вход в Ubuntu Lxde:

запускаем LXTerminal

для удобства работы устанавливаем Midnight Commander

sudo apt-get install mc

sudo mc

делаем правку файла sudo leafpad /etc/lxdm/lxdm.conf или в mc F4(edit)

надо раскомментировать (убрать #) перед autologin в самом начале файла,

поставить имя желаемого пользователя для автовхода:

autologin=ИмяПользователяДляАвтовхода

перезагрузка, теперь при старте сразу попадаем на рабочий стол lxde .

 

Устанавливаем XRDP:

sudo apt-get update

С сайта http://scarygliders.net/ берем адрес скрипта для автоматической компиляции XRDP из исходников самой последней доступной версии.

sudo apt-get install git

sudo git clone https://github.com/scarygliders/X11RDP-o-Matic.git

создается в домашнем каталоге папка X11RDP-o-Matic

sudo su

cd X11RDP-o-Matic

./X11rdp-o-matic.sh –justdoit

стартует долгий процесс скачивания, проверки и компиляции модулей для xrdp, обязательно нужно дождатся завершения процедуры —

LXDE2

в папке /X11RDP-o-Matic/packages/ лежат уже готовые собранные пакеты x11rdp_0.7.0-1_amd64.deb, xrdp_0.7.0-1_amd64.deb, пригодятся при переинсталированнии сервера без необходимости еще раз компилировать и собирать xrdp из исходников.

Проверяем установку xrdp:

sudo /etc/init.d/xrdp restart

netstat -lntp |grep 3389

Ставим xrdp в автозагрузку:

sudo update-rc.d xrdp defaults

sudo update-rc.d xrdp enable

Там же в папке /X11RDP-o-Matic/ находится скрипт создания файла *.xsession с командой startlxde для запуска LXDE при подключении пользователей:

./RDPsesconfig.sh

———————————————————————————————————————

Устанавливаем «1С:Підприємство» 8.3 и HASP драйвер:

sudo dpkg -i haspd_3.3-eter5ubuntu_amd64.deb

sudo dpkg -i haspd-modules_3.3-eter5ubuntu_amd64.deb

следующий пакет 32 бит, но без него не запускались HASP ключи:

sudo dpkg -i dkms-aksparlnx_3.2-eter1ubuntu_all.deb

Проверяем- sudo /etc/init.d/haspd restart

LXDE1C

Видим что aksusbd не запустился. Интернет подсказал решение — ”Некоторые программы из пакета драйверов HASP откомпилированы для 32-х битных систем. Для них необходимо установить поддержку 32-х битных приложений. Без пакета ia32-libs драйвера HASP-ключей на нашей 64-х битной системе работать не будут.” Устанавливаем:

sudo apt-get install ia32-libs

теперь aksusbd наконец стартует.

Распаковываем файлы deb64.tar.gz и client.deb64.tar.gz из дистрибутива «1С:Підприємство» 8.3 в одну папку.

Устанавливаем:

sudo dpkg -i 1c*.deb

sudo apt-get -f install

sudo apt-get install ttf-mscorefonts-installer

sudo apt-get install imagemagick

Запускаем для проверки конфигуратор и создаем пустую базу —

1C

 

 

Останавливаем службу сервера «1С:Підприємство» 8.3 ( пока не нужна )

sudo /etc/init.d/srv1cv83 stop

Отключаем автозапуск сервера «1С:Підприємство» 8.3

sudo update-rc.d srv1cv83 disable

заодно можно отключить и другие не задействованные службы:

sudo update-rc.d postgresql disable

———————————————————————————————————————

Устанавливаем программы необходимые для работы пользователей в терминальных сессиях :

sudo apt-get install libreoffice

sudo apt-get install libreoffice-l10n-ru

sudo apt-get install libreoffice-l10n-uk

в репозитарии версия 3, так же доступен к скачиванию и установке новый libreoffice 4 с сайта.

http://www.libreoffice.org/download/?type=deb-x86_64&lang=ru&version=4.1.0

sudo apt-get install firefox

sudo apt-get install firefox-locale-ru

sudo apt-get install sylpheed

sudo apt-get install qbittorrent

sudo apt-get install cups-pdf

Настраиваем рабочий стол и окружение:

Добавляем на LXPanel — “Индикатор раскладок клавиатуры“, “Клавиатурный индикатор“

Мне понадобился еще один язык для переключения — украинский, поэтому редактируем файл /etc/default/keyboard (с правами администратора):

sudo leafpad /etc/default/keyboard

Изменяем строку:

XKBLAYOUT=»us,ru,ua»

Настраиваем «скелеты» для пользователей:

Выполняем с правами рута

cd /home/Настроенный_Пользователь

cp -R -f -b .config/ /etc/skel/ # настройки lxde

cp -R -f -b Desktop/ /etc/skel/ # Содержимое рабочего стола

Теперь можем добавлять пользователей терминалов:

sudo adduser term1 # например

sudo adduser term2 #

Подключаемся как term1, я пробовал с Windows 8 64 bit, запустилось, но в терминале возникли проблемы с переключением языков клавиатуры.

Для решения редактируем файл /etc/X11/Xsession:

В самом начале после строки set -e прописываем:

if [ -r /etc/default/locale ]; then

. /etc/default/locale

export LANG LANGUAGE

fi

setxkbmap -layout «us,ru,ua» -model «pc105» -option «grp:alt_shift_toggle,grp_led:scroll»

Снова коннектимся к серверу и наконец получаем работающий терминал клиента —

WindowsLinux

В принцыпе, там еще много донастраевать в Ubuntu нужно, но основа создана и сервер терминалов, работающий по протоколу RDPv5 запущен, если нужно более 10-и подключенных одновременно клиентов, тогда увеличиваем значение записанное в опцию MaxSessions в секции Sessions файла /etc/xrdp/sesman.ini. 


Вид рабочей базы Бухгалтерия 8 на Linux:

1C в Linux

Источники информации:

[HOWTO] Терминальный сервер XRDP на Ubuntu.

http://forum.ubuntu.ru/index.php?topic=208235.0


http://infostart.ru/public/196375/

Страница 30 из 31« Первая...1020...2728293031