У меня есть сервер Ubuntu и машина Arch Linux. Я довольно привык к настройке apache в Ubuntu. Это просто и эффективно. Однако после установки apache2 на моем механизме арки я заметил, что все по-другому. Демон даже не имеет того же имени. Может кто-нибудь объяснить мне:

1: Почему все так отличается

2: Как я могу получить Ubuntu Apache на Arch

3 ответа3

2
  1. Запуск, останов и перезапуск Команда веб-сервера Apache 2 отличается во многих дистрибутивах Linux и версиях Unix, как показано здесь (не самый актуальный список, но в любом случае). Это имеет как исторические, так и специфические причины. Помимо именования, расположения и команд управления, веб-сервер Apache (2.x) практически одинаков во всех текущих версиях Linux, когда речь идет о конфигурации, возможностях и т.д.
  2. Вы можете попытаться создать сценарии оболочки, которые имитируют команды, к которым вы более привыкли. В противном случае я не думаю, что вы можете сделать очень много.
2

Другие ответы достаточно хороши о разнице между Ubuntu/Debian и Arch Linux, но на самом деле они не "технически ориентированы" ... Я не специалист, я всего лишь архивный пользователь и сопровождающий AUR, но я постараюсь сделать все возможное, чтобы ответить на этот вопрос более "технически".

Пожалуйста, примите во внимание следующее как неполное, поскольку я говорю только о различиях (и я все еще не закончил, но основные различия есть). На самом деле, поскольку я не понимаю, почему нужно менять ОП, я не могу правильно ответить на вторую часть вопроса ОП.

Поскольку я не являюсь постоянным пользователем Ubuntu/Debian, у этого ответа может быть недостаток объяснения Debian/Ubuntu.


отличия

PKGBUILD

Как пользователь Arch и сопровождающий AUR, первое, что я делаю, и первое, что каждый пользователь Arch должен делать, когда возникает такой вопрос, - это прочитать PKGBUILD пакета Apache, который можно найти здесь.

Итак, в то время, когда я пишу это, это выглядит следующим образом

# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>

pkgname=apache
pkgver=2.4.27
pkgrel=1
pkgdesc='A high performance Unix-based HTTP server'
arch=('i686' 'x86_64')
url='http://www.apache.org/dist/httpd'
license=('APACHE')
backup=(
    etc/httpd/conf/httpd.conf
    etc/httpd/conf/extra/httpd-{autoindex,dav,default,info,languages}.conf
    etc/httpd/conf/extra/httpd-{manual,mpm,multilang-errordoc}.conf
    etc/httpd/conf/extra/httpd-{ssl,userdir,vhosts}.conf
    etc/httpd/conf/extra/proxy-html.conf
    etc/httpd/conf/{mime.types,magic}
    etc/logrotate.d/httpd
)
depends=('zlib' 'apr-util' 'pcre' 'libnghttp2' 'openssl')
makedepends=('libxml2' 'lua')
optdepends=(
    'lua: for mod_lua module'
    'libxml2: for mod_proxy_html, mod_xml2enc modules'
    'lynx: apachectl status'
)
source=(
    https://www.apache.org/dist/httpd/httpd-${pkgver}.tar.bz2{,.asc}
    openssl-malloc-init.patch
    apache.tmpfiles.conf
    httpd.logrotate
    httpd.service
    arch.layout
)
sha256sums=('71fcc128238a690515bd8174d5330a5309161ef314a326ae45c7c15ed139c13a'
            'SKIP'
            'd305f8b52ac2a9bbda7bb0776496471e69e9d30642740f594d00086a8c7e344c'
            '63da1a420f4714a3e7af2672d28384419cc7eedbe7bf35baebd02938fabc15bf'
            '0bbbfae23a917b2fce0bf8f900f60319b50769224a96314e9301a75ccd078e16'
            'f574bac6d5f398e7a649fc0e1ca66ff01ad4ef34dac71258e93d8a9d9a2b3960'
            'dda05c6e76f12624e418ca18a36f2e90ec1c5b1cc52fed7142fce6076ec413f3')
validpgpkeys=('A93D62ECC3C8EA12DB220EC934EA76E6791485A8') # Jim Jagielski

prepare() {
  cd httpd-${pkgver}

  # set default user
  sed -e 's#User daemon#User http#' \
      -e 's#Group daemon#Group http#' \
      -i docs/conf/httpd.conf.in

  cat "${srcdir}/arch.layout" >> config.layout

  # https://github.com/openssl/openssl/issues/2865
  patch -Np1 -i ../openssl-malloc-init.patch
}

