Установка nginx, php, mysql(mariadb) на Ubuntu

– Будьте любезны, в каком направлении мне идти?
– В известном тебе, – ответил Кот.
– Оно мне неизвестно.
– Значит, в неизвестном. Во всяком случае, известно, что в известное время ты окажешься та-ам или ту-ут, – мурлыкнул Кот.

Установка nginx:

apt update
apt install nginx

Установка PHP и драйвера MariaDB

apt install php-fpm php-mysqlnd php-xml

Создание виртуальных доменов

mkdir /var/www/domain.com
chmod -R 755 /var/www/domain.com

В директории /etc/nginx/sites-available создаем файл domain.com.conf

Содержимое файла domain.com.conf

server {
     listen 80;
     server_name domain.com;

     root /var/www/domain.com;

     # Add index.php to the list if you are using PHP
     index index.php index.html index.htm index.nginx-debian.html;
 
     server_name domain.com;
 
    location / {
               try_files $uri $uri/ =404;
               if (!-e $request_filename) {
                  rewrite ^.+/?(/wp-.*) $1 last;
            rewrite ^.+/?(/.*\.php)$ $1 last;
                  rewrite ^(.+)$ /index.php?q=$1 last;
      }
}

location ~ \.php$ {
               include snippets/fastcgi-php.conf;
               fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
       }
}

Теперь нужно перезагрузить web сервер

service nginx restart

Проверка работы php

В папке /var/www/domain.com , создадим файл index.php и напишем в нем:

<?php phpinfo(); ?>

Далее, открываем в браузере свой сайт, в примере мы используем domain.com и если всё сделано правильно, то видим такую картину:

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

sudo apt install mariadb-server mariadb-client

Настройки безопасности

mysql_secure_installation

Отвечаем на вопросы:

Создаем базу данных и пользователя.

Входим в mariadb:

mysql -u root

Если вы установили пароль на root:

mysql -u root -p
CREATE DATABASE domaindb;
CREATE USER 'nameus'@'localhost' IDENTIFIED BY 'user_password';

За место user_password введите пароль пользователя.

GRANT ALL ON domaindb.* TO [email protected];
quit;

Развертывание WordPress

cd /var/www/domain.com
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
mv wordpress/* .
rmdir wordpress
chown -R www-data:www-data /var/www/domain.com
chmod -R 755 /var/www/domain.com

PERL. Поиск коротких доменов – 2 решения

Бывают ситуации, когда нужно найти свободный и короткий домен, к примеру, трёх-символьный.
Для себя я выбрал доменную зону .net

Способ первый:
В интернете можно найти не актуальные на сегодняшний день базы, к примеру:
https://www.domainresearchtool.com/lists/net.zone.gz
Но проблема в том, что эта база за 2014 год и она уже устарела. Но на случай, если у вас есть бюджет около 30 $, вы можете купить этот файл, актуальный на сегодняшний день.
Скрипты, которые помогут получить из файла все трёх-символьные домены, были написаны на PERL’е.

open(my $fh, "<", "zone.txt") or die "Can't open file: $!";
open(my $wh, '>', "custom.txt") or die "Can't open file: $!";
$cou=0;
while (<$fh>) {
  my @array = split /\s+/, $_;
  if ((@array[1] eq "NS")&&(@array[0] ne $tmp)&&(length @array[0] == 3)){
    print $wh @array[0]."\n";
  }
  [email protected][0];
  $cou++;
  if ($cou%100000==0){
    print "$cou\n";
  }
}
close $fh;
close $wh;
open(my $fh, "<", "custom.txt")
or die "Can't open file: $!";
chomp(my @lines = <$fh>);
close $fh;
@list=sort @lines;
open(my $fh, ">", "sorted.txt")
or die "Can't open file: $!";
foreach (@list) {
  print $fh "$_\n";
}
close $fh;

 
Этот скрипт, берёт из файла zone.txt все трёх-буквенные домены и сохраняет их в файл custom.txt, после чего сортирует найденные домены по алфавиту и сохраняет сортированный список в файл sorted.txt.

Второй скрипт:

open(my $fh, "<", "sorted.txt")
or die "Can't open file: $!";
chomp(@lines = <$fh>);
close $fh;
open(my $wh, '>', "free.txt") or die "Can't open file: $!";
my $cou=0;
@letters=('-','0'..'9','A'..'Z');
for(my $i=1; $i < scalar @letters; $i++){
  for(my $j=0; $j < scalar @letters; $j++){
    for(my $k=1; $k < scalar @letters; $k++){
      [email protected][$i][email protected][$j][email protected][$k];
      if(isPresent($dmn)<1){
        $cou++;
        print $wh $dmn."\n";
        if($cou %100 == 0){
          print $cou.", ";
        }
      }
    }
  }
}
close $wh;
print "ok";
sub isPresent(){
  my ($dmn)[email protected]_;
  foreach(@lines){
    if ($_ eq $dmn){
      return 1;
    }
  }
  return 0;
}

 
Загружает файл sorted.txt и генерирует все возможные комбинации трех-символьных доменов от 0-0 до ZZZ, далее проверяет существуют ли эти домены в файле sorted.txt и если их нет, то создаётся файл free.txt.
Как раз эти имена вы сможете использовать для выбора и регистрации уже своего домена.

Второй способ:
Если у вас нет доступа к актуальным файлам доменных зон, можно написать бота, который переберёт все возможные комбинации имени домена, и воспользовавшись командой nslookup найдёт все незарегистрированные. Проблема в том, что, если домен приобретен, но в него не внесены записи, то он тоже будет считаться свободным – “Non-existent domain”, в итоге, мы получаем около 1000 ложных срабатываний.

Листинг бота:

print "Generating all domains names... \n";
my @domains;
@letters=('-','0'..'9','A'..'Z');
for(my $i=1; $i < scalar @letters; $i++){
  for(my $j=0; $j < scalar @letters; $j++){
    for(my $k=1; $k < scalar @letters; $k++){
      push @domains, @letters[$i][email protected][$j][email protected][$k].'.net';
    }
  } 
}
print "Scaning... \n"; unless(open FILE, '>free-domains.txt') {
  die "\nUnable to create $file\n";
}
close FILE;
my $cou=0;
foreach my $domain (@domains)
{
  chomp($domain);
  my $output = qx(nslookup -type=ns $domain 2>&1);
  my $r_c=$?;
  print "|";
  if((index $output, "Non-existent domain") > -1){
    print "\n".$domain."\n";
    open(my $wh, '>>', "free-domains.txt");
    print $wh $domain."\n";
    close($wh);
  }
  if($cou%1000==0){
  print "\nLast checked($cou): ".$domain."\n";
  }
  $cou++;
}

 
Бот сохраняет все, как он считает, свободные домены в файл free-domains.txt
Полученный список можно прогнать через любой сервис массовой проверки доменов, я использовал https://www.reg.ru/domain/new/bulk
Посылая на проверку по 200-300 доменов, через этот сервис, можно достаточно быстро, перебрать весь список, а свободные домены поместятся в корзину.
Вот результат поиска на сегодняшний день: