jueves, febrero 13, 2014

Comando Linux mail y cron

se necesita enviar un mail a traves del cron
1. debemos probar de que funcione el comando mail (generalmente instalado por defecto en centos)

# mail -s "Hola Mundo" mi@email.com 

2. Saltara a una linea nueva, escribimos por ejemplo: "test de mi servidor" y con ctrl+ D, enviamos el mensaje 3. Deberia llegarte un correo a tu cuenta mi@email.com, en caso de que no te llegara revisa el servicio de sendmail

[root@ip-10-196-225-4 ec2-user]# /etc/init.d/sendmail status
[root@ip-10-196-225-4 ec2-user]# /etc/init.d/sendmail restart
Shutting down sm-client:                                   [FAILED]
Shutting down sendmail:                                    [FAILED]
Package sendmail-cf is required to update configuration.   [WARNING]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]
 
4. Si deseamos que se envie el contenido y el titulo de frente entonces enviamos por consola
# echo "test de mi servidor" | mail -s "Hola Mundo" mi@email.com 

5. si todo ha ido bien, hasta aca, ya sabemos como usar el mail por consola, ahora pasaremos a programar el cron para que se envie un correo automaticamente a jhon.navarro@punto.pe y con copia a mi@email.com y root con el contenido de un script de php cada 5 minutos
Antes considerar que:
-s subject (Cabecera del mail)
-c email-address (Copia or CC)
-b email-address (Mark a blind carbon copy to this “email-address”, or BCC)

# crontab -e 
*/5 * * * * /usr/bin/php /apps/www.orbis.pe/public/index.php actualizar |mail -s "[PROD] actualizar" mi@email.com -c jhon.navarro@orbis.pe -b root 
# crontab -l
*/5 * * * * /usr/bin/php /apps/www.orbis.pe/public/index.php actualizar |mail -s "[PROD] actualizar" mi@email.com -c jhon.navarro@orbis.pe -b root 
*/5 * * * * /usr/bin/php /apps/mediacionweb/mediacionweb.orbis.pe/public/index.php actualizar transacciones | mail -s "[PROD] actualizar transacciones" -c luis.merco@x.pe -b karina.sa@x.pe root
6. Espero te halla ayudado

Linux no registra logs

Si alguna vez te paso que por ejemplo que tu servicio de cron, no genera logs en
/var/log/cron
y empiezas a revisar en tus logs de mensajes y nada /var/log/messages, revisas todos tus logs ssh, mail, etc y nada, ninguno registra.
Esto se debe pincipalmente a que el servicio rsyslog se encuentra parado (el servicio rsyslog es el servicio del sistema que se encarga de realizar el sistema de log)


[root@ip-10-196-225-4 ec2-user]# /etc/init.d/rsyslog restart
Shutting down system logger:                               [FAILED]
Starting system logger:                                    [  OK  ]

Ahora revisa el origen del problema, generalmente la caida ocurre por falta de espacio en disco y si revisas tus logs, ya empezaron a registrar.
Espero haberte ayudado

lunes, febrero 03, 2014

Backupear Colecciones mongo

Llevaremos la coleccion mod_alerta_alerta (en el server 1:site_3mdb) a otra bd mongo (server 2: site_3bpremdb), con el nombre mod_original_alerta_alerta tomar en cuenta la siguiente bibliografia:

Database - Conjunto de - Colecciones (tablas)
Coleccion - Conjunto de - Documentos (Rows)
Documentos - Conjunto de - Fields (Campos)
entonces:
EN SERVER 1 * Backupear la coleccion mod_alerta_alerta

[root@ip-10-180-217-106 ~]# mongodump -h 10.180.217.106  --collection  mod_alerta_alerta --db  site_3mdb -o /tmp/mod_alerta_alerta.dump
connected to: 10.180.217.106
Mon Feb  3 16:26:58.153 DATABASE: site_3mdb    to     /tmp/mod_alerta_alerta.dump/site_3mdb
Mon Feb  3 16:26:58.159         site_3mdb.mod_alerta_alerta to /tmp/mod_alerta_alerta.dump/site_3mdb/mod_alerta_alerta.bson
Mon Feb  3 16:26:58.217                  2301 objects
Mon Feb  3 16:26:58.221         Metadata for site_3mdb.mod_alerta_alerta to /tmp/mod_alerta_alerta.dump/site_3mdb/mod_alerta_alerta.metadata.json

