본문 바로가기
IT

서버 구축 다시

by Oh.mogilalia 2023. 10. 12.

https://velog.io/@whattsup_kim/Linux-%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%93%80%EC%96%BC%EB%B6%80%ED%8C%85-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0

 

[Linux] 윈도우, 리눅스(우분투) 듀얼부팅 세팅하기

우분투와 리눅스를 함께 사용할 수 있도록 듀얼부팅을 세팅합니다.

velog.io

https://blog.lael.be/post/10608

 

Ubuntu 20.04 LTS 에서 웹서버(Apache + PHP + MySQL) 구성하기

이 글을 통해 Ubuntu 20.04 LTS 운영체제에서 APM 웹서버를 구축하는 방법에 대해 설명하도록 하겠습니다. 저는 Ubuntu 9.04 버전부터 10년 넘게 구축 방법을 작성/유지보수 하고 있으며, 그동안 많은분

blog.lael.be

예전 odroid HC2에 다시...

ODROID  HC2 specs

· CPU: Samsung Exynos5422 Cortex-A15 2Ghz and Cortex-A7 Octa core CPUs
· RAM: 2Gbyte LPDDR3 RAM PoP stacked
· SATA: SATA-3 port for 3.5inch or 2.5inch HDD/SSD storage up to 27mm thickness
· LAN: Gigabit Ethernet port
· USB: USB 2.0 Host
· Storage: UHS-1 capable micro-SD card slot for the operating system
· Size : 197 x 115 x 42 mm approx.(Aluminium cooling frame size)
· Optional: Connector for real-time clock (RTC) and Serial Console port

https://dn.odroid.com/5422/ODROID-XU3/Ubuntu/
ubuntu-20.04.1-5.4-minimal-odroid-xu4-20200812.img.xz

 

Index of /5422/ODROID-XU3/Ubuntu

 

dn.odroid.com

sudo apt-get update -y && sudo apt-get dist-upgrade -y
sudo apt install bash-completion -y
sudo  apt autoremove
sudo  adduser mogibu
sudo usermod -G sudo mogibu
sudo passwd
sudo  deluser -remove-all-files odroid
sudo rm -rf /home/odroid

2. fdisk [디스크 장치명] ( 파티션 설정 모드로 진입합니다. )

fdisk /dev/sdb로 설정 모드로 진입합니다.
 3. 첫 번째 Primary Partition 256MB를 생성합니다.

첫 번째 primary partition 256MB를 생성했습니다.
사용하는 약자는 m을 누르면 도움말이 표시되니 확인하시고 넘어가시기 바랍니다.
 4. 두 번째 Primary partition 256MB를 생성합니다.

두 번째 Primary partition 256MB 도 잘 생성이 되었습니다.
파티션을 생성하면 p 명령어로 항상 확인하는 습관을 들이시기 바랍니다.
 5. 세 번째 Extend Partition 512MB를 생성합니다.

Extend Partition 512 MB를 할당하였습니다.
실제 1024MB라고 해도 남아있는 공간이 부족할 수 있습니다.
공간이 부족해서 Value out of range 가 발생하면 그냥 엔터로 모든 공간을 할당해줍니다.

p를 눌러서 세 번째 파티션도 확인해 줍니다.
 6. 네 번째, 다섯 번째 Logical Partition 256MB, 256MB을 생성합니다.

앞서 서두에서 언급한 Logical Partition 256MB/256MB까지 모두 설정이 되었습니다.
항상 끝자리에 모자란 용량은 엔터를 쳐서 모두 할당해 주시면 되겠습니다.
 7. 현재까지 설정한 파티션 저장

저장! 저장! 저장! 저장 안 하면 다 무용지물입니다. ㅠ
꼭 체크하시기 바랍니다~!~!
 8. 파일 시스템 설정
파티션 설정은 모두 완료되었습니다.
윈도 환경도 마찬가지겠지만 리눅스 환경도 시스템에 맞게 파일 시스템 설정이 필요합니다.
리눅스 파일 시스템에는 여러 가지가 있지만 최근 주로 사용하는 파일 시스템으로 설정을 해보겠습니다.
ext3 : 보안 부분이 조금 향상된 기본 파일 시스템으로 저널링 파일 시스템을 기반으로 하고 있고 ext2 보다 조금
향상된 기능을 갖고 있습니다.
 ext4 : 대형 파일 시스템을 지향하는 목적으로 개발되었으며 최대 1 엑사 바이트의 볼륨과 16TB 파일을 지원합니다.