build() {
  cd httpd-${pkgver}

  ./configure --sbindir=/usr/bin \
      --enable-layout=Arch \
      --enable-mpms-shared=all \
      --enable-modules=all \
      --enable-mods-shared=all \
      --enable-so \
      --enable-suexec \
      --with-suexec-caller=http \
      --with-suexec-docroot=/srv/http \
      --with-suexec-logfile=/var/log/httpd/suexec.log \
      --with-suexec-bin=/usr/bin/suexec \
      --with-suexec-uidmin=99 --with-suexec-gidmin=99 \
      --enable-ldap --enable-authnz-ldap --enable-authnz-fcgi \
      --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
      --enable-ssl --with-ssl \
      --enable-deflate --enable-cgi --enable-cgid \
      --enable-proxy --enable-proxy-connect \
      --enable-proxy-http --enable-proxy-ftp \
      --enable-dbd --enable-imagemap --enable-ident --enable-cern-meta \
      --enable-lua --enable-xml2enc --enable-http2 \
      --with-apr=/usr/bin/apr-1-config \
      --with-apr-util=/usr/bin/apu-1-config \
      --with-pcre=/usr

  make
}

package() {
  cd httpd-${pkgver}

  make DESTDIR="${pkgdir}" install

  install -D -m644 "${srcdir}/httpd.logrotate" "${pkgdir}/etc/logrotate.d/httpd"
  install -D -m644 "${srcdir}/apache.tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/apache.conf"
  install -D -m644 "${srcdir}/httpd.service" "${pkgdir}/usr/lib/systemd/system/httpd.service"
  install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

  # symlinks for /etc/httpd
  # do we really need this symlink?
  ln -fs /usr/lib/httpd/modules "${pkgdir}/etc/httpd/modules"

  # set sane defaults
  sed -e 's#/usr/lib/httpd/modules/#modules/#' \
      -e 's|#\(LoadModule negotiation_module \)|\1|' \
      -e 's|#\(LoadModule include_module \)|\1|' \
      -e 's|#\(LoadModule userdir_module \)|\1|' \
      -e 's|#\(LoadModule slotmem_shm_module \)|\1|' \
      -e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)|\1|' \
      -e 's|#\(Include conf/extra/httpd-autoindex.conf\)|\1|' \
      -e 's|#\(Include conf/extra/httpd-languages.conf\)|\1|' \
      -e 's|#\(Include conf/extra/httpd-userdir.conf\)|\1|' \
      -e 's|#\(Include conf/extra/httpd-default.conf\)|\1|' \
      -e 's|#\(Include conf/extra/httpd-mpm.conf\)|\1|' \
      -i "${pkgdir}/etc/httpd/conf/httpd.conf"

  # cleanup
  rm -r "${pkgdir}/usr/share/httpd/manual"
  rm -r "${pkgdir}/etc/httpd/conf/original"
  rm -r "${pkgdir}/srv/"
  rm -r "${pkgdir}/run"
}

prepare()

Часть prepare() довольно интересна, так как мы видим, что происходит ...

Замена пользователя

Сначала мы меняем пользователя по умолчанию следующим образом ...

# set default user
  sed -e 's#User daemon#User http#' \
      -e 's#Group daemon#Group http#' \
      -i docs/conf/httpd.conf.in

На самом деле, как мы видим в официальном репозитории apache, группа и пользователь по умолчанию следующие, что показывает нам первое различие между Arch Linux и другим дистрибутивом.

# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

Добавление пользовательского макета арки

Прежде чем мы продолжим со следующим, позвольте мне поговорить о разметке Apache. Apache по умолчанию включает в себя свой собственный макет, но также и некоторый макет в соответствии с различными дистрибутивами. Именно поэтому он так сильно отличается от раздачи другому. Действительно, Apache использует файл config.layout для того, чтобы разрешить пользовательский каталог и структуру "архитектуры" в соответствии с дистрибутивом.

Другими словами, процитировать Apache wiki:

многие сторонние дистрибьюторы изменяют макет в соответствии с местными правилами.

config.layout умолчанию можно найти здесь. На самом деле, как вы можете видеть, макет Arch не входит в config.layout по умолчанию, поэтому у нас есть строка:

cat "${srcdir}/arch.layout" >> config.layout
Давайте сравним макет Debian / Ubuntu с макетом Arch

Итак, вот макет Debian по умолчанию (в то время, когда я пишу это)

