Настройка Prerender с nginx и кэшем в Redis

Предисловие

Перед установкой

Инструкция

Установка зависимостей

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -sudo apt-get install -y nodejs
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsudo apt install ./google-chrome-stable_current_amd64.debrm google-chrome-stable_current_amd64.deb

Установка Prerender

cd ~
git clone https://github.com/prerender/prerender.git
cd prerendernpm install
node server.js
Ctrl+C

Настройка systemd скрипта

shuf -i 49152-65535 -n 1
sudo lsof -i :PORT
sudo systemctl daemon-reloadsudo systemctl start prerender.service
sudo systemctl status prerender.service
● prerender.service - prerender.js - SEO Wizard
Loaded: loaded (/lib/systemd/system/prerender.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-19 05:38:35 UTC; 2h 27min ago
curl http://localhost:<PORT>/https://www.google.com

Конфигурация nginx

sudo nginx -t
sudo systemctl restart nginx
https://your.domain.com/?_escaped_fragment_=

Дополнительно

Кэширование через Redis

npm install prerender-redis-cache --save
server.use(require('prerender-redis-cache'));
Environment=PAGE_TTL=3600
Environment=REDIS_URL=redis://:<REDIS_PASSWORD>@localhost:6379/1
sudo systemctl daemon-reloadsudo systemctl restart prerender.service

Перезапуск Prerender в случае падения Google Chrome

chmod +x prerender_ping.sh
sudo systemctl stop prerender.service
sudo systemctl status prerender.service
./prerender_ping.sh
sudo systemctl status prerender.service
Cmnd_Alias PRERENDER_SERVICE_CMNDS = /bin/systemctl restart prerender.service
<OS_USER> ALL=(ALL) NOPASSWD: PRERENDER_SERVICE_CMNDS
crontab -e
*/5 * * * * /bin/bash -l -c '/home/<OS_USER>/prerender_ping.sh'

Источники

--

--

Software Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store