ext3 단점을 많이 보안한 파일 시스템으로 현재까지 개발 중에 있는 파일 시스템입니다.
ext4로 현재까지 설정한 파티션을 설정해보겠습니다.

sdb3 Extend Partition = sdb5/sdb6 Logical Partition 이기 때문에 파일 시스템 설정에서 sdb3 은 제외하고
sdb5와 sdb6 만 설정해주시면 됩니다. 꼭 기억합시다~!~!

자 이제 파티션을 나누고 파일 시스템 설정까지 모든 설정을 마쳤습니다.
정상적으로 파티션 공간을 할당해서 사용할 수 있는 환경이 되었습니다.
https://yiworkdisk.netlify.app/ko/linux/install_ubuntu_hdd_hc2.html

 

Odroid-HC2환경에서 HDD (or SSD of USB)에 Ubuntu-20.04 설치 방법

Odroid-HC2환경에서 HDD (or SSD of USB)에 Ubuntu-20.04 설치 방법 Beyond Here Environment Device : Odroid-HC2 OS : Ubuntu-20.04 Root Partition : mmcblk1p2 ==> sda1 ※ MicroSD는 속도가 매우 느리다. HDD (or SSD or USB)에 설치하면 빨라

yiworkdisk.netlify.app

1. HDD 파티션 재설정

1) HDD 파티션 확인

df -h
mogibu@Gugeosigan:/$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            928M     0  928M   0% /dev
tmpfs           200M  3.6M  196M   2% /run
/dev/mmcblk1p2  7.4G  4.7G  2.8G  64% /
tmpfs           997M     0  997M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup
/dev/loop1       63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop0      141M  141M     0 100% /snap/chromium/1252
/dev/loop3      128K  128K     0 100% /snap/bare/5
/dev/loop2       25M   25M     0 100% /snap/snapd/8792
/dev/loop4       47M   47M     0 100% /snap/core18/2795
/dev/loop5       46M   46M     0 100% /snap/core18/1889
/dev/loop6       92M   92M     0 100% /snap/gtk-common-themes/1535
/dev/mmcblk1p1  128M   17M  112M  13% /media/boot
tmpfs           200M  4.0K  200M   1% /run/user/1001
tmpfs           200M  8.0K  200M   1% /run/user/121
/dev/sda1       447G  7.5G  417G   2% /home/mogibu

2) HDD 파티션 재설정

$ sudo fdisk -l
Disk /dev/loop6: 91.7 MiB, 96141312 bytes, 187776 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model:                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: BC265235-29D9-6843-92EE-45C8F5F5CFA4

Device         Start        End   Sectors   Size Type
/dev/sda1       2048  953525134 953523087 454.7G Linux filesystem
/dev/sda2  953526272 1953523711 999997440 476.9G Microsoft basic data

2. 파티션을 EXT4로 포맷 및 마운트

1) 파티션 EXT4 포맷
sudo mkfs.ext4 /dev/sda1
2) 파티션 마운트
$ sudo mkdir -p /media/hdd
$ sudo mount /dev/sda1 /media/hdd
df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            926M     0  926M   0% /dev
tmpfs           200M  3.4M  196M   2% /run
/dev/mmcblk1p2  7.4G  2.2G  5.3G  29% /
tmpfs           996M     0  996M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           996M     0  996M   0% /sys/fs/cgroup
/dev/mmcblk1p1  128M   18M  111M  14% /media/boot
tmpfs           200M     0  200M   0% /run/user/1000
/dev/sda1       447G   28K  424G   1% /media/hdd

sudo blkid
/dev/mmcblk1p2: LABEL="rootfs" UUID="e139ce78-9841-40fe-8823-96a304a09859" TYPE="ext4" PARTUUID="3cedfd53-02"
/dev/mmcblk1p1: SEC_TYPE="msdos" LABEL_FATBOOT="boot" LABEL="boot" UUID="52AA-6867" TYPE="vfat" PARTUUID="3cedfd53-01"
/dev/sda1: UUID="37e6024a-1a8c-4722-ae14-3899039ce331" TYPE="ext4" PARTUUID="915c86f7-8bea-1b4f-a3b5-373ab6523bf6"
/dev/sda2: LABEL="M-lM-^CM-^H M-kM-3M-<M-kM-%M-(" UUID="BA76E81476E7CEE7" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="41462ebe-7c6a-47f7-b0c0-be379ce7d8ac"

