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 yes
PasswordAuthentication yes
PubkeyAuthentication yes
SSH 암호 키로 로그인 하는 것이 안전한 것은 사실이지만 설정 방법은 알고 있는 것이 좋습니다.
비밀번호 로그인을 위해 PasswordAuthentication
설정을 찾아서 위와 같이 변경합니다
그 다음 Ctrl + X
→ Y
→ Enter
를 입력하여 저장 후 에디터를 종료합니다.
sudo service sshd restart
sshd를 재시작합니다.
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_installation
root 의 비밀번호를 입력한 다음
Lightsail 의 경우 전부 N 을 입력, EC2 의 경우 전부 Y를 입력합니다.
Maria DB에서 나가려면 exit;
를 입력하거나 Ctrl + Z
를 누르면 됩니다.
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
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
sudo apt-get install git
clone 명령어를 위해 git을 설치합니다.
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 , 터미널
영역의 시작점을 변경합니다.
권한을 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 -y
certbot, python3-certbot-nginx 자료를 설치합니다. SSL 설정 직전의 상태입니다.
sudo certbot --nginx -d example.com -d www.example.com
certbot 을 통해 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 restart
sudo dpkg --configure -a