@JS's Notes

Site with notes from my work.

How to install Memcached caching server on CentOS 7

2019-10-08 System @JS

My test platform: CentOS Linux release 7.6.1810 (Core)

Memcached is an open source distributed memory object caching program that allows improve and speed up the performance of dynamic web applications by caching data and objects in memory. Memcached is also used to cache entire database tables and queries to improve the performance.

Continue reading

Redmine on CentOS 7

2019-10-08 System @JS

My test platform: CentOS Linux release 7.6.1810 (Core)

Requirements: user with root privileges or non-root user with sudo privileges.

Java installation:
$ sudo yum install java-1.8.0-openjdk-devel -y
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
Continue reading

How to optimize your site using Gzip compression on the Nginx server

2019-10-05 System SEO @JS

My test platform: CentOS Linux release 7.6.1810 (Core)

Requirements: user with root privileges or non-root user with sudo privileges.

Edit the configuration file /etc/nginx/nginx.conf and add as shown below:

server {
    [...]
    gzip on;
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";
    ...
}
Continue reading

Fix Yum error database disk image is malformed

2019-10-05 System @JS

My test platform: CentOS Linux release 7.6.1810 (Core)

Requirements: user with root privileges or non-root user with sudo privileges.

# clean the database cache
yum clean dbcache

# if the above command fails to work, try running the series of below
yum clean all				#delete entries in /var/cache/yum/directory
yum clean metadata			#clear XML metadata		
yum clean dbcache			#clear the cached files for database
yum makecache		        #make cache

# rebuild the RPM system database
mv /var/lib/rpm/__db* /tmp
rpm --rebuilddb

# update your system
yum update

Instalacja serwera i klienta NTP w systemach Fedora 30 / CentOS 7 / RHEL 8

2019-10-05 System @JS

W RHEL 8 pakiet ntp nie jest już dostępny a obsługa protokołu NTP jest realizowana przez demona chronyd, który dostarcza nam pakiet o nazwie chrony. Do wykonania instalacji oraz konfiguracji wymagany jest użytkownik root lub dowolny użytkownik z uprawnieniami sudo.

Środowisko testowe:

  1. NTP serwer - Fedora 30 / RHEL 8: 192.168.1.187 (ctx07vm.local.lnxorg)
  2. NTP klient - Centos 7: 192.168.1.183 (ctx03vm.local.lnxorg)

W obu przypadkach pakiet chrony został domyślnie zainstalowany wraz z instalacją systemu. W przypadku jego braku zainstalujemy go poleceniem:

# Fedora 30 / RHEL 8
dnf update -y && dnf install chrony -y
# Centos 7
yum update -y && yum install chrony -y

Stan usługi sprawdzamy za pomocą polecenia systemctl. W przypadku gdy pakiet został doinstalowany, uruchamiamy usługę chronyd oraz włączamy automatyczne uruchamianie wraz z systemem:

systemctl status chronyd.service
sudo systemctl start chronyd.service
sudo systemctl enable chronyd.service

Na serwerze edytujemy plik konfiguracyjny /etc/chrony.conf i ustawiamy dyrektywę allow na adres sieci, z której klienci będą się łączyć do naszego serwera NTP, np.:

allow 192.168.1.0/24

Restartujemy usługę chronyd. Jeśli korzystamy z zapory firewalld otwieramy port dla serwera NTP w jej konfiguracji:

systemctl restart chronyd.service
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload

Konfigurację klienta NTP również przeprowadzamy w pliku /etc/chrony.conf. Komentujemy domyślne serwery NTP określone jako wartość dyrektywy server i w ich miejsce ustawiamy adres naszego serwera:

server 192.168.1.187

Restartujemy usługę chronyd:

systemctl restart chronyd.service
systemctl status chronyd.service

Za pomocą polecenia chronyc sources wyświetlamy bieżące źródła czasu, do których chronyd uzyskuje dostęp. W wyniku powinien pojawić się adres naszego serwera NTP:

[serwis@ctx03vm ~]$ sudo chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ctx07vm.local.lnxorg          3   6    17     0   +523us[+4075us] +/-   55ms

Na serwerze uruchamiamy polecenie:

chronyc clients

Tym razem w wyniku powinna pojawić się informacja o klientach NTP podłączonych do naszego serwera.

