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