New Page
Первинні налаштування
Треба створити користувача sudo (щоб не працювати з під root)
adduser oleksandr-d
занести користувача в групу sudo
sudo usermod -aG sudo oleksandr-d
Встановлюю PHP та модулі
sudo apt install -y php-cli php-openssl php-mbstring php-iconv php-tokenizer php-gd php-mysql php-xml php-ldap php-curl php-gd php-simplexml php-dom php-pdo
Встановлюю php-fpm, щоб використовувати nginx, як web-сервер.
sudo apt install php-fpm
Встановлюю MySQL
sudo apt install mysql-server
sudo mysql_secure_installation
# Remove anonymous users? [Y/n] Type Y
# Disallow root login remotely? [Y/n] Type Y
# Remove test database and access to it? [Y/n] Type Y
# Reload privilege tables now? [Y/n] Type Y
Налаштовую php-fpm
sudo nano /etc/php/8.3/fpm/php.ini
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
cgi.fix_pathinfo = 0
max_execution_time = 360
date.timezone = Europe/Kyiv
Встановлюю Composer
Завантажте сценарій інсталятора Composer.
curl -sS https://getcomposer.org/installer -o composer-setup.php
Виконайте наведені нижче команди, щоб перевірити інсталятор.
HASH=`curl -sS https://composer.github.io/installer.sig`
echo $HASH
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Наведені вище команди захоплюють хеш-значення інсталятора та зіставляють його із завантаженим сценарієм. Ви повинні побачити такі дані, якщо інсталятор безпечний для запуску.
Installer verified
Встановіть Composer.
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Перевірте інсталяцію, перевіривши її версію.
composer --version
Створюю базу даних bookstack з користувачем bookstackuser та даю йому повний доступ до цієї бази даних.
sudo mysql
CREATE DATABASE bookstack;
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED WITH mysql_native_password BY '********************';
GRANT ALL ON bookstack.* TO 'bookstackuser'@'localhost'; FLUSH PRIVILEGES;
exit
Дозволяю доступ по ssh через порт 22
sudo ufw allow ssh
Встановлюємо Nginx та надаю доступ до портів
sudo apt install nginx
sudo ufw allow 'Nginx Full'
Перевіряємо налаштування брандмауера (необхідні налаштування є в списку відповіді) та потім вмикаємо його
sudo ufw app list
# Available applications:
# Nginx Full
# Nginx HTTP
# Nginx HTTPS
# OpenSSH
sudo ufw enable
sudo ufw status
# Status: active
# To Action From
# -- ------ ----
# 22/tcp ALLOW Anywhere
# Nginx Full ALLOW Anywhere
# 22/tcp (v6) ALLOW Anywhere (v6)
# Nginx Full (v6) ALLOW Anywhere (v6)
Завантажую сам BookStack та налаштовую
Створіть кореневу папку для програми BookStack.
sudo mkdir -p /var/www/bookstack
Роблю власником себе (поточного юзера з якого працюю), щоб не працювати постійно з sudo та для nginx
sudo chown -R oleksandr-d:www-data /var/www/bookstack
Переходжу в створену папку, та клоную репозиторій з BookStack (крапка в кінці треба, щоб розпакувалось в поточну папку. а не створювалась нова).
cd /var/www/bookstack
git clone https://github.com/BookStackApp/BookStack.git --branch=release --single-branch .
Встановлюємо Composer для bookstack
composer install --no-dev
Копіюю файл, та налаштовую дані для додатку
cp .env.example .env
Відкрийте файл для редагування.
nano .env
Заповніть URL-адресу програми та дані бази даних. Якщо ви збираєтеся використовувати функції електронної пошти, заповніть дані SMTP або видаліть їх із файлу.
APP_URL=https://doc.rtb-system.online
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=**********************
# Can be 'smtp' or 'sendmail'
MAIL_DRIVER=smtp
MAIL_FROM_NAME="RTB Documentation"
[email protected]
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD="**** **** **** ****"
MAIL_ENCRYPTION=tls
Далі генерую ключ для artisan який запишеться в файл .env
php artisan key:generate
Налаштовую додаткові права для юзера до каталогу з bookstack
sudo chown -R oleksandr-d:www-data /var/www/bookstack
sudo chmod -R 755 /var/www/bookstack
sudo chmod -R 775 /var/www/bookstack/storage /var/www/bookstack/bootstrap/cache /var/www/bookstack/public/uploads
sudo chmod 640 /var/www/bookstack/.env
Роблю artisan міграцію
php artisan migrate
Далі встановимо та налаштуємо certbot та конфігурацію nginx
Спочатку зупинимо nginx
sudo systemctl stop nginx.service
Встановлюємо Certbot
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Перевірити версію
certbot --version
Генеруємо сертифікат
sudo certbot certonly
Тепер запускаю та вмикаю nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Налаштовую конфігурацію для nginx
sudo nano /etc/nginx/sites-available/bookstack
# HTTP — редірект на HTTPS
server {
listen 80;
listen [::]:80;
server_name notes.bistats.site;
location / {
return 301 https://$host$request_uri;
}
}
# HTTPS — конфігурація SSL
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name notes.bistats.site;
ssl_certificate /etc/letsencrypt/live/notes.bistats.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/notes.bistats.site/privkey.pem;
root /var/www/bookstack/public;
index index.php index.html index.htm;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
sudo ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service
Була помилка додав ще раз права на необхідні папки.