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 pythonSe 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/dovecotNeste 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.rebootAbra o arquivo de configuração do MySQL /etc/my.cnf com um editor
vi /etc/my.cnfe mude a linha “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ para:
sql_mode=NO_ENGINE_SUBSTITUTIONEm seguida, abra o arquivo /usr/my.cnf com um editor
vi /usr/my.cnfe mude o modo sql para
sql_mode=NO_ENGINE_SUBSTITUTIONaí 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.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.serviceAgora eu instalo o pacote getmail:
zypper install getmailPara garantir a instalação do MySQL, execute:
mysql_secure_installationAgora 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-mysqlAbra /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/clamdOpenSUSE 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/amavisComente 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-reloadagora.
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.service10 Instalar O Servidor Web Apache 2 Com PHP5, Ruby, Python, WebDAV
Instale o Apache2 e o suphp. Execute:
zypper install apache2 apache2-mod_fcgidInstale 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_php5zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpmEm seguida, execute esses comandos para habilitar os módulos do Apache (incluindo WebDAV):
a2enmod socache_shmcba2enmod 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/suexec2a2enflag SSLPara 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-Moduleszypper install apache2-mod_pythona2enmod pythonEm seguida, instalamos o phpMyAdmin:
zypper install phpMyAdminPara 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.service10.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-fpmAgora 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_fastcgiAntes 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.confMude as permissões do diretório de sessão do PHP:
chmod 1733 /var/lib/php5Em 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.servicePHP-FPM é um processo daemon que executa um servidor FastCGI na porta 9000, como você pode ver na saída de
netstat -tapnserver1:~ # 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.serviceReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.