AWS EC2에 nginx와 mariadb를 설치하는 방법에 대하여 정리합니다.
서버 타임존 변경
aws는 기본적으로 os설치시 타임존이 UTC로 맞춰져있으므로 nginx/mariadb 설치전에 TimeZone을 변경해 줍시다.
$ date 2019. 04. 30. (화) 04:23:00 UTC $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime $ date 2019. 04. 30. (화) 13:45:00 KST
nginx 설치
– amazon-linux-extras install nginx
yum으로는 nginx 패키지를 찾지 못합니다. amazon-linux-extras 명령어로 nginx를 설치합니다.
$ amazon-linux-extras list 0 ansible2 available [ =2.4.2 =2.4.6 ] 2 httpd_modules available [ =1.0 ] 3 memcached1.5 available [ =1.5.1 ] 4 nginx1.12 available [ =1.12.2 ] 5 postgresql9.6 available [ =9.6.6 =9.6.8 ] 6 postgresql10 available [ =10 ] 8 redis4.0 available [ =4.0.5 =4.0.10 ] 9 R3.4 available [ =3.4.3 ] 10 rust1 available \ [ =1.22.1 =1.26.0 =1.26.1 =1.27.2 =1.31.0 ] 11 vim available [ =8.0 ] ................. 생략 $ sudo amazon-linux-extras install nginx1.12 $ sudo service nginx start Redirecting to /bin/systemctl start nginx.service
nginx 관련 파일 위치
설정 – /etc/nginx/nginx.conf
로그 – /var/log/nginx
방화벽 오픈
웹서버에 접근하기 위해 80 port를 열어줍니다.
ec2 security groups 설정에서 inbound에 80 port를 추가합니다.
Type : HTTP Protocol : TCP Port range : 80 Source : 0.0.0.0/0
nginx 실행
$ sudo service nginx start
확인
mariadb 설치
– yum install mariadb-server
$ sudo yum install mariadb-server Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 2.4 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package mariadb-server.x86_64 1:5.5.62-1.amzn2.0.1 will be installed --> Processing Dependency: mariadb(x86-64) = 1:5.5.62-1.amzn2.0.1 for package: 1:mariadb-server-5.5.62-1.amzn2.0.1.x86_64 --> Processing Dependency: perl-DBI for package: 1:mariadb-server-5.5.62-1.amzn2.0.1.x86_64 ............. 생략 --> Finished Dependency Resolution Dependencies Resolved =========================================================================== Package Arch Version Repository Size =========================================================================== Installing: mariadb-server x86_64 1:5.5.62-1.amzn2.0.1 amzn2-core 11 M Installing for dependencies: mariadb x86_64 1:5.5.62-1.amzn2.0.1 amzn2-core 9.0 M ............ 생략 Transaction Summary =========================================================================== Install 1 Package (+9 Dependent packages) Total download size: 22 M Installed size: 111 M Is this ok [y/d/N]: y $ sudo service mariadb start Redirecting to /bin/systemctl start mariadb.service
Port 변경 / 언어셋 변경
기본포트 3306은 잘 알려진 Port이므로 다른 포트로 변경하여 사용하는 것을 추천합니다. 언어셋을 utf8mb4로 설정하는 이유는, IOS에서 이모티콘/이모지 등을 표현할때 문자당 4byte를 사용하는데 기본설정을 사용하면 3byte까지만 받을수있어 utf8mb4로 설정해서 문자를 받을수있게 해주는 것입니다.
$ sudo vim /etc/my.cnf [mysqld] port = 36091 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci $ sudo service mariadb restart
root 패스워드 변경
root패스워드는 처음엔 설정이 안되어 있으므로 설정을 해주도록 합니다.
// root 패스워드 설정 $ mysqladmin -u root -p password 'xxRootPwd^&*' Enter password: 그냥 엔터 $ mysql -u root -p Enter password:설정한 비밀번호 입력 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
운영용 database / id 생성
root를 그냥 사용해도 되지만. root의 경우 모든 권한을 가지고 있고 외부에서 접속 가능하게 설정할 경우엔 위험할 수 있으므로 운영 DB와 운영ID를 따로 만들어 권한을 격리시켜 사용하는 것을 추천합니다.
// root로 mariadb 접속 MariaDB [(none)]> create database daddyprogrammer; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> set password for happydaddy@localhost=password('xxxdaddypwd^&*'); Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> grant all privileges on daddyprogrammer.* to happydaddy@localhost identified by 'xxxdaddypwd^&*'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit; $ mysql -u happydaddy -p Enter password:설정한 비밀번호 입력 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | daddyprogrammer | | test | +--------------------+ 3 rows in set (0.00 sec)
외부 접속 설정
ec2 security groups 설정에서 mariadb port를 inbound에 추가합니다.
Type : Custom TCP Rule Protocal : TCP Port range : 위에서 설정한 myriadb의 port Source : 0.0.0.0/0
운영 계정 외부 접속 권한 설정
daddyprogrammer database에 대하여 happydaddy 유저가 103.xxx.200. 으로 시작하는 IP에서만 비밀번호를 넣어 접근가능하도록 설정합니다.
// root 로그인 MariaDB [(none)]> grant all privileges on daddyprogrammer.* to happydaddy@'103.xxx.200.%' identified by 'xxxdaddypwd^&*'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
접속 확인
아래 링크에서 mysql workbench를 다운로드 받아 설치합니다.
https://dev.mysql.com/downloads/workbench/
외부 접속 권한 설정한 운영계정으로 접속할 커넥션을 하나 생성합니다.
접속에 성공하면 다음과 같은 화면을 볼 수 있습니다.