일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pythonpptpdf
- (user)terminal
- cidrhost로EC2의ENI에10개의ip를 장착
- terraform
- data개념
- pptpdf로변환
- 깃허브기초
- azureterraform
- (user)없애기
- azureresource
- macterminal(user)
- pptxpdf
- aws
- awsglue
- 테라폼조건문
- awsworkshop
- terraform_data
- mac(user)
- 테라폼함수
- 가시다스터디
- mac user
- pptpdf
- t101
- Azure
- 테라폼상태
- 테라폼조건식
- githubbasic
- t103
- terraformazure
- 테라폼스터디
- Today
- Total
fullmoon's bright IT blog
[AWS workshop] 웹 사이트를 구축하기 (1) 단일 인스턴스 웹 호스팅 본문
안녕하세요 휘영청입니다.
웹호스팅 스터디를 한번 해보겠습니다!
단일과 고가용성으로 해보겠습니다!
회사 다니면서 진작에 했었어야 했는데
맞으면서 배워서(?)
매일 블로그 목표로 하는 김에 정리하는 걸로
AWS를 접하는 초보자에게 진짜 추천하는 Workshop
추천별점 : ❤❤❤❤❤
[Architecture]
[작업 순서]
- CloudFormation template으로 VPC 구성
- Amazon RDS로 database 구성
- EC2 instance > Wordpress website 설치
- 간단한 Wordpress를 설치한 EC2를 정적 파일은 S3 bucket으로 보내기
- Sample Page 확인
1. CloudFormation template으로 VPC 구성
Cloudformaion template으로 기본적인 인프라 구성을 합니다.
준비된 템플릿으로 파일을 업로드합니다.
Stack name : vpc-stack
Amazon VPC Parameters
Number of Availability Zone : 2
Availability Zones : us-east-1a , us-east-1b
[Next] 를 가차없이 누른 후
스택생성하기!
2. Amazon RDS로 database 구성
RDS > Create Database
Choose a database creation method : Standard create / Easy create
Configuration : Mysql
DB instance size : Free tier ( 가장 싼 t2. micro 사용해서 그런가봄)
DB instance identifier : wordpress01
Master username : admin
Master password : admin12!
Confirm password : admin12!
Connectivity
Virtual private cloud (VPC) : 생성했던 VPC stack
VPC security group : Choose existing / Create new > 그룹이름은 db-sg로 함
3. EC2 인스턴스 시작
맨날 하던거라서 빠르게
Amazon Machine Image (AMI) : Amazon Linux 2 AMI (HVM), SSD Volume Type
Instance Type : t2.micro
Network : vpc-stack
Subnet : PublicSubnet0
✔ 제가 반드시 하는 설정!
❌❌❌❌종료는 무조건 종료로 하고 종료 방지 설정하기❌❌❌❌
태그에 Name : wordpress 설정하고
보안그룹도 설정
Security group name : public-instance-sg
For Source : My IP
사실 미리 보안그룹을 만들어도 되긴해요 (저는 이거 추천)
My IP로 Mysql/Aurora랑 HTTP도 등록해야하거든요 할때 한번에 허자!
이유는 인스턴스에서 웹페이지랑 db를 접속해야하는데 포트를 뚫어줘야하니까!
그리고 db-sg 보안 그룹 인바운드에서도 mysql /
custom 쭉 - 내리다보면 'public-instance-sg' 있어요 추가해주세요
public-instance-sg 에서 db쪽으로 접속하지만 반대로 인스턴스로도 보내야하니까 인바운드 추가해주는거에요
보통 인스턴스에 보안그룹 자체를 해놓으면 편해요
마지막으로 Keypair 무조건 새로 만들고 다운로드
그 후 Launch instance !
4. Wordpress Setting
각자의 방법으로 접속하세요 !
저는 MobaXterm 으로 접속.
먼저 Apache랑 Mysql 설치
sudo yum install -y httpd
sudo yum install -y mysql
컴퓨터에서 MySQL의 환경 변수를 설정합니다.
나의 endpoint : wordpress01.clpmipqca15k.us-east-1.rds.amazonaws.com
export MYSQL_HOST=<your-endpoint>
export MYSQL_HOST=wordpress01.clpmipqca15k.us-east-1.rds.amazonaws.com
확인 방법 : RDS > Databases > 생성한 데이터베이스 클릭하면 아래 endpoint
사용자 이름과 암호를 바꾸고 다음 명령을 실행하여 wordpress 데이터베이스에 연결
mysql --user=admin --password=admin12! wordprss
❌비번이 보여서 노출주의!
WordPress용 새 DB 생성 및 권한 부여
CREATE USER 'wordpress' IDENTIFIED BY 'wordpress-pass';
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress;
FLUSH PRIVILEGES;
Exit
WordPress 모듈을 다운로드하고 압축 풀기
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
WordPress 폴더로 이동하여 기본 구성 파일을 백업
cd wordpress
cp wp-config-sample.php wp-config.php
nano는 말고 vi 좋아하니까 vi로
vi wp-config.php
20 line
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** MySQL database username */
define( 'DB_USER', 'username_here' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
Visit this link copy the content in the page and replace the following
DB_NAME: 'wordprss' (오타남ㅋㅋㅋ)
DB_USER: 'wordpress'
DB_PASSWORD: 'wordpress-pass'
DB_HOST: your RDS endpoint
51 line
define('AUTH_KEY', 'baV~C%AXpIv!(#}27EJBH+5EdWp1hT(;~e,]FaeuNmyakU|G<rlG,L>(Le|wnsp7');
define('SECURE_AUTH_KEY', '@?6Cz VIajd:v[AS%hi.jbttZ?IrvLFr*3 xE 6Hfka_tB|-b(hqi<CW9<.aDz>+');
define('LOGGED_IN_KEY', 'qs9>byq?{@TNBb*f_tP4LzO|mPke+6g`*?IjF`|^>~f-_x-~z^d,,)_R]jd9%y3H');
define('NONCE_KEY', 'M]mTw+&CJVzUH<+e?MdB-31?@$V&=!bklQ1~uwu]>k?O$]R~365u,[MX/p7xvNJL');
define('AUTH_SALT', '3Ke>`3p5f6rc-??f,VD:uRb~3uHJh2!%b)WpKRolN7|:#NBoVPi<,gxFo6t>q|hE');
define('SECURE_AUTH_SALT', 'XLXbkzDH8[mD%`2QO.T8Qq4/pp-WJnW&M!%.=m6EUV9hO +(q`I/7u&@[_T^mb+0');
define('LOGGED_IN_SALT', '2=SKzWII5vX6Dw/p2~HOYZm/dET*0-_NUB9|?B[7:@AHL(k_eBZ?iC@mf(|itz4*');
define('NONCE_SALT', 'T8Zc{W,>(|x0V?cd=4?m+H(` Q3K3H5HTuy:!~L``+II-ABS-348zaWm%U>B>cXI');
여기 부분에 추가
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
바로 아래 추가
/** to allow 'W3TC' plugin write the configuration data into DB */
define( 'W3TC_CONFIG_DATABASE', true );
/** to allow https in WordPress, will be used in lab 2/
$_SERVER['HTTPS'] = 'on';
wordpress 배포
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum install php-xml
cd /home/ec2-user
sudo cp -r wordpress/* /var/www/html/
sudo chown -R apache:apache /var/www/html
Apache 웹 서버 호스팅을 시작
sudo service httpd start
sudo systemctl restart php-fpm
5. 웹사이트를 방문하여 WORDPRESS 설정 구성하기
5.1 IAM 설정
IAM 에서 사용자를 추가 후 권한 설정 부여, .csv 파일을 다운받습니다.
User Name : wordpress-user
Console password : Wordpress-user12! (Programmatic access & AWS Management Console access 둘 다 ✔)
Permissions : CloudFrontFullAccess 및 AmaoznS3FullAccess 추가
반드시 .csv 파일 다운로드 !
5.2 Wordpress CDN 설정
[Error 발생]
퍼블릭 IP주소 접속을 을 하려고 했는데 안들어가짐ㅋㅋ
삽질해보니까
원인 1.
wp-config.php 에서 DB_NAME 오타 안 고침 ㅋㅎ
원인 2.
wordpress 계정 만들때 wordprss 디비에 대한 권한이 없는 거 같다.
mysql -h wordpress01.clpmipqca15k.us-east-1.rds.amazonaws.com -u wordpress -p
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
엔드포인트로 들어가서 보니까 wordpress가 없어서 ..
아 이러니까 안보이지!!!
mysql -h wordpress01.clpmipqca15k.us-east-1.rds.amazonaws.com -u admin -p
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordprss |
+--------------------+
5 rows in set (0.00 sec)
하하 잘보이네 그럼 권한을 줘야겠네
GRANT에서 권한 주기
그리고 wordpress DB의 모든 테이블에 privileges 모든 권한을 줘버리자!
GRANT ALL privileges ON wordprss.* TO wordpress@'%' IDENTIFIED BY 'wordpress-pass';
엣 안되네 버전이 안맞나 (안되면 버전 의심)
GRANT ALL privileges ON wordprss.* TO wordpress@'%'
flush privileges;
플러시!!!!!!!!!
그리고 다시 확인
해결되었다. 다음 진행
일단 admin / admin12! 로 걍 접속 해서 관리자 페이지를 확인합니다.
메뉴 [플러그인] > [새로 추가] > w3 total cache 검색 > 지금 설치 > 활성화 버튼 까지 클릭
메뉴 [performance (성능)] > General Setting > 스크롤 쭉 > CDN
CDN Type은 S3 에서! 저장 누름
메뉴 [performance (성능)] > CDN > Configuration: Objects section > Access key ID and Secret key 입력
다운받은 .csv에 있어요
S3 입력 > 만든 S3 있어도 되고 아니면 그냥 새로 만들어도 됨.
Save all settings.
CDN에 Upload custom files하고 내보내기
5.3 Sample page 확인
이렇게 쉬운걸 삽질하는 나 한참 멀었구나
❌❌❌ 자원삭제는 꼭 하세요