Servidor · 8 min read · Jan 27, 2026

O Servidor Perfeito - OpenSUSE 13.1 x86_64 (Apache2, MySQL, PHP, Postfix, Dovecot e ISPConfig 3) - Página 4

8 Instalar Postfix, Dovecot, MySQL

Execute

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

Se você receber a seguinte mensagem, selecione para desinstalar o exim:

Problema: sendmail-8.14.5-85.1.2.x86_64 entra em conflito com postfix fornecido por postfix-2.9.6-1.2.1.x86_64
Solução 1: As seguintes ações serão realizadas:
não instalar postfix-2.9.6-1.2.1.x86_64
não instalar postfix-mysql-2.9.6-1.2.1.x86_64
Solução 2: desinstalação de sendmail-8.14.5-85.1.2.x86_64

Escolha entre as soluções acima pelo número ou cancele [1/2/c] (c): <– 2

Crie o seguinte symlink:

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

Neste ponto, eu tive que reiniciar porque, caso contrário, o MySQL se recusava a iniciar com o erro:

Falha ao emitir chamada de método: Unidade mysql.service falhou ao carregar: Arquivo ou diretório não encontrado. Veja os logs do sistema e 'systemctl status mysql.service' para detalhes.
reboot

Abra o arquivo de configuração do MySQL /etc/my.cnf com um editor

vi /etc/my.cnf

e mude a linha “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ para:

sql_mode=NO_ENGINE_SUBSTITUTION

Em seguida, abra o arquivo /usr/my.cnf com um editor

vi /usr/my.cnf

e mude o modo sql para

sql_mode=NO_ENGINE_SUBSTITUTION

aí também.

Inicie o MySQL, Postfix e Dovecot e habilite os serviços para serem iniciados na inicialização.

systemctl enable mysql.service  
systemctl start mysql.service
systemctl enable postfix.service  
systemctl start postfix.service
systemctl enable dovecot.service  
systemctl start dovecot.service

Agora eu instalo o pacote getmail:

zypper install getmail

Para garantir a instalação do MySQL, execute:

mysql_secure_installation

Agora você será solicitado a responder várias perguntas:

server1:~ # mysql_secure_installation

NOTA: EXECUTAR TODAS AS PARTES DESTE SCRIPT É RECOMENDADO PARA TODOS OS MySQL
SERVIDORES EM USO EM PRODUÇÃO! POR FAVOR, LEIA CADA ETAPA CUIDADOSAMENTE!

Para fazer login no MySQL para garantir sua segurança, precisaremos
do atual
senha do usuário root. Se você acabou de instalar o MySQL, e
você não definiu a
senha do root ainda, a senha estará em branco,
portanto você deve
pressionar enter aqui.

Digite a senha atual do root (pressione enter para nenhum): <– ENTER
OK, senha usada com sucesso, prosseguindo…

Definir a senha do root garante que
ninguém possa fazer login no
usuário root do MySQL
sansão da autorização adequada.

Definir senha do root? [Y/n] <– Y
Nova senha: <– yourrootsqlpassword
Reinsira a nova senha: <– yourrootsqlpassword
Senha atualizada com sucesso!
Recarregando tabelas de privilégios..
… Sucesso!

Por padrão, uma instalação do MySQL
tem um usuário anônimo,
permitindo que qualquer um
faça login no MySQL
sansão ter que
ter uma conta de usuário criada
para eles. Isso
é destinado apenas
para testes,
e para
facilitar a instalação
um pouco mais suave. Você
deve removê-los
antes de passar para um
ambiente de produção.

Remover usuários anônimos? [Y/n] <– Y
… Sucesso!

Normalmente, o root
deve ser
permitido apenas
conectar de ‘localhost’. Isso
garante que
ninguém possa
adivinhar a
senha do root
do
rede.

Desabilitar login remoto do root? [Y/n] <– Y
… Sucesso!

Por padrão, o MySQL
vem com um
banco de dados chamado
‘test’ que
qualquer um pode
acessar. Isso
também é
destinado apenas
para testes,
e deve ser
removido
antes de passar para um
ambiente de produção.