3. 설정 변경

1) 파티션 UUID 확인
mogibu@Gugeosigan:~$ sudo lsblk -f
NAME        FSTYPE LABEL                                 UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda                                                                                                          
|-sda1      ext4                                         37e6024a-1a8c-4722-ae14-3899039ce331  423.7G     0% /media/hdd
`-sda2      ntfs   \xec\x83\x88 \xeb\xb3\xbc\xeb\xa5\xa8 BA76E81476E7CEE7                                    
mmcblk1                                                                                                      
|-mmcblk1p1 vfat   boot                                  52AA-6867                             110.2M    14% /media/boot
`-mmcblk1p2 ext4   rootfs                                e139ce78-9841-40fe-8823-96a304a09859    5.2G    29% /

2) boot.ini 설정 변경
root 파티션의 UUID를 mmcblk1p2에서 sda1로 변경
sudo cp /media/boot/boot.ini /media/boot/boot.ini.orig
sudo nano /media/boot/boot.ini
설정 변경
# Boot Args
setenv bootargs "console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes net.ifnames=0 ${videoconfig} ${hdmi_phy_control} ${hid_quirks} smsc95xx.macaddr=${macaddr} ${external_watchdog}"
==>
# Boot Args
setenv bootargs "console=tty1 console=ttySAC2,115200n8 root=UUID= 37e6024a-1a8c-4722-ae14-3899039ce331 rootwait ro fsck.repair=yes net.ifnames=0 ${videoconfig} ${hdmi_phy_control} ${hid_quirks} smsc95xx.macaddr=${macaddr} ${external_watchdog}"
3) fstab 설명 변경
root 파티션 mmcblk1p2에서 sda1로 변경
sudo cp /etc/fstab /etc/fstab.orig
sudo nano /etc/fstab
설정 변경
UUID=e139ce78-9841-40fe-8823-96a304a09859 / ext4 errors=remount-ro,noatime 0 1
LABEL=boot /media/boot vfat defaults 0 1
==>
UUID=e139ce78-9841-40fe-8823-96a304a09859 / ext4 errors=remount-ro,noatime 0 1
LABEL=boot /media/boot vfat defaults 0 1
/dev/sda1 / ext4 defaults,noatime 0 1
어제는 /dev/sda 로만 설정한 바람에 부팅이 안되었음. ㅎㅎ~

4. 루트 파티션 복사

apt-get -y install rsync
$ sudo rsync -axv / /media/hdd

5. Root 파티션 확인

1) 리셋
2) Root 파티션 확인
df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            926M     0  926M   0% /dev
tmpfs           200M  3.4M  196M   2% /run
/dev/sda1       447G  2.2G  422G   1% /
tmpfs           996M     0  996M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           996M     0  996M   0% /sys/fs/cgroup
/dev/mmcblk1p1  128M   18M  111M  14% /media/boot
tmpfs           200M     0  200M   0% /run/user/1000

웹서버 설치

sudo su

시스템 시간 설정 - 절대 시간 기준 값 (Timestamp)

#dpkg-reconfigure tzdata

SWAP 추가 스크립트를 사용하여 서버에 1GB 의 가상 메모리 설정하기

1 대신 원하는 숫자로 변경해도 되지만 변경하지 않는걸 추천합니다.

# wget -q https://raw.githubusercontent.com/laelbe/linux-simple-scripts/main/_server_tools/add_swapfile -O /root/add_swapfile
# bash /root/add_swapfile 1
# free -m

패키지 목록 갱신.

#apt update

현재 운영체제에 설치되어있는 프로그램 최신버전 패치

#apt upgrade

설치, 제거, 업데이트 과정중에 생긴 찌꺼기 파일이 있으면 제거.

#apt autoremove

Apache2 설치

# apt install apache2

https 인증서 관련 프로그램 설치

# apt install ssl-cert

무료 인증서 발급 프로그램 설치

# apt install certbot

- 널리 사용되는 Apache2 Module 활성화
이걸 하지 않으면 워드프레스를 포함한 많은 프로그램이 구동되지 않거나 사용 제약이 걸리게 된다.

# a2enmod rewrite
# a2enmod headers
# a2enmod ssl
# a2dismod -f autoindex

- 변경사항 적용

# service apache2 restart

- Apache2 환경설정 문법검사

# apache2ctl -S

 기본 언어셋 변경

