Създаване на блог на Jekyll в Ubuntu 16.04
Използване на различна система? Jekyll е чудесна алтернатива на WordPress за блогове или споделяне на съдържание. Не изисква никакви бази данни и е много лесно i
Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата (с помощта на Ansible) и да разположите множество независими уебсайтове на Wordpress (с помощта на Webmin/Virtualmin). Virtualmin/Webmin е графичен потребителски интерфейс, който ви позволява да управлявате внедряването на множество акаунти за виртуален сървър на една и съща машина (в комплект със стек LAMP/LEMP). Virtualmin е много подобен на cPanel и Plesk и в този урок ще използваме безплатното издание на GPL. След първоначалната настройка на сървъра Vultr и инсталирането на Virtualmin, можете много бързо да настроите множество виртуални сървъри от интерфейса на Virtualmin и директно да инсталирате Wordpress на този виртуален сървър заедно със собственото име на домейн.
В този урок, вместо ръчно да въвеждаме дълъг списък от команди, вместо това ще използваме Ansible. Ansible е инструмент за автоматизация, базиран на python, който ви позволява надеждно и многократно да автоматизирате сървърни задачи. Това означава, че след като следвате този урок, ще можете да разположите друг сървър по същия начин само с няколко команди.
Инсталирайте Ansible на вашата локална машина или друг сървър.
mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible
Ansible работи, като влезе във вашия сървър чрез SSH. SSH достъпът е най-сигурен, ако използваме ключове, а не парола. Нека първо генерираме двойка публичен и частен ключ.
mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys
В ssh_keys
директорията вече ще има два файла ssh_keys
и ssh_keys.pub
. ssh_keys
е вашият файл с частен ключ и трябва да се съхранява в безопасност. Вече можете да отворите ssh_keys.pub
, който съдържа публичния ключ.
Влезте в уеб таблото за управление на Vultr и щракнете върху Deploy New Server
.
Изберете регион, тип сървър (Ubuntu 16.04), размер на сървъра и след това в част 6 ( SSH keys
), щракнете върху Add New
. На следващата страница поставете своя публичен ключ и му дайте име и щракнете върху Add SSH key
. Накрая се уверете, че ключът е избран и щракнете върху Deploy now
.
След като сървърът приключи с разгръщането, ще ви бъде показан неговият IP адрес. Ще трябва да влезете в DNS сървъра на името на вашия домейн и да го насочите към този адрес.
Файловете за автоматизация на Ansible се наричат roles
. Първо ще настроим структурата на директорията (вътре в ansible
директорията, която току-що създадохте в стъпка 1) и основните файлове.
mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml
Редактирайте hosts
файла, за да съдържа следното, като замените ip address
сървъра, който току-що създадохте. Ansible използва python 2, който Ubuntu 16.04 не е инсталиран по подразбиране. Във hosts
файла казваме на Ansible да използва python 3.
[common]
192.0.2.1 ansible_python_interpreter=/usr/bin/python3
Редактирайте deploy.yml
файла, за да съдържа следното. Ще използваме root
потребителя.
- name: apply common configuration to server
hosts: all
user: root
roles:
- common
Редактирайте /group_vars/all
файла, за да съдържа следното. Тези променливи казват на Ansible местоположението на вашите SSH ключове, параметрите на суап файла, вашето напълно квалифицирано име на домейн и root паролата. Моля, не забравяйте да не включвате файла в контрола на източника, тъй като съдържа вашата парола в ясен текст.
ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE
Редактирайте common/handlers/main.yml
файла, за да съдържа следното.
- name: restart sshd
service: name=ssh state=restarted
Ansible автоматизацията е по-лесна за разбиране, ако я разделим на задачи. Нека създадем файлове за всяка наша задача в процеса.
cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml
main.yml
трябва да сочи към всеки файл, съдържащ командите Ansible, така че го редактирайте, за да съдържа следното.
- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml
Първата стъпка при настройката на нов сървър е да актуализирате кеша на репо и да зададете часовата зона. Редактирайте common/handlers/setup.yml
файла, за да съдържа следното.
- apt: update_cache=yes
sudo: yes
- name: set timezone to Europe/London
timezone:
name: Europe/London
Сега ще дадем на root потребител парола (която ще ни е необходима за достъп до уеб интерфейса на virtualmin), но ще деактивираме влизането с парола през SSH (тъй като използваме метода с по-сигурни ключове за удостоверяване). Редактирайте, за users.yml
да съдържа следното.
- name: Change passwd
user: name=root password={{ new_password | password_hash('sha512') }} update_password=always
- name: Disable SSH password login
lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
notify: restart sshd
За сигурност имаме нужда от защитна стена. Ще използваме неусложнената защитна стена, за да разрешим SSH достъп на порт 22
, уеб достъп на порт 80
и защитен уеб достъп на порт 443
. Редактирайте ufw.yml
файла, за да съдържа следното.
- name: Set default firewall policy to deny all
become: True
ufw: state=enabled direction=incoming policy=deny
tags: firewall
- name: enable SSH in firewall
ufw: rule=allow port=22
sudo: yes
- name: enable HTTP connections for web server
ufw: rule=allow port=80
sudo: yes
- name: enable HTTPS connections for web server
ufw: rule=allow port=443
sudo: yes
- name: enable firewall
ufw: state=enabled
sudo: yes
По желание можете да включите суап файл. Това е от съществено значение, ако вашият сървър има по-малко от 2 GB RAM, за да избегнете сривове при липса на памет. Редактирайте, за swap.yml
да съдържа следното.
- name: Set swap_file variable
set_fact:
swap_file: "{{swap_file_path}}"
tags:
- swap.set.file.path
- name: Check if swap file exists
stat:
path: "{{swap_file}}"
register: swap_file_check
tags:
- swap.file.check
- name: Create swap file
command: fallocate -l {{swap_file_size}} {{swap_file}}
when: not swap_file_check.stat.exists
tags:
- swap.file.create
- name: Change swap file permissions
file: path="{{swap_file}}"
owner=root
group=root
mode=0600
tags:
- swap.file.permissions
- name: Format swap file
sudo: yes
command: "mkswap {{swap_file}}"
when: not swap_file_check.stat.exists
tags:
- swap.file.mkswap
- name: Write swap entry in fstab
mount: name=none
src={{swap_file}}
fstype=swap
opts=sw
passno=0
dump=0
state=present
tags:
- swap.fstab
- name: Turn on swap
sudo: yes
command: swapon -a
when: not swap_file_check.stat.exists
tags:
- swap.turn.on
- name: Set swappiness
sudo: yes
sysctl:
name: vm.swappiness
value: "{{swappiness}}"
tags:
- swap.set.swappiness
Virtualmin има собствен инсталационен файл, който може да бъде изтеглен и стартиран от Ansible. Тук използваме минималната инсталация ( LINK
). Допълнителните елементи са да конфигурирате паролата на MySQL сървъра, която не е зададена при инсталиране от Virtualmin. Трябва временно да спрем MySQL и да добавим директорията за удостоверяване, преди да променим паролата. Редактирайте, за virtualmin.yml
да съдържа следното.
- name: download virtualmin install script
get_url: >
url=http://software.virtualmin.com/gpl/scripts/install.sh
dest=/root/install.sh
mode=0755
- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
tags: non-idem
shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
args:
chdir: /root
- name: temp stop mysql
service:
name: mysql
state: stopped
- name: change owner (and group) of mysqld dir
file:
path: "/var/run/mysqld"
state: directory
owner: mysql
group: mysql
- name: virtualmin set mysql password
shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}
- name: restart mysql
service:
name: mysql
state: started
Ролята на Ansible вече е завършена и сме готови за внедряване.
От папката ansible вече можем просто да изпълним следната команда и Ansible ще изпълни всички задачи, които сме създали автоматично. Първият път, когато се свържете, ще получите предупреждение за SSH ключ, просто въведете " yes
" при подкана.
ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts
Ако искаме да използваме друг сървър, можем просто да променим ip адреса във файла hosts и да изпълним тази команда отново, за да завършим точно същата настройка.
Инсталацията е завършена и вече можем да отидем https://192.0.2.1:10000
(използвайте ip адреса на вашия сървър). Вашият браузър ще издаде предупреждение за сигурност, тъй като сертификатът е самоподписан, така че щракнете advanced
и добавете изключение. Ще ви бъде представена страница за вход. Потребителското име е root
, а паролата е тази, която сте въвели във group_vars/all
файла в стъпка 3. Първият път, когато влезете във Virtualmin, ще ви бъде представен съветника след инсталиране. Можете да преминете през тези настройки ръчно или да щракнете, за cancel
да приемете настройките по подразбиране.
За да стартирате и стартирате първия си сървър на Wordpress, от таблото за управление на Virtualmin щракнете върху Create Virtual Server
. Ще трябва да въведете име на домейн, описание и администраторска парола. Името на домейна трябва да е различно от пълното име на домейн Virtualmin и ще трябва да насочите DNS записа към ip адреса на вашия сървър.
Щракнете върху Create Server
. След като Virtualmin приключи създаването на вашия сървър, щракнете Install Scripts
върху менюто отляво. Изберете Wordpress
, щракнете Show install options
и на следващата страница изберете местоположението на инсталацията на Wordpress. Просто изберете At top level
и кликнете Install Now
.
Това е всичко, което трябва да направите - можете да завършите инсталирането на Wordpress, като посетите вашия http://example.net/wp-admin/install.php
(къде example.net
е името на този домейн на виртуални сървъри). Ако вашите DNS записи все още не са разпространени, можете да отидете Services > Preview Website
от менюто Virtualmin.
Можете да повторите тази стъпка няколко пъти, за да създадете множество сайтове на Wordpress, всички на един и същ сървър Vultr.
Използване на различна система? Jekyll е чудесна алтернатива на WordPress за блогове или споделяне на съдържание. Не изисква никакви бази данни и е много лесно i
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема система за управление на съдържанието (CMS) от корпоративен клас, написана на PHP. То и
Въведение WordPress е доминиращата система за управление на съдържанието в интернет. Той захранва всичко от блогове до сложни уебсайтове с динамично съдържание
Използване на различна система? Jekyll е добра алтернатива на WordPress. Не изисква никакви бази данни и работи с език, който мнозина познават
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Neos е иновативна система за управление на съдържанието с отворен код, която е чудесна за създаване и редактиране на онлайн съдържание. Имайки предвид авторите и редакторите, Neo
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.
Използване на различна система? SilverStripe е гъвкава и разширяема система за управление на съдържанието (CMS) с отворен код, написана на PHP. Това е лесно
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители от 201 г.
Често срещано използване на виртуален сървър Vultr е за хостване на уебсайтове на Wordpress. Това ръководство ви показва как да автоматизирате конфигурацията на виртуален сървър от нулата
Ghost е най-новата и най-добрата нова, която да съперничи на WordPress. Разработването на теми е бързо и лесно за научаване, защото разработчиците на Ghost решиха да използват и двете
Ghost е модерна платформа за публикуване с отворен код, изградена на Node.js с администраторски клиент Ember.js, JSON API и API за тема, задвижван от Handlebars.js. Ghos
Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема, безплатна и отворена система за управление на съдържанието (CMS) от корпоративен клас, написана i
Използване на различна система? Dotclear е много прост двигател за блогове. Той е с отворен код и лесен за използване. Този урок ще премине през инсталацията
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Използване на различна система? Ghost е платформа за блогове с отворен код, която набира популярност сред разработчиците и обикновените потребители след пускането си през 2013 г. аз
Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM
Typesetter е CMS с отворен код, написан на PHP, фокусиран върху лекотата на използване с True WYSIWYG редактиране и съхранение на плосък файл. В тази статия ще инсталираме
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече