Създаване на блог на 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 машини. Прочетете тази статия, за да научите повече