# nano /etc/apache2/conf-available/charset.conf

기본 언어값 UTF-8 에 대해서 주석처리되어 있을 텐데 주석(#)을 제거해 준다.
 추가 보안 설정

# vi /etc/apache2/conf-available/security.conf

서비스 운영중 의도치않게 발생할 수 있는 보안 문제를 막는 코드이다.

# vi /etc/apache2/apache2.conf

파일 중간(약 199번째 줄)의 <FilesMatch “^\.ht”> 구문 다음에 추가한다.
TIP : vi 에디터 열자마자 199G (대문자) 입력하면 바로 이동합니다.

/etc/apache2/apache2.conf 설정파일 중간에 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# deny file, folder start with dot
<DirectoryMatch "^\.|\/\.">
    Require all denied
</DirectoryMatch>
 
# deny (log file, binary, certificate, shell script, sql dump file) access.
<FilesMatch "\.(?i:log|binary|pem|enc|crt|conf|cnf|sql|sh|key|yml|lock|gitignore)$">
    Require all denied
</FilesMatch>
 
# deny access.
<FilesMatch "(?i:composer\.json|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml|access_log|error_log|gruntfile\.js|bower\.json|changelog\.md|console|legalnotice|license|security\.md|privacy\.md)$">
    Require all denied
</FilesMatch>
 
# Allow Lets Encrypt Domain Validation Program
<DirectoryMatch "\.well-known/acme-challenge/">
    Require all granted
</DirectoryMatch>
 
# Block .php file inside upload folder. uploads(wp), files(drupal), data(gnuboard).
<DirectoryMatch "/(uploads|default/files|data|wp-content/themes)/">
    <FilesMatch ".+\.php$">
        Require all denied
    </FilesMatch>
</DirectoryMatch>

 변경사항 적용

# service apache2 restart

Apache 개별 사용자 권한 설정

웹 서비스 구동시 발생할 수 있는 Permission(권한) 문제를 해결하기 위한 모듈을 설치한다.
다음과 같이 설정하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안에 도움이 된다.
순서대로 입력하면 된다.

# apt-cache search mpm-itk
# apt install libapache2-mpm-itk
# chmod 711 /home
# chmod -R 700 /home/*

(/home/* 안에 아무파일도 없을 경우 마지막 구문은 에러가 날 수 있다. 에러가 나면 무시하도록 하자.)
- 변경사항 적용

# service apache2 restart

기본사이트 추가 설정

# vi /etc/apache2/sites-available/000-default.conf

ServerName localhost 한 줄 추가해주세요.

1
ServerName localhost

- HTTPS 기본사이트 켜기

# mv /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf
mv 명령어를 사용하는 이유에 대해 질문을 받아서 작성합니다. 물론 이 내용을 이해하지 못하여도 사용에 지장이 없습니다.

Apache 는 가장 처음으로 로딩하는 파일을 기본 사이트로 취급합니다. 기본 사이트는 지정한 ServerName 에 모두 해당하지 않을 경우, 연결되는 사이트입니다.
Apache 의 conf 로딩 순서는, 알파벳 순서에 따릅니다. 그리고 숫자를 더 우선시 합니다.
따라서 위의 mv 명령어를 사용하지 않고, 당신의 도메인이 d 보다 앞단계 일 경우 (예를 들어 apple.com) 이 도메인 conf가 먼저 불러와지게 되고 기본 사이트가 됩니다.

우리는 위의 default-ssl 을 기본 사이트로써 동작하기를 원하기 때문에, 로딩 우선순위를 높이기 위해서, 이름을 000-default-ssl.conf 로 변경하는 것입니다.

이 파일에도 ServerName localhost 를 추가해주세요.

# vi /etc/apache2/sites-available/000-default-ssl.conf

 

# a2ensite 000-default-ssl.conf

- 환경설정 구문확인 (결과 메세지도 확인해보세요)

# apache2ctl -S

- 설정 적용

# service apache2 reload

PHP 설치

# apt install php

기타 널리 사용되는 PHP모듈을 설치한다.
- 다국어 처리모듈

#apt install php-mbstring

- 이미지 처리모듈

#apt install php-gd

- 원격지 정보 불러는 모듈 (워드프레스 등에서 쓰임)

#apt install php-curl php-xml

- 수학 연산 확장 모듈

#apt install php-bcmath

- OAuth 인증 모듈 (클라우드 API 등 연동서비스에서 쓰임)

#apt install php-oauth

- MySQL 연동 모듈 (mysqli, pdo-mysql 관련 함수를 사용할 수 있게됨)

#apt install php-mysql

- Composer 설치 (PHP 패키지 의존성 관리 프로그램)

#apt install composer

 
더 설치하고 싶은 PHP 모듈이 있다면 아래 명령어 입력 후 선택하여 설치하면 된다.

#apt-cache search php- | grep ^php- | grep module

PHP 보안 설정

ubuntu php 패키지에서 php 를 해석하는 확장자가 너무 많이 설정되어 있다.

#vi /etc/apache2/mods-available/php7.4.conf

.php .phar .phtml  확장자 파일이 기본적으로 php를 해석할 수 있게 되어있다.
과거 16.04 패키지 보다 많이 개선되었지만 여전히 잠재적 문제를 포함하고 있다.
웹페이지에서 파일업로드 구현시 이 확장자 파일을 제대로 막아주지 못하면 사이트가 위험하게 된다.
php 를 제외한 나머지의 접근을 차단하자.
아래 그림의 위치에 추가한다. 보안사고 방지를 위해서 몇가지 php관련 확장자 접근제어 설정도 추가하였다.

/etc/apache2/mods-available/php7.4.conf
1
2
3
<FilesMatch ".+\.ph(p3|p4|p5|p7|ar|t|tml)$">
    Require all denied
</FilesMatch>

 
적용을 위해서 아파치 재시작
PHP 가 Apache 의 모듈로 동작하는 방식이므로 PHP 의 변경사항이 생기면 Apache 를 재시작 해 주어야 한다.

#service apache2 restart

 

PHP Default timezone 설정하기

PHP 의 Date 관련 함수에서 사용할 기본 기준 시간을 지정하는 작업입니다.
이 값을 설정하지 않으면 시스템 timezone 을 사용합니다.
PHP Default timezone 을 설정하는 것은 필수는 아니지만 매우 권장하는 작업입니다. 설정해주세요.
동일한 작업을 2개의 파일에 적용해 주어야 합니다.
- 이것은 Apache2 + PHP 일때 참조하는 파일입니다.

#vi /etc/php/7.4/apache2/php.ini

* 편집 가이드

vi 에디터 진입 후 ->     /timezone 엔터 i -> 편집 -> 적절한 위치에 Asia/Seoul 입력 -> 저장

 
- 이것은 cron이나 console에서 PHP를 실행할때 참조하는 파일입니다. 동일하게 timezone 을 설정해 주세요.

#vi /etc/php/7.4/cli/php.ini

 
date.timezone 값을 찾아서 주석을 제거하고 시간을 설정해주세요.

이 값을 찾아서
 

이렇게 변경.
 

변경사항 적용하기

#service apache2 restart

phpinfo 파일 생성

php 환경설정 정보를 볼 수 있는 파일을 생성한다. 의도치 않게 이 정보가 노출되더라도 보안에 위협이 되지는 않는다.

# echo "<?php if (gethostname() == (empty(\$_GET['q']) ? '' : \$_GET['q'])) phpinfo(); ?>" > /var/www/html/myphpinfo.php

웹 브라우저에서 http://192.168.0.9/myphpinfo.php?q=Gugeosigan

phpmyadmin 설치하기

phpmyadmin 은 php로 제작된 mysql 관리툴입니다. 매우 안정적이고 안전한 프로그램입니다. 설치해봅니다.

# wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.zip -O /var/www/html/dbmyadmin.zip.lock
# cd /var/www/html && unzip dbmyadmin.zip.lock && mv phpMyAdmin-5.1.3-all-languages dbmyadmin

웹 브라우저에서 http://192.168.0.9/dbmyadmin 로 접속해 보자.
phpmyadmin 웹소프트웨어의 환경설정을 진행합니다.
phpmyadmin 이 설치된 폴더로 이동한 후에 config.sample.inc.php 파일 이름을 config.inc.php 로 바꿉니다. (mv 명령어 또는 비슷한 명령어 사용)

# mv /var/www/html/dbmyadmin/config.sample.inc.php /var/www/html/dbmyadmin/config.inc.php

 
config.inc.php 파일을 열어서 다 지우고, 아래의 내용으로 변경해줍니다.

# vi /var/www/html/dbmyadmin/config.inc.php
vi 에디터 진입 후 :set paste  엔터 -> 복사 붙여넣기 모드 설정하면 정상적인 내용 붙여넣기가 가능해집니다.

예제를 잘 만들어 두었으니 코드를 해석해보고 적절히 응용해보세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
declare(strict_types=1);
 
$valid_passwords = ['webuser' => gethostname(), 'webuser2' => gethostname()];
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {
    header('WWW-Authenticate: Basic realm="password?"');
    header('HTTP/1.0 401 Unauthorized');
    die ("Not authorized");
}
 
$cfg['blowfish_secret'] = 'RkyE=T6t6KjX65KPC7/XNQ\Bk9EhBXar'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['NavigationTreeEnableGrouping'] = false;
$cfg['MaxNavigationItems'] = '200';
$cfg['FirstLevelNavigationItems'] = '200';
$cfg['ShowDatabasesNavigationAsTree'] = false;
$cfg['NumRecentTables'] = 0;
 
/**
* Servers configuration
*/
$i = 0;
 
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3306';
 
/*
$i++;
$cfg['Servers'][$i]['host'] = 'mydatabase-instance01.cohyfvqnmewt.ap-northeast-2.rds.amazonaws.com';
$cfg['Servers'][$i]['port'] = '3306';
*/
 
/*
$i++;
$cfg['Servers'][$i]['host'] = '211.192.211.192';
$cfg['Servers'][$i]['port'] = '3306';
*/

dbmyadmin 을 다시 접속하면, 아이디와 비밀번호를 물어볼 것인데, id 는 webuser, pw 는 phpinfo에서 사용하였던 호스트이름을 입력해주세요.

선택 작업 1. ssh 및 sftp 비밀번호 접속 허용하기

이 작업은 인증키를 사용한 로그인을 못하는 초보자분들께만 권장합니다.
항상 내 아이피만 접속할 수 있도록 방화벽을 잘 설정해주세요.
서버가 이미 비밀번호 로그인 방식을 허용하도록 설정되어 있을 수도 있습니다.

내 IP주소 확인하기 : https://ipconfig.tools/ko/
 

ssh daemon 환경설정

# vi /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $

#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no

변경사항 적용

# service ssh restart

접속중인 쉘의 연결은 끊기지 않습니다

실제 사용 테스트 (실제로 사용해 보는 예제)

1] 도메인 준비하기

1) 유료 도메인을 구매 하려면 https://blog.lael.be/post/6357 글로 이동하세요.
자신의 PC 에 설치한 가상머신이나 회사 내부 사설망의 서버에도 도메인 연결이 가능합니다. 무엇을 하든 반드시 도메인을 준비해주세요.
2) 무료 도메인을 활용할 수도 있습니다.
이 글에서는 https://nip.io/ 를 사용하도록 하겠습니다.
 