<Layout Debian>
    prefix:
    exec_prefix:   ${prefix}/usr
    bindir:        ${exec_prefix}/bin
    sbindir:       ${exec_prefix}/sbin
    libdir:        ${exec_prefix}/lib
    libexecdir:    ${exec_prefix}/lib/apache2/modules
    mandir:        ${exec_prefix}/share/man
    sysconfdir:    ${prefix}/etc/apache2
    datadir:       ${exec_prefix}/share/apache2
    iconsdir:      ${datadir}/icons
    htdocsdir:     ${prefix}/usr/share/apache2/default-site/htdocs
    manualdir:     ${htdocsdir}/manual
    cgidir:        ${prefix}/usr/lib/cgi-bin
    includedir:    ${exec_prefix}/include/apache2
    localstatedir: ${prefix}/var/lock/apache2
    runtimedir:    ${prefix}/var/run/apache2
    logfiledir:    ${prefix}/var/log/apache2
    proxycachedir: ${prefix}/var/cache/apache2/proxy
    infodir:       ${exec_prefix}/share/info
    installbuilddir: ${prefix}/usr/share/apache2/build
    errordir:      ${datadir}/error
</Layout>

А вот макет Arch, взятый из официального пакета Arch:

<Layout Arch>
    prefix:          /etc/httpd
    exec_prefix:     /usr
    bindir:          /usr/bin
    sbindir:         /usr/bin
    libdir:          /usr/lib/httpd
    libexecdir:      /usr/lib/httpd/modules
    mandir:          /usr/share/man
    sysconfdir:      /etc/httpd/conf
    datadir:         /usr/share/httpd
    installbuilddir: /usr/lib/httpd/build
    errordir:        /usr/share/httpd/error
    iconsdir:        /usr/share/httpd/icons
    htdocsdir:       /srv/http
    manualdir:       /usr/share/httpd/manual
    cgidir:          /srv/http/cgi-bin
    includedir:      /usr/include/httpd
    localstatedir:   /var
    runtimedir:      /run/httpd
    logfiledir:      /var/log/httpd
    proxycachedir:   /var/cache/httpd
</Layout>

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

То, что мы можем увидеть здесь, это то, что все по-другому. Так что это объясняет почти все о разнице между пакетом Arch и Ubuntu/Debian Apache.

build()

Я искал конфигурацию по умолчанию для Debian/Ubuntu, но ничего не нашел, поэтому, если вы знаете, пожалуйста, не стесняйтесь добавить ее и / или оставить комментарий к этой части / ответу.

Другая важная вещь - это то, как Apache создается и настраивается, и это может отличаться от дистрибутива к другому.

Arch Linux решил настроить его следующим образом, который, я думаю, должен отличаться от Debian. Вы можете найти больше о настройке аргументов здесь

./configure --sbindir=/usr/bin \
    --enable-layout=Arch \
    --enable-mpms-shared=all \
    --enable-modules=all \
    --enable-mods-shared=all \
    --enable-so \
    --enable-suexec \
    --with-suexec-caller=http \
    --with-suexec-docroot=/srv/http \
    --with-suexec-logfile=/var/log/httpd/suexec.log \
    --with-suexec-bin=/usr/bin/suexec \
    --with-suexec-uidmin=99 --with-suexec-gidmin=99 \
    --enable-ldap --enable-authnz-ldap --enable-authnz-fcgi \
    --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
    --enable-ssl --with-ssl \
    --enable-deflate --enable-cgi --enable-cgid \
    --enable-proxy --enable-proxy-connect \
    --enable-proxy-http --enable-proxy-ftp \
    --enable-dbd --enable-imagemap --enable-ident --enable-cern-meta \
    --enable-lua --enable-xml2enc --enable-http2 \
    --with-apr=/usr/bin/apr-1-config \
    --with-apr-util=/usr/bin/apu-1-config \
    --with-pcre=/usr
0

Я никогда не использовал Arch Linux, но ваш вопрос меня заинтриговал.

Прочитав документы для AL и, в частности, их менеджера пакетов pacman, у меня сложилось впечатление, что у них есть довольно строгие правила относительно того, как все должно быть сделано, в соответствии с их идеей "Keep It Simple", как видно на их первой странице. , Например, посмотрите на их стандарты упаковки ; Впервые я увидел такой стандарт для любой системы Linux. Я хотел бы, чтобы другие дистрибутивы имели их (или сделали их более очевидными).

Что касается получения Apache2 со вкусом Ubuntu на AL, я бы сказал «нет». Если у них есть хорошо функционирующая система для того, где что-то должно быть установлено и т.д., я бы следовал их рекомендациям и вместо этого научился бы использовать систему как есть. Если вы столкнетесь с проблемами и попросите помощи, скорее всего, они просто попросят вас установить стандартные пакеты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .