В рамках финального задания для новичков я предлагаю "испачкать руки" и развернуть приложение с большим количеством зависимостей на нашем тестовом стенде.
Нужно создать скрипт, который выполнит развертывание приложения на узле starbase
. Тестовый стенд на базе CentOS 7.
Эта инструкция подразумевает развертывание вручную.
-
Установим MariaDB
- Установим вспомогательные утилиты
sudo yum install -y wget net-tools
- Добавим репозиторий MariaDB
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup chmod a+x mariadb_repo_setup sudo ./mariadb_repo_setup --mariadb-server-version=mariadb-10.6
- Установка самой MariaDB
sudo yum install -y MariaDB-server
- Запустим MariaDB и поставим в автозагрузку
sudo systemctl enable --now mariadb
- Настройка MariaDB (user "root" на "localhost")
В mysql выполни команды:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'my_strong_password'; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; CREATE DATABASE laravel; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; exit;
- Установим вспомогательные утилиты
-
Установим Nginx
- Добавим репозиторий Nginx
Сюда вставь такие строки:
sudo vi /etc/yum.repos.d/nginx.repo
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/x86_64/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key
- Включим репозиторий nginx-mainline
sudo yum --enablerepo=nginx-mainline -y update
- Установим Nginx и OpenSSL
sudo yum -y install nginx openssl
- Настроим Nginx
Замени содержимое на это:
sudo vi /etc/nginx/conf.d/default.conf
server { listen 80; server_name *.dusha.name; root /usr/share/nginx/html/public/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php$is_args$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
- Запустим Nginx и поставим в автозагрузку
sudo systemctl enable --now nginx
- Добавим репозиторий Nginx
-
Установим PHP-FPM 7.4
- Установим репозитории EPEL и Remi, там свежий PHP
sudo yum install -y yum-utils sudo yum localinstall -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum localinstall -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum-config-manager --enable remi-php74 sudo yum makecache fast
- Установим PHP 7.4
sudo yum install -y php-cli php-fpm php-common php-curl php-gd php-imap php-intl php-mbstring php-xml php-zip php-bz2 php-bcmath php-json php-opcache php-devel php-mysqlnd php-pear gcc ImageMagick ImageMagick-devel
- Поправим php.ini под пользователя nginx
Здесь замени следующее:
sudo vi /etc/php-fpm.d/www.conf
user = apache => user = nginx group = apache => group = nginx listen = 127.0.0.1:9000 => listen = /var/run/php-fpm/php-fpm.sock ;listen.owner = nobody => listen.owner = nginx ;listen.group = nobody => listen.group = nginx ;listen.mode = 0660 => listen.mode = 0660
- Установим пакеты pear
sudo pecl install imagick
- Настроим модуль PHP
Добавь сюда:
sudo vi /etc/php.d/imagick.ini
extension=imagick.so
- Запустим PHP-FPM и поставим в автозагрузку
sudo systemctl enable --now php-fpm
- Установим репозитории EPEL и Remi, там свежий PHP
-
Ставим приложение
- Установим git
sudo yum -y install git
- Склонируем репо
sudo git clone https://github.com/rotoro-cloud/Laravel-Real-Estate-Venue-Portal.git /usr/share/nginx/html/public
- Перейдем в папку
cd /usr/share/nginx/html/public
- Создадим .env из .env.example
sudo cp .env.example .env
- Поменяем в нем параметр
DB_PASSWORD
на заданный ранееУстанови:sudo vi .env
DB_PASSWORD= => DB_PASSWORD=my_strong_password
- Установим
composer 2
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer sudo php -r "unlink('composer-setup.php');"
- Подтянем зависимости проекта
sudo /usr/local/bin/composer update
- Выполним создание ключа приложения
sudo php artisan key:generate;
- Наполним базу тестовой информацией
sudo php artisan migrate --seed;
- Создадим символические ссылки для хранилища
sudo rm -rf public/storage; sudo php artisan storage:link;
- Дадим доступ нужным директориям
sudo chown -R nginx.nginx /usr/share/nginx/html/; sudo mkdir -p /usr/share/nginx/html/storage/logs sudo mkdir -p /usr/share/nginx/html/bootstrap/cache; sudo chmod -R ug+rwx /usr/share/nginx/html/storage /usr/share/nginx/html/bootstrap/cache; sudo chmod -R o+rwx /usr/share/nginx/html/storage/logs;
- Установим git
-
Ставим файрволл
- Установим firewalld
sudo yum -y install firewalld
- Запустим firewalld и поставим в автозагрузку
sudo systemctl enable --now firewalld
- Настроим firewalld
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload
- Установим firewalld
В курсе будет демонстрация решения, если ты вдруг застрял.