поэтому я пытаюсь настроить сокращение URL YOURLS на моей капле Ubuntu 16.04 DO. Я очень плохо знаком с MySQL и PHP, поэтому не могу понять, что может быть не так. Я хорошо справляюсь с Nginx, так как использую его вечно, но кажется, что эти ошибки вызваны базой данных MySQL и / или конфигурацией PHP.
Настройка:
Корень Nginx (для сайта): /var/www/bnbr.co/public_html
(bnbr.co — домен, который я буду использовать)
Конфигурационный файл PHP (расположен в /var/www/bnbr.co/public_html/config.php
)
php7.0-fpm pool (расположен в /etc/php/7.0/fpm/pool.d/username.conf
)
Настройка MySQL:
MariaDB [(none)]> CREATE DATABASE yourls;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON yourls.* TO 'username'@'localhost' IDENTIFIED BY 'passwd';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q
РЕДАКТИРОВАТЬ: файл конфигурации Nginx для домена (находится по адресу /etc/nginx/sites-enabled/bnbr_co
)
# main
server {
listen 443;
server_name bnbr.co;
root /var/www/bnbr.co/public_html;
index index.php;
ssl on;
ssl_certificate /etc/letsencrypt/live/bnbr.co/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/bnbr.co/privkey.pem;
ssl_session_timeout 10m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /yourls-loader.php;
expires 14d;
add_header Cache-Control 'public';
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm-username.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}
# HTTP --> HTTPS REDIRS
# main
server {
listen 80;
server_name bnbr.co;
return 301 https://$server_name$request_uri;
} #`
Я новичок в этом деле, поэтому я надеюсь, что вы, ребята, можете помочь.
Спасибо!
Я поставлю здесь все необходимые шаги.
1) создать пользователя и пройти через шаги, которые он спросит:
adduser bnbr
2) создать папки:
mkdir -p /home/bnbr/public
mkdir -p /home/bnbr/logs
mkdir -p /home/bnbr/tmp
3) скопировать ваши вещи в public
папка
4) установить владельца и моды:
chown -R bnbr:bnbr /home/bnbr
chmod -R 0755 /home/bnbr/public
chmod -R 0755 /home/bnbr/logs
chmod -R 0755 /home/bnbr/tmp
5) создать конфигурацию пула php в /etc/php/7.0/fpm/pool.d/bnbr.conf
со следующим содержанием:
[brbr]
user = brbr
group = brbr
listen = /var/run/php-fpm.brbr.sock
listen.owner = brbr
listen.group = brbr
listen.mode = 0666
pm = ondemand
pm.max_children = 16
pm.process_idle_timeout = 10s
pm.max_requests = 32
chdir = /
php_admin_flag[display_errors] = on
php_admin_value[error_log] = /home/bnbr/logs/fpm-php.bnbr.log
php_admin_value[log_level] = "warning"php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M
php_admin_value[post_max_size] = 16M
php_admin_value[upload_max_filesize] = 16M
php_admin_value[upload_tmp_dir] = /home/bnbr/tmp
php_admin_flag[allow_url_fopen] = on
php_admin_value[open_basedir] = "/usr/share/php:/tmp:/usr/local/lib/php:/home/brbr/logs:/home/bnbr/public:/home/bnbr/tmp"
6) перезапустите службу php-fpm
7) создайте конфигурацию хоста для nginx и включите его:
server {
listen ssl 443;
server_name bnbr.co www.bnbr.co;
root /home/bnbr/public
index index.php;
ssl on;
ssl_certificate /etc/letsencrypt/live/bnbr.co/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/bnbr.co/privkey.pem;
ssl_session_timeout 10m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /yourls-loader.php;
autoindex off;
access_log off;
if (!-f $request_filename) {
rewrite /(.*)$ /yourls-loader.php last;
break;
}
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.bnbr.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}
8) перезапустите nginx
Объяснение:
Я создаю bnbr
Пользователь хранит все вещи в бетоне изолированно с привилегиями пользователя.
Говоря в конфигурации пула php-fpm, что мне нужен слушатель fpm с bnbr
привилегии, а также определение, где это, порожденное процессом fpm php, может получить доступ с open_basedir
директивы.
Говоря nginx проверить /home/bnbr/public
папка.
Постскриптум Нет необходимости в letsencrypt, просто подключите Ваш домен к CloudFlare, и он предоставит Вам долгосрочный подстановочный сертификат ssl +, чтобы скрыть Ваш сервер от атак ddos.
Других решений пока нет …