source: sandbox/2.3-MailArchiver/doc-expressolivre/rhel5-centos5/expressoInstallCentos5.sh @ 6779

Revision 6779, 10.1 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1#
2# set tabstop=5
3#
4#!/bin/bash
5# Criado por João Alfredo Knopik Junior <jakjr@celepar.pr.gov.br>
6# Colaborações:
7#       "William Fernando Merlotto" <william@prognus.com.br>
8#       "Alexandre Felipe Muller de Souza" <amuller@celepar.pr.gov.br>
9#
10#
11#
12# Adaptação feita para o Red Hat EL 5 e Centos 5
13# Cássio Luiz <cassiolp@cnpq.br>
14# - Alterações feitas por M. Rodrigo Monteiro <mrodrigom@gmail.com>
15# - 14/09/09 - Reescrita por William Fernando Merlotto <william@prognus.com.br>
16#
17#
18
19LC_TELEPHONE=pt_BR.UTF-8
20LC_CTYPE=pt_BR.UTF-8
21LANGUAGE=pt_BR:pt_PT:pt
22LC_MONETARY=pt_BR.UTF-8
23LC_ADDRESS=pt_BR.UTF-8
24LC_COLLATE=pt_BR.UTF-8
25LC_PAPER=pt_BR.UTF-8
26LC_NAME=pt_BR.UTF-8
27LC_NUMERIC=pt_BR.UTF-8
28SYSFONT=lat1-16
29LC_MEASUREMENT=pt_BR.UTF-8
30LC_TIME=pt_BR.UTF-8
31LANG=pt_BR.UTF-8
32LC_IDENTIFICATION=pt_BR.UTF-8
33LC_MESSAGES=pt_BR.UTF-8
34
35export LC_TELEPHONE LC_CTYPE LANGUAGE LC_MONETARY LC_ADDRESS LC_COLLATE LC_PAPER LC_NAME LC_NUMERIC SYSFONT LC_MEASUREMENT LC_TIME LANG LC_IDENTIFICATION LC_MESSAGES
36
37#alterado - mostrar as msgs de erro
38#set -e # Para caso de erro
39
40if [ $UID != 0 ]; then {
41        echo "Este script deve ser executado como superusuario, root ou sudo";
42        exit 1;
43        }
44fi
45
46#
47# Testa se o Dialog esta instalado
48
49#alterado
50testadialog=$(/usr/bin/which dialog | grep "^/usr/bin/dialog$")
51
52#alterado
53if [ "$testadialog" != "/usr/bin/dialog" ]; then
54     echo "O Dialog não está instalado."
55     echo ""
56     echo ""
57     echo "Instalando o Dialog!!!"
58     #alterado - tenta instalar o Dialog com o yum, caso contrario instala com o rpm e mostra a msg se foi instalado ou nao
59         yum -y install dialog || rpm -ivh arqs-conf-rhel5/rpms/dialog-1.0.20051107-1.2.2.i386.rpm && echo "Dialog foi instalado instalado!!!" || echo "Nao foi possivel instalar o Dialog" && exit 0
60else
61     echo "Dialog instalado!!!"
62fi
63
64BACKTITLE='Instalação do ExpressoLivre 2.0'
65INTRO='
66Bem-Vindo(a) a instalação do ExpressoLivre!
67
68Três perguntas serão feitas a você.
69- Escolha uma senha.
70- Escolha uma organização.
71- Escolha um domínio.
72
73Com estas informações o script poderá
74instalar e configurar o ExpressoLivre.
75'
76#.....................................................................
77dialog --backtitle "$BACKTITLE" \
78   --cr-wrap \
79   --msgbox "$INTRO" \
80   17 55 &&
81#.....................................................................
82#alterado - confirmar a senha
83LDAP_PWD=$( dialog --stdout --passwordbox 'Digite uma senha:' 0 0 )
84LDAP_PWD_CONF=$( dialog --stdout --passwordbox 'Confirme a senha:' 0 0 )
85if [ "$LDAP_PWD" != "$LDAP_PWD_CONF" ] ; then
86        dialog                                                   \
87        --title 'As senhas não conferem '                   \
88        --msgbox 'Favor digitar as duas senhas iguais!!!'    \
89        6 40
90        exit 0
91fi
92#.....................................................................
93ORG=$( dialog --stdout --inputbox 'Digite uma organização:(ex.: celepar)' 0 55 )
94#.....................................................................
95DOMAIN=$( dialog --stdout --inputbox 'Digite seu domínio:(ex.: '$ORG'.com.br)' 0 55 )
96
97
98# Instala os pacotes necessarios
99pacotes () {
100        dialog --yesno 'Deseja que o script instale automaticamente os pacotes disponíveis da distribuição?' 7 70
101        # yes
102        if [ $? = 0 ]
103        then
104                dialog                                                                  \
105                        --title 'Aguarde'                                                       \
106                        --infobox '\nVerificando a instalação dos pacotes necessários...'    \
107                        0 0
108                yum clean all
109                yum -y install httpd mod_ssl \
110                        unzip zip \
111                        openldap openldap-clients openldap-servers \
112                        cyrus-imapd cyrus-imapd-perl cyrus-imapd-utils cyrus-sasl cyrus-sasl-ldap cyrus-sasl-plain perl-IO-Socket-SSL \
113                        postfix \
114                        postgresql postgresql-server \
115                        php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd php-xml
116        else
117                dialog                                            \
118                --title 'Aviso'                             \
119                --yesno 'Ok, não será realizada a instalação dos pacotes e isso poderá fazer como que o Expresso Livre não funcione!!!\n\nDeseja continuar assim mesmo?'  \
120                10 40
121                # no, sai do script
122                [ $? = 1 ] && exit 1
123        fi
124}
125
126# POSTGRES
127postgres () {
128        service postgresql stop
129        service postgresql start
130        sleep 3
131        service postgresql stop
132
133        cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/
134        cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/
135
136        service postgresql start
137
138        su - postgres -c 'dropdb expresso'  || { echo "Banco expresso não existia. [OK]"; }
139        su - postgres -c 'createdb -E LATIN1 expresso'  || { echo "Problemas na criação do banco expresso. [Falhou]"; exit 1;}
140
141        sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD/$LDAP_PWD/g" -e "s/ORG/$ORG/g" -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/expresso.dump > /tmp/expresso.dump
142
143        service postgresql start
144        chkconfig postgresql on
145
146        su - postgres -c 'psql -f /tmp/expresso.dump expresso'
147
148        rm /tmp/expresso.dump
149}
150
151# APACHE
152apache () {
153        cp -r -p ../../../expresso/ /var/www/
154        #TODO: Verificar erro:
155        sed -e "s/HEADER_PWD/$HEADER_PWD/g" ./arqs-conf-rhel5/header.inc.php > /var/www/expresso/header.inc.php
156
157        mkdir /home/expressolivre || { echo "Diretório já existe. [OK]"; }
158        cp ./arqs-conf-rhel5/home/expressolivre/* /home/expressolivre/
159
160        cp ./arqs-conf-rhel5/etc/httpd/conf/httpd.conf /etc/httpd/conf/
161        cp ./arqs-conf-rhel5/etc/httpd/conf.d/expresso.conf /etc/httpd/conf.d/
162        cp ./arqs-conf-rhel5/etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/
163        cp ./arqs-conf-rhel5/etc/php.ini /etc/
164
165        chown -R apache.apache /var/www/expresso /home/expressolivre
166
167        #mkdir /php_sessions/ || { echo "Diretório já existe. [OK]"; }
168        #chmod -R 777 /php_sessions/
169
170        service httpd restart
171        chkconfig httpd on
172}
173
174# OPENLDAP
175ldap () {
176        service ldap stop
177
178        rm -rf /var/lib/ldap/*
179        sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD_MD5/$LDAP_PWD_MD5/g" ./arqs-conf-rhel5/etc/openldap/slapd.conf > /etc/openldap/slapd.conf
180        cp ./arqs-conf-rhel5/etc/openldap/schema/* /etc/openldap/schema/
181        cp ./arqs-conf-rhel5/etc/openldap/DB_CONFIG /var/lib/ldap/
182        sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD_MD5/$LDAP_PWD_MD5/g" -e "s/ORG/$ORG/g" -e "s/DOMAIN/$DOMAIN/g" -e "s/LDAP_DC/$LDAP_DC/g" ./arqs-conf-rhel5/expresso.ldif > /tmp/expresso.ldif
183        slapadd -v -l /tmp/expresso.ldif
184        chown -R ldap.ldap /var/lib/ldap/
185
186        service ldap start
187        chkconfig ldap on
188
189        rm /tmp/expresso.ldif
190}
191
192# CYRUS
193cyrus () {
194        cp ./arqs-conf-rhel5/etc/imapd.conf /etc/
195        cp ./arqs-conf-rhel5/etc/cyrus.conf /etc/
196        sed -e "s/LDAP_DN/$LDAP_DN/g" ./arqs-conf-rhel5/etc/saslauthd.conf > /etc/saslauthd.conf
197        cp ./arqs-conf-rhel5/etc/sysconfig/saslauthd /etc/sysconfig/
198        cp -p ./arqs-conf-rhel5/usr/bin/cyradm_expresso /usr/bin/
199
200        service saslauthd restart
201        chkconfig saslauthd on
202        sleep 4
203
204        service cyrus-imapd restart
205        chkconfig cyrus-imapd on
206
207        #./arqs-conf-rhel5/cyrus.pl $LDAP_PWD
208}
209
210# POSTFIX
211postfix () {
212        sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/main.cf > /etc/postfix/main.cf
213        sed -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/expresso-dominios > /etc/postfix/expresso-dominios
214        #cp ./arqs-conf-rhel5/etc/postfix/master.cf /etc/postfix/
215
216        postmap /etc/postfix/expresso-dominios
217
218        service postfix restart
219        chkconfig postfix on
220}
221
222# Especifico para instalacao do PHP de pacotes de terceiros, nao oficiais da distribuicao
223pacotes_php () {
224        dialog --yesno 'Os pacotes do PHP disponíveis nesta distribuição possuem versões inferiores às requisitadas pelo Expresso. O Expresso necessita do PHP-5.2.1 ou superior.\nPorém, este script poderá configurar automaticamente um repositório externo, de terceiros e sem suporte (neste caso, o REMI-Enterprise), para instalar versões mais recentes do PHP.\n\nA equipe do Expresso Livre recomenda o uso deste repositório e a instalação dos novos pacotes, porém, não nos responsabilizamos por qualquer dano. Caso você não utilize os pacotes mais recentes do PHP, o Expresso não irá funcionar corretamente!!\n\nVocê deseja prosseguir, por sua conta e risco, a instalação do PHP mais recente?' 20 70
225        # yes
226        if [ $? = 0 ]
227        then
228                # Utiliza o repositorio do Remi, que possui (em 10/09/09) o php-5.3.0
229                # http://blog.famillecollet.com/pages/Config-en
230                rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
231                wget http://rpms.famillecollet.com/remi-enterprise.repo -O /etc/yum.repos.d/remi-enterprise.repo
232                # Atualiza os pacotes...
233                yum --enablerepo=remi install php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd libtool
234        else
235                       
236                dialog --infobox 'Ok! A versão mais recente do PHP não foi instalada!' 0 0
237        fi
238}
239
240# Outros
241outros () {
242        # Deixa o SELinux permissivo
243        cp -f ./arqs-conf-rhel5/etc/selinux/config /etc/selinux/config
244        setenforce 0
245        # Desativa o sendmail
246        service sendmail stop
247        chkconfig --del sendmail
248        yum -y erase sendmail
249}
250
251###########################################################################################
252#                                                                                                                                               #
253#                                                               MAIN                                                                            #
254#                                                                                                                                               #
255###########################################################################################
256
257alias cp="cp"
258
259pacotes
260outros
261# Uma solução alternativa para a versão do PHP
262pacotes_php
263
264# GET VARs
265LDAP_DN=`php ./arqs-conf-rhel5/makedn.php $DOMAIN`
266LDAP_DC=`php ./arqs-conf-rhel5/makedc.php $DOMAIN`
267LDAP_PWD_MD5=`slappasswd -v -s $LDAP_PWD -h {MD5}`
268LDAP_PWD_MD5=`php ./arqs-conf-rhel5/regexp.php $LDAP_PWD_MD5`
269HEADER_PWD=`php ./arqs-conf-rhel5/pass.php $LDAP_PWD`
270
271dialog --yesno 'Deseja escolher quais serviços (apache, ldap, postfix, cyrus e postgres) serão configurados pelo script?' 7 70
272# no
273if [ $? = 1 ]
274then
275        apache
276        ldap
277        postfix
278        cyrus
279        postgres
280else
281        for I in apache ldap postfix cyrus postgres
282        do
283                dialog --yesno "Deseja configurar o $I?" 7 70
284                if [ $? = 0 ]
285                then
286                        dialog --infobox "Configurando o serviço: $I. Aguarde..." 0 0
287                        $I
288                fi
289        done
290fi
291
292# Por algum motivo, ainda desconhecido para mim, esta chamada não é executada corretamente dentro da função "cyrus"
293./arqs-conf-rhel5/cyrus.pl $LDAP_PWD
294
295############################################################################################
296
297dialog --backtitle "$BACKTITLE" --cr-wrap --msgbox "FIM. www.expressolivre.org" 7 55 &&
298
299#dialog                                          \
300#   --title 'Aviso Importante!!!'               \
301#   --textbox arqs-conf-rhel5/rpms/listalang.txt \
302#   0 0
303
304echo '.'
Note: See TracBrowser for help on using the repository browser.