O Apache é diferente no ubuntu e no arch linux

0

Eu tenho um servidor Ubuntu e uma máquina Arch Linux. Eu me acostumei bastante com a configuração do apache no Ubuntu. É simples e eficiente. No entanto, ao instalar o apache2 no meu arco mechine, notei que tudo é diferente. O daemon nem tem o mesmo nome. Alguém pode me explicar:

1: Por que tudo é tão diferente

2: Como posso obter o apache do ubuntu no arco

    
por Gman Smith 30.07.2017 / 18:29

3 respostas

2

As outras respostas são bastante boas sobre a diferença entre Ubuntu / Debian e Arch Linux, mas elas não são realmente "tecnicamente orientadas" ... Eu não sou um especialista, sou apenas um usuário de arcos e um mantenedor de AUR mas vou tentar fazer o meu melhor para responder isso mais "tecnicamente".

Por favor, considere o seguinte como incompleto, já que estou falando apenas das diferenças (E ainda não terminei, mas as principais diferenças estão lá). De fato, como não entendo por que OP precisa mudar, não consigo responder adequadamente à segunda parte da pergunta do OP.

Como eu não sou um usuário Ubuntu / Debian em tempo integral, esta resposta pode ter alguma falta sobre a explicação do Debian / Ubuntu.

Diferenças

PKGBUILD

Como usuário do Arch e mantenedor do AUR, o primeiro que faço é a primeira coisa que todos os usuários do Arch devem fazer quando essa pergunta aparece é ler o PKGBUILD do pacote Apache que pode ser encontrado aqui .

Então, no momento em que escrevo isso, parece que o seguinte

# $Id$
# Maintainer: Jan de Groot <[email protected]>
# Contributor: Andrea Scarpino <[email protected]>
# Contributor: Pierre Schmitz <[email protected]>

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 \)||' \
      -e 's|#\(LoadModule include_module \)||' \
      -e 's|#\(LoadModule userdir_module \)||' \
      -e 's|#\(LoadModule slotmem_shm_module \)||' \
      -e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)||' \
      -e 's|#\(Include conf/extra/httpd-autoindex.conf\)||' \
      -e 's|#\(Include conf/extra/httpd-languages.conf\)||' \
      -e 's|#\(Include conf/extra/httpd-userdir.conf\)||' \
      -e 's|#\(Include conf/extra/httpd-default.conf\)||' \
      -e 's|#\(Include conf/extra/httpd-mpm.conf\)||' \
      -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()

A parte prepare() é bastante interessante quando vemos o que está acontecendo ...

Substituição do usuário

Primeiro, alteramos o usuário padrão com o seguinte ...

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

De fato, como podemos ver no Repositório do Apache > o grupo padrão e o usuário são os seguintes, o que nos mostra a primeira diferença entre o Arch Linux e outras distribuições.

# 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

Adição do layout do arco personalizado

Antes de continuarmos com o seguinte, deixe-me falar sobre os layouts do Apache. O Apache inclui por padrão seu próprio layout, mas também algum layout de acordo com diferentes distribuições. É principalmente por isso que é tão diferente de uma distribuição para outra. De fato, o Apache usa o arquivo config.layout para permitir diretório personalizado e estrutura de "arquitetura" de acordo com a distribuição.

Em outra palavra, para citar o wiki do Apache:

many third-party distributors change the layout to conform to local policies.

O config.layout padrão pode ser encontrado aqui . De fato, como você pode ver, o layout do Arch não está no arquivo config.layout padrão e é por isso que temos a linha:

cat "${srcdir}/arch.layout" >> config.layout
Vamos comparar o layout do Debian / Ubuntu com o layout do Arch

Então aqui está o layout padrão do Debian (no momento em que escrevo isso)

<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>

E aqui está o layout do Arch retirado do pacote oficial do 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>

Não vou detalhar tudo porque acho que não é necessariamente porque podemos encontrar mais informações no documentação ou em outro lugar.

O que podemos ver aqui é que é bem diferente. Então, isso explica quase tudo sobre a diferença entre o pacote Arch e o Ubuntu / Debian Apache.

build()

Eu procurei o que é a configuração padrão para o Debian / Ubuntu, mas eu não achei nada certo então se você sabe, por favor sinta-se livre para adicioná-lo e / ou deixar um comentário para esta parte / resposta .

A outra coisa mais importante é a maneira como o Apache é construído e configurado e que pode ser diferente de uma distribuição para outra.

O

Arch Linux escolheu configurá-lo com o seguinte, que eu acho que deve ser diferente do Debian. Você pode encontrar mais sobre os argumentos de configuração aqui

./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
    
por 13.08.2017 / 14:15
2
  1. O comando Iniciar, Parar e Reiniciar o Servidor Web Apache 2 é diferente em muitas distros Linux & Versões Unix, como mostrado aqui (não a lista mais atualizada, mas mesmo assim). Isso tem razões históricas e algumas razões idiossincráticas. Além da nomenclatura, da localização e dos comandos de controle, o servidor web Apache (2.x) é praticamente o mesmo em todas as versões atuais do Linux quando se trata de configuração , recursos , etc.
  2. Você pode tentar criar scripts de shell que imitam os comandos com os quais você está mais acostumado. Caso contrário, não acho que você possa fazer muito.
por 11.08.2017 / 22:50
0

Eu nunca usei o Arch Linux, mas sua pergunta me intrigou.

A partir da leitura dos documentos para AL e, em particular, do gerenciador de pacotes, pacman, tenho a impressão de que eles têm regras bastante rígidas sobre como as coisas devem ser feitas, de acordo com sua mentalidade "Keep It Simple". sua primeira página . Por exemplo, dê uma olhada nos seus padrões de pacotes ; é a primeira vez que vejo esse padrão para qualquer sistema Linux. Eu gostaria que outras distribuições os tivessem (ou os tornassem mais óbvios).

Para obter um Apache2 com sabor Ubuntu no AL, eu diria "não". Se eles tiverem um sistema em bom funcionamento para onde as coisas devem ser instaladas, etc, eu seguiria as recomendações deles e, em vez disso, aprenderia a usar o sistema como está. Se você tiver problemas e pedir ajuda, eles pedirão que você instale os pacotes padrão.

    
por 11.08.2017 / 22:49