시리즈:누구나 할 수 있는 웹서버 구축

잘 따라 하시면 어렵지 않아요

이 문서에는 독자적으로 연구한 내용이 들어갑니다. 다른 사람의 의견을 존중하면서 무례하지 않도록 작성해 주시고, 의견 충돌 시 토론 문서에서 토론해 주세요.

웹 서버에는 아주 다양한 종류가 있어요. 커뮤니티 사이트를 만들 수도 있고, 개인 쇼핑 사이트를 만들거나, 미디어 스트리밍 혹은 자료 업로드 사이트를 만들 수도 있고 심지어 리브레위키같은 위키 사이트를 만들 수도 있어요! 대부분 다른 사람들이 만든 엔진을 사용하여 간편하게 제작할 수도 있지만, 직접 HTML과 PHP를 공부하여 나만의 사이트를 만들 수도 있습니다.

※효율성과 안정성 등을 고려하여, 아래의 모든 절차는 유닉스 기반의 운영체제를 이미 설치했음을 대전제로 합니다. 일부 사항은 특정 OS별로 다소 차이가 존재할 수 있습니다.

1 서버 소프트웨어 설치[편집]

1.1 LAMP 서버[편집]

LAMP는 LinuxApacheMysqlPhp의 약자입니다.

개인의 취향에 따라 사용하는 MySQL를 MariaDB로 바꾸거나 Apache를 Nginx로 바꾸는 등 다양한 변주가 가능해요. 또한 라즈베리파이에서 사용할 수 있는 거의 모든 OS에서 정상 설치ㆍ작동이 가능한, 가장 범용성과 호환성이 높은 소프트웨어에요.

기능을 설치하기에 앞서, 사용하는 OS를 최신 버전으로 업데이트하는 것이 중요해요. 구 버전의 운영체제는 프로그램 설치 명령이 작동하지 않거나, 엉뚱한 버전으로 설치 시킬 수 있기 때문입니다.

우선 Terminal이란 프로그램을 실행시킵니다. 바탕화면을 우클릭하면 나오는 선택 목록 중 있는 경우가 많지만, 없다면 프로그램 > 시스템 도구 > 터미널 에서 찾을 수 있어요.

Ttl.png
터미널은 다른 말로 이라고 해요. 윈도우의 명령 프롬프트같은, 까만 화면에 하얀 글씨를 써서 컴퓨터에게 직접 명령을 내리는 도구에요. 척 보면 복잡해 보이지만 전혀 어렵지 않답니다.

우선 업데이트를 위해선

$ sudo apt update
#우분투 패키지 저장소의 업데이트 된 목록을 내려받는다.
$ sudo apt upgrade -y
#패키지 업데이트

를 각각 입력하면 됩니다.

SUDO구문을 입력했기 때문에 비밀번호를 입력하라는 창이 표시될 거에요. 이는 터미널에 내가 최고 사용자의 권리로 명령을 허가한다는 것을 증명하기 때문이에요.[1] 이 권한 체제는 유닉스 기반 OS들의 가장 단순하면서 핵심적인 보안 장치의 역할을 합니다.

업데이트가 모두 완료됐다는 문구가 표시되면 바로 아래의 명령어를 입력해주세요.

$ sudo apt-get install apache2 mysql-server php php-mysql libapache2-mod-php php-xml

명령이 길어졌지만 단순히 설치를 원하는 프로그램들의 이름을 나열해놓은 것 뿐이에요. 한 글자 한 글자 입력해도 되지만, 오타가 나올 가능성이 있으니 이 사이트에서 바로 복사 + 붙여넣기를 하면 편합니다.

