NPM은 Nginx + PHP + MySQL(MariaDB) 의 요약어입니다. 우분투라는 운영체제에 설치하는 방법입니다.
나노(nano) 편집기 저장
Ctrl + X → Y → Enter
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 설정에 접근합니다.
PermitRootLogin yesPasswordAuthentication yesPubkeyAuthentication yesSSH 암호 키로 로그인 하는 것이 안전한 것은 사실이지만 설정 방법은 알고 있는 것이 좋습니다.
비밀번호 로그인을 위해 PasswordAuthentication 설정을 찾아서 위와 같이 변경합니다
그 다음 Ctrl + X → Y → Enter 를 입력하여 저장 후 에디터를 종료합니다.
sudo service sshd restartsshd를 재시작합니다.
sudo timedatectl set-timezone 'Asia/Seoul'시간을 설정해야 합니다. 위의 코드를 복사하여 터미널에서 실행합니다.
date터미널에 date 를 입력하여 시간이 정상적으로 적용되었는지 체크합니다.
sudo apt upgrade -y
엔진엑스 설치하기 전 업데이트를 진행해야 합니다. 터미널에 붙여넣기 한 다음 1번 을 선택합니다.
sudo apt install nginx -y엔진엑스를 설치합니다. 이렇게 설치된 파일은 /etc/nginx 경로에 있습니다.
sudo apt install mariadb-server -y마리아DB(Maria DB) 를 설치합니다. 이후에 1번을 선택 합니다
MySQL 은 저작권의 문제가 있어서 나오게 된 무료로 사용할 수 있는 DB 입니다. MySQL 과 거의 같다고 생각하시면 됩니다.
sudo systemctl start mariadb시스템 시작할 때 마리아 DB(Maria DB) 가 자동으로 시작할 수 있도록 설정합니다.
sudo mysql_secure_installationroot 의 비밀번호를 입력한 다음
Lightsail 의 경우 전부 N 을 입력, EC2 의 경우 전부 Y를 입력합니다.
Maria DB에서 나가려면 exit; 를 입력하거나 Ctrl + Z 를 누르면 됩니다.
sudo add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo 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 sudo add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo 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-xmlsudo apt-get install gitclone 명령어를 위해 git을 설치합니다.
sudo apt install unzipsudo adduser radingrading 이라는 유저를 생성합니다.
sudo usermod -a -G www-data radingrading 계정에 www-data 라는 권한을 줍니다. 웹에서 사용되는 권한입니다.
sudo nano /etc/passwdroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/var/www/html:/bin/bashFTP , 터미널 영역의 시작점을 변경합니다.
권한을 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 권한으로 변경합니다.
sudo apt-get install certbot python3-certbot-nginx -ycertbot, python3-certbot-nginx 자료를 설치합니다. SSL 설정 직전의 상태입니다.
sudo certbot --nginx -d example.com -d www.example.comcertbot 을 통해 nginx SSL 설정을 시작합니다. example.com 과 www.example.com 을 신규로 등록합니다.

중간에 이런 문구가 나온다면 Redirect 를 입력해야 http 일 때 https 로 이동합니다.
sudo certbot renew --dry-run자동 갱신 명령어입니다.
SSL 포트는 443입니다 반드시 해당 포트를 열어야합니다.
nano /etc/sudoers아이디 ALL=(ALL:ALL) ALL 을 추가하여 슈퍼 계정을 생성할 수 있습니다.
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;
}
}/var/www/html 입니다.php8.0-fpm.sock 를 연결합니다.sudo service php7.4-fpm restartsudo dpkg --configure -a