Пишем по-вьетнамски Гроффом

Хорошо. Это меня заинтриговало, и вот что я придумал:

---
- hosts: all 
  become: yes 

  tasks:
    - name: Get path to php.ini
      find:
        paths: /etc/php
        file_type: directory
        recurse: no
      register: ini_path

    - name: Update php.ini post_max_size
      replace:
        dest: "{{ ini_path.files[0].path }}/apache2/php.ini"
        regexp: '^post_max_size.*$'
        replace: 'post_max_size = 20M'
        backup: yes 

    - name: Update php.ini upload_max_filesize
      replace:
        dest: "{{ ini_path.files[0].path }}/apache2/php.ini"
        regexp: '^upload_max_filesize.*$'
        replace: 'upload_max_filesize = 20M'
        backup: yes 

Первое, что я делаю, это использую модуль find, чтобы определить, какую версию php мы используем, и, конечно же, регистрирую этот результат в ini_path. Это работает, потому что единственный каталог в /etc/php— это каталог с фактическим номером версии :

.
ls /etc/php/
7.2

Поскольку зарегистрированный результат представляет собой словарь Python, позже я объединяю результат с полным путем кphp_ini:
"{{ ini_path.files[0].path }}/apache2/php.ini"

Таким образом, мы можем использовать playbook, несмотря на то, что заранее не знаем, какую версию php мы используем (в разумных пределах, мы должны использовать apache2! ).

Выполнение на моем тестовом сервере (Ubuntu 18 )выглядит так:

ansible-playbook update_phpini.yml -i "192.168.1.11," -kK
SSH password: 
SUDO password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [192.168.1.11]

TASK [Get path to php.ini] *****************************************************
ok: [192.168.1.11]

TASK [Update php.ini post_max_size] ********************************************
ok: [192.168.1.11]

TASK [Update php.ini upload_max_filesize] **************************************
ok: [192.168.1.11]

PLAY RECAP *********************************************************************
192.168.1.11               : ok=4    changed=0    unreachable=0    failed=0   

В производственной среде вы можете выполнить больше тестов и использовать set_factдля назначения пути к переменной на ранней стадии. Это всего лишь ПОК.

Также, конечно, регулируйте размеры файлов по своему вкусу!!!

2
11.12.2020, 12:15
2 ответа

Вот некоторые подсказки. В принципе, вы можете напрямую ввести любой символ во входной файл groff ms, а затем сообщить groff, какую кодировку вы использовали; затем символ будет преобразован в последовательность Unicode \[u....].

Как правило, большинство редакторов допускают использование кодировки utf -8, поэтому, если вы ввели символы, используя ее, вы можете просто запуститьgroff -Kutf-8(или -Kutf8), чтобы преобразовать их. Например, ввод символа евро € на клавиатуре может стать \[u20AC]. См. man groff_char.

Более серьезной проблемой является преобразование символа Unicode, предположительно, в PDF или PostScript. Для этого необходимо установить соответствующий шрифт и указать groff использовать его. На этом мой опыт заканчивается. Я видел, как люди предлагали вам настроить выход LaTex dvi(-Tdvi)и использовать его инструменты для преобразования:

groff -Kutf8 -Tdvi -mec -ms test.ms >test.dvi
dvipdfm -cz 9 test.dvi    # produces test.pdf

Опция -mecзаменяет стандартные шрифты шрифтами EC. См. man grodvi.

Я написал ответ о том, как мне удалось использовать альтернативный метод для преобразования шрифта, который включал определенный символ Юникода, но оригинальный постер не имел никакого успеха с ним.

Обратите внимание, что по адресу man 7 groffесть вторая справочная страница с некоторыми подробностями.

2
28.04.2021, 23:02

У меня была такая же проблема с рендерингом .pdfиз .msи .mdв течение пары дней -, что очень расстраивало.

Шрифты по умолчанию в groff, похоже, не отображают символы Юникода.

Я нашел обходной путь, установив -шрифт со шрифтом, который на самом деле содержит символы Юникода.

У Гэвина Фриборна есть обучающее видео по этому вопросу.

Теперь groffработает нормально на моей машине.

Удачи :Д

1
09.10.2021, 11:06

Теги

Похожие вопросы