Hexo è una piattaforma di blog statica, costruita con Node.js. È veloce rispetto ad altre piattaforme di blog statici, come Jekyll.
In questo tutorial, spiegherò come creare e distribuire un blog Hexo. I passaggi sono abbastanza semplici, scritti per CentOS 7, Node.js 4.4. La mia macchina locale è Fedora 23.
Prerequisiti
Iniziamo con un sistema CentOS 7 appena installato. Sono richiesti i seguenti pacchetti software:
- gcc-c e gcc-c ++
- fare e git
- nginx
- openssl
- nodejs e npm
Dovrai accedere come root o come utente con privilegi sudo.
Installa i programmi di utilità
$ yum install -y gcc gcc-c++ make git openssl
Installa Nginx
È possibile installare nginx
dal repository predefinito:
$yum install -y nginx
... o installa una versione stabile dal repository Nginx ufficiale, qui scegliamo quest'ultima.
Creare un file repository denominato nginx.repo
, il cui contenuto è:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
... e copiarlo in /etc/yum.repo.d/
,
$ cp nginx.repo /etc/yum.repo.d/
$ yum update and yum install -y nginx
$ systemctl enable nginx and systemctl start nginx
Installa Node.js
Installiamo il Node.js supportato da molto tempo dal repository Node.js ufficiale.
$ curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
$ yum update and yum install -y nodejs
Crea un nuovo utente
In genere è meglio creare un utente normale per eseguire il tuo blog, perché root ha i permessi di superutente.
Qui creiamo un utente chiamato vultr
e lo aggiungiamo al gruppo wheel
e nginx
:
$ useradd -d /home/vultr -m -r -U -s /bin/bash
$ passwd vultr
$ usermod -aG nginx vultr
$ usermod -aG wheel vultr
Genera una coppia di chiavi SSH
È utile e necessario accedere tramite una chiave ssh.
$ ssh-keygen -b 4096 -C "[email protected]"
Dopo aver creato la nostra coppia di chiavi ssh, copia la chiave pubblica (di solito id_rsa.pub
) ~/.ssh/authorized_keys
sul server:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
E ora abbiamo installato tutti i pacchetti pre-build.
Costruisci il tuo blog Hexo
Installa Hexo
Accedi come vultr
utente. Quindi, crea ~/web/web/vultr
e ~/web/git/vultr
:
### This is our hexo blog root directory
$ mkdir -p ~/web/web/vultr
### This is our git repository directory on the server
$ mkdir -p ~/web/git/vultr
### This is our deploy directory
$ mkdir -p ~/web/git/hexo
Immettere ~/web/web/vultr
e installare Hexo:
$ cd ~/web/web/vultr
$ sudo npm install -g hexo-cli hexo-server
$ hexo init && npm install --save
Ora non ci resta che creare il nostro nuovo blog.
Modifica _config.yml
, per cambiare l'URL del tuo blog. Quindi eseguire:
$ hexo g
Il tuo blog è stato ora generato. I file HTML si trovano in ~/web/web/vultr/public
.
Configura il tuo server Nginx
A questo punto, non possiamo ancora accedere al nostro sito Web. Pertanto, dobbiamo configurare Nginx.
Nginx viene eseguito come utente nominato nginx
nel nginx
gruppo ed è per questo che dobbiamo aggiungere vultr
al gruppo nginx
.
$ chown -R vultr:nginx ~/web
Crea un file di configurazione Nginx chiamato vultr.conf
sotto il ~/web/
quale il contenuto è più o meno così:
server {
listen 80;
listen [::]:80;
## if https is desired, please uncomment the following lines
#listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name example.com, www.example.com;
## if forcing https, please uncomment the following lines
#if ($scheme = http) {
# return 301 https://$server_name$request_uri;
#}
location / {
root /home/vultr/web/web/vultr/public;
index index.html;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
## if https is desired, please uncomment the following lines
#proxy_set_header X-Forwarded-Proto https;
}
}
Copia vultr.conf
di /etc/nginx/config.d/
e riavviare Nginx:
$ sudo ln -sf ~/web/vultr.conf /etc/nginx/config.d/
$ sudo systemctl restart nginx
Ora il nostro blog è accessibile con un browser web.
Utilizzo di Git per distribuire il tuo blog
Poiché il blog è già configurato, questa parte del tutorial è facoltativa.
A questo punto, è un po 'scomodo scrivere un post sul blog, perché avremmo bisogno di accedere e scrivere sul server. Una soluzione migliore sarebbe quella di scrivere sul nostro computer locale, inviare il messaggio sul server e consentire a Hexo di generare automaticamente i file statici. Considerando che git ha hook che possono fare molte cose, possiamo usare un hook git per ottenere questa configurazione.
Creare un repository nudo sul server
Accedere nuovamente al server come utente vultr
. Crea un repository nudo:
$ cd ~/web/git/vultr
$ git init --bare
$ cd hooks
Scrivi un file bash chiamato post-receive
che distribuirà il nostro blog dopo ogni push:
#!/bin/bash
deploy_to_dir="/home/vultr/web/git/hexo"
GIT_WORK_TREE=$deploy_to_dir git checkout -f master
echo "DEPLOY: master copied to $deploy_to_dir"
hexo_dir="/home/vultr/web/web/vultr/"
cd $hexo_dir
hexo clean && hexo --silent g
if [[ $? == 0 ]]; then
echo "Congratulations! Your blog has been correctly deployed"
else:
echo "Unfortunately your blog has not been deployed correctly"
fi
Prima che la distribuzione funzioni, dobbiamo anche eseguire questi comandi sul server:
cd ~/web/web/vultr/
rm -rf source scaffolds _config.yml themes
ln -sf /home/vultr/web/git/hexo/themes/tranquilpeak themes/
ln -sf /home/vultr/web/git/hexo/source .
ln -sf /home/vultr/web/git/hexo/scaffolds .
ln -sf /home/vultr/web/git/hexo/_config.yml .
Imposta il tuo repository git locale
Sul computer locale, dobbiamo anche creare un repository. Questi passaggi possono variare se si utilizza un sistema operativo desktop diverso da Fedora.
Dovrai aver installato git.
Imposta un repository git locale:
$ mkdir -p ~/vultr/git/vultr`
$ cd ~/vultr/git/vultr and git init
$ git remote add production ssh://[email protected]:/home/vultr/web/git/vultr
È utile installare Hexo sul tuo computer locale per scrivere un post. Qui impostiamo una directory Hexo per la scrittura.
$ mkdir ~/vultr/vultr && cd ~/vultr/vultr
$ hexo init && npm install --save
$ mv source _config.yml themes scaffolds ~/vultr/git/vultr
$ ln -sf ~/vultr/git/vultr/source .
$ ln -sf ~/vultr/git/vultr/_config.yml .
$ ln -sf ~/vultr/git/vultr/scaffolds .
$ hexo new "Test Post"
L'installazione è completa. Puoi inviare un post sul tuo server con i seguenti comandi:
$ cd ~/vultr/git/vultr
$ git add . && git commit -m "new post"
$ git push production master
In caso di successo, il blog verrà automaticamente aggiornato. Saluti.