무료도메인 nip.io 를 기준으로 설명하겠습니다.
만약 당신의 서버의 IP 가 52.79.173.82 이라면 52-79-173-82.nip.io 도메인을 사용할 수 있습니다.
이 본문 예제에서는 다음의 3가지 도메인을 사용합니다.

52-79-173-82.nip.io
mysite1.52-79-173-82.nip.io
mysite2.52-79-173-82.nip.io

 
도메인을 사용해서 myphpinfo 페이지를 열어보도록 합시다. 아래의 파란부분을 자신에 맞게 수정하세요.

http://52-79-173-82.nip.io/myphpinfo.php?q=ip-10-12-14-10

 

2] 일반 사용자 계정 생성

일반 사용자 추가하기
원하시는 아이디 있으면 그것으로 하세요. 선호하는 아이디가 없으면 myuser1 으로 하세요.

#adduser myuser1

참고로 반대동작을 하는 계정삭제 명령어는 (계정을 삭제하고 홈디렉토리도 삭제함) 아래와 같습니다.

#userdel -r myuser1

 
보통 웹루트는 홈디렉토리에 하지 않습니다.
(일반적으로 www, htdocs, public_html 라는 이름을 웹루트로 사용합니다.)
저는 주로 www 이름을 사용합니다. 사용자변경 후 www 디렉토리를 생성하고 빠져나오기

