[Ubuntu] nginx 웹서버에서 가상호스트 추가 설치하고 PHP7.4 도 연동하기
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