우분투 | 20.04 서버 NPM 설치, 세팅하기

|

요약

NPM은 Nginx + PHP + MySQL(MariaDB) 의 요약어입니다. 우분투라는 운영체제에 설치하는 방법입니다.

편집기 사용법

나노(nano) 편집기 저장

Ctrl + XYEnter

로그인 설정

sudo passwd root

최고 관리자 계정(root) 에 접근하기 위해 비밀번호를 설정합니다.

sudo apt update -y

업데이트를 진행합니다.

sudo su

최고 관리자 계정(root) 로 로그인합니다. 이 때 설정한 비밀번호를 입력하면 됩니다.

su ubuntu

경고 : su(switch user) 명령어는 해킹의 위험이 있을 수 있습니다.
sudo(Subsititude user do) 로 관리자 권한을 얻으면 대행 가능한 계정이 어떤 것인지 모르기 때문에
공격포인트가 없어집니다.

외부 로그인 설정

경고 : 이 방법은 권장하지 않습니다.
비밀번호를 생성하면 무차별 대입 공격(Broute Force Attack)의 표적이 될 수 있습니다

sudo nano /etc/ssh/sshd_config

외부 로그인 설정을 위해 ssh 설정에 접근합니다.

  • root 계정 외부 로그인 허용
    PermitRootLogin yes
  • 비밀번호 로그인 허용
    PasswordAuthentication yes
  • 공개키 접속 허용
    PubkeyAuthentication yes

SSH 암호 키로 로그인 하는 것이 안전한 것은 사실이지만 설정 방법은 알고 있는 것이 좋습니다.
비밀번호 로그인을 위해 PasswordAuthentication 설정을 찾아서 위와 같이 변경합니다

그 다음 Ctrl + XYEnter 를 입력하여 저장 후 에디터를 종료합니다.

sudo service sshd restart

sshd를 재시작합니다.

시간 설정

sudo timedatectl set-timezone 'Asia/Seoul'

시간을 설정해야 합니다. 위의 코드를 복사하여 터미널에서 실행합니다.

date

터미널에 date 를 입력하여 시간이 정상적으로 적용되었는지 체크합니다.

Nginx 설치

sudo apt upgrade -y

엔진엑스 설치하기 전 업데이트를 진행해야 합니다. 터미널에 붙여넣기 한 다음 1번 을 선택합니다.

sudo apt install nginx -y

엔진엑스를 설치합니다. 이렇게 설치된 파일은 /etc/nginx 경로에 있습니다.

Marid DB 설치

sudo apt install mariadb-server -y

마리아DB(Maria DB) 를 설치합니다. 이후에 1번을 선택 합니다
MySQL 은 저작권의 문제가 있어서 나오게 된 무료로 사용할 수 있는 DB 입니다. MySQL 과 거의 같다고 생각하시면 됩니다.

sudo systemctl start mariadb

시스템 시작할 때 마리아 DB(Maria DB) 가 자동으로 시작할 수 있도록 설정합니다.

sudo mysql_secure_installation

root 의 비밀번호를 입력한 다음
Lightsail 의 경우 전부 N 을 입력, EC2 의 경우 전부 Y를 입력합니다.

Maria DB에서 나가려면 exit; 를 입력하거나 Ctrl + Z 를 누르면 됩니다.

PHP 8 설치

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php8.0-fpm php8.0-apcu php8.0-bz2 php8.0-common php8.0-curl php8.0-gd php8.0-mbstring php8.0-mysql php8.0-xml php8.0-zip php8.0-fpm php8.0-bz2 php8.0-cli php8.0-common php8.0-curl php8.0-gd php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml 

PHP 7 설치

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php7.4-fpm php7.4-apcu php7.4-bz2 php7.4-common php7.4-curl php7.4-gd php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip php7.4-fpm php7.4-bz2 php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml

git 설치하기

sudo apt-get install git

clone 명령어를 위해 git을 설치합니다.

unzip 설치하기

sudo apt install unzip

유저 생성하기

sudo adduser rading

rading 이라는 유저를 생성합니다.

sudo usermod -a -G www-data rading

rading 계정에 www-data 라는 권한을 줍니다. 웹에서 사용되는 권한입니다.

유저 값 변환

sudo nano /etc/passwd
  • 수정 전 : root:x:0:0:root:/root:/bin/bash
  • 수정 후 : root:x:0:0:root:/var/www/html:/bin/bash

FTP , 터미널 영역의 시작점을 변경합니다.

  • 수정 후 : rading:x:33:33:,,,:/var/www/html:/bin/bash

권한을 33:33 으로 변경합니다. www-data 로 권한을 변경하게 됩니다.

데이터베이스

데이터베이스 생성하기

sudo mysql -u root -p

데이터베이스에 관리자 권한으로 접근합니다. 비밀번호를 입력해야 합니다

create database 데이터베이스;

데이터베이스를 생성합니다. 마지막에 반드시 세미콜론을 입력합니다.

데이터베이스 계정 생성하기

sudo mysql -u root -p

데이터베이스에 관리자 권한으로 접근합니다.

create user '아이디'@'localhost' identified by '비밀번호';‌
exit;‌

유저를 생성한 다음 나가기를 합니다

데이터베이스 계정 부여하기

grant all privileges on 데이터베이스.* to '아이디'@'localhost';‌

아이디데이터베이스 모든 권한을 부여합니다.

grant all privileges on *.* to '아이디'@'localhost'; 

아이디 에 모든 DB 권한을 부여합니다.

권한 부여

MariaDB 10.4 이후로 user 테이블이 Grant_priv 테이블로 변경되었습니다.

UPDATE mysql.user SET Grant_priv='Y', Super_Priv='Y' WHERE user='아이디';‌
flush privileges;‌
exit;‌

폴더 권한 변경

sudo chown -R www-data:www-data /var/www/html

/home 폴더에 들어있는 자료를 www-data:www-data 권한으로 변경합니다.

SSL 설정하기

sudo apt-get install certbot python3-certbot-nginx -y

certbot, python3-certbot-nginx 자료를 설치합니다. SSL 설정 직전의 상태입니다.

sudo certbot --nginx -d example.com -d www.example.com‌

certbot 을 통해 nginx SSL 설정을 시작합니다. example.comwww.example.com 을 신규로 등록합니다.

중간에 이런 문구가 나온다면 Redirect 를 입력해야 http 일 때 https 로 이동합니다.


sudo certbot renew --dry-run

자동 갱신 명령어입니다.

포트 개방

SSL 포트는 443입니다 반드시 해당 포트를 열어야합니다.

슈퍼 계정 생성하기

nano /etc/sudoers

아이디 ALL=(ALL:ALL) ALL 을 추가하여 슈퍼 계정을 생성할 수 있습니다.

nginx 설정하기

etc\nginx\sites-enabled\default 파일을 수정합니다.

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;

	index index.html index.php;

	server_name _;

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
	}
}

  • 80포트 기본으로 설정되었습니다.
  • 최상위 폴더는 /var/www/html 입니다.
  • 서버 이름은 따로 없습니다.
  • .php 확장자는 php8.0-fpm.sock 를 연결합니다.

PHP 재실행

sudo service php7.4-fpm restart

참조

설치 중간에 쫒겨난 경우

  • Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 2318 (apt).
  • E: dpkg was interrupted, you must manually run ‘sudo dpkg –configure -a’ to correct the p roblem.
sudo dpkg --configure -a

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다