Linux

Ubuntu Server 22.04

Jack Moon 2023. 2. 10. 13:13
ubutu-server 22.04
[기본으로 설치-특별히 설정 바꾸지 않고 install]

## root 패스워드 변경 (iwin 에서는 root 패스워드가 메일로 온다)
sudo passwd

## openssh-server 설치
apt install openssh-server

systemctl status ssh (start, stop, restart)
systemctl snable ssh
ufw allow 22

## 어댑터, IP주소 확인
ip a 

## 고정IP 설정
cd /etc/netplan
vi 00-installer-config.yaml

어댑터(enp2s0)는 서버에 맞게 변경한다.

------------------------------
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp2s0:
      addresses:
      - 192.168.0.11/24
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
      routes:
        - to: default
          via: 192.168.0.1
  version: 2
------------------------------

## 적용
netplan apply

## 시간대 변경
timedatectl set-timezone Asia/Seoul

## hostname 변경
hostname
/etc/hostname

## OS 와 version 확인
cat /etc/issue


## repository 국내서버로 변경하기

vi /etc/apt/source.list
:%s/kr.archive.ubuntu.com/mirror.kakao.com


[iwin cloud의 경우]
:%s/nova.clouds.archive.ubuntu.com/mirror.kakao.com
:%s/security.ubuntu.com/mirror.kakao.com


########################################################
################# APM SSL 설치 ###################
########################################################

#### Step1. Apache 설치 및 방화벽 업데이트

apt update
apt upgrade
apt install apache2
a2enmod ssl rewrite
(a2enmod: 아파치2 모듈 활성화 명령어)

ufw allow 80
ufw allow 443
ufw status

# 테스트 (원격지 PC에서 브라우저 열고 실행)
http://192,168.0.11(ip주소)

#### Step2. MySQL 설치

apt install mariadb-server

#테스트
mysql 

# 초기 설정
mysql_secure_installation

# 자동실행
systemctl enable apache2
systemctl enable mysql

# DB 사용자 추가
GRANT ALL PRIVILEGES ON dbname.* to 'userid'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* to 'prmonitor'@'%' IDENTIFIED BY 'bestotto';
FLUSH PRIVILEGES;

# 방화벽
ufw allow from 115.88.138.170 to any port 3306

# 외부에서 mariadb 접속하려면
vi /etc/mysql/mariadb.conf.d/50-server.cnf

# bind-address            = 127.0.0.1 주석처리


#### Step3. PHP 설치
apt install php libapache2-mod-php php-mysql
php -v

# 주요 PHP Library 설치
apt install php-mbstring php-gd php-curl php-xml php-bcmath php-oauth

# composer 설치
apt install composer



# php.ini 설정
vi /etc/php/8.1/apache2/php.ini

date.timezone = Asia/Seoul
memory_limit = 512M
upload_max_filesize = 40M
post_max_size = 40M
short_open_tag = On


# 테스트
vi /var/www/html/info.php

<?php
    phpinfo();
?>

http://ipaddr/info.php


############################################ 소스옮기기
/home/prmonitor 실행권한 필요 (711 이상)

cd /home
chmod 711 prmonitor/
############################################ DB
cd /home/prmonitor/db
mysql -u사용자ID -p -f  DB명 < DB명_table.sql
mysql -u사용자ID -p -f  DB명 < DB명_data.sql

############################################ shell 파일 옮기기
cd /root
scp *.sh root@ipaddr:/root

-----------------------------------------------------------------------
이미지
-----------------------------------------------------------------------

#### Step4. Virtual Host 설정

* conf 파일 생성
nano /etc/apache2/sites-available/zz.ottomonitor.com.conf

############################# /var/www 아래가 아닐 경우
<VirtualHost *:80>

   ServerName zz.ottomonitor.com
   ServerAdmin jack.moon@ottomonitor.com
   DocumentRoot /home/prmonitor/www

   ErrorLog ${APACHE_LOG_DIR}/zz.ottomonitor.com_error.log
   CustomLog ${APACHE_LOG_DIR}/zz.ottomonitor.com_access.log combined


   <Directory /home/prmonitor/www>
      Options FollowSymlinks
      AllowOverride All
      Require all granted

      AddType application/x-httpd-php .php .php3 .html .htm
      AddType application/x-httpd-php-source .phps
   </Directory>

