๐ ์์
๐ ์๊ธฐ์๊ฐ
- ์ง์ ๋๊ธฐ : ์๋ฒ ์ง์์ด ๋ถ์กฑํ ๊ฒ ๊ฐ์์ ๋น ๋ฅธ ์๊ฐ ๋ด์ ์ต๋ํ ๋ง์ ๊ฑธ ๋ฐฐ์ฐ๊ณ ์ถ์ด์
- ์ป์ด๊ฐ๊ณ ์ถ์ ๊ฒ : ๋ฌด์๋ณด๋ค ํ์ ์ ๊ฒฝํ
๐ ์์ด์ค๋ธ๋ ์ดํน
- ์ข์ ๊ฐ๋ฐ์๋ ? ์ด๋ค ์ฌ๋์ ๋๋ฃ๋ก ๋ง์ดํ๋ฉด ์ข๊ฒ ๋์ง?
- ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์๊ฑด์ ์ ์ดํดํ๊ณ ์ด๋ฅผ ์ต๋ํ ์ข์ ์ฑ๋ฅ์ผ๋ก ๊ฐ๋ฐํ๋ ๋ฅ๋ ฅ์ ๊ฐ์ง ๊ฐ๋ฐ์. ๋๋ฃ๋ก๋ ๋ฌด์๋ณด๋ค ์์ฌ์ํต์ด ์ ๋๋ ๊ฐ๋ฐ์. ๋ชจ๋ฅด๋ ๊ฑธ ์จ๊ธฐ์ง ์๊ณ ์๋ ๊ฑด ์ฃผ๋ณ์๊ฒ ์ ์๋ ค์ฃผ๋ ๊ฐ๋ฐ์.
- ๋ค๋ฅธ ์๊ฒฌ : ํ์ต ๋ฅ๋ ฅ์ด ์ข์ ๊ฐ๋ฐ์. ์์ฌ์ํต. ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ. ํ ๋ด์ ์ปค๋ฎค๋์ผ์ด์ . ์๊ธฐ๊ฐ ๊ฐ๋ฐํ๊ณ ์๋ ๊ฒ์ ์ ์ดํดํ๊ณ ์์ด์ผํจ. ํผ๋๋ฐฑ์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์๋, ๋ถ์๊ธฐ์ ์ ์ ์ํ๋ ๋๋ฃ. ๋๋ ๊ฒ๊ณผ ์๋๋ ๊ฒ๋ ํ์ ํ ์ ์์ด์ผ ํจ. ๊ฒฐ๊ณผ๋ฌผ๋ง ์๊ฐํ์ง ์๊ณ ๋ ํจ์จ์ ์ด๊ฒ, ํด๋ฆฐ ์ฝ๋, ๋ฆฌํฉํ ๋ง ๋ฑ ๊ฐ์ ๋ฐฉ๋ฒ์ ๊ณ์ ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์.
๐ ์ฒซ ๋ฒ์งธ ์ง๋ฌธ. ์๋ฒ๋ ๊ฒ ๋ฌด์์ธ์ง. ์ ์๋ฒ๋ฅผ ์ ํํ๋์ง.
- ์๋ฒ๋ “์์ฒญ์ด ์์ ๋” ๊ทธ์ ๋ง๋ ์๋ต(๋์, ๋ฐ์ดํฐ, ์๋น์ค ๋ฑ)์ ์ ๋ฌํด์ฃผ๋ ๋งค๊ฐ์ฒด
- ์๋ฒ๋ฅผ ์ ํํ ์ด์ ๋ ์๋ ํ๋ก ํธ์๋๋ฅผ ํฌ๋งํ์ฌ ํ๋ก ํธ์๋ ์ง๋ฌด๋ก ๋ค์ด๊ฐ ์ธํด์์ ๋ฐฑ(๋ฐ์ดํฐ ์ ๊ทผ, ๊ด๋ฆฌ)์ชฝ์ ์ ํ๊ฒ ๋์์. ์๊ฐ๋ณด๋ค ์ฌ๋ฐ์๊ณ , ํ๋ก ํธ์๋๋ง ํ๊ธฐ์๋ ์ปดํจํฐ๊ณตํ์ ์ ๊ณตํ ์ ๊ณต์๋ก์ ์์ฌ์ด ๋๋์ด ๋ค์์.
- ๊ทธ๋์ ์๋ฒ๋ ? SERVE + -ER
- ์์ฒญ์ด ์์ ๋ ์๋ต์ ํด์ฃผ๋ ์กด์ฌ
๐ ๋ ๋ฒ์งธ ์ง๋ฌธ. ์ข์ ์๋ฒ์ ํน์ง.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ด์ฉ์ ๋ํด ์๋ต์ ์ฒ๋ฆฌํ๋ ์๋๊ฐ ๋น ๋ฅด๋ฉด ๋น ๋ฅผ ์๋ก, ์ ํํ๋ฉด ์ ํํ ์๋ก ์ข์ ์๋ฒ. ์๋ต ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ๋น์ทํ๋ค๋ฉด ๊ฐ๋ฒผ์ธ ์๋ก ์ข์ ์๋ฒ.
- ๋ค๋ฅธ ์๊ฒฌ : ์์ ์ฑ, ํธ์์ฑ(์ฌ์ฉ์์ ์ธก๋ฉด), ์ง๊ด์ฑ(๋จ์์ฑ), ๋ฌธ์ํ๊ฐ ์ ๋์ด ์๋ ์๋ฒ, ํธํ์ฑ(ํ๊ฒฝ์ด ๋ฐ๋์ด๋ ์ ์ํ๋ ์๋ฒ), ์ ์์ ํ, ๊ณ ๊ฐ ๋ง์กฑ, ๋ณด์
๐ ์๋ฒ๋
- ์ค์ํ์์ ์๋ฒ ์ฐพ๊ธฐ - ์ ๋จ์ง ์๋ฐ, 1์ธ ์๋น, ๋๊ท๋ชจ ํจ๋ฐ๋ฆฌ ๋ ์คํ ๋
- ์น ์๋ฒ : ์ ๋จ์ง ์๋ฐ๋ ๋น์ท (๋๊ฐ์ ํ์ด์ง๋ง ๋ณด์ฌ์ค๋ค.)
- WAS(์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ) : ์๋ฆฌ์ฌ → ๋ง์ ํธ๋ํฝ์ด ์์ ๋ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ ค์ง.
- Web Server / WAS / DataBase : ์จ์ดํฐ, ์๋ฆฌ์ฌ, ๋์ฅ๊ณ → ๊ฐ์ ๋ถ์
- Client : Android/iOS/Web | Server : Web Server(nginx, apache)/WAS(java, node.js, python)/DB(mysql, nosql(mongodb))
- ์น ์๋ฒ : nginx, apache
- WAS : java, node.js, python
- AMP = Apache + MySQL + PHP (WAMP : bitnami)
๐ ๊ณผ์ : ๋ฆฌ๋ ์ค ๊ณ์ด OS ์ธ์คํด์ค ์์ฑ, APM ์์ค ์ค์น
๐ Comment
- ๊ฐ์๋จธ์ ์ ์๋ก์ด ์น ์๋ฒ๋ฅผ ๊ตฌ์ถ
- ๊ฐ์๋จธ์ ์ ์ฐ๋ถํฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ , APM๊น์ง ์๋์ผ๋ก ์ค์นํ๊ณ ์ ํ๋ค.
- APM์ ์๋ฒ ์ด์ ์ ํ์ํ ํ๋ก๊ทธ๋จ ์กฐํฉ ์ค ํ๋๋ก Apache / PHP / MySQL์ ์ฝ์์ด๋ฉฐ, LINUX์ APM์ ์ค์นํ๋ค ํ์ฌ LAMP๋ผ๊ณ ํ๋ค.
- Apache : ์น์๋ฒ
- PHP : ์๋ฒ ํ๋ก๊ทธ๋จ
- MySQL : ๋ฐ์ดํฐ๋ฒ ์ด์ค
- APM ๊ตฌ๋๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์น๋ธ๋ผ์ฐ์ ์์ URL์ ์ ๋ ฅํ๋ฉด, 80๋ฒ ํฌํธ๋ฅผ ํตํด ์๋ฒ์ Requestํ๋ค. ์๋ฒ๋ Response๋ก ํด๋ผ์ด์ธํธ์๊ฒ HTML, CSS ๋ฑ์ ์น์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๊ฒ ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ๊ฐ์ ์๋น์ค๋ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์๋ฒ์ Request
- ์๋ฒ๋ ํด๋น๋๋ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ ์ํด PHP์๊ฒ ์คํฌ๋ฆฝํธ ์คํ์ Request
- ์๋ฒ์์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์
PHP๋ ๋ฏธ๋ฆฌ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ํตํด MySQL์ Request(query)
MySQL์ ์ง์๋ฌธ(query)์ ๋ํ ๊ฒฐ๊ณผ๋ฐ์ดํฐ๋ฅผ PHP์ Response๋ก ๋๊ฒจ์ค
PHP๋ ๋ฐ์ ๊ฒฐ๊ณผ๋ฐ์ดํฐ์, ์ฝ๋๋ฅผ ๋ชจ๋ HTML๋ก ๋ณ๊ฒฝ ํ ์๋ฒ์ Response
์๋ฒ๋ ๋ฐ์ HTMLํ์ผ์ ํด๋ผ์ด์ธํธ ์ธก ์น ๋ธ๋ผ์ฐ์ ์ Response
๐ ์ค์น ๊ณผ์
- vmware ์ค์น
- vmware์ Ubuntu 22.04 ์ค์น
- ์ฐธ๊ณ ์ฌ์ดํธ : https://mainia.tistory.com/2379, https://mslilsunshine.tistory.com/159
- apache ์ค์น
- /usr/local/์ ์ค์นํ๋ ๊ฒ์ด ๊ด๋ก
### apr, apr-util
wget <http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz> #(apr์ฃผ์)
wget <http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz> #(apr-util์ฃผ์)
tar xvfz apr-1.7.0.tar.gz #์ด ์์ค๋ก apr ํ์ผ์ ์์ถ์ ํด์ ํด์ค๋ค.
tar xvfz apr-util-1.6.1.tar.gz #์ด ์์ค๋ก apr-util ํ์ผ ์์ถ์ ํด์ ํด์ค๋ค.
### apr
cd usr/local/apr-1.7.0 #์ฐจ๋ก๋ก ์ด ์์ค๋ค์ ์ค์นํด์ค๋ค
./configure --prefix=/usr/local/apr
make
make install
### apr-util
$ cd usr/local/apr-util-1.6.1
$ ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
$ make
$ make install
### pcre
cd usr/local
wget #์์๋๋ก ์ค์นํด์ค๋ค
tar xvfz pcre-8.43.tar.gz
cd usr/local/pcre-8.43
./configure --prefix=/usr/local/pcre
make
make install
### apache source
cd /usr/local
wget <http://apache.tt.co.kr//httpd/httpd-2.4.52.tar.gz>
tar xvfz httpd-2.4.52.tar.gz
### configure, make, make install
cd httpd-2.4.52
./configure --prefix=/usr/local/apache2.4 \\
--enable-module=so --enable-rewrite --enable-so \\
--with-apr=/usr/local/apr \\
--with-apr-util=/usr/local/apr-util \\
--with-pcre=/usr/local/pcre \\
--enable-mods-shared=all
make
make install
- mysql ์ค์น
### ์์กด์ฑ ํจํค์ง
sudo apt-get update
sudo apt-get install cmake
sudo apt-get install libssl-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libncurses5-dev libncursesw5-dev
### mysql
sudo wget <https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19.tar.gz>
sudo tar xvfz mysql-8.0.19.tar.gz
sudo cd /usr/local/mysql-8.0.19
rm -f CMakeCache.txt
mkdir steady01 #๋จผ์ ์์๋ก ํด๋๋ฅผ ์์ฑํ๊ณ ๊ทธ๊ณณ์ ์ค์นํด์ค๋ค
cd steady01
cmake \\
..\\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\
-DMYSQL_DATADIR=/usr/local/mysql/data \\
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \\
-DMYSQL_TCP_PORT=3306 \\
-DDEFAULT_CHARSET=utf8 \\
-DDEFAULT_COLLATION=utf8_general_ci \\
-DSYSCONFDIR=/etc \\
-DWITH_EXTRA_CHARSETS=all \\
-DWITH_INNOBASE_STORAGE_ENGINE=1 \\
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\
-DDOWNLOAD_BOOST=1 \\
-DWITH_BOOST=/usr/local/mysql/boost
- php ์ค์น (apache์ mysql ์ค์น ํ)
### ์์กด์ฑ ํจํค์ง
sudo apt-get install libxml2-dev #xml2 ์ฐธ์กฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
sudo apt-get install libjpeg-dev #jpeg ์ฐธ์กฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
sudo apt-get install libpng-dev #png ์ฐธ์กฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (PNG ๊ทธ๋ฆผ์ ๋ค๋ฃจ๋ ๋ฐ ํ์ํ C๋ช
๋ น์ด๋ฅผ ํฌํจ ํ๊ณ ์๋ค.)
### php
cd /usr/local #๋ก ์ด๋
sudo wget <https://www.php.net/distributions/php-8.1.2.tar.gz>
sudo tar xvfz php-8.1.2.tar.gz
sudo cd php-7.4.1
sudo ./configure \\
--with-apxs2=/usr/local/apache2.4/bin/apxs \\
--enable-mysqlnd \\
--with-mysql-sock=/usr/local/mysql/mysql.sock \\
--with-mysqli=/usr/local/mysql/bin/mysql_config \\
--with-pdo-mysql=mysqlnd \\
--with-imap-ssl \\
--with-iconv \\
--enable-gd \\
--with-jpeg \\
--with-libxml \\
--with-openssl
- Apache์ PHP ์ฐ๋
sudo vi phpinfo.php <?php phpinfo(); ?>
- ์ฐธ๊ณ ์ฌ์ดํธ : https://mslilsunshine.tistory.com/159, https://mainia.tistory.com/2379
๐ ๋ฒ์
- VM ํ๊ฒฝ : VirtualBox 7.0.2
- OS : Ubuntu 22.04.1 LTS
- Apache 2.4.52
- PHP 8.1.2
- MySQL 8.2.30
๋ฐ์ํ