EN SERVER 2 * Importar la coleccion mod_alerta_alerta

[root@ip-10-138-58-82 ~]# mongorestore -h 10.138.58.82 --db=site_3bpremdb --collection=mod_original_alerta_alerta mod_alerta_alerta.dump/site_3mdb/mod_alerta_alerta.bson
connected to: 10.138.58.82
Mon Feb  3 17:02:41.706 /home/ec2-user/mod_alerta_alerta.dump/site_3mdb/mod_alerta_alerta.bson
Mon Feb  3 17:02:41.706         going into namespace [site_3bpremdb.mod_original_alerta_alerta]
2301 objects found
Mon Feb  3 17:02:42.055         Creating index: { key: { _id: 1 }, ns: "site_3bpremdb.mod_original_alerta_alerta", name: "_id_" }
* Eliminar Coleccion

> use site_3bpremdb
switched to db site_3bpremdb

> db.mod_alerta_alerta.drop()
true

> show collections
log
mod_alerta_alerta_historial
mod_aviso_aviso_inmueble
mod_aviso_aviso_inmueble_detalle_historial
mod_aviso_aviso_inmueble_historial
mod_aviso_aviso_proyecto_historial
mod_aviso_inmueble_historial
mod_aviso_perfil_inmueble_historial
mod_distrito_estadistica
mod_estadistica
mod_estadistica_general
mod_impreso_aviso_impreso_historial
mod_original_alerta_alerta
mod_pago_transaccion_historial
mod_pago_transaccion_notificacion
mod_paquete_paquete_agente_detalle_historial
mod_paquete_paquete_proyecto_detalle_historial
mod_peruid_usuario_peruid_historial
mod_usuario_perfil_agente_detalle_totales_historial
mod_usuario_perfil_agente_totales_historial
system.indexes

jueves, enero 23, 2014

Replicacion MySQL

* INSTALAMOS EL MYSQL EN AMBOS SERVIDORES

# yum -y install mysql mysql-server
* EN EL SERVIDOR 1

[root@servidor1 ~]# vim /etc/my.cnf
------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#Insertamos un ID
server_id = 1   
#Lugar donde se almacenara los logs de la replica
log-bin = /var/lib/mysql/bin/mysql-bin

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
------------------------------------
[root@servidor1 ~]# mkdir /var/lib/mysql/bin
[root@servidor1 ~]# chown mysql.mysql /var/lib/mysql/bin/
[root@servidor1 ~]# /etc/init.d/mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
* CREAREMOS UNA BD PARA PROBAR
[root@servidor1 ~]# mysql
mysql> create database db_site1_pro;
Query OK, 1 row affected (0.00 sec)

mysql> use db_site1_pro;
Database changed
mysql> create table user(id int(4));
Query OK, 0 rows affected (0.03 sec)

mysql> insert user(id)values(4);
Query OK, 1 row affected (0.00 sec)

mysql> create database db_site2_pro;
Query OK, 1 row affected (0.00 sec)

mysql> quit
Bye
* REVISAMOS LOS LOGS DE LA REPLICA, LA TERMINACION PUEDE CAMBIAR
[root@servidor1 ~]# tail -f /var/lib/mysql/bin/mysql-bin.000001
@db_site2_procreate database db_site2_pro
* TENEMOS LOGS, POR LO QUE HASTA AHORA TODO BIEN

* EN EL SERVIDOR 2

[root@server2 ~]# vim /etc/my.cnf
---------------------------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#Establecimiento ID
server-id=2

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
---------------------------------------------------------
[root@server2 ~]# /etc/init.d/mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
* EN EL SERVIDOR 1

