216.73.216.25 TODAY : 8,415

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 8์ฃผ์ฐจ: ๋ฐฐํฌ ๋ฐ ์šด์˜ ๊ธฐ์ดˆ (Linux ์„œ๋ฒ„) - 03 ์›น ์„œ๋ฒ„ (Nginx/Apache) ์„ค์ •

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 8์ฃผ์ฐจ: ๋ฐฐํฌ ๋ฐ ์šด์˜ ๊ธฐ์ดˆ (Linux ์„œ๋ฒ„) - 03 ์›น ์„œ๋ฒ„ (Nginx/Apache) ์„ค์ •

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 36

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-09-29 10:42:37
  •  

- ์„ค๋ช…

์›น ์„œ๋ฒ„์˜ ์—ญํ• ๊ณผ PHP-FPM ์—ฐ๋™

uploadImage

#์›น_์„œ๋ฒ„ (Web Server)๋Š” ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์˜ HTTP ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๊ณ , ์ฒ˜๋ฆฌํ•œ ํ›„ ์‘๋‹ต์„ ๋Œ๋ ค์ฃผ๋Š” ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ํ˜„๋Œ€์˜ PHP ํ™˜๊ฒฝ์—์„œ ์›น ์„œ๋ฒ„๋Š” PHP ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ , #PHP-FPM(FastCGI Process Manager)์— ์š”์ฒญ์„ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„๋Š” ์ •์ ์ธ ํŒŒ์ผ(HTML, CSS, ์ด๋ฏธ์ง€)์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋™์ ์ธ PHP ์š”์ฒญ๋งŒ PHP-FPM์— ์ „๋‹ฌํ•จ์œผ๋กœ์จ #์„ฑ๋Šฅ ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ”—



1. Nginx ์„ค์ • (LEMP ์Šคํƒ)

uploadImage

#Nginx ๋Š” ๊ฐ€๋ฒผ์šด ์•„ํ‚คํ…์ฒ˜์™€ ๋†’์€ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์œผ๋กœ ์ธํ•ด ํ˜„๋Œ€์˜ #LEMP (Linux, Nginx, MySQL, PHP) ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์„ ํ˜ธ๋˜๋Š” ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.


Nginx ์„ค์น˜ (Ubuntu ๊ธฐ์ค€)


Bash

sudo apt update
sudo apt install nginx


๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ (/etc/nginx/sites-available/default)


Nginx ์„ค์ •์˜ ํ•ต์‹ฌ์€ location ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Nginx

server {
    listen 80;
    server_name your_domain.com; # ๋„๋ฉ”์ธ ์ด๋ฆ„ ๋˜๋Š” IP ์ฃผ์†Œ

    root /var/www/html/my-project/public; # ํ”„๋กœ์ ํŠธ์˜ ์›น ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ

    index index.php index.html;

    # 1. ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ: ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด ์ง์ ‘ ์„œ๋น™
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # 2. PHP ์š”์ฒญ ์ฒ˜๋ฆฌ: PHP-FPM์œผ๋กœ ์ „๋‹ฌ
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        # PHP-FPM ์†Œ์ผ“ ๋˜๋Š” TCP ์ฃผ์†Œ๋กœ ์š”์ฒญ ์ „๋‹ฌ
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; 
        # ๋˜๋Š” fastcgi_pass 127.0.0.1:9000;
    }

    # 3. .htaccess์™€ ๊ฐ™์€ ์ˆจ๊น€ ํŒŒ์ผ ์ ‘๊ทผ ์ฐจ๋‹จ
    location ~ /. {
        deny all;
    }
}

  • root: PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ #์›น_๋ฃจํŠธ_๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: Laravel, Symfony ๋“ฑ์€ ๋ณดํ†ต public ํด๋”๊ฐ€ ๋ฃจํŠธ์ž…๋‹ˆ๋‹ค.)

  • location ~ .php$: .php๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ์š”์ฒญ์„ PHP-FPM์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • fastcgi_pass: PHP-FPM์˜ #์†Œ์ผ“ ๊ฒฝ๋กœ ๋˜๋Š” IP ์ฃผ์†Œ์™€ ํฌํŠธ(๊ธฐ๋ณธ 9000๋ฒˆ)๋ฅผ ์ง€์ •ํ•˜์—ฌ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค.



