Centos 9์—์„œ Drupal 8๋กœ VPS ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ์‹œ์žฅ์„ ํ™•์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์— ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. Gitlab ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ์ฃผ์— Drupal์ด ์šฐ๋ฆฌ ์‹œ์žฅ์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์„ ํƒํ•œ ์ด์œ ์™€ ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Centos 9์—์„œ Drupal 8๋กœ VPS ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

๋“œ๋ฃจํŒ” ๋Š” ๋งˆ์ดํฌ๋กœ์‚ฌ์ดํŠธ์™€ ๋ธ”๋กœ๊ทธ๋ถ€ํ„ฐ ๋Œ€๊ทœ๋ชจ ์†Œ์…œ ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ๋ชจ๋“  ์œ ํ˜•์˜ ์‚ฌ์ดํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํŽธ๋ฆฌํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ์ดˆ๋กœ๋„ ์‚ฌ์šฉ๋˜๋ฉฐ PHP๋กœ ์ž‘์„ฑ๋˜๊ณ  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Drupal 9์—๋Š” ๋ฒ„์ „ 8.9์— ๋„์ž…๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ 9์™€ ๋ฒ„์ „ 8์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ํ”Œ๋žซํผ์ด 2021๋…„ 9์›” ์ดํ›„์—๋„ ๊ณ„์† ์—…๋ฐ์ดํŠธ์™€ ๋ณด์•ˆ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฒ„์ „ 8์—์„œ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ˆœํ™”๋˜์–ด ๋ฒ„์ „ XNUMX์—์„œ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋”์šฑ ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์š”๊ตฌ ์‚ฌํ•ญ

Drupal์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 2GB RAM๊ณผ 2๊ฐœ์˜ CPU ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Drupal ํŒŒ์ผ์€ ์•ฝ 100MB์ด๋ฉฐ ์‚ฌ์ดํŠธ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ…Œ๋งˆ, ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๋ฐ ๋ฐฑ์—…์„ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Drupal 9์—๋Š” ์ตœ์†Œ ์ œํ•œ์ด ์žˆ๋Š” PHP 7.4 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(memory_limit)~64MB ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€, ์ถ”๊ฐ€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 128MB ์„ค์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

Drupal์€ Apache ๋˜๋Š” Nginx๋ฅผ ์›น ์„œ๋ฒ„๋กœ, MySQL, PostgreSQL ๋˜๋Š” SQLite๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Nginx์™€ MySQL์„ ์‚ฌ์šฉํ•˜์—ฌ Drupal์„ ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

sudo dnf update -y

http/80 ๋ฐ https/443 ํฌํŠธ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์˜๊ตฌ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl reload firewalld

Nginx๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

sudo dnf install nginx -y

Nginx ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo systemctl start nginx
sudo systemctl enable nginx

ํ˜„์žฌ ๋ฉ”์ธ Centos ์ €์žฅ์†Œ์—์„œ๋Š” PHP 7.2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ PHP 7.4(Drupal 9 ์ตœ์†Œ ๋ฒ„์ „)๋กœ REMI ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด EPEL ์ €์žฅ์†Œ(REMI ์ €์žฅ์†Œ์— ํ•„์š”ํ•จ)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

REMI ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

php:remi-7.4 ๋ชจ๋“ˆ์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ php 7.4๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

sudo dnf module enable php:remi-7.4 -y

php-fpm๊ณผ php-cli๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

sudo dnf install -y php-fpm php-cli

Drupal์ด ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ PHP ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

๋˜ํ•œ ๊ถŒ์žฅ๋˜๋Š” PHP mbstring opcache ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

sudo dnf install -y php-mbstring php-opcache

MySQL ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

sudo dnf install mysql-server -y

MySQL ์„œ๋ฒ„๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl start mysqld
sudo systemctl enable mysqld

VDS์šฉ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๋ฐ ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 30์ดˆ์˜ mysqld ์‹œ์ž‘ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ดˆ๊ธฐ ์‹œ์Šคํ…œ ๋ถ€ํŒ… ์ค‘์— ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

/etc/php-fpm.d/www.conf๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ nginx๊ฐ€ ์‹คํ–‰๋  ๊ทธ๋ฃน๊ณผ ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

