aws ec2에 APM서버를 열기 위해서는 다음 과정이 필요합니다.
1. aws 가입 및 인스턴스 생성
2. 보안그룹추가로 필요한 보안 허용
3. apache2, php, mysql 설치
4. 서버 상태 확인
그럼 처음부터 시작해 봅시다.
설치순서는 apache, mysql, php 순서입니다.
이 순서를 꼭 지켜주세요.
1. aws 가입 및 인스턴스 생성
구글에 aws를 치면 아마존 웹 서비스가 나옵니다. 거기로 들어갑니다.
회원가입을 하시고, 인스턴스를 생성합니다.
이제 서비스 검색창에 ec2를 치시면 아래화면이 나옵니다.
'인스턴스 시작'을 눌러주세요(만약 서버 시간을 서울로 바꾸고 싶다면 '버지니아 북부'를 클릭하여 서울로 바꿉니다.)
클릭 후 ubuntu20.04버전을 클릭하고 다음을 누릅니다.
2. 보안그룹에서 필요한 보안을 허용해줍니다.
저는 apm을 사용하여 http, mysql, ftp를 하용해 줄 겁니다.
검토 및 시작을 누르면 아래 화면이 나오는데 새로운 키를 생성하여 사용해 줍니다.
이제 연결을 하여 서버 설정을 해주면 됩니다.
그냥 aws에서 연결을 하여 사용할 수 있고, 다른 여러가지 방법을 사용할 수 있습니다.(aws에서 연결하여 사용시, 움직임이 없으면 자동으로 로그아웃되어 다시 연결해주어야 합니다.)
그래서 저는 ssh를 사용해 연결하겠습니다.
만약 클라이언트 os가 윈도우면 putty사용을 권장합니다.
저는 맥을 사용하므로 맥 사용법으로 알려드리겠습니다.
인스턴스를 생성할 때 다운받은 키가 있는 곳에서 터미널을 열어주세요.
열린 터미널에서 다음 명령어를 쳐주세요.
chmod 400 다운받은 키 이름.pem
이는 키페어의 권한을 설정하는 명령어입니다.
그 다음 aws 연결에 나오는 명령어를 치시면 연결이 됩니다.
이제 연결까지 끝났습니다.
3. APM설치 및 서버 세팅
일단 root 계정부터 사용해 봅시다
sudo su
보안을 위해 root의 비밀번호를 바꿉니다.
sudo passwd root
서버에 필요한 여러가지를 다운 받기 위해 apt를 업데이트 및 업그레이드 해주어야 합니다.(root상태에서 하시면 좋습니다.)
sudo apt update -y
sudo apt upgrade -y
apache나 nginx를 설치해줍니다. 저는 apache를 사용합니다.
sudo apt-get install apache2
중간에 나오는 선택은 y를 눌러줍니다.(또는 명령어에 -y를 넣습니다.)
pstree
이 명령어는 사용중인 프로세스를 트리형식으로 보여주는 명령어 입니다.
이를 통해 apache가 동작하는 것을 확인합니다.
처음 os시작시 apache2를 시작하게 설정합니다.
sudo systemctl enable apache2
여기서 기본 apache의 html폴더는 var/www/html 입니다.
mysql(mariaDB)설치
sudo apt-get install mysql-server
이 또한 중간에 나오는 물음에 y를 눌러줍니다.
보안 강화를 위해 아래 명령어를 칩니다.
sudo mysql_secure_installation
설치가 끝나면 pstree로 확인을 합니다.
설치가 끝나면 mysql 을 설정해 줍니다.
1) 방화벽을 허용합니다.
sudo ufw allow mysql
2) 처음시작시 mysql이 시작하도록 설정합니다.
sudo systemctl enable mysql
3) mysql에 접속합니다.
sudo /usr/bin/mysql -u root -p
비밀번호는 root와 동일합니다.
4)유저 생성
외부 ip에서 접근가능한 유저를 생성합니다.
이를 위해 mysql DB를 사용합니다.
use mysql;
CREATE USER 'userid'@'%' IDENTIFIED BY 'passwd';
%는 외부 모든 아이피에서 접근을 허용하는 유저입니다.
생성후 이를 메모리에 기억하기 위해 아래 명령어를 사용합니다.
FLUSH PRIVILEGES;
5) 데이터베이스 생성
새롭게 만든 유저가 사용할 데이터베이스를 생성합니다.
CREATE DATABASE name;
데이터베이스가 만들어졌는지 확인합니다.
SHOW DATABASES;
6)유저에게 권한 허용
APP 데이터베이스 아래 테이블에 모든 권한을 부여합니다.
GRANT ALL PRIVILEGES ON APP.* TO 'userid'@'%';
이를 메모리에 저장합니다.
FLUSH PRIVILEGES;
외부에서 mysql을 연결하기 위해 mysql 설정을 고칩니다.
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
i를 눌러 설정파일을 고칩니다.
이는 127.0.0.1(localhost)만 허용하던 설정을 0.0.0.0(모든 ip)을 허용해 주는 설정입니다.
고친다음 esc를 누르고, :wq를 눌러 변경값을 저장하고 나옵니다.
설정이 끝났다면 mysql을 다시 시작합니다.
sudo systemctl restart mysql.service
php설치
sudo apt install php libapache2-mod-php php-mysql
sudo apt install php-{bz2,imagick,imap,intl,gd,mbstring,pspell,curl,readline,xml,xmlrpc,zip}
여기까지 완료했다면
/var/www/html 아래에 info.php를 생성하여 php가 동작하는지 확인합니다.
sudo vi /var/www/html info.php
<?php
phpinfo();
?>
처음에 설치할 때 php를 mysql보다 먼저 설치하여, php가 인식이 안 되는 오류가 발생하였습니다.
꼭 순서를 지켜주세요.
ftp를 사용하시려면 아래 내용을 참고해주세요
2022.03.01 - [개발일지/서버] - EC2 ubuntu 20.04LTS vsftpd설정
서버와 연결을 끊으시려면 exit명령어를 칩니다.
이 모든것을 하면 외부에서 mysql이 잘 접속되고, apache서버가 웹에서 접근이 됩니다.
이제 php로 백을 만드는 코딩만 해주면 끝입니다.
행복한 코딩시간을 가져봅시다. :)
혹시 윈도우에서는 어떻게 서버를 관리하는지 궁금하시면 아래 내용도 도움이 됩니다.
https://jacorinne.tistory.com/30
'SERVER > linux' 카테고리의 다른 글
centos7 mqtt mosquitto install (0) | 2023.05.16 |
---|---|
centos7 에서 실행중인 프로그램 찾고 종료하기 (0) | 2022.08.22 |
centos7 에서 프로그램 백그라운드 실행 (0) | 2022.08.22 |
Server Tomcat v8.5 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor. (0) | 2022.03.31 |
EC2 ubuntu 20.04LTS vsftpd설정 (0) | 2022.03.01 |