cómo instalar ghost en un subdirectorio

Muchas veces nuestro sitio web va más allá de un simple blog personal como lo es este sitio web, a un sitio más empresarial que en sus diferentes subdirectorios puede llegar a albergar varios sistemas como por ejemplo www.hackemate.ninja/blog y tener instalando en este subdirectorio solo el sistema ghost y en el subdirectorio www.hackemate.ninja/foro tener instalado el sistema discourse y así sucesivamente pero muchas veces queremos el directorio principal hecho una landing page, para que todo se vea más profesional.

Así que hoy te voy a enseñar dos trucos importantes que lo vas a agradecer.

¿Cómo mover ghost a un subdirectorio de un sitio web con nginx?

Esto es lo más sencillo del mundo solo nos vamos directo al core de ghost y en el archivo index.js lo modificamos de la siguiente manera.

     production: {
        url: 'http://www.tusitioweb.com/blog/',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '127.0.0.1',
            port: '2368'
        }
    },

Luego de hacer eso nos vamos a la siguiente ubicación escribiendo esto en nuestra terminal.

`cd /etc/nginx/sites-enabled/`

Una vez estando allí tenemos que modificar el archivo ghost lo podemos hacer con nano

    server {
    listen       80;
    server_name  localhost;

    location ^~ /blog {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
    }}

Hecho esto tu tienes que reiniciar tu servidor escribiendo esto:

`sudo service nginx restart`

todo bien pero ahora te voy a enseñar otro truquito que te puede ayudar en mejorar la visibilidad de tu sitio web en los buscadores.

¿Cómo redirigir un sitio web sin www a www y viceversa?

Esto es muy sencillo de hacer en el mismo archivo en el que estabas y configuraste lo que acabas de hacer lo tienes que modificar y hacer agregar esto:

    server {
    listen       80;
    server_name  tusitio.com 159.203.232.146;
    return       301 return 301       $scheme://www.tusitio.com$request_uri;
     location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 365d;
    }

    location ~*  \.(pdf)$ {
        expires 30d;
    }
    }

ese modificación la tienes que agregar arriba en el mismo archivo que modificaste, donde dice tusitio.com lo cambias por tu sitio y donde está 159.203.232.146 lo cambias por la ip de tu droplet o servidor, haciendo que cuando los buscadores te indexen, no indexen tu sitio web dos veces y dupliquen el contenido y pierdas puntos en los resultados de búsqueda.

¿Cómo se cambia a en apache?

tienes que entrar en esta ubicación:

`/etc/httpd/conf/httpd.conf`

estando ahí tienes que agregar el siguiente código

    <IfModule mod_proxy.c>
      ProxyPreserveHost On
      ProxyPass /blog/ http://127.0.0.1:2368/blog/
      ProxyPassReverse /blog/ http://127.0.0.1:2368/blog/
</IfModule>  

De esta forma tu ya tienes el subdirectorio /blog/ con tu sistema listo y ya

para hacer la re dirección de sin www a con www en apache tienes que modificar el archivo .htaccess escribiendo el siguiente código:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^midominio.com [NC]
    RewriteRule ^(.*)$ http://www.midominio.com/$1       [L,R=301]

Si tienes dudas puedes aprender más sobre re direccionamientos 301 en nginx y en apache por aquello de las dudas y que quieras agregar tu sitio con certificado ssl cifrado de seguridad que la configuración es muy parecida a esta