Remover banco de dados de teste
e acesso a ele? [Y/n] <– Y

  • Removendo
    banco de dados de teste…
    … Sucesso!
  • Removendo
    privilégios
    sobre o banco de dados de teste…
    … Sucesso!

Recarregar as tabelas de privilégios
garantirá que todas as
alterações feitas
fins
terão efeito
imediatamente.

Recarregar tabelas de privilégios agora? [Y/n] <– Y
… Sucesso!

Limpando…

Tudo pronto! Se você
concluiu todas as
passos acima, sua
instalação do MySQL
deve estar
segura agora.

Obrigado por usar
MySQL!

server1:~ #

Agora sua configuração do MySQL deve estar segura.

9 Amavisd-new, Spamassassin E Clamav

Instale Amavisd-new, Spamassassin e o antivírus Clamav. Execute

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

Abra /etc/amavisd.conf…

vi /etc/amavisd.conf

… e adicione a linha $myhostname com seu nome de host correto abaixo da linha $mydomain:

| [...] $mydomain = 'example.com'; # um padrão conveniente para outras configurações $myhostname = "server1.$mydomain"; [...] |

Em seguida, crie um symlink de /var/run/clamav/clamd para /var/lib/clamav/clamd-socket:

mkdir -p /var/run/clamav  
ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 13.1 tem um diretório /run para armazenar dados de tempo de execução. /run agora é um tmpfs, e /var/run agora está montado como bind para /run de tmpfs, e, portanto, esvaziado na reinicialização.

Isso significa que, após uma reinicialização, o diretório /var/run/clamav que acabamos de criar não existirá mais, e, portanto, o clamd falhará ao iniciar. Portanto, criamos o arquivo /etc/tmpfiles.d/clamav.conf agora que criará este diretório na inicialização do sistema (veja http://0pointer.de/public/systemd-man/tmpfiles.d.html para mais detalhes):

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

Antes de iniciarmos o amavisd e o clamd, devemos editar o script de inicialização /etc/init.d/amavis - eu não consegui iniciar, parar e reiniciar o amavisd de forma confiável com o script de inicialização padrão:

vi /etc/init.d/amavis

Comente as seguintes linhas na seção de início e parada:

| [...] start) # ZMI 20100428 verifique se o arquivo pid está obsoleto #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # arquivo pid está obsoleto, remova-o # echo -n "(arquivo pid obsoleto do amavisd $AMAVIS_PID encontrado, removendo. O amavisd falhou?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Iniciando scanner de vírus (amavisd-new): " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Iniciando amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Desligando scanner de vírus (amavisd-new): " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Desligando amavis-milter: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Como mudamos o script de inicialização, devemos executar

systemctl --system daemon-reload

agora.

Para iniciar o clamav, precisamos baixar o banco de dados e prosseguir com o comando

freshclam

Nota: Leva muito tempo para baixar o banco de dados, você é aconselhado a não interromper e não parar o serviço de atualização do freshclam no meio.

Para habilitar os serviços, execute:

systemctl enable amavis.service  
systemctl enable clamd.service  
systemctl start amavis.service  
systemctl start clamd.service

10 Instalar O Servidor Web Apache 2 Com PHP5, Ruby, Python, WebDAV

Instale o Apache2 e o suphp. Execute:

zypper install apache2 apache2-mod_fcgid

Instale o PHP5:

zypper install php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpm

Em seguida, execute esses comandos para habilitar os módulos do Apache (incluindo WebDAV):

a2enmod socache_shmcb
a2enmod suexec  
a2enmod rewrite  
a2enmod ssl  
a2enmod actions  
a2enmod suphp  
a2enmod fcgid  
a2enmod dav  
a2enmod dav_fs  
a2enmod dav_lock  
a2enmod logio  
chown root:www /usr/sbin/suexec2  
chmod 4755 /usr/sbin/suexec2
a2enflag SSL

Para adicionar suporte ao Python, execute:

zypper --gpg-auto-import-keys addrepo --name "Suporte ao Python (Apache_openSUSE_13.1)" http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_13.1/  apache-Modules
zypper install apache2-mod_python
a2enmod python

Em seguida, instalamos o phpMyAdmin:

zypper install phpMyAdmin