๊ทธ์— ๋”ฐ๋ผ PHP ์„ธ์…˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์†Œ์œ ์ž๋ฅผ nginx๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

sudo chown -R nginx. /var/lib/php/session

/etc/nginx/nginx.conf ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์ฃผ์„ ์ค„์„ ์ œ๊ฑฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(sed์— ๋Œ€ํ•œ ์ด์ค‘ ์ ์ค‘์ด ์—†๋„๋ก).

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

/etc/nginx/nginx.conf์— gzip ์••์ถ• ์„ค์ • ์ถ”๊ฐ€

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

index.php ์ธ๋ฑ์Šค ํŒŒ์ผ์˜ ์„ค์ •์„ /etc/nginx/nginx.conf์— ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

php-fpm ์†Œ์ผ“์„ ํ†ตํ•ด ๊ธฐ๋ณธ ์„œ๋ฒ„ ์ฒ˜๋ฆฌ PHP์— ๋Œ€ํ•œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ •์  ํŒŒ์ผ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๊ณ , favicon.ico ๋ฐ robots.txt์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๋ฐ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , .ht ํŒŒ์ผ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

certbot์„ ์„ค์น˜ํ•˜๋ ค๋ฉด wget์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo dnf install wget -y

์˜คํ”„์‚ฌ์ดํŠธ์—์„œ certbot ์‹คํ–‰ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

cd ~
wget https://dl.eff.org/certbot-auto

certbot์„ /usr/local/bin/์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

mv certbot-auto /usr/local/bin/certbot-auto

๊ทธ๋ฆฌ๊ณ  ๋ฃจํŠธ์— ๊ถŒํ•œ๊ณผ ์†Œ์œ ๊ถŒ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

certbot ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ณ  ์ด ๋‹จ๊ณ„์—์„œ ํ•ด๋‹น ์ž‘์—…์„ ์ค‘๋‹จํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(๋‹ต๋ณ€: Y, c):

certbot-auto

์˜คํ”„์‚ฌ์ดํŠธ์—์„œ ์ตœ์‹  ๋ฒ„์ „์˜ Drupal 9๊ฐ€ ํฌํ•จ๋œ ์•„์นด์ด๋ธŒ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

cd ~
wget https://www.drupal.org/download-latest/tar.gz

์•„์นด์ด๋ธŒ์˜ ์••์ถ•์„ ํ’€๋ ค๋ฉด tar๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

sudo dnf install tar -y

/usr/share/nginx/html/ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ธฐ๋ณธ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