* CREAMOS EL USUARIO DE REPLICACION Y ASIGNAMOS PERMISO
[root@servidor1 ~]# mysql
mysql> CREATE USER 'usr_replica'@'%' IDENTIFIED BY 'Pa$$w0rd';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

* BLOQUEAMOS LA BD
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.06 sec)

* OBTENER LAS COORDENADAS DEL LOG DEL MASTER
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      812 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

* AHORA HACEMOS UN BACKUP (Asegurar que user mysql pueda escribir)
[root@servidor1 ~]# cd /var/lib/mysql/ && mysqldump --all-databases --master-data > dbdump.db
* EN EL SERVIDOR 2

[root@server2 ~]# mysql < /var/lib/mysql/dbdump.db
[root@server2 ~]# mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bin                |
| db_site1_pro       |
| db_site2_pro       |
| mysql              |
| test               |
+--------------------+
6 rows in set (0.01 sec)

mysql> quit
Bye
* LE DECIMOS QUIEN SERA EL MASTER y ACTIVAMOS LA REPLICA
mysql> slave stop
    -> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.232.131',
    -> MASTER_USER='usr_replica',
    -> MASTER_PASSWORD='Pa$$w0rd',
    -> MASTER_LOG_FILE='mysql-bin.000001',
    -> MASTER_LOG_POS=812;
Query OK, 0 rows affected (0.00 sec)

mysql> slave start
    -> ;
Query OK, 0 rows affected (0.02 sec)

* DESBLOQUEAMOS EN SERVIDOR 1
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.02 sec)
* AHORA DEBEMOS PROBAR QUE TODO VA BIEN

*EN EL SERVER 1
mysql> insert into db_site1_pro.user(id) values (12);
Query OK, 1 row affected (0.00 sec)

mysql> insert into db_site1_pro.user(id) values (13);
Query OK, 1 row affected (0.00 sec)

mysql> insert into db_site1_pro.user(id) values (14);
Query OK, 1 row affected (0.01 sec)

* VEMOS LOS LOGS
[root@servidor1 ~]# tail -f /var/lib/mysql/bin/mysql-bin.000001
@db_site1_proinsert into user(id) values (12)çRg¸
@db_site1_proinsert into user(id) values (13)ÁçRg
@db_site1_proinsert into user(id) values (14).

* EN EL SERVER2 
mysql> select * from db_site1_pro.user;
+------+
| id   |
+------+
|    4 |
|    5 |
|    9 |
|   10 |
|   11 |
|   12 |  <----VALORES QUE INGREAMOS
|   13 |  <----Y ESTAN REPLICANDO
|   14 |  <----
+------+
8 rows in set (0.00 sec)

miércoles, enero 22, 2014

Instalacion de Gitolite

Escenario:

  • Instalacion del Sistema de control de versiones Gitolite
  • Se crearan 2 usuarios:
  • git: usuario de instalacion
  • plataforma: Usuario de administracion
  • websync:Usuario