[sysadmin@ctx07vm ~]$ sudo chronyc clients
Hostname                      NTP   Drop Int IntL Last     Cmd   Drop Int  Last
===============================================================================
ctx03vm.local.lnxorg            3      0   6   -    13       0      0   -     -

W pliku konfiguracyjnym można również wskazać lokalizację zawierającą klucze uwierzytelniające podnoszące bezpieczeństwo połączenia między serwerem a klientami. Odpowiada za to dyrektywa keyfile. Domyślną lokalizacją jest /etc/chrony.keys natomiast klucze generujemy za pomocą polecenia:

chronyc keygen

rdesktop - RDP client in the Centos 7 system

2019-10-05 System @JS

Requirements: user with root privileges or non-root user with sudo privileges.

$ sudo yum update -y
# sudo yum groupinstall "Narzędzia programistyczne"     # for a system with Polish locales
$ sudo yum groupinstall "Development Tools"
$ sudo yum install openssl-devel -y
$ cd #
$ mkdir source && cd source
$ wget https://github.com/rdesktop/rdesktop/releases/download/v1.8.6/rdesktop-1.8.6.tar.gz
$ tar xvzf rdesktop-1.8.6.tar.gz
$ cd rdesktop-1.8.6/
$ ./configure --disable-credssp --disable-smartcard
$ make
$ sudo make install

To connect to Windows using rdesktop we issue the command according to the formula:

$ rdesktop -u windowsuser windowsipaddress

Jak włączyć moduł Apache Userdir w systemie Centos 7

2019-10-05 System @JS

Do wprowadzenia zmian w konfiguracji serwera Apache wymagany jest użytkownik root lub użytkownik z uprawnieniami sudo.

Konfiguracja modułu Apache Userdir znajduje się w pliku /etc/httpd/conf.d/userdir.conf. Poniżej przykład podstawowej konfiguracji dla użytkownika o nazwie wwwweb:

<IfModule mod_userdir.c>
    UserDir enabled wwwweb
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Aby zezwolić kilku użytkownikom na dostęp do katalogów UserDir, jednocześnie zabraniając pozostałym, używamy konfiguracji:

UserDir disabled
UserDir enabled webuser1 webuser2 webuser3

Aby pozwolić wszystkim użytkownikom na dostęp do katalogów UserDir, jednocześnie zabraniając wybranym, używamy konfiguracji:

UserDir enabled
UserDir disabled webuser4 webuser5 webuser6

W katalogach użytkowników należy utworzyć katalogi public_html oraz ustawić odpowiednie uprawnienia dla każdego z nich. Przykład tworzenia katalogów z poziomu użytkownika wwwweb:

[wwwweb@wmweb ~]$ mkdir public_html
[wwwweb@wmweb ~]$ chmod 711 /home/wwwweb
[wwwweb@wmweb ~]$ chmod 755 public_html

Przykład tworzenia katalogu dla użytkownika wwwweb przez innego użytkownika z uprawnieniami sudo:

[sysadmin@wmweb ~]$ sudo mkdir /home/wwwweb/public_html
[sysadmin@wmweb ~]$ sudo chmod 711 /home/wwwweb
[sysadmin@wmweb ~] sudo chown wwwweb: /home/wwwweb/public_html
[@wmweb ~]$ sudo chmod 755 /home/wwwweb/public_html

Dodatkowo ustawiamy poprawny kontekst SELinux:

setsebool -P httpd_enable_homedirs true
chcon -R -t httpd_sys_content_t /home/wwwweb/public_html

Po wprowadzeniu zmian w konfiguracji modułu UserDir należy zrestartować usługę httpd.

mStream - stream music from anywhere (linux server without GUI)

2019-10-04 System @JS

My test platform: Centos Linux 7.6.1810 (system without GUI)

mStream is a personal music streaming server with web GUI.

Requirements: user with root privileges or non-root user with sudo privileges.

Installation
$ sudo yum update -y
$ sudo yum install git npm -y
$ git clone https://github.com/IrosTheBeggar/mStream.git
$ cd mStream
$ npm install
$ sudo npm link

To update mStream just pull from git and reboot the server.

If your system has a firewall enabled (firewalld), you need to add port 3000 in the firewall to allow access to mStream.

$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --reload

To test your installation, run the command:

$ mstream &

This will boot an mStream server on port 3000 and will use the current working directory as your music directory. To access the webapp, go to the address http://server_ip:3000.

Reference: mstream.io.