Nginx — Проксирование на Apache

site.conf:

server {
    listen 80;  

    root /var/www/html/site;
    index index.php;

    server_name artem.services;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }

    location ~ /\.ht {
        deny all;
    }
}

Apache2 — VirtualHost и .htaccess

Создадим файл конфигурации виртуального хоста:

<VirtualHost *:80>
    DocumentRoot "/var/www/html/site"
    ServerName artem.services

    <Directory /var/www/html/site>
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Активируем "mod_rewrite" модуль:

a2enmod rewrite

И перезапускаем Apache2:

systemctl restart apache2

BackupPC — Установка

Установка

Deb системы:

apt install backuppc

CentOS:

yum install backuppc

 

Выбираем в "Postfix Configuration" "No configuration", если не нужны уведомления на почту.

Дальше нам пишут, по какому URL будет доступен BackupPC, а так же логин/пароль для доступа.

Пароль можно сменить:

htpasswd /etc/backuppc/htpasswd backuppc

Если изменить пользователя, то в Web интерфейсе могут отсутствовать поля по настройке BackupPC, так как такой пользователь должен быть в системе и указан в файле: "/etc/backuppc/config.pl"

Читать далее "BackupPC — Установка"

AWS — Отправка файла в S3 Bucket используя cURL

# AWS S3 Credentials
S3_BUCKET="YOUR_S3_BUCKET_NAME"
S3_ACCESS_KEY="YOUR_ACCESS_KEY"
S3_SECRET_KEY="YOUR_SECRET_KEY"

FILE_NAME="test.tar.gz"

# SENDING

date="$(date +%Y%m%d)"
dateFormatted="$(date -R)"
relativePath="/${S3_BUCKET}/${FILE_NAME}"
contentType="application/octet-stream"
stringToSign="PUT\n\n${contentType}\n${dateFormatted}\n${relativePath}"
signature="$(echo -en ${stringToSign} | openssl sha1 -hmac ${S3_SECRET_KEY} -binary | base64)"
curl -X PUT -T "${FILE_NAME}" \
-H "Host: ${S3_BUCKET}.s3.amazonaws.com" \
-H "Date: ${dateFormatted}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${S3_ACCESS_KEY}:${signature}" \
http://${S3_BUCKET}.s3.amazonaws.com/${FILE_NAME}

 

FIX ERROR — exportfs requires fsid= for nfs export

При попытке монтирования файловой системы возникает следующая ошибка:

exportfs requires fsid= for nfs export

Решение

Нужно задать значение "fsid" любое в диапазоне от 1-го до 255-ти, и для каждой такой точки монтирования оно должно быть уникальным.

В файле "/etc/exports" описываем нашу шару:

/run 192.168.1.0/24(rw,fsid=1,sync,no_root_squash,no_all_squash)

Перечитываем его:

exportfs -a

Теперь эту директорию можно монтировать.

BackupPC 3 — Nginx

 

Установим "fcgiwrap"

Deb системы:
apt install fcgiwrap

CentOS:

yum install fcgiwrap

 

Добавим в автозапуск и запустим:

systemctl enable fcgiwrap
systemctl start fcgiwrap
backuppc.conf
server {
    listen 80;
    server_name backuppc.artem.services;
    root  /usr/share/backuppc;
 
    index cgi-bin/index.cgi;
 
    access_log  /var/log/nginx/backuppc.access.log;
    error_log   /var/log/nginx/backuppc.error.log;
 
    location / {
        location /backuppc {
            alias /usr/share/backuppc;
        }

        auth_basic "Backup";
        auth_basic_user_file /etc/backuppc/htpasswd;
 
        location ~ \.cgi$ {
            include fastcgi_params;
            fastcgi_pass unix:/run/fcgiwrap.socket;
 
            fastcgi_param REMOTE_ADDR     $remote_addr;
            fastcgi_param REMOTE_USER     $remote_user;
            fastcgi_param SCRIPT_FILENAME /usr/share/backuppc/cgi-bin/index.cgi;
        }
    }
}

 

Kubernetes — Ingress доступ с определенных IP

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: artem-services-ing
  namespace: staging
  annotations:
    kubernetes.io/ingress.class: ingress-staging
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging
    certmanager.k8s.io/acme-challenge-type: dns01
    certmanager.k8s.io/acme-dns01-provider: dns
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/server-snippet: |
      if ($remote_addr !~ "^(1.1.1.1|2.2.2.2|3.3.3.3)$") {
        return 403;
      }

spec:
  tls:
  - hosts:
    - artem.services
    secretName: artem.services-secret-tls
  rules:
  - host: artem.services
    http:
      paths:
      - path: /
        backend:
          serviceName: artem-services-svc
          servicePort: 80

Heroku — Ruby on Rails

Подготовка системы

apt install curl git gnupg2 nodejs

Устанавливаем RVM

Переходим на сайт rvm.io и смотрим команды установки:

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable

Добавляем пользователя в группу:

vim /etc/group
rvm:x:1001:ubuntu

Имя моего пользователя в системе — ubuntu

 

Затем от пользователя:

source /etc/profile.d/rvm.sh

Читать далее "Heroku — Ruby on Rails"

Jenkins — Fastlane build iOS and Android apps

При помощи Jenkins и Fastlane будем собирать приложения на iOS и Android, будем отправлять артефакты в Slack, и так же автоматически приложение для iOS отправлять в Testflight. Сборка настроена с веток develop и release,  и считывает с них версию релиза (major и minor), и добавляет номер сборки.

К примеру: ветка — release/1.0 и номер Jenkins сборки 25, то версия приложения будет — 1.0.25

Для сборки будет нужны:

Для удобства мои приложение везде называется: "my_mobile_app"

Читать далее "Jenkins — Fastlane build iOS and Android apps"