rm -rf /usr/share/nginx/html/*

์›น ์„œ๋ฒ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค.

tar xf tar.gz -C /usr/share/nginx/html/

ํŒŒ์ผ์„ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์›น ์„œ๋ฒ„์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

rm -rf /usr/share/nginx/html/drupal-9.0.7

์„ค์น˜ ํŒŒ์ผ์ด ํฌํ•จ๋œ ์•„์นด์ด๋ธŒ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

rm -f ./tar.gz

nginx ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

chown -R nginx. /usr/share/nginx/html

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์„œ๋ฒ„๋ฅผ ๋„๊ณ  ์Šค๋ƒ…์ƒท์„ ์ฐ์Šต๋‹ˆ๋‹ค.

shutdown -h now

์Šค๋ƒ…์ƒท์—์„œ VDS๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ MySQL ์„œ๋ฒ„์˜ ์ดˆ๊ธฐ ์„ค์ •์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

mysql_secure_installation

๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

Would you like to setup VALIDATE PASSWORD component? : y

MySQL ๋ฃจํŠธ ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

New password:
Re-enter new password:

์ต๋ช… ์‚ฌ์šฉ์ž ์ œ๊ฑฐ:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

๋ฃจํŠธ๊ฐ€ ์›๊ฒฉ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ์‹œ๋‹ค:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๊ฑฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

๊ถŒํ•œ ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

๊ทธ ํ›„ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vps_ip_์ฃผ์†Œ
์ด ์ฃผ์†Œ์—์„œ Drupal ์„ค์น˜ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ์˜ˆ: ๋Ÿฌ์‹œ์•„์–ด. "์ €์žฅํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ"๋ฅผ ํด๋ฆญํ•˜์„ธ์š”

์„ค์น˜ ํ”„๋กœํ•„์„ ์„ ํƒํ•ด ๋ด…์‹œ๋‹ค(๋ฐ๋ชจ๋Š” ์‹œ์Šคํ…œ์— ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค). ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” "ํ‘œ์ค€"์œผ๋กœ ๋‘ก๋‹ˆ๋‹ค.

๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— "drupal"๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. mysql_secure_installation์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ์ด๋ฆ„ root์™€ ๊ทธ์—๊ฒŒ ์ œ๊ณต๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค. "์ €์žฅํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ"๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

๋ฒˆ์—ญ ์„ค์น˜ ๋ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ์‚ฌ์ดํŠธ ์ด๋ฉ”์ผ(์‚ฌ์ดํŠธ ์•Œ๋ฆผ์ด ์˜ฌ ๋Œ€์‹ ), ๋กœ๊ทธ์ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ Drupal ๊ด€๋ฆฌ์ž ๊ณ„์ • ์ด๋ฉ”์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง€์—ญ ์„ค์ •์—์„œ ๊ตญ๊ฐ€์™€ ์‹œ๊ฐ„๋Œ€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "์ €์žฅํ•˜๊ณ  ๊ณ„์†ํ•˜๊ธฐ"๋ฅผ ๋ˆŒ๋Ÿฌ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒ์„ฑ๋œ Drupal ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์–ดํŒ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTPS ์„ค์ •(์„ ํƒ์‚ฌํ•ญ)

HTTPS๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด VDS์— ์œ ํšจํ•œ DNS ์ด๋ฆ„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

/etc/nginx/nginx.conf

์„œ๋ฒ„ ์„น์…˜์—์„œ ์„œ๋ฒ„ ์ด๋ฆ„(์˜ˆ:):

server_name  domainname.ru;

nginx๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

service nginx restart

certbot์„ ์‹œ์ž‘ํ•ด๋ณด์ž:

sudo /usr/local/bin/certbot-auto --nginx

์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•˜๊ณ , ์„œ๋น„์Šค ์•ฝ๊ด€์— ๋™์˜ํ•˜๊ณ (A), ๋‰ด์Šค๋ ˆํ„ฐ ๊ตฌ๋…(์„ ํƒ)(N), ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋ ค๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋‘ ์ž…๋ ฅ).

๋ชจ๋“  ๊ฒƒ์ด ์˜ค๋ฅ˜ ์—†์ด ์ง„ํ–‰๋˜๋ฉด ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๋ฐ ์„œ๋ฒ„ ์„ค์ • ์„ฑ๊ณต์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Congratulations! You have successfully enabled ...

๊ทธ ํ›„์—๋Š” ํฌํŠธ 80์˜ ์—ฐ๊ฒฐ์ด 443(https)์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค.

์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋ ค๋ฉด /etc/crontab์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ๋ณด์•ˆ ์„ค์ •(๊ถŒ์žฅ)

์ด ์„ค์ •์€ ๋™์  base_url ๊ฐ์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ๊ณ ์•ˆ๋˜์—ˆ์œผ๋ฉฐ HTTP HOST ํ—ค๋” ๊ณต๊ฒฉ(์‚ฌ์ดํŠธ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ๋•Œ)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์„ค์ • ํŒŒ์ผ์—์„œ ์‚ฌ์ดํŠธ์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์—์„œ

/usr/share/nginx/html/sites/default/settings.php ์‹ค์ œ ์‚ฌ์ดํŠธ ์ด๋ฆ„์˜ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •์„ ์ฃผ์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

PHP APCu ์„ค์น˜(๊ถŒ์žฅ)

Drupal์€ APCu(๋Œ€์ฒด PHP ์‚ฌ์šฉ์ž ์บ์‹œ)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ 8๊ณผ 9๋Š” ์ด์ „ ๋ฒ„์ „๋ณด๋‹ค ๋‹จ๊ธฐ ๋กœ์ปฌ ์บ์‹œ๋กœ APCu๋ฅผ ๋” ์ง‘์ค‘์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์บ์‹œ ํฌ๊ธฐ(32MB)๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์ดํŠธ์— ์ ํ•ฉํ•˜๋ฉฐ 512MB๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด PHP APCu ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜์„ธ์š”.

dnf -y install php-pecl-apcu

nginx์™€ php-fpm์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

service nginx restart
service php-fpm restart

๊ถŒ์žฅ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์™€ ํ•จ๊ป˜ ๋Ÿฌ์‹œ์•„์–ด ๋ฐ APCu๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ• ๋‹น๋œ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ๊ถŒ์žฅ ํฌ๊ธฐ์™€ ๋‹ค๋ฅด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ์ž˜๋ชป๋œ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ์ œ์–ดํŒ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ๋‹ค์Œ ์—…๋ฐ์ดํŠธ์—์„œ ์ˆ˜์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ๊ฒฝ๊ณ ๋กœ ์ธํ•ด ๋ˆˆ์ด ์•„ํ”„๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”„์‚ฌ์ดํŠธ์˜ ํ•ด๋‹น ํŒจ์น˜.

๊ท€ํ•˜๋„ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฐธ์—ฌ ๋ฐฉ๋ฒ•์—๋Š” ์„ธ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ์ง์ ‘ ์ค€๋น„ํ•˜๊ณ  ์ž”์•ก์— 3000 ๋ฃจ๋ธ”์„ ๋ฐ›์œผ์„ธ์š”

์ฆ‰์‹œ ์ „ํˆฌ์— ๋Œ์ž…ํ•˜์—ฌ ๋ˆ„๋ฝ๋œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‹ค๋ฉด ์„œ๋ฒ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ์ž”์•ก์œผ๋กœ 3000๋ฃจ๋ธ”์„ ์ ๋ฆฝํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•:

  1. ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ๊ณ„์ •์„ ๋งŒ๋“œ์„ธ์š” ์˜จ๋ผ์ธ์œผ๋กœ
  2. ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ง€์›ํŒ€์— ์•Œ๋ฆฌ์„ธ์š”.
  3. 3000๋ฃจ๋ธ”์„ ์ ๋ฆฝํ•ด ๋“œ๋ฆฌ๊ณ  ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  4. ๊นจ๋—ํ•œ ์šด์˜ ์ฒด์ œ๋กœ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ์ฃผ๋ฌธํ•˜์„ธ์š”
  5. ์ด VPS์— ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•˜์„ธ์š”.
  6. ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ง€์นจ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
  7. ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ
  8. "์„œ๋ฒ„ ํ…œํ”Œ๋ฆฟ" ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์ด์ „์— ์ƒ์„ฑ๋œ ์Šค๋ƒ…์ƒท์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
  9. ์„œ๋ฒ„ ์ƒ์„ฑ์— ์„ฑ๊ณตํ•˜๋ฉด 6๋‹จ๊ณ„์—์„œ ๋ฐ›์€ ์ž๋ฃŒ๋ฅผ ๊ธฐ์ˆ ์ง€์›ํŒ€์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  10. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ง€์›ํŒ€์— ์›์ธ์„ ํ™•์ธํ•˜๊ณ  ์„ค์ •์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ์†Œ์œ ์ž์˜ ๊ฒฝ์šฐ: ์†Œํ”„ํŠธ์›จ์–ด ์ œ๊ณต

๊ท€ํ•˜๊ฐ€ VPS์— ๋ฐฐํฌ ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜๋ฅผ ์‹œ์žฅ์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๊ท€ํ•˜๊ฐ€ ์‹ ๊ทœ ๊ณ ๊ฐ, ํŠธ๋ž˜ํ”ฝ ๋ฐ ๊ฐ€์‹œ์„ฑ์„ ํ™•๋ณดํ•˜๋„๋ก ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ํŽธ์ง€ ์“ฐ๊ธฐ

์–ด๋–ค ์ด๋ฏธ์ง€๊ฐ€ ๊ทธ๋ฆฌ์› ๋Š”์ง€ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ค€๋น„ํ•  ๊ฑฐ์˜ˆ์š”

Centos 9์—์„œ Drupal 8๋กœ VPS ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

Centos 9์—์„œ Drupal 8๋กœ VPS ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ

์ถœ์ฒ˜ : habr.com