215550581.jpg
한번에 6개의 프로그램을 설치했기 때문에, 상당히 오랜 시간이 소모될 거에요. MySQL을 설치하는 과정에서 비밀번호를 생성하라고 요구할 때를 제외하곤 까만 화면에 하얀 글씨들이 정신 없이 올라가는 걸 지켜보고 있을 필요는 없어요. 모든 과정은 알아서 해결됩니다. 설치가 모두 완료됐으면 라즈베리파이에 설치된 웹브라우저를 통해 0.0.0.0이나 localhost를 입력하세요.
Apache-it-works.png
위와 같이 기본 apache의 페이지가 표시됐다면 계속 진행하고, 아니라 한다면 내가 설치한 OS가 PHP7.0을 비롯한 최신 LAMP스택의 설치를 지원하는지 확인해보세요. OS의 문제가 아니라면 모든 프로그램을 다시 설치해보세요.

명령어 창으로 들어가

$ cd /var/www/html

을 입력해 웹 사이트의 루트 경로로 들어가보세요

pc@pc-desktop:/var/www/html$ ll
합계 12
drwxr-xr-x 2 root root 4096  2월  6 15:55 ./
drwxr-xr-x 4 root root 4096  2월  6 15:55 ../
-rw-r--r-- 1 root root   17  2월  6 15:54 index.html

경로에 index.html 파일이 있네요 apache 기본 페이지가 바로 index.html입니다.

$ sudo rm index.html

굳이 필요 없으니 이 명령어로 삭제해주세요.

이번엔 php가 설치되었는지 확인해 봅시다.

$ sudo nano /var/www/html/info.php

를 입력해서 php 버전 확인 페이지를 만들어 봅시다.

<?php phpinfo(); ?>

를 복사해서 Ctrl+Shift+V로 붙여넣기해주시고 Ctrl+X로 나가기 y로 저장하기

브라우저에 localhost/info.php를 입력하고 들어가면 됩니다.

Info php.png

여기서 php 관련 프로그램, 웹 서버 정보들을 확인할 수 있습니다.

이제 mysql을 설정해 봅시다.

$ sudo mysql_secure_installation

를 입력해서 mariadb 기본 보안 설정을 해봅시다.

Enter current password for root (enter for none):
root의 비밀번호를 입력, 비번이 없으므로 엔터!
Set root password? [Y/n]
root 비번 설정 Y나 엔터! 
New password:
비밀번호 입력
Re-enter new password:
한번 더
Remove anonymous users? [Y/n]
아래는 모두 엔터치면 된다.
Disallow root login remotely? [Y/n] 
---

아직 끝난게 아닙니다! mariadb 서버에 한번 직접 접속해봅시다.

$ sudo mysql -u root -p
/*Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 68
Server version: 10.3.25-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.*/

MariaDB [(none)]>

이런 새로운 CLI가 나옵니다.

여기서 직접 데이터베이스를 조작하거나 유저를 만들고 데이터베이스를 생성할 수 있어요.

하지만 대부분의 웹 서버는 자동으로 데이터베이스에 접근을 합니다. 취미로 웹 서버를 구축한다면 저 복잡한 SQL 구문을 외울 필요는 없는데 데이터베이스 관련 개발자를 꿈꾼다면 외워봐야 나쁠 것 없지요.

Yes check.svg 완료 LAMP 서버 스택의 설치가 끝났습니다.

아래는 워드프레스나 미디어위키에 사용되는 데이터베이스를 구축하는 방법입니다.

MariaDB [(none)]> CREATE USER '유저'@'localhost' IDENTIFIED BY '비밀번호 입력';
--Mariadb 유저 생성
MariaDB [(none)]> CREATE DATABASE 데이터베이스_이름;
--데이터베이스 생성, 이 데이터베이스에 웹사이트 관련 중요한 데이터가 저장됩니다.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON 데이터베이스_이름.* TO '유저'@'localhost' WITH GRANT OPTION;
--유저가 방금 생성된 데이터베이스에 접근할 권한을 부여합니다.


1.2 Node.js기반 서버[편집]

1.3 Caddy 서버[편집]

2 각주

  1. SUperuserDO
이 시리즈 문서는 리브레위키 1060676판에서 분기하였습니다.