Forutsetninger
Bygg din Hexo-blogg
Bruker Git til å distribuere bloggen din
Hexo er en statisk bloggplattform, bygget med Node.js. Det er raskt sammenlignet med andre statiske bloggplattformer, som Jekyll.
I denne opplæringen vil jeg forklare hvordan du bygger og distribuerer en Hexo-blogg. Trinnene er ganske enkle, skrevet for CentOS 7, Node.js 4.4. Min lokale maskin er Fedora 23.
Forutsetninger
Vi starter med et nyinstallert CentOS 7-system. Følgende programvarepakker kreves:
- gcc-c og gcc-c++
- lage og git
- nginx
- openssl
- nodejs og npm
Du må logge inn som root, eller som bruker med sudo-rettigheter.
Installer verktøy
$ yum install -y gcc gcc-c++ make git openssl
Installer Nginx
Du kan installere nginxfra standard repo:
$yum install -y nginx
... eller installer en stabil versjon fra offisiell Nginx repo, Her velger vi sistnevnte.
Lag en repo-fil med navnet nginx.repo, hvorav innholdet er:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
... og kopier den til /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
Installer Node.js
Vi installerer den lenge støttede Node.js fra den offisielle Node.js-repoen.
$ curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
$ yum update and yum install -y nodejs
Opprett en ny bruker
Vanligvis er det bedre å opprette en vanlig bruker for å kjøre bloggen din, fordi root har superbrukertillatelser.
Her oppretter vi en bruker som heter vultrog legger den til i gruppen wheelog nginx:
$ useradd -d /home/vultr -m -r -U -s /bin/bash
$ passwd vultr
$ usermod -aG nginx vultr
$ usermod -aG wheel vultr
Generer et SSH-nøkkelpar
Det er nyttig og nødvendig å logge på via en ssh-nøkkel.
$ ssh-keygen -b 4096 -C "vultr@example.com"
Etter å ha opprettet vårt ssh-nøkkelpar, kopier den offentlige nøkkelen (vanligvis id_rsa.pub) til ~/.ssh/authorized_keyspå serveren:
ssh-copy-id -i ~/.ssh/id_rsa.pub vultr@example.com
Og nå har vi alle forhåndsbyggingspakkene installert.
Bygg din Hexo-blogg
Installer Hexo
Logg inn som vultrbruker. Deretter oppretter du ~/web/web/vultrog ~/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
Skriv inn ~/web/web/vultrog installer Hexo:
$ cd ~/web/web/vultr
$ sudo npm install -g hexo-cli hexo-server
$ hexo init && npm install --save
Nå må vi bare lage vår nye blogg.
Rediger for _config.ymlå endre webadressen til bloggen din. Kjør deretter:
$ hexo g
Bloggen din er nå generert. HTML-filene er plassert under ~/web/web/vultr/public.
Sett opp Nginx-serveren din
På dette tidspunktet har vi fortsatt ikke tilgang til nettstedet vårt. Derfor må vi konfigurere Nginx.
Nginx kjører som en bruker navngitt nginxi nginxgruppen, og det er derfor vi må legge vultrtil i gruppen nginx.
$ chown -R vultr:nginx ~/web
Opprett en Nginx-konfigurasjonsfil som er navngitt vultr.confunder ~/web/som innholdet er mer eller mindre slik:
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;
}
}
Kopier vultr.conftil /etc/nginx/config.d/og start Nginx på nytt:
$ sudo ln -sf ~/web/vultr.conf /etc/nginx/config.d/
$ sudo systemctl restart nginx
Nå er bloggen vår tilgjengelig med en nettleser.
Bruker Git til å distribuere bloggen din
Siden bloggen allerede er satt opp, er denne delen av opplæringen valgfri.
På dette tidspunktet er det litt upraktisk å skrive et blogginnlegg, fordi vi må logge inn og skrive på serveren. En bedre løsning ville være å skrive på vår lokale maskin, skyve innlegget inn på serveren og la Hexo generere de statiske filene automatisk. Med tanke på at git har hooks som kan gjøre mange ting, kan vi bruke en git-hook for å oppnå dette oppsettet.
Opprett et bare depot på serveren
Logg på serveren igjen som bruker vultr. Opprett et bare depot:
$ cd ~/web/git/vultr
$ git init --bare
$ cd hooks
Skriv en bash-fil med navnet post-receivesom vil distribuere bloggen vår etter hvert trykk:
#!/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
Før distribusjonen vil fungere, må vi også kjøre disse kommandoene på serveren:
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 .
Sett opp ditt lokale git-lager
På den lokale maskinen må vi også lage et depot. Disse trinnene kan variere hvis du bruker et annet operativsystem enn Fedora.
Du må ha git installert.
Sett opp et lokalt git-lager:
$ mkdir -p ~/vultr/git/vultr`
$ cd ~/vultr/git/vultr and git init
$ git remote add production ssh://vultr@example.com:/home/vultr/web/git/vultr
Det er nyttig å installere Hexo på din lokale maskin for å skrive et innlegg. Her setter vi opp en Hexo-katalog for skriving.
$ 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"
Oppsettet er fullført. Du kan sende et innlegg til serveren din med følgende kommandoer:
$ cd ~/vultr/git/vultr
$ git add . && git commit -m "new post"
$ git push production master
Ved suksess oppdateres bloggen automatisk. Jubel.