#su -l myuser1
#mkdir 52-79-173-82.nip.io
#mkdir mysite1.52-79-173-82.nip.io
#mkdir mysite2.52-79-173-82.nip.io
#exit

 

 

3] 웹사이트 Apache 환경설정파일 작성

사이트 생성 파일 작성할 때, 실수가 생기는 경우가 많아서, 환경설정 생성기를 만들었습니다.
자신의 환경에 맞추어 입력하시면 됩니다. 브라우저 즐겨찾기에 등록 후 필요할 때 마다 쓰시면 됩니다.

Apache2 환경설정 생성기
https://webmaster.cafe/tools/apache-conf-generator/

 
이 본문의 예제에서는 다음의 값을 사용하겠습니다.

https://webmaster.cafe/tools/apache-conf-generator/?s=myuser1&h=52-79-173-82.nip.io&r=&t=&d=%2Fhome%2Fmyuser1%2F52-79-173-82.nip.io

내용을 복사하여 /etc/apache2/sites-available/52-79-173-82.nip.io.conf 위치에 생성.
 
 
위에서 생성한 설정 구문을 아래의 위치에 넣어주세요.

/etc/apache2/sites-available/[[사이트주소]].conf

 
사이트 켜기
오타를 방지하기 위해서 a2ensite 앞몇단어 + 탭  을 입력해주세요.