* INSTALAMOS REPOSITORIO DE EPEL
[ec2-user@ip-172-31-22-211 ~]$ sudo su
[root@ip-172-31-22-211 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
* Procedemos a instalar el git y crear el usuario de instalacion
[root@ip-172-31-22-211 ~]# yum -y install git
[root@ip-172-31-22-211 ~]# adduser git
* Generaremos las llaves RSA para el usuario git
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ ssh-keygen -t rsa 
[git@ip-172-31-22-211 ~]$ cp .ssh/id_rsa.pub git.pub
* Clonaremos el repositorio GITOLITE de GITHUB (Si hay error, verifica tus puertos)
[git@ip-172-31-22-211 ~]$ git clone git://github.com/sitaramc/gitolite 
Cloning into 'gitolite'...
remote: Reusing existing pack: 8339, done.
remote: Total 8339 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (8339/8339), 3.50 MiB | 1.83 MiB/s, done.
Resolving deltas: 100% (4699/4699), done.
* Creamos carpeta bin
[git@ip-172-31-22-211 ~]$ mkdir -p $HOME/bin
* Al momento de instalar, te puede dar el siguiente error
[git@ip-172-31-22-211 ~]$ gitolite/install -to $HOME/bin
Can't locate Time/HiRes.pm in @INC (@INC contains: /home/git/gitolite/src/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/git/gitolite/src/lib/Gitolite/Common.pm line 74.
BEGIN failed--compilation aborted at /home/git/gitolite/src/lib/Gitolite/Common.pm line 74.
Compilation failed in require at gitolite/install line 15.
BEGIN failed--compilation aborted at gitolite/install line 15.
[git@ip-172-31-22-211 ~]$ logout
* Debes instalar la siguiente dependencia
[root@ip-172-31-22-211 ~]# yum -y install perl-Time-HiRes
* Volvemos a instalar como git
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ gitolite/install -to $HOME/bin
* Instalamos nuestra llave RSA
[git@ip-172-31-22-211 ~]$ gitolite setup -pk git.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
* Clonamos repositorio de adminstracion
[git@ip-172-31-22-211 ~]$ git clone git@localhost:gitolite-admin.git
Cloning into 'gitolite-admin'...
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 90:d2:47:99:ae:05:4d:97:e6:d4:a1:0e:bb:fe:63:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 737 bytes | 0 bytes/s, done.
remote: Total 6 (delta 0), reused 0 (delta 0)
* crearemos los usuarios plataforma y websync con sus llaves RSA
[root@ip-172-31-22-211 ~]# adduser websync
[root@ip-172-31-22-211 ~]# adduser plataforma
[root@ip-172-31-22-211 ~]# su - websync
[websync@ip-172-31-22-211 ~]$ ssh-keygen -t rsa
[websync@ip-172-31-22-211 ~]$ logout
[root@ip-172-31-22-211 ~]# su - plataforma
[plataforma@ip-172-31-22-211 ~]$ ssh-keygen -t rsa
[plataforma@ip-172-31-22-211 ~]$ logout
[root@ip-172-31-22-211 ~]# cp /home/websync/.ssh/id_rsa.pub /home/git/websync.pub
[root@ip-172-31-22-211 ~]# cp /home/plataforma/.ssh/id_rsa.pub /home/git/plataforma.pub
[root@ip-172-31-22-211 ~]# chown git.git /home/git/*.pub
* Ahora haremos a plataforma administrador y a websync usuario
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ cd gitolite-admin/
[git@ip-172-31-22-211 gitolite-admin]$ cp /home/git/websync.pub keydir/
[git@ip-172-31-22-211 gitolite-admin]$ cp /home/git/plataforma.pub keydir/
* VERIFICAMOS SI ESTAN LAS LLAVES
[git@ip-172-31-22-211 gitolite-admin]$ ls -l keydir/
total 12
-rw-rw-r-- 1 git git 402 Jan 17 21:11 git.pub
-rw-r--r-- 1 git git 409 Jan 22 23:01 plataforma.pub
-rw-r--r-- 1 git git 406 Jan 22 23:01 websync.pub
* AÑADIMOS EL USUARIO PLATAFORMA COMO ADMINISTRADOR DE GITOLITE
[git@ip-172-31-22-211 gitolite-admin]$ vim conf/gitolite.conf
------------------------------------------------------------
repo gitolite-admin
      RW = git plataforma
------------------------------------------------------------
* AÑADIMOS LOS CAMBIOS
[git@ip-172-31-22-211 gitolite-admin]$ git add .
[git@ip-172-31-22-211 gitolite-admin]$ git config --global user.email "git@example.com"
[git@ip-172-31-22-211 gitolite-admin]$ git config --global user.name "git"
[git@ip-172-31-22-211 gitolite-admin]$ git commit -a -m "llaves"
[git@ip-172-31-22-211 gitolite-admin]$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
    git config --global push.default matching
  To squelch this message and adopt the new behavior now, use:
    git config --global push.default simple
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
Counting objects: 7, done.
Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 1.03 KiB | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To git@localhost:gitolite-admin.git 1e388a8..b18e1f7  master -> master * SALIMOS COMO GIT [git@ip-172-31-22-211 gitolite-admin]$ logout * INGRESAREMOS COMO USUARIO PLATAFORMA Y DESCARGAMOS EL REPO DE ADMINISTRACION [root@ip-172-31-22-211 ~]# su - plataforma [plataforma@ip-172-31-22-211 ~]$ git clone git@localhost:gitolite-admin.git [plataforma@ip-172-31-22-211 ~]$ ls gitolite-admin [plataforma@ip-172-31-22-211 ~]$ cd gitolite-admin/ * AGREGAMOS AL USUARIO WEBSYNC COMO UN USUARIO DEL REPOSITORIO SITE1 [plataforma@ip-172-31-22-211 gitolite-admin]$ vim conf/gitolite.conf --------------------------------------------- repo gitolite-admin RW = git plataforma repo testing RW = @all repo site1 RW = websync --------------------------------------------- [plataforma@ip-172-31-22-211 gitolite-admin]$ git config --global user.email "plataforma@site.com" [plataforma@ip-172-31-22-211 gitolite-admin]$ git config --global user.name "plataforma" [plataforma@ip-172-31-22-211 gitolite-admin]$ git commit -a -m "plataforma" [plataforma@ip-172-31-22-211 gitolite-admin]$ git push
    Hasta aqui, el usuario plataforma, es quien creara los repositorios y websync lo usaremos para que acceda a todos los repositorios (algo como un administrador de proyectos), ademas le daremos funciones de sincronizacion de servidores (actualizare despues)

lunes, enero 20, 2014

Instalacion Zend Framework 1.12 Full

  1. Descargar http://www.zend.com/en/company/community/downloads
  2. Instalar:

  3. [root@ip-172-31-42-158 ~]# yum -y install httpd httpd-devel
    [root@ip-172-31-42-158 ~]# yum -y install mysql mysql-server
    [root@ip-172-31-42-158 ~]# yum -y install php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
    [root@ip-172-31-42-158 ~]# chkconfig httpd on
    [root@ip-172-31-42-158 ~]# chkconfig mysqld on
    [root@ip-172-31-42-158 ~]# /etc/init.d/httpd start
    [root@ip-172-31-42-158 ~]# /etc/init.d/mysqld start
    [root@ip-172-31-42-158 ~]# tar -xzvf ZendFramework-1.12.3.tar.gz
    [root@ip-172-31-42-158 ~]# mv ZendFramework-1.12.3 /var/zend
    [root@ip-172-31-42-158 ~]# vim /etc/php.ini
    -----------------------------------------------------------
    ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;;
    ; UNIX: "/path1:/path2"
    ;include_path = ".:/php/includes"
    include_path = ".:/var/zend/library"
    -----------------------------------------------------------
    [root@ip-172-31-42-158 html]# vim /etc/httpd/conf.d/site1.conf
    -----------------------------------------------------------

    <virtualhost *:80>
    ServerAdmin webmaster@site1.com
    DocumentRoot /apps/site1/public
    ServerName www.site1.com
    ErrorLog logs/site1.com-error_log
    CustomLog logs/site1.com-access_log common
    SetEnv APPLICATION_ENV "development" 


    <Directory /apps/site1/public>
        DirectoryIndex index.php
       AllowOverride
       All Order allow,deny
       Allow from all
    <Directory>
    </virtualhost>
    -----------------------------------------------------------
    [root@ip-172-31-42-158 html]# vim /etc/httpd/conf/httpd.conf
    ------------------------------------
    # Use name-based virtual hosting.
    NameVirtualHost *:80
    ------------------------------------
    [root@ip-172-31-42-158 html]# mkdir /apps && cd /apps
    [root@ip-172-31-42-158 apps]# /var/zend/bin/zf.sh create project site1
    [root@ip-172-31-42-158 apps]# cp -R /var/zend/library/Zend/* /apps/site1/library/
    [root@ip-172-31-42-158 apps]# /etc/init.d/httpd configtest
    Syntax OK
    [root@ip-172-31-42-158 apps]# /etc/init.d/httpd reload
    Reloading httpd:
  1. Probar Ingresando al site (como es mi unico site, tambien puedo ingresar por ip, caso contrario tendre que ingresar por dominio site1.com)

    1.  

viernes, enero 17, 2014

Instalación de Zend Framework 2

Requerimientos:

  • Tener instalado Servidor WEB (en mi caso ZendServer2 + Apache) + PHP
  • SO: en mi caso Linux

Procedimiento:

    1. Crear un directorio virtual donde se instalara nuestro proyecto y ademas poseer un dominio, en mi caso registrare mi dominio aws.3a2.com en http://www.midominiogratis.es/
    2. Generare mi sitio virtual en /etc/http/vhost/3a2.conf
      # vim /etc/httpd/conf/httpd.conf
      ------------------------------
      #añado esta linea
      Include vhost/*.conf 
      #Verificar esta linea
      NameVirtualHost *:80
      ------------------------------
      # mkdir /etc/httpd/vhost
      # vim /etc/httpd/vhost/3a2.conf
      ------------------------------
      <virtualhost *:80> 
      ServerAdmin webmaster@3a2.com
      DocumentRoot /apps/3a2
      ServerName aws.3a2.com
      ErrorLog logs/3a2.com-error_log
      CustomLog logs/3a2.com-access_log common
          <Directory /apps/3a2 *:80>
          DirectoryIndex index.php
          Order allow,deny
          Allow from all
          Options FollowSymLinks -Indexes
          Order allow,deny
          Allow from all
          AllowOverride None
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} -s [OR]
          RewriteCond %{REQUEST_FILENAME} -l [OR]
          RewriteCond %{REQUEST_FILENAME} -d
          RewriteRule ^.*$ - [NC,L]
          RewriteRule ^.*$ index.php [NC,L] 
          </Directory *:80> 
      </virtualhost> 
      -------------------------------
      # mkdir /apps && mkdir /apps/3a2
      # vim /apps/3a2/index.php
      --------------------------------
      phpinfo();
      ?>
      --------------------------------
      # /etc/init.d/httpd reload
    3. Antes de proceder a instalar proceder a verificar que el site levante
      3a2
    4. Ahora procederemos a instalar el framework, para esto clonaremos el site de modelo (Skeleton) que se posee en el github
      # yum -y install git
      # cd /apps/3a2/
      # git clone git://github.com/zendframework/ZendSkeletonApplication.git
      Initialized empty Git repository in /apps/3a2/ZendSkeletonApplication/.git/
      remote: Reusing existing pack: 2426, done.
      remote: Total 2426 (delta 0), reused 0 (delta 0)
      Receiving objects: 100% (2426/2426), 1.24 MiB | 1.08 MiB/s, done.
      Resolving deltas: 100% (1060/1060), done.
      # mv ZendSkeletonApplication/* .
      # rm -rf ZendSkeletonApplication
      # ls -l
      total 912
      -rw-r--r-- 1 root root    338 Jan 17 14:32 composer.json
      -rwxr-xr-x 1 root root 891620 Jan 17 14:32 composer.phar
      drwxr-xr-x 3 root root   4096 Jan 17 14:32 config
      drwxr-xr-x 3 root root   4096 Jan 17 14:32 data
      -rw-r--r-- 1 root root     40 Jan 17 12:52 index.php
      -rw-r--r-- 1 root root   1807 Jan 17 14:32 init_autoloader.php
      -rw-r--r-- 1 root root   1548 Jan 17 14:32 LICENSE.txt
      drwxr-xr-x 3 root root   4096 Jan 17 14:32 module
      drwxr-xr-x 6 root root   4096 Jan 17 14:32 public
      -rw-r--r-- 1 root root   2551 Jan 17 14:32 README.md
      drwxr-xr-x 3 root root   4096 Jan 17 14:32 vendor
      # /usr/local/zend/bin/php composer.phar self-update
      Updating to version b20021cc6aa113069e4223b78d0074a1fc7dd4e8.
          Downloading: 100%
      # /usr/local/zend/bin/php composer.phar install
      Loading composer repositories with package information
      Installing dependencies (including require-dev)
        - Installing zendframework/zendframework (2.2.5)
          Downloading: 100%
      
      zendframework/zendframework suggests installing doctrine/annotations (Doctrine Annotations >=1.0 for annotation features)
      zendframework/zendframework suggests installing ircmaxell/random-lib (Fallback random byte generator for Zend\Math\Rand if OpenSSL/Mcrypt extensions are unavailable)
      zendframework/zendframework suggests installing ocramius/proxy-manager (ProxyManager to handle lazy initialization of services)
      zendframework/zendframework suggests installing zendframework/zendpdf (ZendPdf for creating PDF representations of barcodes)
      zendframework/zendframework suggests installing zendframework/zendservice-recaptcha (ZendService\ReCaptcha for rendering ReCaptchas in Zend\Captcha and/or Zend\Form)
      Writing lock file
      Generating autoload files
    5. Ahora modificaremos las siguientes lineas del 3a2.conf para que apunte al public y añadiremos el SetEnv
      # vim /etc/httpd/vhost/3a2.conf
      ------------------------------
      <virtualhost *:80>
      ServerAdmin webmaster@3a2.com
      DocumentRoot /apps/3a2/public
      ServerName aws.3a2.com
      ErrorLog logs/3a2.com-error_log
      CustomLog logs/3a2.com-access_log common
      SetEnv APPLICATION_ENV "development" 
         <Directory /apps/3a2/public *:80>
         DirectoryIndex index.php
         Order allow,deny
         Allow from all
         Options FollowSymLinks -Indexes
         Order allow,deny
         Allow from all
         AllowOverride None
         RewriteEngine On
         RewriteCond %{REQUEST_FILENAME} -s [OR]
         RewriteCond %{REQUEST_FILENAME} -l [OR]
         RewriteCond %{REQUEST_FILENAME} -d
         RewriteRule ^.*$ - [NC,L]
         RewriteRule ^.*$ index.php [NC,L] 
         </Directory >
      </virtualhost> 
                     -------------------------------




  • Ahora a probar en el navegador debe salir
  • jueves, enero 16, 2014

    Instalacion Zend Server 2.0

    Primero instalar repositorios epel http://dl.fedoraproject.org/pub/epel/6/x86_64/ (busca el que se adecua mejor a tu Linux).

    CentOS 6.X

    Para instalar Zend-Server podemos seguir el manual que se encuentra en la pagina oficial: http://files.zend.com/help/Zend-Server-5.6-Community-Edition/zend-server-community-edition.htm#rpm_installation.htm
    1. Instalamos de la siguiente manera:
    • yum -y install httpd httpd-devel    
    • yum -y install mysql mysql-server
    • yum -y install php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
    • chkconfig httpd on
    • chkconfig mysqld on
    • /etc/init.d/httpd start
    • /etc/init.d/mysqld start
    • vim /etc/yum.repos.d/zend.repo   //agregamos repo de zend
      [Zend]
      name=zend-server
      baseurl=http://repos.zend.com/zend-server/6.2/rpm/$basearch
      enabled=1
      gpgcheck=1
      gpgkey=http://repos.zend.com/zend.key
      
      [Zend_noarch]
      name=zend-server - noarch
      baseurl=http://repos.zend.com/zend-server/6.2/rpm/noarch
      enabled=1
      gpgcheck=1
      gpgkey=http://repos.zend.com/zend.key
    • rpm -qa | grep php
                  php-5.3.28-1.2.amzn1.x86_64
    • yum -y install php5.3-zendframework
    • yum install zend-server-nginx-php5.3
    • Descargamos el paquete de: http://www.zend.com/en/products/server/downloads (debemos registrarnos)
    • cd ZendServer-RepositoryInstaller-linux/
    • ./install.sh 5.3
    Nota: Se pueden presentar problemas al levantar el servicio de apache, en ese cado deshabilita el SELINUX en /etc/selinnux/config y no olvides darle permisos en el firewall y/o en el peor de los casos deshabilitarlo tambien.

    AMI (Amazon Web)

    1. Instalar requerimientos de Zend-Server
      yum -y install httpd
      yum -y install policycoreutils-python
    2. Ahora editaremos un repositorio para zend:
      vim /etc/yum.repos.d/zend.repo
      ------------------------------------------------------------
      [Zend]
      name=zend-server
      baseurl=http://repos.zend.com/zend-server/6.1/rpm/$basearch
      enabled=1
      gpgcheck=1
      gpgkey=http://repos.zend.com/zend.key
      
      [Zend_noarch]
      name=zend-server - noarch
      baseurl=http://repos.zend.com/zend-server/6.1/rpm/noarch
      enabled=1
      gpgcheck=1
      gpgkey=http://repos.zend.com/zend.key
      -------------------------------------------------------------
    3. Procedemos a instalar el zend-common para que se instalen las dependencias
      yum -y install zend-server-php-5.4-common
    4. Descargar los rpm de http://repos-source.zend.com/zend-server/6.2/rpm/x86_64/ (elige los que mas se adecuen a tu linux)
      wget http://repos-source.zend.com/zend-server/6.2/rpm/x86_64/zend-server-php-5.4-common-6.2.0-2002.x86_64.rpm
      wget http://repos-source.zend.com/zend-server/6.2/rpm/x86_64/zend-server-php-5.4-6.2.0-2002.x86_64.rpm 
      wget http://repos-source.zend.com/zend-server/6.2/rpm/x86_64/mod-php-5.4-apache2-zend-server-5.4.21-20.x86_64.rpm
    5. Ahora instalaremos el Zend Server (en el paso 4 lo descargamos) actualizando el common
      rpm -Uvh zend-server-php-5.4-common-6.2.0-2002.x86_64.rpm
      rpm -Uvh zend-server-php-5.4-6.2.0-2002.x86_64.rpm mod-php-5.4-apache2-zend-server-5.4.21-20.x86_64.rpm –replacefiles
    6. Ahora corroboramos que los servicios este corriendo, sino los levantamos
      
      
      [root@ip-172-31-13-18 ec2-user]# /etc/init.d/httpd status
      httpd (pid  19511) is running...
      [root@ip-172-31-13-18 ec2-user]# /etc/init.d/zend-server status
      [15.01.2014 17:51:35 SYSTEM] watchdog for monitor is running.
      [15.01.2014 17:51:35 SYSTEM] monitor is running.
      httpd (pid  19511) is running...
      [15.01.2014 17:51:35 SYSTEM] watchdog for lighttpd is running.
      [15.01.2014 17:51:35 SYSTEM] lighttpd is running.
      [15.01.2014 17:51:35 SYSTEM] watchdog for scd is running.
      [15.01.2014 17:51:35 SYSTEM] scd is running.
      [15.01.2014 17:51:35 SYSTEM] watchdog for zdd is running.
      [15.01.2014 17:51:35 SYSTEM] zdd is running.
      [15.01.2014 17:51:35 SYSTEM] watchdog for jqd is running.
      [15.01.2014 17:51:35 SYSTEM] jqd is running.
      [15.01.2014 17:51:35 SYSTEM] watchdog for zsd is running.
      [15.01.2014 17:51:35 SYSTEM] zsd is running.

    En cualquiera de los 2 casos podemos probar que se halla instalado correctamente generando un script con el phpinfo() en la ruta de tu apache que generalmente es: /var/www/html/, donde deberemos observar que el archivo de configracion se encuentra en /usr/local/zend/etc/php.ini

    Para acceder, por navegador solo pones la ip, si no carga verifica que tienes el servicio iniciado.

    test

    Saludos.