우분투Ubuntu 19.10에 LAMP(Apache2, MySQL, PHP7)와 phpmyadmin을 설치해보자

우분투Ubuntu 이든, 센토스Centos이든 리눅스를 설치하기 위한 목적은 서버를 운영하기 위한 것이다. 물론 윈도우 10 대용으로 쓰기에도 손색이 없다. 그래도 리눅스 설치의 제1 의 목적은 서버의 운영이다.

서버를 운영하기 위해서는 LAMP가 필요하다. LAMP는 Linux, Apache2, MySQL, PHP의 머리글을 가지고 만든 약자이다. 본 포스팅에서는 리눅스 우분투 최신버전(2020년 1월 12일 기준)인 19.10 버전 기준으로 Apache2, MySQL, PHP와 데이터베이스를 좀 더 쉽게 관리가능하게 해주는 프로그램인 phpmyadmin의 설치방법에 대해 설명하고자 한다. 여기서 설명하는 방법들은 하위 버전인 18.04 LTS 버전에서도 동일하니 참고하길 바란다.

이 글의 순서는 다음과 같다.

  1. apache2 웹서버 설치
  2. mysql 서버 설치 
  3. PHP 설치
  4. phpmyadmin 설치

우선 우분투를 실행시키고 터미널을 열어서 프로그램을 업데이트 및 업그레이드 시켜준다.

sudo apt update

sudo apt upgrade

혹시 sudo 명령어가 안먹는다면 다음 게시물을 참고해서 해결하자.

아파치 웹서버를 설치하자.

sudo apt install apache2

계속 하시겠습니까? 라는 물음에 Y를 눌러서 설치를 진행한다.

apache2가 설치 완료되었으면 firefox 브라우저를 열어서 localhost를 입력해 본다. 다음과 같은 apache2 디폴트 페이지가 나오면 제대로 설치된 것이다.

웹서버 관련 모든 파일들이 저장되는 장소는 /var/www/html 디렉토리다.

아파치 웹서버의 설정파일은  /etc/apache2/ 디렉토리 내에 apache2.conf 라는 이름으로 저장되어 있다. 아파치 웹서버를 설치하고나서 바로  apache2.conf를 수정하자.

<Directory /var/www> -> <Directory/var/www/html> : 웹페이지 기본 디렉토리를 수정해야 한다.

Allowoverride None -> AllowOverride all : 이부분이 all로 설정되어 있지 않으면 나중에 워드프레스를 설치 후 고유주소 에러가 날 경우가 많다.

그 다음 방화벽을 설정하는 단계이다. 실제 도메인을 구입해서 웹페이지를 운영하는 상태가 아니라면 건너 뛰어도 상관없다.

sudo ufw enable  : 방화벽을 활성화 하는 명령어이다.

sudo ufw default deny incoming :  내 서버로 들어오는 패킷들은 방화벽에서 기본적으로 거부하는 명령이다.

sudo ufw default allow outgoing :  내 서버에서 나가는 패킷들은 기본적으로 허용하는 명령이다.

sudo allow ssh : SSH 접속을 허용하는 명령어다. (SSH는 다른 컴퓨터에서 내 리눅스로 로그인 하기 위해 꼭 필요하다.)

sudo ufw app info “Apache2” –> 80포트를 아파치 웹서버에게 허용

sudo ufw app info “Apache Secure” -> https 관련 443 port 개방

sudo ufw app info “Apache full”> 80포트와 443 포트 개방 : 추천!

MySQL 서버를 설치해보자.

sudo apt install mysql-server

Y를 누르고 계속 진행한다.

MySQL 5.7버전부터 설치 중간에 root 비밀번호 물어보는 절차가 없어졌다. root 비밀번호와 비밀번호 규칙, 비밀번호 자릿수 등을 설정하기 위해 다음과 같이 입력한다.

sudo mysql_secure_installation

password validation policy 관련해서 0(Low)를 입력한다. 1(Medium), 2(strong)은 비밀번호 규칙이 까다로워지기 때분에 추천하지 않는다. 

그리고 나서 root 패스워드를 두차례 입력한다.

질문에 연속으로 y를 누른다.

MySQL은 기본적으로 test라는 db를 제공하는데, 삭제할 지 물어보는 화면이다. 모두 y로 답한다. 마지막에 All done이 나오면 MySQL 관련 설치은 끝난 것이다.

mysql에 root로 로그인해보자.

mysql -u root -p

에러가 나오면서 로그인이 되지 않는다. 

su 명령어로 먼저 root로 계정을 변경하고 난 뒤 로그인 하면 mysql에 root로 로그인할 수 있다.

mysql에 로그인 후 db라는 이름의 데이터베이스를 만든다.

create database db DEFAULT CHARACTER SET utf8;

새로운 사용자와 패스워드를 정하기 전에 mysql의 비밀번호 관련 환경설정을 해주는 것이 좋다.

우선 비밀번호 관련 기본 설정을 보기 위해서 아래와 같은 명령어를 입력한다.

SHOW VARIABLES LIKE ‘validate_password%’;

비밀번호의 길이는 최소 8자리 이상이고, 비밀번호 정책은 LOW로 설정되어 있다. mysql_secure_installation 할 때 LOW로 설정했기 때문이다. 기본값은 Medium이다.

비밀번호 길이를 최소 4자리 이상으로 바꿔보자.

SET GLOBAL validate_password_length = <원하는 길이>;

<원하는 길이> 부분에 숫자 4를 넣어 주면 된다. 

자, 이제 사용자를 새로 만들어보자 비밀번호와 함께.

create user 사용자이름 identified by ‘패스워드’;

사용자 이름에 testuser ,패스워드에 testuser를 입력하자.

앞에서 생성했던 데이터베이스 db를 새로 생성한 사용자인 testuser가 사용하도록 권한을 부여해야 한다.

그러기 전에 root 사용자를 비밀번호와 함께 만들고 모든 database에 권한을 부여할 수 있는 자격을 만들어 준다.

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON db.* TO ‘사용자이름’@’%’ WITH GRANT OPTION;

testuser가 db 라는 이름의 database를 사용할 수 있게 권한을 주는 명령어이다. 바로 위의 그림예시와 같이 root 사용자에 대한 GRANT OPTION이 선행되어야 한다. 그렇지 않으면 에러가 난다.

이제 exit을 눌러서 mysql에서 빠져 나가고 난 뒤 새로 생성한 사용자인 testuser로 mysql에 로그인 해보자.

mysql -u testuser -p

mysql> use db;

db라는 데이터베이스를 선택한 후 아래와 같이 Person이라는 테이블을 만들어보자.

create table Person(

     id bigint(20) unsigned not null auto_increment,

     name varchar(255) not null,

     address varchar(255) not null,

     primary key (id)

)  DEFAULT CHARACTER SET utf8;

생성한 테이블을 확인해보자.

show tables;

생성한 테이블에 test라는 이름과 주소를 각각 넣어보자.

insert into Person(name, address) values(‘test’, ‘test’);

drop tables Person;

show tables;

exit

 

 

 

 

 

 

 

 

 

 

 

댓글 남기기

이메일은 공개되지 않습니다.

error: Content is protected !!