시리즈:누구나 할 수 있는 리눅스 서버

이제 나도 서버 관리자

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

※효율성과 안정성 등을 고려하여, 아래의 모든 절차는 리눅스를 기반으로 한 메이저 운영체제(페도라, 우분투 등)를 이미 설치했음을 대전제로 합니다. 일부 사항은 특정 OS별로 다소 차이가 존재할 수 있습니다.

웹서버[편집 | 원본 편집]

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

아파치 mysql php[편집 | 원본 편집]

우분투에서 설치[편집 | 원본 편집]

LAMP는 LinuxApacheMysqlPhp의 약자입니다.

개인의 취향에 따라 사용하는 MySQL를 MariaDB, PostgreSQL, MS-SQL 등으로 바꾸거나 Apache를 Nginx로 바꾸는 등 다양한 변주가 가능합니다. 또한 거의 모든 리눅스 OS에서 정상 설치ㆍ작동이 가능한, 가장 범용성과 호환성이 높은 소프트웨어에요. 우리가 사용하는 리브레 위키가 LAMP[1]로 되어 있습니다.

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

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

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

우선 업데이트를 위해선

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

를 각각 입력하면 됩니다.

sudo 명령어 입력했기 때문에 비밀번호를 입력하라는 창이 표시될 거에요. 이는 터미널에 내가 최고 사용자의 권리로 명령을 허가한다는 것을 증명하기 때문이에요.[2] 윈도우에서 권한 승인 창이 뜨는 것도 같은 겁니다. 이 권한 체제는 유닉스 기반 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가 PHP8.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 구문을 외울 필요는 없는데 데이터베이스 관련 개발자를 꿈꾼다면 외워봐야 나쁠 것 없지요.

PHP는 아까 아파치랑 같이 설치해서 추가 과정이 필요 없습니다. 아래에는 필요한 추가 설정을 나열했습니다.

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

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

아까처럼 아래를 입력해 주세요.

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


우선 기초 웹 서버 설치법이 소개되었습니다. apache2 세부 설정, 속도가 더 빠른 php-fpm 설치, 설정법과 php, mysql 최적화 등은 추후 작성할 예정입니다.

apache 설정[편집 | 원본 편집]
php 설정[편집 | 원본 편집]
mysql 설정[편집 | 원본 편집]
php-fpm 설치[편집 | 원본 편집]

아치 리눅스에서 설치[편집 | 원본 편집]

아치 리눅스는 설치까지는 무난하지만 설정이 까다롭습니다. 기다려주세요!

NGINX[편집 | 원본 편집]

Caddy 서버[편집 | 원본 편집]

공식 사이트

Go 언어로 개발된 웹 서버입니다. 매우 가볍고 설정이 간단합니다. 기본으로 HTTP/3도 지원합니다. 도메인만 있다면 HTTPS도 자동으로 설정됩니다! 공식 사이트에서 설정 변수 별로 문서화가 이루어져 입문하기 쉽습니다. 최초의 웹 서버인 아파치보다 역사가 매우 짧아 아직 데이터가 쌓이지 않아 복잡한 설정은 참고할 문서가 적은 단점이 있습니다.

Caddyfile이라는 설정 파일 하나로 설정이 가능합니다. 아래는 공식 사이트에 소개된 설정 파일입니다. caddyfile 설명 문서도 있으니 참고해주세요.

example.com

root * /var/www/wordpress
php_fastcgi unix//run/php/php-version-fpm.sock
file_server

설치 방법

flask, django[편집 | 원본 편집]

가벼운 웹 백엔드 라이브러리로 구글 앱 엔진에 올려 웹 앱을 쉽게 만들 수 있다.

  • flask: 간단히 웹 앱을 만들 수 있는 마이크로 프레임워크. 확장이 쉽다. 초보자에게 적합. 가볍고 자유롭다.
  • django: flask와는 정반대로 무거운 프레임워크. 하지만 기능이 막강하고 편리하다. 입문자에게는 뭔가 좀 많아서 복잡할 수 있다.

메일 서버[편집 | 원본 편집]

SMTP[편집 | 원본 편집]

POP3, IMAP[편집 | 원본 편집]

파일 서버[편집 | 원본 편집]

FTP/SFTP[편집 | 원본 편집]

FTP는 파일을 서버로 올리는 한 수단이다. 이걸 파일 서버로 활용해도 된다.

여기에 암호화가 들어간 것이 FTPS이고 SFTP는 ssh 기반이며 ssh 계정으로 로그인할 수 있다.

NFS[편집 | 원본 편집]

Samba[편집 | 원본 편집]

자작 Nas[편집 | 원본 편집]

헤놀로지[편집 | 원본 편집]

nextcloud[편집 | 원본 편집]

각주

  1. 리브레 위키는 apache2가 아니라 nginx를 쓴다.
  2. SUperuserDO
이 시리즈 문서는 리브레위키 1060676판에서 분기하였습니다.