2. Apache ์„ค์ • (LAMP ์Šคํƒ)

uploadImage

#Apache ๋Š” ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜์˜ ์œ ์—ฐ์„ฑ๊ณผ ๊ด‘๋ฒ”์œ„ํ•œ ํ˜ธํ™˜์„ฑ ๋•๋ถ„์— ์—ฌ์ „ํžˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. PHP-FPM๊ณผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” mod_proxy_fcgi ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


Apache ์„ค์น˜ (Ubuntu ๊ธฐ์ค€)


Bash

sudo apt update
sudo apt install apache2


PHP-FPM ์—ฐ๋™ ๋ชจ๋“ˆ ํ™œ์„ฑํ™”


Bash

sudo a2enmod proxy proxy_fcgi


๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ์„ค์ • ํŒŒ์ผ (/etc/apache2/sites-available/000-default.conf)


ProxyPassMatch ์ง€์‹œ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PHP ์š”์ฒญ์„ PHP-FPM ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

Apache

<VirtualHost *:80>
    ServerName your_domain.com
    DocumentRoot /var/www/html/my-project/public

    <Directory /var/www/html/my-project/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # PHP-FPM ์—ฐ๋™ ์„ค์ •
    # .php ํŒŒ์ผ์— ๋Œ€ํ•œ ์š”์ฒญ์„ PHP-FPM ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌ
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

  • AllowOverride All: .htaccess ํŒŒ์ผ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • SetHandler: PHP-FPM ์†Œ์ผ“ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญ์„ ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.



3. ์›น ์„œ๋ฒ„ ์„œ๋น„์Šค ๊ด€๋ฆฌ

uploadImage

์–ด๋–ค ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋“ , ์„ค์ • ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•œ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ ์„œ๋น„์Šค๋ฅผ **์žฌ์‹œ์ž‘(Restart)**ํ•ด์•ผ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.


์„œ๋น„์Šค ๊ด€๋ฆฌ ๋ช…๋ น์–ด (systemd)


Bash

# Nginx์˜ ๊ฒฝ์šฐ
sudo systemctl restart nginx
sudo systemctl status nginx

# Apache์˜ ๊ฒฝ์šฐ
sudo systemctl restart apache2
sudo systemctl status apache2

# PHP-FPM์˜ ๊ฒฝ์šฐ (์›น ์„œ๋ฒ„์™€ ๋ณ„๊ฐœ๋กœ ๊ด€๋ฆฌ)
sudo systemctl restart php8.1-fpm



๋งˆ์น˜๋ฉฐ


์•ˆ์ •์ ์ธ #PHP_์šด์˜ ์€ ์›น ์„œ๋ฒ„์™€ PHP-FPM์˜ ์—ฐ๋™ ์„ค์ •์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. Nginx๋Š” ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ ๋ฉด์—์„œ ์ด์ ์„ ์ œ๊ณตํ•˜๋ฉฐ, Apache๋Š” ๋ชจ๋“ˆ ์‚ฌ์šฉ์˜ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ๋งž๋Š” ์›น ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•˜๊ณ , fastcgi_pass๋‚˜ ProxyPassMatch๋ฅผ ํ†ตํ•ด PHP-FPM๊ณผ์˜ ์†Œ์ผ“/TCP ์—ฐ๋™์„ ์ •ํ™•ํžˆ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ณ ์„ฑ๋Šฅ ์„œ๋น„์Šค ๊ตฌ์ถ•์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. โš™๏ธ



๋น ๋ฅธ์†๋„, ๊ฐ„ํŽธํ•œ์‚ฌ์šฉ, ์žฅ์• ์—†๋Š”VPN, ์‚ฌ์šฉ์ด๋ ฅ์—†๋Š” ๊นจ๋—ํ•œ ์•„์ดํ”ผ

https://xn--299ao67b9qbmsf04c.net/