# a2ensite 52-79-173-82.nip.io.conf

 
참고 : 사이트 끄는 명령어

# a2dissite 52-79-173-82.nip.io.conf

 
변경사항 적용

# service apache2 reload

 
무료 인증서를 발급 받으시려면
위의 apache2 reload 를 완료한 후에, 4번째 탭으로 이동.

방화벽에서 anywhere(0.0.0.0/0) TCP 80TCP 443 포트가 열려있어야 합니다.

< Congratulations! 를 확인하셔야 합니다. >

참고 : 사이트 주소와 연결되는 환경설정 파일을 보는 명령어

# apache2ctl -S

 
이 상태에서 다시 3번째 탭 내용을 적용해야 합니다.

아까 작성했던 /etc/apache2/sites-available/52-79-173-82.nip.io.conf 파일 내용을 교체하세요.
아까는 유효하지 않은 임시인증서로 구동을 했던 것이고, 이제는 방금 발급받은 유효한 인증서로 구동을 하는 것입니다.
 

최종 적용

# service apache2 reload

주소창에 열쇠가 보이면 정상이다.
 

인증서 갱신 프로그램 주기적으로 실행하기
https://blog.lael.be/post/5107 이동 후 4번 인증서 갱신 프로그램 주기적으로 실행하기 보고 똑같이 입력하세요.


10) MYSQL 설치

요즘엔 웹어플리케이션 서버만 구축하고, DB는 DB호스팅 서비스를 이용하는 분위기입니다.
여기에서는 이러한 DB호스팅을 사용하지 않고, 직접 MYSQL DB서버를 구축하는 방법에 대해 설명하도록 하겠습니다.
 
MySQL 명령어 클라이언트 프로그램 설치 - 외부 DB를 사용하든 안하든 설치하는 것이 좋습니다.

#apt install mysql-client

위의 패키지를 설치하면 console 환경에서 mysql 명령어를 사용할 수 있게 된다.
 

MySQL 서버 설치

#apt install mysql-server

설치된 버전 확인

#mysqladmin version

 

워드프레스 설치 예제

먼저 myuser1 계정으로 로그인합니다. (myuser1 계정으로 전환합니다.)
위의 9번 예제에서 myuser1 계정을 생성 했을 것입니다.

웹루트로 이동합니다.

# cd 52-79-173-82.nip.io/

워드프레스 최신버전을 다운받습니다.

# wget https://wordpress.org/latest.zip

 
압축해제

# unzip latest.zip

 
다운받은 설치파일 삭제

# rm latest.zip

 
워드프레스 구성파일을 wordpress 폴더에서 꺼내기

# mv wordpress/* .

 
사용하지 않는 wordpress 폴더 삭제

rmdir wordpress

웹사이트 접속 후 설치 진행!
웹브라우저에서 내 도메인 주소로 접속해보자.

필요한 정보는 이미 알고 있으므로, 편하게 설치를 진행해보세요.
설정 중 데이터베이스 이름을 디폴트인 worepress 로 하니 계속 에러가 남. 검색해 보니 사용자 이름과 동일하게 mogibu로 하니 설치 완료.
티스토리 1~7까지 복사 완료. 조금씩~
 

6] 완성

완성! 적당히 테마 선택하시고 꾸미시면 됩니다.
워드프레스의 세계로!

위드프레스 설치도 마무리. 이전처럼 nextcloud, plexmedia, torrent server 는 설치할 필요가 없을 듯.