Add Elasticsearch Guide (#564)
* Add initial elasticsearch guide * Add elasticsearch guide link to README.md * Add chewy:deploy
This commit is contained in:
parent
fde17f034a
commit
fdc409d2df
|
@ -41,6 +41,7 @@ Mastodon is a free, open-source social network server based on open web protocol
|
||||||
- Advanced:
|
- Advanced:
|
||||||
- [Serving Mastodon from a subdomain](Running-Mastodon/Serving_a_different_domain.md)
|
- [Serving Mastodon from a subdomain](Running-Mastodon/Serving_a_different_domain.md)
|
||||||
- [Scaling up with PgBouncer](Running-Mastodon/PgBouncer-guide.md)
|
- [Scaling up with PgBouncer](Running-Mastodon/PgBouncer-guide.md)
|
||||||
|
- [Elasticsearch Guide](Running-Mastodon/Elasticsearch-guide.md)
|
||||||
|
|
||||||
The aforementioned guides presume using certain software, like Nginx. But using alternatives is possible: [Alternative system configurations](Running-Mastodon/Alternatives.md)
|
The aforementioned guides presume using certain software, like Nginx. But using alternatives is possible: [Alternative system configurations](Running-Mastodon/Alternatives.md)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
Elasticsearch Guide
|
||||||
|
====
|
||||||
|
|
||||||
|
The following guide explains how to use [Elasticsearch](https://www.elastic.co/products/elasticsearch).
|
||||||
|
|
||||||
|
Why you might need Elasticsearch
|
||||||
|
----
|
||||||
|
|
||||||
|
If you want to use Full-text search, you should setup Elasticsearch.
|
||||||
|
|
||||||
|
#### Note: If your VPS has not much memory, Elasticsearch can't be able to start. This guide also explains how to start with this case.
|
||||||
|
|
||||||
|
Installing Pre-required dependency
|
||||||
|
----
|
||||||
|
|
||||||
|
Elasticsearch is built using Java, and requires at least Java 8 in order to run.
|
||||||
|
|
||||||
|
Install Java 8:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo apt install openjdk-8-jre
|
||||||
|
```
|
||||||
|
|
||||||
|
> The openjdk-8-jre package contains just the Java Runtime Environment. If you want to develop Java programs then please install the openjdk-8-jdk package.
|
||||||
|
|
||||||
|
You need to install the `apt-transport-https`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install apt-transport-https
|
||||||
|
```
|
||||||
|
|
||||||
|
Installing Elasticsearch
|
||||||
|
-----
|
||||||
|
|
||||||
|
### Import the Elasticsearch PGP Keyedit
|
||||||
|
|
||||||
|
Download and install the public signing key:
|
||||||
|
```bash
|
||||||
|
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installing from the APT repository
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt install elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Running Elasticsearch with systemd
|
||||||
|
|
||||||
|
To configure Elasticsearch to start automatically when the system boots up, run the following commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo /bin/systemctl daemon-reload
|
||||||
|
sudo /bin/systemctl enable elasticsearch.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Start Elasticsearch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl start elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to check Elasticsearch status, run the following commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl status elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
***If you can't start Elasticsearch, It's probably memory is insufficient.***
|
||||||
|
|
||||||
|
|RAM 1GB|RAM 4GB|
|
||||||
|
|:--:|:--:|
|
||||||
|
|![Elasticsearch-Guide-1GB](../images/Elasticsearch-Guide-1GB-status.png)|![Elasticsearch-Guide-4GB](../images/Elasticsearch-Guide-4GB-status.png)|
|
||||||
|
|
||||||
|
### Configuring Elasticsearch (Optional)
|
||||||
|
|
||||||
|
This guide may be useful if you can't start Elasticsearch, or if Elasticsearch uses too much memory.
|
||||||
|
|
||||||
|
First, Elasticsearch needs a lot of memory.
|
||||||
|
|
||||||
|
You should check [this page](https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html).
|
||||||
|
But, as far as I can recollect, Mastodon does not require much memory for Elasticsearch.
|
||||||
|
When building Elasticsearch server on low memory VPS, It's necessary to change the configuration.
|
||||||
|
|
||||||
|
Change these lines in `/etc/elasticsearch/jvm.options`:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Xms represents the initial size of total heap space
|
||||||
|
# Xmx represents the maximum size of total heap space
|
||||||
|
|
||||||
|
-Xms1g
|
||||||
|
-Xmx1g
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Note: Are you worried about how much memory configuration need on your VPS? This list may be useful! In my opinion, It would be better to set it from 35% to 50% of the total memory.
|
||||||
|
|
||||||
|
|Memory|Xms|Xmx|
|
||||||
|
|:--:|:--:|:--:|
|
||||||
|
|1GB|256m|256m|
|
||||||
|
|2GB|512m|512m|
|
||||||
|
|3GB|1g|1g|
|
||||||
|
|4GB|2g|2g|
|
||||||
|
|
||||||
|
|RAM 1GB|RAM 4GB|
|
||||||
|
|:--:|:--:|
|
||||||
|
|![Elasticsearch-Guide-1GB](../images/Elasticsearch-Guide-1GB-htop.png)|![Elasticsearch-Guide-4GB](../images/Elasticsearch-Guide-4GB-htop.png)|
|
||||||
|
|
||||||
|
***Please don't forget! This isn't necessarily the best configuration.***
|
||||||
|
|
||||||
|
#### Warning: The memory in this list, It's for Elasticsearch. It's not total memory of VPS.
|
||||||
|
|
||||||
|
Probably you could start Elasticsearch.
|
||||||
|
|
||||||
|
After changing these lines, Start Elasticsearch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl start elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
And check Elasticsearch status:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl status elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuring Mastodon for Elasticsearch
|
||||||
|
|
||||||
|
Change Elasticsearch configuration in `.env.production` to:
|
||||||
|
```
|
||||||
|
# Optional ElasticSearch configuration
|
||||||
|
ES_ENABLED=true
|
||||||
|
ES_HOST=localhost
|
||||||
|
ES_PORT=9200
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Note: You can configure the mastodon to use an Elasticsearch on the different server.
|
||||||
|
|
||||||
|
If you want to use an Elasticsearch on the different server, You should change these.
|
||||||
|
|
||||||
|
Change these line in `/etc/elasticsearch/elasticsearch.yml`:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Set the bind address to a specific IP (IPv4 or IPv6):
|
||||||
|
#
|
||||||
|
network.host: 0.0.0.0
|
||||||
|
#
|
||||||
|
# Set a custom port for HTTP:
|
||||||
|
#
|
||||||
|
http.port: 9200
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart Elasticsearch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart elasticsearch
|
||||||
|
```
|
||||||
|
|
||||||
|
`.env.production` also need to be change.
|
||||||
|
|
||||||
|
```
|
||||||
|
# Optional ElasticSearch configuration
|
||||||
|
ES_ENABLED=true
|
||||||
|
ES_HOST=Put the IP of Elasticsearch server here.
|
||||||
|
ES_PORT=9200
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run chewy:deploy to create & populate index
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su - mastodon
|
||||||
|
cd live
|
||||||
|
RAILS_ENV=production bundle exec rails chewy:deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
You need restart mastodon.
|
||||||
|
|
||||||
|
Resources
|
||||||
|
-----
|
||||||
|
|
||||||
|
- [Install Elasticsearch with Debian Package](https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)
|
||||||
|
- [Elasticsearch - Hardware](https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html)
|
||||||
|
- [How to download and install prebuilt OpenJDK packages](http://openjdk.java.net/install/index.html)
|
Binary file not shown.
After Width: | Height: | Size: 315 KiB |
Binary file not shown.
After Width: | Height: | Size: 171 KiB |
Binary file not shown.
After Width: | Height: | Size: 319 KiB |
Binary file not shown.
After Width: | Height: | Size: 134 KiB |
Loading…
Reference in New Issue