В своей работе мне периодически требуется быстро настроить linux-сервер. Чтобы не шерстить интернет каждый раз на предмет всех необходимых команд, я решил написать эту статью-шпаргалку. В качестве операционной системы я выбрал Debian 10 версии, так как с ней более-менее знаком.

Ссылки для быстрого перехода в нужный раздел:

Первые шаги

Итак первым делом меняем пароль у рута:

passwd root

Дальше я первым делом меняю номер порта, по которому можно соединиться с сервером по SSH. Для этого в файле /etc/ssh/sshd_config заменяем строку "Port 22" или "#Port 22" на строку "Port 22423". Номер порта должен быть между 1024 и 65535. После этого нужно выполнить команду перезапуска службы SSH:

service ssh restart

Установка GIT

apt-get update
apt-get install git

Установка SVN

apt-get install subversion
mkdir /var/svn-repos/
svnadmin create /var/svn-repos/myrepo

Настраиваем права доступа в файле:

/var/svn-repos/project/conf/svnserve.conf

Раскомментируем строки

auth-access = write
password-db = passwd

Внимание! Перед параметрами ( auth-access, password-db и др) не должно быть пробелов!

Добавляем пользователя. Открываем файл

/var/svn-repos/myrepo/conf/passwd

и дописываем в него строку:

user = user_password

Запускаем сервер SVN:

svnserve -d --listen-host=xxx.xxx.xxx.xxx -r /var/svn-repos/myrepo

Осталось добавить его в автозагрузку. Как вариант можно добавить запись в крон:

crontab -e

дописываем в него строку:

@reboot svnserve -d --listen-host xxx.xxx.xxx.xxx -r /var/svn-repos/myrepo

Перенос репозитория на другой сервер

На старом сервере выполняем

svnadmin dump /path/repositoryfolder > repositoryname.svn_dump

сжимаем:

tar cvzf repositoryname.tar.gz repositoryname.svn_dump

копируем на новый сервер, разархивируем:

tar xvf repositoryname.tar.gz

восстанавливаем репозиторий на новом сервере:

svnadmin create /path/repositoryname svnadmin load /path/repositoryfolder < repositoryname.svn_dump

Установка PHP 7.4

apt-get update && apt-get upgrade
apt-get -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt-get update
apt-get -y install php7.4
apt-get -y install php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,dom,curl}

Установка Composer

apt-get update
apt-get -y install wget unzip
wget -O composer-setup.php https://getcomposer.org/installer
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Установка Nodejs + Npm

apt-get update
apt-get -y install nodejs npm
Апгрейд Nodejs до версии 12
curl -sL https://deb.nodesource.com/setup_12.x | bash -
apt-get -y install nodejs

Установка Apache

apt-get update
apt-get -y install apache2
a2enmod rewrite
apt-get -y install libapache2-mod-php7.4
chown -R www-data:www-data /var/www
service apache2 restart

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

Для начала скопируйте файл для первого домена:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Создав файлы виртуальных хостов, нужно включить их. Apache предоставляет для этого специальные инструменты. К примеру, для этого можно использовать a2ensite:

a2ensite example.com.conf

Затем отключите стандартный виртуальный хост 000-default.conf:

a2dissite 000-default.conf

Перезапустите Apache, чтобы активировать изменения:

service apache2 restart

Установка MariaDB

apt-get update
apt-get -y install mariadb-server
mysql_secure_installation

Изменение пароля root@localhost:

mysql
> use mysql;
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'dfh$^Fs%RfB';

Доступ по сети:

mysql -uroot -p
> use mysql;
> SELECT Host,User,Password FROM user;
> UPDATE user SET Host='%' WHERE User='root' AND Host='localhost';
> flush privileges;

Иногда, после проделанных действий, желаемого доступа по прежнему нет.

Откройте файл /etc/mysql/my.cnf и закоментируйте строку:

bind-address	= 127.0.0.1

После этого перезагрузите mysql выполнив команду:

service mysql restart

Установка Docker

apt-get remove docker docker-engine docker.io containerd runc
apt-get update
apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get -y install docker-ce docker-ce-cli containerd.io

Проверить установку docker:

docker run hello-world

Создаем файл подкачки

fallocate -l 4G /swapfile

назначаем права:

chmod 600 /swapfile

инициализируем:

mkswap /swapfile

активируем:

swapon /swapfile

проверить можно с помощью команды free:

        total        used        free        shared  buff/cache   available
Mem:    1010900      150500      143788        2892      716612      714916
Swap:   4194300           0     4194300

Для автозапуска в файл /etc/fstab нужно добавить строку:

/swapfile swap swap defaults 0 0