리눅스서버/Ubuntu

[Ubuntu] nginx 웹서버에서 가상호스트 추가 설치하고 PHP7.4 도 연동하기

http://portfolio.wonpaper.net 2024. 1. 30. 22:55

Ubuntu 에서 웹서버로 nginx 를 정상 설치하였다.

그리고, 필자는 PHP7.4-fpm 또한 무난히 설치하였는데,  가상호스트를 추가로 작업하고 싶었다.

 

/etc/nginx

 

위의  nginx 주요파일목록이다. 

nano nginx.conf 으로 열어보고 안의 환경설정 소스들을 살펴보자.

 

http {

    ...

    access_log /var/log/nginx/access.log;

    error_log /var/log/nginx/error.log;

 

    include /etc/nginx/conf.d/*.conf;

    include /etc/nginx/sites-enabled/*;

    ...

}

 

위에서 

include /etc/nginx/sites-enabled 안의 관련 파일들이 바로 우리가 하려는 가상호스트 설정하는 파일들이 놓이는 파일들이라고 생각하면 된다.

 

cd sites-enabled 하니

먼저 default 심볼링 링크 파일만 덩그러니 보였다.

뒤에 경로를 따라가면 진짜 파일을 열어 볼수가 있다.

 

nano /etc/nginx/sites-available/default 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
server {
        listen 80 default_server;
        listen [::]:80 default_server;
 
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
 
        root /var/www/html;
 
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;
        server_name _;
 
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
 
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}
 
 
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#       listen 80;
#       listen [::]:80;
#
#       server_name example.com;
#       root /var/www/example.com;
#       index index.html;
#
#       location / {
#           try_files $url $uri/ =404;
#       }
#}
#       server_name example.com;
 
 
 
cs

 

이 소스가 default 기본 홈 디렉토리 부분이다. 굉장히 직관적이라서 PHP 관련 부분들도 # 주석만 풀어 주면 잘 연동되어 돌아간다.

 

그러면 이제 abc 일반 계정을 하나 만들고 /home/abc/www 를 기본 루트디렉토리로 하는 가상 호스트를 만들어 보자.

 

nano /etc/nginx/sites-available/abc

 

파일을 아래와 같이 동일한 형태로 만든다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
server {
        listen 80;
        listen [::]:80;
 
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
 
        root /home/abc/www;
 
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;
 
        access_log /var/log/nginx/abc_access.log;
        error_log /var/log/nginx/abc_error.log;
 
        server_name abc.com www.abc.com;
 
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
 
        # pass PHP scripts to FastCGI server
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}
 
cs

 

root 기본경로를 지정하고, server_name 을 도메인명으로 제대로 수정한다.

 

그다음 아래 명령어로 restart 시켜서 웹브라우저로 확인해 보면된다.

 

 

systemctl restart php7.4-fpm

systemctl restart nginx