</VirtualHost>

* 새 가상호스트 활성화 및 기본웹 비활성화
a2ensite zz.ottomonitor.com
a2dissite 000-default

* conf 파일 오류 체크
sudo apache2ctl configtest

* Apache load
systemctl reload apache2


###################################################
#### Let's Encrypt는 무료 TLS/SSL 인증서

1. install certbot 
# apt update
# apt install certbot python3-certbot-apache


2. SSL 인증서 받기
# certbot --apache
zz.ottomonitor.com 입력
e-mail 입력
Y
Y
enter

3.자동 갱신 점검, 다음 갱신 시간

# systemctl status certbot.timer

갱신테스트
# certbot renew --dry-run

4. 인증서 정보 (만료기간)
certbot certificates


########################################################
######################## apt ###########################
########################################################

# 설치
apt install 패키지

# 삭제
apt remove 패키지

# 패키지 목록 업데이트
apt update
(오래 걸릴 수 있으니 repo를 국내로 수정 후 한다.)

# 패키지 설치 확인
dpkg -l 패키지
OR
dpkg -l | grep sendmail


########################################################
############# ufw (uncomplicated firewall)##############
########################################################

#### ufw (uncomplicated firewall) 설정하기

# 시작
ufw enable

# 멈춤
ufw disable

# 상태 조회
ufw status

# 자동실행
systemctl enable ufw


기본적으로 UFW는 들어오는 모든 연결을 거부하고 나가는 모든 연결을 허용하도록 설정되어 있다.

#### ufw rule 허용 또는 차단

# SSH 연결 허용
ufw allow ssh
OR
ufw allow 22

# 연결 차단
ufw deny ssh

# 범위 허용
ufw allow 6000:6007/tcp

# IP허용
ufw allow from 203.0.113.4

# 서브넷 허용
ufw allow from 203.0.113.0/24    203.0.113.* 허용

## 룰 삭제
ufw delete allow 23/tcp


########################################################
##우분투에서 vi 키가 엉뚱하게 먹을때 i, insert 안됨 ###
########################################################

cd ~
nano .exrc

------------------------------
set bs=2
set nocp
------------------------------

source .exrc


########################################################
######################## mount #########################
########################################################

리눅스에서는 usb메모리, CD/DVD 등을 사용하려면 지정한 위치에 연결해 줘야 하는데 이것을 mount 라 한다.

## 현재 mount된 장치 확인: mount

## mount 시키기
먼저 usb, cd/dvd를 넣고

mkdir /media/cdrom
mount /dev/cdrom /media/cdrom

mkdir /media/usb
mount /dev/sdb1 /media/usb

# 확인 
mount

# mount 해제
umount /media/cdrom
umount /media/usb# 


########################################################
################## find, grep ##########################
########################################################

# 5일 이상 지난 파일 삭제
find /home/folder -mtime +5 -print -exec rm -f {} \;

# 45일 이상 지난 파일의 644 권한을 000으로 변경
find /home/folder -perm 644 -type f -mtime +45 -print -exec chmod 000 {} \;

# www폴더 아래 php 파일 중 order by 들어간 파일과 문장 검색
grep -r 'order by' www/* --include '*.php'

########################################################
################## sudo 계정 추가 ######################
########################################################

## 에러: 계정 is not in the sudoers file.  This incident will be reported

## root 권한으로 아래 명령 실행
usermod -aG sudo 계정

## 재로그인 후 sudo 권한을 갖게 됨.
## 재로그인 후 테스트
$ sudo ls

'Linux' 카테고리의 다른 글

chrony 설정  (0) 2023.05.12
리눅스 (Linux) crontab-e 하면 nano 에서 열린다. 난 vi 로 열고 싶다.  (0) 2022.08.19
Ubuntu 20.04 APM 설치  (0) 2022.06.20
sudo 사용하기  (0) 2022.06.16
centos 8 yum 에러  (0) 2022.06.16