강의 내용 정리랑 과제 내용을 한번에 적으려고 했는데, 생각보다 가상머신과 리눅스 설치하는데 꽤 많은 내용을 적었다. 설치 시간은 곱배기로... 이번 글에는 본격적인 과제 진행 내용이다.
📖 강의 주제
- OT & 서버 개요
서버의 큰 개념 및 Linux 서버 환경 구축 준비
📝 목표
- APM 설치
- VM 설치 (Virtual Box)
- Linux 설치 (Ubuntu 20.04)
- 웹 서버 설치 (Apache)
- Database 설치 (MySQL)
- Backend Language 설치 (PHP)
▶️ 개발 일지
3. Linux 설치
- 지난번에 설치는 다 했는데, Virtual Box에서 Ubuntu를 실행하면 화면 깜빡임이 너무 심했고, 렉도 많이 걸렸다. 정확한 원인은 잘 모르겠지만 디스플레이의 3D 가속엔진과 시스템 프로세서 추가 할당을 하니까 증상은 좀 나아졌다. 게스트 확장은 효과가 있는지 솔직히 잘 모르겠다.
- 시스템 프로세서는 최대 권장 할당으로 설정했고
- 디스플레이의 3D 가속사용을 체크했다. 참고로 그래픽 컨트롤러가 VMSVGA일 때만 3D 가속이 가능해서, Ubuntu OS 설치 후 바꾸는 것을 추천한다.
- 게스트 확장 방법은 다른 블로그[2]에서 확인할 수 있다.
4. Linux 쉘 사용
1) Linux 쉘이란?
- 명령어를 입력하여 사용자가 프로그램을 실행시킬 수 있는 다리 역할을 하는 것이다. 좀 더 엄연히 말하면 Linux 운영체제의 심장인 커널(Kernel)에게 사용자의 명령을 해석해서 전달하는 역할
- CLI 환경으로 동작하며 자체 프로그래밍 기능이 있다.
2) 쉘의 종류
- sh, bash, csh, tcsh, zsh 등
- 요즘 주로 쓰이는 쉘은 zsh
3) 쉘 주요 명령어
- mkdir : 디렉토리 생성
cd : 디렉토리 이동
vim : vim 에디터 실행
wget : web get의 약자로 웹에서 파일 불러오기
rm : 파일 및 디렉토리 삭제
4) 소스 설치
- 컴파일 설치, 수동 설치와 동일한 의미로 서버에서 소스코드를 직접 다운로드 받고 실행파일로 컴파- 일해서 직접 설치하는 것
- 반대로 패키지 설치가 있으며, 실제로 개발할 때는 패키지 설치를 주로 하게 된다
- 소스 설치는 관례적으로 /usr/local 위치에 설치한다
5. 웹 서버 설치
1) 웹 서버란?
- 클라이언트로부터 요청을 받아 응답을 주는 하드웨어/소프트웨어
2) 웹 서버 vs 웹 어플리케이션 서버(WAS)
- 웹 서버는 HTML같은 정적인 데이터를 클라이언트에게 전송.
웹 어플리케이션 서버는 클라이언트가 요청한 내용에 따라 데이터를 검색 및 변환하여 전송
- 유명한 제품으로는 아파치와 아파치 톰캣이 있다.
이 둘의 이름때문에 헷갈린다 😨
3) Ubuntu에 Apache 설치 (블로그 참고[3])
$ apt install make
$ apt install build-essential
$ apt install gcc
$ apt install libexpat1-dev
$ apt install g++
$ apt install net-tools
$ apt install curl
- 소스파일 압축해제 및 빌드
(1) apr 설치
(2) apr-util 설치
(3) pcre 설치
(4) apache 설치
- 서버 실행
웹 브라우저에 http://127.0.0.1 이나 localhost를 입력하고 It works! 가 나오면 된다
6. Database 설치
1) DB란?
- 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터의 모임
2) DBMS란?
- 데이터베이스를 관리하고 운영하는 소프트웨어
- 유형에 따라 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지항형(Object-Oriented) 등이 있다
- 주로 사용하는 관계형 데이터베이스로는 Oracle, SQL Server, MySQL 등이 있다
3) Ubuntu에 MySQL 설치 (블로그 참고[4])
$ apt install cmake
$ apt install libssl-dev
$ apt install libboost-all-dev
$ apt install libncurses5-dev libncursesw5-dev
- 소스파일 압축해제 및 빌드
(1) mysql 소스파일 다운로드
(2) 압축 해제 후 mysql 폴더 내부에 임의 디렉토리 생성
참고로 빌드하는데만 2시간 정도 걸렸다...
$ mkdir mysql_test
$ cd mysql_test
$ 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
- MySQL DB 초기화
(1) mysql 그룹 및 유저 생성
(2) 디렉토리 생성 후 권한 설정
(3) 기본 DB 생성
- MySQL 서버 실행
$ mysql -u root -p
$ ps -ef | grep mysqld
아래와 같이 mysql을 실행했을 때 MySQL 모니터가 나오면 된다
7. Backend Language (PHP) 설치
1) Backend Language란?
- 서버를 개발하는 백엔드 분야에서 주로 쓰이는 프로그래밍 언어
- 종류가 다양하며 각 언어와 프레임워크마다 특징이 다름
- Java === Spring
JavaScript === Node.js (Express)
Python === Django
PHP === Laravel
2) Ubuntu에 PHP 설치 (블로그 참고[5])
$ apt install libjpeg-dev
$ apt install libpng-dev
$ apt install libsqlite3-dev
- 소스파일 압축해제 및 PHP 설치
(1) 소스파일 다운로드
(2) php 환경설정
$ cd php-8.1.0
$ ./configure \
--with-apxs2=/usr/local/apache2.4/bin/apxs \
--enable-mysqlnd \
--with-mysql-sock=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-imap-ssl \
--with-iconv \
--enable-gd \
--with-jpeg \
--with-libxml \
--with-openssl
- Apache, PHP 연동
(1)아파치 설정 파일인 httpd.conf 파일에서 mime_module 수정
(2) php.ini 파일을 /usr/local/lib에 복사
- 테스트 파일 작성
(1) Apache의 웹 콘텐츠 디렉토리인 htdocs로 이동
$ cd apache2.4/htdocs
$ vim phpinfo.php
아래와 같이 vim 에디터를 이용해서 php 테스트 파일 작성 후 웹 브라우저에서 실행
<?php
phpinfo();
?>
- 실행화면
& 링크모음
[1] : 라이징캠프
[2] : Virtual Box에서 게스트 확장 추가
[3] : APM 소스 설치 - Apache
[4] : APM 소스 설치 - MySQL
[5] : APM 소스 설치 - PHP