Para garantir que possamos acessar o phpMyAdmin de todos os sites criados através do ISPConfig mais tarde usando /phpmyadmin (por exemplo, http://www.example.com/phpmyadmin) e /phpMyAdmin (por exemplo, http://www.example.com/phpMyAdmin), abra /etc/apache2/conf.d/phpMyAdmin.conf…

vi /etc/apache2/conf.d/phpMyAdmin.conf

… e adicione os seguintes dois aliases logo no início:

| Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin [...] |

Antes de iniciar o apache, precisamos seguir o link e fazer alterações no httpd.conf

vi /etc/apache2/httpd.conf

Comente essas linhas e adicione essas linhas

#  
#    Options None  
#    AllowOverride None  
#    Order deny,allow  
#   Deny from all  
#  
  
  
Options None  
AllowOverride None  
Require all denied  

Agora inicie o serviço Apache

systemctl enable apache2.service  
systemctl start apache2.service

10.1 PHP-FPM

Começando com o ISPConfig 3.0.5, há um modo PHP adicional que você pode selecionar para uso com o Apache: PHP-FPM.

Para usar o PHP-FPM com o Apache, precisamos do módulo mod_fastcgi do Apache (por favor, não confunda isso com mod_fcgid - eles são muito semelhantes, mas você não pode usar PHP-FPM com mod_fcgid). Podemos instalar PHP-FPM e mod_fastcgi da seguinte forma:

mod_fastcgi está disponível de um repositório de terceiros que podemos habilitar da seguinte forma:

Em seguida, instalamos Fastcgi e PHP-FPM:

zypper install fastcgi php5-fpm

Agora baixe e instale o mod_fastcgi:

cd /tmp  
wget http://download.opensuse.org/repositories/home:/munix9/openSUSE_13.1/x86_64/apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
rpm -i apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
a2enmod mod_fastcgi

Antes de iniciarmos o PHP-FPM, renomeie /etc/php5/fpm/php-fpm.conf.default para /etc/php5/fpm/php-fpm.conf:

mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf

Mude as permissões do diretório de sessão do PHP:

chmod 1733 /var/lib/php5

Em seguida, abra /etc/php5/fpm/php-fpm.conf…

vi /etc/php5/fpm/php-fpm.conf

… e mude error_log para /var/log/php-fpm.log:

| [...] error_log = /var/log/php-fpm.log [...] |

Não há arquivo php.ini para PHP-FPM no OpenSUSE 13.1, portanto, copiamos o php.ini do CLI:

cp /etc/php5/cli/php.ini /etc/php5/fpm/

Em seguida, abra /etc/php5/fpm/php.ini…

vi /etc/php5/fpm/php.ini

… e defina cgi.fix_pathinfo como 0:

| [...] ; cgi.fix_pathinfo fornece suporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. O PHP ; comportamento anterior era definir PATH_TRANSLATED como SCRIPT_FILENAME, e não entender ; o que é PATH_INFO. Para mais informações sobre PATH_INFO, veja as especificações cgi. Definir ; isso como 1 fará com que o PHP CGI corrija seus caminhos para se conformar à especificação. Um valor ; de zero faz com que o PHP se comporte como antes. O padrão é 1. Você deve corrigir seus scripts ; para usar SCRIPT_FILENAME em vez de PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

Em seguida, crie os links de inicialização do sistema para o php-fpm e inicie-o:

systemctl enable php-fpm.service   
systemctl start php-fpm.service

PHP-FPM é um processo daemon que executa um servidor FastCGI na porta 9000, como você pode ver na saída de

netstat -tapn
server1:~ # netstat -tapn  
Conexões ativas da Internet (servidores e estabelecidos)  
Proto  Recv-Q  Send-Q  Endereço Local           Endereço Estrangeiro         Estado       PID/Nome do Programa  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2329/nginx  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1204/sshd  
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2511/php-fpm.conf)  
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2059/mysqld  
tcp        0      0 192.168.0.100:22        192.168.0.199:1632      ESTABLISHED 1284/0  
tcp        0      0 :::22                    :::*                    LISTEN      1204/sshd  
server1:~ #

Em seguida, habilite os seguintes módulos do Apache…

a2enmod actions  
a2enmod fastcgi  
a2enmod alias

… e reinicie o Apache:

systemctl restart apache2.service
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.