ubuntu, nginx, APM ์๋ฒ ๊ตฌ์ถ
AWS์์ EC2 ์์ฑ ํ nginx, Apache, php, MySql์ ์ค์นํ์ฌ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ๋๋ฉ์ธ๊ณผ HTTPS๋ฅผ ์ ์ฉํด๋ณด์.
์๋ฒ ๊ตฌ์ถ ๊ณผ์
์ด ํฌ์คํ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋๋ค.
- EC2์ nginx ์ค์น ํ Apache, php๋ฅผ ์ค์นํ์ฌ ์ธ๋ถ์์ ์ ์
- FileZilla์์ SFTP ์ ์
- MySql ์ค์น ํ ์ธ๋ถ์์ ์ ์ํ๊ธฐ (MySQL Workbench)
- phpMyAdmin ์ค์น ํ ํ์ธ
- Domain ์ ์ฉ (๊ฐ๋น์ ์ด์ฉ)
- HTTPS ์ ์ฉ (let's encrypt ์ฌ์ฉ)
EC2์ nginx ์ค์น ํ Apache, php๋ฅผ ์ค์นํ์ฌ ์ธ๋ถ์์ ์ ์
EC2 ์ธ์คํด์ค ์์ฑ
์์ธ ๋ฆฌ์ (ap-northeast-2
)์์ ์์ํ๋ค.
AWS์ ์ ์ํ์ฌ EC2๋ก ๋ค์ด๊ฐ์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ ๋ค.
์ธ์คํด์ค์ OS๋ Ubuntu 20.04 LTS๋ก ํ๋ฆฌ ํฐ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ t2.micro๋ก ์ค์นํ์๋ค.
๊ฐ ๋จ๊ณ๋ณ ์ค์ ์ default๋ก ๋๊ธฐ๋ค๊ฐ ์คํ ๋ฆฌ์ง ๋ถ๋ถ์์ ํ๋ฆฌ ํฐ์ด๋ ์ต๋ 30GB๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํด ์ฃผ๋ฏ๋ก ์ฉ๋์ 30์ผ๋ก ๊ณ ์น๋ค.
์ธ์คํด์ค์ ์ ์ํ ๋ ํค ํ์ด ํ์ผ๋ก ์ ์ํ๋๋ฐ, ์ด ํ์ผ์ด ๋
ธ์ถ๋๋ฉด ์ธ์คํด์ค๋ฅผ ํ์ธ์ด ๋ง์๋๋ก ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ ํค ํ์ด๋ฅผ ์์ฑํ๊ณ ์์ ํ ์ฅ์์ ์ ์ฅํด ์ค๋ค.
์ธ๋ฐ์ด๋ ๊ท์น ์ค์
์๊ฐ์ด ์ด๋ ์ ๋ ์ง๋๊ณ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ์คํ ์ค์ด๋ผ๋ ํ์๊ฐ ๋์ด์์ผ๋ฉด, ์ ์ํ๊ธฐ ์ ์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์ค์ ํด์ผ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด ์ฃผ์๋ค.
SSH ํ๋กํ ์ฝ
์ธ 22๋ฒ
ํฌํธ์ ๋ฌด์กฐ๊ฑด ๋ค๋ฅธ ์ฌ๋์ด ์ ์ํ๋ฉด ์ ๋๋ฏ๋ก ๋ง์๋๊ณ , ํ์ฌ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ์ ์ํ๊ธฐ ์ํ 80๋ฒ
๊ณผ ์ถํ์ ์ค์นํ MySQL ์ ์
์ ์ํ 3306๋ฒ
, HTTPS ์ ์
์ ์ํ 443๋ฒ
์ IP์ ๋ฌด๊ดํ๊ฒ ์ ์ํ ์ ์๋๋ก ์ธ๋ฐ์ด๋ ๊ท์น์ ์ถ๊ฐํด ์ฃผ์๋ค.
Mac OS์ Terminal๋ก ์ ์
Mac OS ๊ธฐ์ค์ผ๋ก ์ธ์คํด์ค์ ์ ์ํ๋ค.
$ cd (pem ํ์ผ์ด ์๋ ๊ฒฝ๋ก)
ํฐ๋ฏธ๋์ ํจ ๋ค EC2๋ฅผ ์ค์นํ ๋ ์ ์ฅํด๋ pem ํ์ผ์ด ์๋ ์์น๋ก ์ด๋ํ๋ค.
$ sudo chmod 400 (์ ์ฅํ pem ํ์ผ)
chmod 400
์ผ๋ก ํ์ผ์ ๊ถํ์ ์์ ํด ์ค๋ค.
$ ssh -i (pem ํ์ผ) ubuntu@(์ธ์คํด์ค์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์)
์๋ฅผ ๋ค์ด, ssh -i vividswan.pem ubuntu@XX.XX.XXX.XXX
์ ๊ฐ์ด ์
๋ ฅํด ์ฃผ๊ณ ์ ์์ ํ๋ค.
์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ ์ฐ๊ฒฐ์ ์งํํ๊ฒ ๋๋ ๋ฌผ์์ yes๋ฅผ ์ ๋ ฅํ๋ฉด ์ ์์ด ์งํ๋๋ค.
์์ ๊ฐ์ด ์ ์์ด ์๋ฃ๋์๋ค.
$ sudo su
sudo
๊ฐ ํ์ํ ๋ช
๋ น์ด๋ค์ด ๋ง์ด ํ์ํ๋ฏ๋ก ๋ฏธ๋ฆฌ ์
๋ ฅํ์ฌ ๊ถํ์ ๋ณ๊ฒฝํ๋ค.
nginx, APM ๊ด๋ จ ํจํค์ง ์ค์น
sudo su
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ ์ํ๋ก ์งํํ๋ค.
$ apt-get update
ํจํค์ง ์ ๋ฐ์ดํธ๋ฅผ ์ฐ์ ์คํํด ์ค๋ค.
$ apt-get install nginx
$ apt-get install mysql-server
$ apt-get install php-fpm php-mysql
mySql์ ์ฐ์ ์ค์นํด๋๊ณ ์ถํ์ ์ค์ ํ๋ค.
nginx๋ก php ํ์ผ ๋์ฐ๊ธฐ
ํจํค์ง๋ง ์ค์นํ ์ํ๋ก pc์์ ์ธ์คํด์ค์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์๋ก ์ ์ํด๋ณด์.
$ service nginx start
nginx๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์์ ํ์ธํ ์ ์๋ค.
์ด์ nginx ์ค์ ์ ๋ณ๊ฒฝํ๊ณ php ํ์ผ์ ๋์๋ณด์.
$ cd /var/www/html
nginx๊ฐ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ก ์ด๋ํ๋ค.
$ vim phpinfo.php
ํ
์คํธ์ฉ php ํ์ผ์ ๋ง๋ค๊ธฐ ์ํด vim ํธ์ง๊ธฐ๋ก ๋ง๋ค๊ณ ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅ ํ ์ ์ฅ(!wq
) ํด์ค๋ค.
<?php
phpinfo();
?>
$ cd /etc/nginx/sites-available
nginx์ default ์ค์ ํ์ผ์ด ์๋ ๊ณณ์ผ๋ก ์ด๋ํด ์ค๋ค.
$ vim default
์ค์ ํ์ผ์ vim ํธ์ง๊ธฐ๋ก ์ด์ด์ฃผ๊ณ ๋ค์์ ์ฃผ์ ์ฒ๋ฆฌ๋ฅผ ํด์ ํด ์ค๋ค.
์๊ฐ default ์ํ์ด๋ค.
์ด๋ ๊ฒ ํด์ ํด ์ฃผ๋ฉด ๋๊ณ , ํน์ ์ด ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋๋ค๋ฉด fastcgi_pass
๋ถ๋ถ์ php-fpm ๋ฒ์ ์ ํ์ธํด ์ฃผ์.
์์ฒ๋ผ index์ ๋ฐ๋ก ์์ phpinfo.php๋ฅผ ์ถ๊ฐํ์ฌ ์ฒซ ํ์ด์ง์ ์ ์ ์ ๋์ค๋ default ํ์ด์ง๋ฅผ ๊ธฐ์กด์ index ํ์ผ์ด ์๋ phpinfo.php ํ์ผ์ด ๋์ฌ ์ ์๊ฒ ์ค์ ํด ์ค๋ค.
$ service nginx restart
๋ค์ pc์์ ์ธ์คํด์ค์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์๋ก ์ ์ํด๋ณด์.
phpinfo() ํ๋ฉด์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.
FileZilla์์ SFTP ์ ์
FileZilla๋ฅผ ์ค์น ํ ๊ฐ์ฅ ์ผ์ชฝ ์๋จ์ ์ฌ์ดํธ ๊ด๋ฆฌ์ ๋ฒํผ์ ํด๋ฆญํด ์ฃผ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ ์ ์ค์ ์ ์ ๋ ฅํด ์ค๋ค.
ํธ์คํธ(H) ๋์๋ ์ธ์คํด์ค์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์๋ฅผ ์
๋ ฅํด ์ค๋ค.
ํค ํ์ผ์๋ ์์ ๋ค์ด๋ก๋ํ pem ํ์ผ์ ์ฐพ์์ ์ ํํด ์ค๋ค.
๋ฐฐ๊ฒฝ์์ ์ ์ธํ ๋๋จธ์ง๋ ์ ๋๊ฐ์ด ์
๋ ฅํด ์ฃผ์.
๋ฐฐ๊ฒฝ์์ ์ทจํฅ๊ป ๊ณจ๋ผ์ฃผ๋ฉด ๋๋ค.
์
๋ ฅ์ ์ ํํ ํ๊ณ ์ฐ๊ฒฐํ๋ฉด ์์ ๊ฐ์ด SFTP ํ๋กํ ์ฝ
๋ก PC์ ๋ฆฌ๋
์ค ์๋ฒ ๊ฐ์ ํ์ผ์ ์๋ก ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๊ฒฝ์ด ๋ง๋ค์ด์ง๋ค.
MySql ์ค์น ํ ์ธ๋ถ์์ ์ ์ํ๊ธฐ (MySQL Workbench)
๋ณด์ ์ค์
$ apt-get install mysql-server
์์์ ์์ ๋ช
๋ น์ด๋ก mysql์ ํจํค์ง ์ค์นํด ์ฃผ์๋ค.
mysql์์๋ ์ฒ์์ ๋ณด์ ์ค์ ํด ์ฃผ๋ ๊ฒ์ ๊ถ์ฅํ๊ณ ์์ผ๋ฏ๋ก ๊ทธ์ ๊ดํ ์ค์ ์ ์ฐ์ ํด ์ฃผ์
$ mysql_secure_installation
๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์.
๋์๋ฅผ ํ ๋ค ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํด ์ฃผ์.
๊ทธ ํ MySql์ ์ ์ํด๋ณด์.
$ mysql -u root -p
๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฐฉ๊ธ ์ค์ ํ password๋ฅผ ์ ๋ ฅํ๋ผ๊ณ ๋์ค๊ณ ๊ทธ ๋ค ์ ์์ด ๋๋ค.
์ธ๋ถ์์ ์ ์ํ ์ ์๋๋ก ์ค์
์ฐ์ EC2์ ์ธ์คํด์ค ์
์ฅ์์ ์์์ ์ธ๋ฐ์ด๋ ๊ท์น์ ๋ฏธ๋ฆฌ ์ค์ ํ๋ค์ํผ, 3306 ํฌํธ๋ก ๋ค๋ฅธ IP๊ฐ ์ ์ํ ์ ์๋๋ก ์ค์ ๋์ด ์๋ค.
MySql ์
์ฅ์์ ์ธ๋ถ IP์์ ์ ์ํ ์ ์๋๋ก ์ค์ ํด๋ณด์.
$ cd /etc/mysql/mysql.conf.d
$ vim mysqld.cnf
mySql ๋ฐ๋ชฌ์ ์ค์ ํ ์ ์๋๋ก vim ํธ์ง๊ธฐ๋ฅผ ์ฐ๋ค.
์์ ๊ฐ์ด bind-adress๋ฅผ 0.0.0.0์ผ๋ก ์์ ํด ์ค ๋ค ์ ์ฅ(!wq
) ํ๋ค.
์ ๊ณ์ ๊ถํ ์ฃผ๊ธฐ
์ธ๋ถ์์ ์ ์ํ ๋ root ๊ณ์ ์ผ๋ก ์ ์ํ๋ ๊ฒ์ด ๋ณด์์ ์ข์ง ์์ผ๋ฏ๋ก ๊ณ์ ์ ์๋ก ๋ง๋ค๊ณ ๊ถํ์ ์ฃผ์.
mysql> CREATE USER '๊ณ์ ์์ด๋'@'%' IDENTIFIED BY '๋ฑ๋กํ ๋น๋ฐ๋ฒํธ';
mysql> GRANT ALL PRIVILEGES ON . TO 'vividswan'@'%';
์ธ๋ถ Ip์์ ์ ์ํ ์ ์๋ ๊ณ์ ์ ๋ง๋ ๋ค ์ธ๋ถ Ip์ ๋ชจ๋ Database์ ๋ํ ๊ถํ์ ์ฃผ๋ ๋ช ๋ น์ด์ด๋ค.
์ ์ ํ์ธ
Hostname
์ ์ธ์คํด์ค์ Ip ์ฃผ์๋ฅผ ์
๋ ฅํ๋ค.Username
์ ๊ถํ์ ์ฃผ์๋ ๊ณ์ Id๋ฅผ ์
๋ ฅํ๊ณ ํ๋จ์ Store in Keychain ...
์ ํด๋ฆญํด ์ค ๋ค ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅ ํ Test Connection
์ ๋๋ฅธ๋ค.
์
๋ ฅ ๊ฐ์ด ์ ํจํ๋ค๋ฉด ํ
์คํธ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ ๊ฒ์ด๊ณ ๊ทธ๋๋ก ์ ์์ ํ ์ ์๋ค.
phpMyAdmin ์ค์น ํ ํ์ธ
ํจํค์ง ์ค์น
$ apt install phpmyadmin
์ ๋ช ๋ น์ด๋ก ํจํค์ง ์ค์นํด ์ค๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ password ์ค์ ๋ ํด์ฃผ๊ณ , ์์ ๊ฒฝ์ฐ์ nginx๋ฅผ ์ํ ์ง์์ด ๋ฐ๋ก ์์ผ๋ฏ๋ก ๋ ๋ค ๊ณต๋์ผ๋ก ์ค์ ํ ๋ค Ok๋ฅผ ๋๋ฌ์ค๋ค.
๋ช ๋ น์ด ์ ๋ ฅ
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์์ ๋ช ๋ น์ด๋ค์ ์ ๋ ฅํ๋ค.
$ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
$ sudo chmod 775 -R /usr/share/phpmyadmin/
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ์ phpMyAdmin ์ธํฐํ์ด์ค์ ์ก์ธ์คํ ์ ์๊ฒ ํด์ฃผ๊ณ ๊ถํ์ ์ค์ ํด ์ค๋ค.
์ฌ๋ณผ๋ฆญ ๋งํฌ(symbolic link) ๋?
- ๋งํฌ๋ฅผ ์ฐ๊ฒฐํ์ฌ ์๋ณธ ํ์ผ์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ด๋ ๋งํฌ (์๋์ฐ์ ๋ฐ๋ก๊ฐ๊ธฐ์ฒ๋ผ)
์ธ์คํด์ค์ Ip ๋ค์ /phpmyadmin
์ ๋ถ์ฌ์ ์ ์ํด๋ณด์.
๋ก๊ทธ์ธ
๋ก๊ทธ์ธ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
Domain ์ ์ฉ (๊ฐ๋น์ ์ด์ฉ)
๊ฐ๋น์ ์ ์
๊ฐ๋น์ ์ ์ ํ ๋ก๊ทธ์ธ์ ํ๊ณ ์ค์์ url์ ํ์ํด๋ ์ฐฝ์ ์ํ๋ ๋๋ฉ์ธ์ ์ ๋ ฅํ๋ค.
~.shop์ผ๋ก ๋๋๋ ๋๋ฉ์ธ์ด ๊ฐ๊ฒฉ์ด ์ ๋ ดํ๋ฏ๋ก ํด๋น ๋๋ฉ์ธ์ผ๋ก ์งํํ๋ค.
๋๋ฉ์ธ ์ค์
DNS ๊ด๋ฆฌ๋ก ๋ค์ด๊ฐ๋ฉด ํด๋น ํ๋ฉด์ด ๋์ค๋ฉฐ, ์ฌ๊ธฐ์ ๋ ์ฝ๋ ์์
์ ํด๋ฆญํด ์ค๋ค.
๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์ค๋ฉฐ ํ๋ฉด๊ณผ ๊ฐ์ด ์ค์ ๊ฐ์ ์
๋ ฅํด ์ฃผ๊ณ , ๊ฐ/์์น
ํญ๋ชฉ์ ๋๋ฉ์ธ๊ณผ ์ฐ๊ฒฐ๋๊ธฐ ์ํ๋ IP ์ฃผ์๋ฅผ ์
๋ ฅํด ์ค๋ค.
์ด๋ ์ ๋ ์๊ฐ์ด ์ง๋ ๋ค ํด๋น ๋๋ฉ์ธ์ผ๋ก ์ ์๋๋ฉด Ip ์ฃผ์๋ฅผ ์ณค์ ๋์ ๋์ผํ๊ฒ ์ ์๋๋ค.
HTTPS ์ ์ฉ (let's encrypt ์ฌ์ฉ)
certbot
์ผ๋ก let's encrypt
๋ฅผ ์๋ํํ์ฌ HTTPS๋ฅผ ์ ์ฉํด๋ณด์.
์ ์ฅ์ ์ค์
$ apt-get update
$ apt-get install software-properties-common
$ add-apt-repository universe
$ add-apt-repository ppa:certbot/certbot
$ apt-get update
ํจํค์ง ์ค์น
$ apt-get update
$ apt-get install software-properties-common
$ add-apt-repository universe
$ apt-get update
certbot ์ค์น
$ apt-get install certbot python3-certbot-nginx
SSL ์ธ์ฆ ํ๋
$ sudo certbot --nginx -d example.com -d www.example.com
์ด๋ฐ ์์ผ๋ก -d ์ต์
์ผ๋ก ์ถ๊ฐํ๋ ๋ฐฉ์์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค.
vividstudy.shop
์ด๋ผ๋ ๋๋ฉ์ธ์ ๊ธฐ์ค์ผ๋ก ์งํํ๋ค.
$ certbot --nginx -d vividstudy.shop
ํด๋น ๋ช ๋ น์ด๋ฅผ ๋๋ฉ์ธ์ ๋ง๊ฒ ์ ๋ ฅํ๋ค.
์ธ์ฆ์ด ์งํ๋๋ฉด ๋ฆฌ๋ค์ด๋ ์
์ ๋ํ ์ค์ ์ ๋ฌป๋๋ค.
ํด๋ผ์ด์ธํธ์์ http๋ก ์ ์ํด๋ https๋ก ์ ์๋๊ฒ ํ๋ ๊ฒ์ ์ํ๋ฏ๋ก 2๋ฒ์ ์ ํํ๋ค.
์ธ์ฆ์ด ์๋ฃ๋์๋ค.
$ vim /etc/nginx/sites-available/default
nginx์ ์ค์ ์๋ Cerbot์ ๊ด๋ จ๋ ๋ด์ฉ๋ค์ด ์ถ๊ฐ๋์์์ ํ์ธํ ์ ์๋ค.
์ ์
http๋ก ์ ์ํ๋ฉด ๋ฆฌ๋ค์ด๋ ์ ๋๊ณ , https๋ก ์ ์ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Deploy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Sub Domain์ HTTPS ์ธ์ฆ๋ฐ๊ธฐ (0) | 2022.03.17 |
---|---|
AWS RDS๋ก DB ๊ตฌ์ถ(MySQL) (0) | 2022.03.17 |
Sub Domain, Redirection ์ ์ฉ (0) | 2022.03.17 |
Bitnami๋ก MAPM ๊ตฌํ ํ ํฌํธํฌ์๋ฉํ๊ธฐ (0) | 2022.03.17 |
์ฐ๋ถํฌ์ Nginx ์ค์น & ํฌํธํฌ์๋ฉ (0) | 2022.03.15 |