728x90

Rocky Linux 9버전에서는 기본으로 PHP 8.X가 설치되어 있는데 기존에 개발한 코드가 PHP 7.4 기반이라 PHP7.4를 설치하는 스크립트를 시행착오를 겪어가면서 거의 완벽에 가까운 스크립트를 작성했다.

스크립트 구성후 개발한 코드로 동작시켜 보니 RSA 암호화/복호화가 제대로 동작되지 않아서 원인 찾느라고 쌩쇼를 했다.

 

#############################################
######### RockyOS 9.5 PHP 7.4 설치 ##########
#############################################
# 본 스크립트는 반드시 관리자 권한에서 실행해야 한다.
# openssl 버전 확인 => TLS 1.3을 지원하더라.
openssl version
 
## 현재 설치된 PHP 버전 확인
dnf module list php
 
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
 
 
dnf -y install expat-devel
 
## 설치확인
dnf list installed | grep MariaDB
rpm -qa | grep MariaDB
 
 
# 설치되어 있는 PHP 모듈 확인 방법
php -m
 
# 시스템 업데이트
sudo dnf -y update
 
sudo dnf -y install wget unzip mc git nmap
 
# SSL 관련 패키지 설치 확인
sudo dnf -y install openssl openssl-devel
 
# 1. Apache 설치
sudo dnf install httpd -y
 
# 2.EPEL 및 Remi 저장소 설치
sudo dnf -y install epel-release
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
 
# 3.PHP 모듈 재설정 및 Remi 저장소 활성화
sudo dnf module reset php
sudo dnf module enable php:remi-7.4
 
# 4.PHP 7.4 및 필요한 확장 모듈 설치
sudo dnf -y install php php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath 
sudo dnf -y install php-imagick php-xmlrpc php-json php-readline php-redis php-mbstring php-apcu php-xml php-dom php-redis 
sudo dnf -y install php-memcached php-memcache php-devel php-openssl 
sudo dnf -y install mod_ssl openssh
sudo dnf -y install ImageMagick ImageMagick-devel
 
# PHP 7.4 에서는 설치 필요. PHP 8.X에서는 에러 표시함.
sudo dnf -y install php-mcrypt
 
# 5. PHP 버전 확인
php -v
 
 
# Apache 버전 확인
httpd -v
 
 
# PHP와 웹 서버 간 통신이 차단될 수 있으니 SELinux 설정 확인
sudo setsebool -P httpd_can_network_connect 1
 
 
# 서비스 시작
sudo systemctl start php-fpm
sudo systemctl start httpd
 
# 서비스 활성화
sudo systemctl enable php-fpm
sudo systemctl enable httpd
 
systemctl stop httpd
systemctl restart httpd
systemctl status httpd
 
#####################################################################
## httpd.conf 파일 수정
#####################################################################
vi /etc/httpd/conf/httpd.conf
ServerName localhost
 
DocumentRoot "/var/www/html"
 
<Directory "/var/www/html">
    Options +FollowSymLinks -Indexes
    AllowOverride All
    Require all granted
    <LimitExcept GET POST>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>
 
<IfModule dir_module>
    DirectoryIndex index.html index.php index.jsp
</IfModule>
 
<IfModule mime_module>
    TypesConfig /etc/mime.types
    #AddType application/x-gzip .tgz
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php .html .do
    AddType application/x-httpd-php-source .phps
    AddType text/css .css
    AddType text/javascript .js
    #AddHandler cgi-script .cgi
    #AddHandler type-map var
    #AddOutputFilter INCLUDES .shtml
</IfModule>
 
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 408 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
ErrorDocument 502 /error.php
ErrorDocument 503 /error.php
 
# 보안 검증 통과를 위해 반드시 서버 정보 노출 방지 해야 함.
ServerTokens Prod
ServerSignature Off 
 
TraceEnable Off
 
# Apache HTTPOXY 취약점 방지
RequestHeader unset Proxy early
 
저장하고 나온다.
 
#####################################################################
# php.ini 환경 설정
#####################################################################
vi /etc/php.ini
short_open_tag = On
;경로 기반의 공격 방지
cgi.fix_pathinfo=0
 
;PHP 버전 정보 노출 방지(Hide PHP Version Number)
expose_php = Off
 
post_max_size = 20M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 18M ;// 기본 2M 으로 되어 있었음
 
date.timezone ="Asia/Seoul"
 
 
;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제될 것이다.
session.gc_maxlifetime = 3600
 
# 저장하고 나온다.
 
# Apache 서버 재기동
systemctl restart httpd
 
# 서버 정보 확인
# ip addr 로 IP 주소 정보를 확인하고 해당 IP주소로 대체하여 입력
curl -192.168.1.20
 
# Apache 라는 서버 정보가 보인다. 이것마저 방지하고자 한다면....
dnf install mod_security
 
vi /etc/httpd/conf/httpd.conf
<IfModule security2_module>
   SecRuleEngine on
   ServerTokens Full
   SecServerSignature "Link2me"
</IfModule>
 
저장하고 나온다.
 
# Apache 서버 재기동
systemctl restart httpd
 
# 서버 정보 확인
curl -192.168.1.20
 
#####################################################################
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
 
# PHP-FPM 구성
vi /etc/php-fpm.d/www.conf
user = apache
group = apache
 
listen = /run/php-fpm/www.sock
 
listen.owner = apache
listen.group = apache
listen.mode = 0660
 
;shift + G 눌러서 제일 하단으로 이동하여
php_value[opcache.file_cache] = /var/lib/php/opcache  ; 주석만 제거
 
저장하고 나온다.
 
vi /etc/httpd/conf.d/php-fpm.conf
 
<FilesMatch \"\.php$\">
    SetHandler \"proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/\"
</FilesMatch>
 
확인하고 틀리면 수정/저장하고 빠져나온다.
 
sudo systemctl restart httpd
sudo systemctl restart php-fpm
 
#####################################################################
# 반드시 추가구현해야 문제없이 동작한다.
cd /var/www/html/
vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ error.php?/$1 [QSA,PT,L]
</IfModule>
 
 
## 보안설정
sudo chmod 640 /etc/httpd/conf/httpd.conf
sudo chown root:root /etc/httpd/conf/httpd.conf
sudo chmod 640 /etc/php.ini
sudo chown root:root /etc/php.ini
 
sudo chown -R apache:apache /var/www/html
sudo chmod -755 /var/www/html
 
####################################################################################
# CentOS7 과 달리 chmod 644 를 지정해줘야 제대로 동작되는 걸 확인했다.
mkdir -/home/rsa/key/
cd /home/rsa/key/
openssl genrsa -out rsa_pri.pem 2048
openssl rsa -pubout -in rsa_pri.pem -out rsa_pub.pem
# Rockey Linux 9 에서 읽기가 관리자권한만 가능하게 되어 있어서 수정해서 해결했다.
# 이 한줄 때문에 숱한 버그 찾기 끝에 해결했다.
chmod 644 rsa_pri.pem
 
# 세션이 저장되는 디렉토리 퍼미션 지정
sudo chmod 777 -/var/lib/php/session
 
sudo chmod 1733 /var/lib/php/session
sudo chown apache:apache /var/lib/php/session
 
# 세션 확인
cd /var/lib/php/session
ll
 
# Clear Old Sessions
sudo rm -rf /var/lib/php/session/*
 
####################################################################################
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
#######################################################################
 
cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
unzip phpMyAdmin-5.2.1-all-languages.zip
chown -R apache:apache phpMyAdmin-5.2.1-all-languages
mv phpMyAdmin-5.2.1-all-languages pma
cd pma
cp -rp config.sample.inc.php  config.inc.php
 
# 환경 설정
vi config.inc.php
 
$cfg['blowfish_secret'= 'qtdRoGmbcr]0s)r$9b_JUnoGmbcbcr]0s)r$9b_JUnoGmr]0s)r$9b{~Xz'// 임의의 값 설정
$cfg['Servers'][$i]['host'= 'localhost';
$cfg['Servers'][$i]['compress'= true;
$cfg['TempDir'= '/tmp';
 
 
###############################
###### composor 설치 #####
###############################
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer -V
export COMPOSER_ALLOW_SUPERUSER=1
composer -V
echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc
cat ~/.bashrc | grep export
 
composer require phpoffice/phpspreadsheet
 
composer require phpmailer/phpmailer
####################################################################################
# 기본 버전을 설치하고 싶다면 아래와 같이 제거 후에 재설치
dnf remove php
 
# 제거후에는 반드시 Reset 해야 한다.
dnf module reset php
 
# 8.2로 활성화
dnf module enable php:8.2
 
# 재설치 진행
dnf install php
####################################################################################
# 서버가 지원하는 TLS 버전 확인 코드
 
<?php
  $ch = curl_init('https://www.howsmyssl.com/a/check'); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  $data = curl_exec($ch); 
  curl_close($ch); 
  $json = json_decode($data); 
  echo "<h1>Your TLS version is: " . $json->tls_version . "</h1>\n";
?>
####################################################################################
 

 

위 환경 설정 httpd.conf 및 php.ini 에는 보안검증 받으면서 지적사항 해결에 사용한 것도 같이 포함되어 있다.

728x90
블로그 이미지

Link2Me

,
728x90

Rocky Linux에서 사용되는 dnf는 "Dandified Yum"의 약자로, 패키지 관리 도구이다.
Rocky Linux와 같은 RHEL 계열 리눅스 배포판에서 사용되며, 시스템 패키지(소프트웨어)를 설치, 제거, 업데이트, 검색, 관리하는 데 사용된다. 이전의 Yum(Yellowdog Updater, Modified)을 대체하는 도구로, 더 빠르고 강력하며 개선된 의존성 처리 및 성능을 제공한다.


DNF의 주요 특징
- 의존성 해결 개선: 패키지 설치 시 의존성 충돌을 더 정확하고 효율적으로 처리.
- 빠른 성능: C언어와 Python3 기반으로 작성되어 더 빠른 패키지 처리 가능.
- 확장성: 플러그인을 통해 기능 추가가 용이.
- 메모리 사용 감소: 더 적은 메모리로 효율적으로 실행.
- 리포지토리 관리: 여러 리포지토리를 쉽게 설정하고 관리.

DNF의 주요 명령어
- dnf install <패키지>: 패키지 설치
- dnf remove <패키지>: 패키지 제거
- dnf update: 시스템 전체 패키지 업데이트
- dnf upgrade: 업데이트와 비슷하지만, 더 새로운 버전으로 업그레이드
- dnf search <키워드>: 특정 패키지 검색
- dnf list: 설치 가능한 패키지 목록 표시
- dnf info <패키지>: 패키지 정보 표시
- dnf clean all: 캐시 파일 정리

 

Rocky Linux 9.5 에서 설치 테스트한 스크립트이다.

################################
##### MariaDB 10.11 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.11/rhel9-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
 
# DNF 패키지 관리자에서 사용할 수 있는 저장소의 목록을 출력하고, MariDB 저장소를 확인
dnf repolist
 
# MariaDB 설치
dnf -y install MariaDB-server MariaDB-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작
systemctl start mariadb
 
# mariadb 상태 확인
systemctl status mariadb
 
# MariaDB 설정
mariadb-secure-installation
 
비밀번호 설정
 
# MariaDB 프로세스 확인 (둘중 하나 실행)
ps -ef | grep mysql
ps -ef | grep mariadbd
 
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
 
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
# 서비스 재시작
systemctl restart mariadb
 
mysql -u root -p
status
# 설치는 여기까지 하면 완료다. 아래 사항은 패스워드 인증방식에 대한 사항이다.

use mysql;
select * from global_priv;
select host,user,password,plugin from user;
 
# (10.4 버전 이상)이전 패스워드 인증방식으로 설정하기 ==> 패스워드 입력 방식
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("비밀번호");
flush privileges;
 
# unix_socket 인증방식으로 설정하기 ==> root 권한으로 접속 시 비밀번호 없이 인증
ALTER USER root@localhost IDENTIFIED VIA unix_socket;
flush privileges;
select host,user,password,plugin from user;
 
# 원격은 무조건 패스워드 인증으로만 접근이 가능하다.
 
#######################################################################
####### 실제 적용 예제 ######
#######################################################################
mariadb -u root -p
 
use mysql;
create user codefox@localhost identified by 'codefoxfull!!';
grant all privileges on orgChart.* to codefox@localhost;
flush privileges;
 
-- DB 생성
create database orgChart default character set utf8;
use orgChart;
 
-- 파일 업로드
source orgChart.sql;
 
 
#######################################################################
# DB 백업
mysqldump -uroot ---databases orgChart > orgChart.sql
 
# MariaDB 환경설정 관리 경로
ls -al /etc/my.cnf.d/
 
#######################################################################
# MariaDB 설치 경로 확인
cd /var/lib/mysql
 
############################
### root 패스워드 분실 복구 ####
############################
# 콘솔 창을 2개 준비하여 작업한다.
# 먼저 mariadb 서비스 중지한다.
systemctl stop mariadb
 
# 상태 확인
systemctl status mariadb
 
# 콘솔 A 창에서 확인한다.
ps -ef | grep mysql
 
# 콘솔 B창에서 DB 실행
sudo mysqld_safe --skip-grant-tables &
 
# 콘솔 A창에서 확인
ps -ef | grep mysql
 
# 콘솔 A창에서 비밀번호 없이 접속하여 패스워드 변경
mysql -u root 
 
-- 저장된 인증방식을 비활성화하기 위해 먼저 실행한다.
flush privileges;
 
-- 비밀번호 변경
grant all privileges on *.* to 'root'@'localhost' identified by '비밀번호';
flush privileges;
exit
 
# 콘솔 B창에서 Enter를 눌러 백그라운드 모드에서 빠져나온다.
 
# 콘솔 A창에서 실행되는 DB 모두 죽이기
ps -ef | grep mysql
kill -9 PID번호
를 해서 하나 하나 mysql 데몬을 전부 죽인다.
 
# 실행되는 mysql 프로세스가 없는지 확인한다.
ps -ef | grep mysql
 
# MariaDB 시작
systemctl start mariadb
 
# 접속 테스트
mysql -uroot -p
 

 

 

 

728x90
블로그 이미지

Link2Me

,
728x90

VMWare 를 이용하면 Windows 에 가상머신으로 Linux를 설치할 수 있다.

VirtualBox 와 VMWare 를 이용하면 된다.

 

VMWare 에 Rocky Linux 9 버전을 설치하는 과정을 캡쳐한 이미지이다.

 

먼저 Rocky-9.5 버전의 DVD ISO 파일을 받아둔 경로를 선택한다.

 

설치할 경로를 설정한다.

 

DISK 사이즈를 정한다.

 

Hardware 구성을 한다. IPTIME 공유기 하단에서 Private IP Address 를 할당받기 때문에 NetworkAdapter 를 Bridged 모드로 변경하고 메모리는 4GB 로 변경했다.

 

실제 설치과정을 시작하는 첫번째 화면이다.

 

 

언어는 한국어로 선택했다.

 

빨간색으로 된 부분을 설정해야 하고, 네트워크와 호스트 이름을 설정해야 한다.

 

root 비밀번호를 설정하고 아래 그림의 빨간줄을 선택하지 않으면 SSH root 로그인은 안된다.

 

네트워크 부분을 설정한다. 설정하지 않으면 자동으로 DHCP(유동 IP주소) 방식이 기본이다.

항상 고정 IP주소로 변경하려면 수정해야 한다.

 

 

 

 

 

사용자 설정을 안해서 사용자 설정을 하도록 요구해서 사용자ID와 비밀번호를 설정했다.

 

 

SSH 콘솔 접속을 하기 위한 설정이 되었는지 확인하고 추가 조치를 한다.

 

 

nmtui 를 입력하면 팝업창이 나온다.

 

여기까지 하고 나서 ping 테스트를 해본다.

ping 168.126.63.1

정상이면 네트워크 설정은 된 것이다.

 

#############################################
######### RockyOS 9 버전 확인 #################
#############################################
cat /etc/redhat-release
 
# 네트워크 설정
# 자동완성 기능을 이용하여 네트워크 초기 설정된 파일명을 찾는다.
# IP주소를 고정으로 하기 위한 설정이다.
# /etc/NetworkManager/system-connections 파일(RHEL 계열 9 시리즈부터)
vi /etc/NetworkManager/system-connections/ens 
# 까지 입력하고 TAB을 누르면 자동으로 파일이 찾아진다.
 
[connection]
id=ens160
uuid=4afae337-7442-357f-bb10-abae90f2119e
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1732491117
 
[ethernet]
 
[ipv4]
address1=192.168.1.20/24,192.168.1.100
dns=168.126.63.1;168.126.63.2;8.8.8.8;
method=manual
 
[ipv6]
addr-gen-mode=eui64
method=auto
 
[proxy]
 
:wq(저장)하고 나온다.
systemctl restart NetworkManager
 
 
ping 168.126.63.1
# ping 테스트를 해보면 네트워크가 동작되는지 확인할 수 있다.
 
# DNS 설정
vi /etc/resolv.conf
nameserver 168.126.63.1
nameserver 168.126.63.2
nameserver 8.8.8.8
 
# selinux 설정
vi /etc/sysconfig/selinux
SELINUX=disabled
로 변경하고 저장한다.
 
##########################################################################
#RockeyOS update
dnf -y update
 
##########################################################################
# 방화벽 설정(기본 설치되어 있다)
dnf -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
##########################################################################
# mc 설치
dnf -y install mc
 
# 열린포트 확인
netstat -nltp
 

 

728x90
블로그 이미지

Link2Me

,
728x90

MariaDB 10.6 설치 스크립트 및 root 비밀번호 복구 방법 등 전반에 대한 사항이다.

 

################################
##### MariaDB 10.6 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.6 CentOS repository list
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작 (둘 중 하나 실행)
systemctl start mariadb
service mariadb start
 
# mariadb 상태 확인
service mariadb status
 
# MariaDB 설정
mariadb-secure-installation
 
 
# MariaDB 프로세스 확인 (둘중 하나 실행)
ps -ef | grep mysql
ps -ef | grep mariadbd
 
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
 
vi /etc/my.cnf.d/clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
service mariadb restart
mysql -u root -p
status
quit
 
# 서비스 재시작
systemctl restart mariadb
 
mariadb -u root -p
use mysql;
select * from global_priv;
select host,user,password,plugin from user;
 
# (10.4 버전 이상)이전 패스워드 인증방식으로 설정하기 ==> 패스워드 입력 방식
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("비밀번호");
flush privileges;
 
# unix_socket 인증방식으로 설정하기 ==> root 권한으로 접속 시 비밀번호 없이 인증
ALTER USER root@localhost IDENTIFIED VIA unix_socket;
flush privileges;
select host,user,password,plugin from user;
 
# 원격은 무조건 패스워드 인증으로만 접근이 가능하다.
 
#######################################################################
####### 실제 적용 예제 ######
#######################################################################
mariadb -u root -p
 
use mysql;
create user codefox@localhost identified by 'codefoxfull!!';
grant all privileges on orgChart.* to codefox@localhost;
flush privileges;
 
-- DB 생성
create database orgChart default character set utf8;
use orgChart;
 
-- 파일 업로드
source orgChart.sql;
 
 
#######################################################################
# DB 백업
mysqldump -uroot ---databases orgChart > orgChart.sql
 
# MariaDB 환경설정 관리 경로
ls -al /etc/my.cnf.d/
 
#######################################################################
# MariaDB 설치 경로 확인
cd /var/lib/mysql
 
############################
### root 패스워드 분실 복구 ####
############################
# 콘솔 창을 2개 준비하여 작업한다.
# 서비스 중지
systemctl stop mariadb
 
# 상태 확인
systemctl status mariadb
 
# DB 실행
sudo mysqld_safe --skip-grant-tables &
 
# 다른 콘솔창에서 확인
ps -ef | grep mysql
 
# 비밀번호 없이 접속하여 패스워드 변경
mysql -u root 
 
-- 저장된 인증방식을 비활성화하기 위해 먼저 실행한다.
flush privileges;
 
-- 비밀번호 변경
grant all privileges on *.* to 'root'@'localhost' identified by '비밀번호';
flush privileges;
exit
 
# 실행되는 DB 모두 죽이기
ps -ef | grep mysql
kill -9 PID번호
를 해서 실행된 창을 전부 죽인다.
 
# 실행되는 mysql 프로세스가 없는지 확인한다.
ps -ef | grep mysql
 
systemctl start mariadb
 
# 접속 테스트
mysql -uroot -p
비밀번호
 

 

 

위 스크립트 파일 첨부

CentOS7 MariaDB10.6.txt
0.00MB

 

728x90
블로그 이미지

Link2Me

,
728x90

 

 

Windows에서 VMWare를 설치하고 난 이후

CentOS 7 설치하고 Network 인식이 안되어서 ping이 나가지 않는다.

 

하나 하나 해결하는 과정이다.

 

처음에는 NAT 로 설정되어 있어서 Bridge 모드로 변경하는 과정이다.

 

네트워크 기본 설정을 하고 나면 아래의 과정으로 다음을 진행하면 된다.

yum -y update 를 했더니...

Cannot find a valid baseurl for repo: base/7/x86_64

와 같은 메시지가 출력된다.

#############################################
######### CentOS 7 버전 확인 ##################
#############################################
cat /etc/redhat-release
 
# yum repolist 를 했을 때 반응이 없을 때
1. 네트워크 설정이 잘못된 것은 없는지 확인한다.
2. DNS 설정 부분을 확인한다.
3. yum repolist 를 해볼 때 에러가 발생하는지 확인한다.
 
 
# 네트워크 설정
# 자동완성 기능을 이용하여 네트워크 초기 설정된 파일명을 찾는다.
# IP주소를 고정으로 하기 위한 설정이다.
vi /etc/sysconfig/network-scripts/ifcfg-en 
까지 입력하고 TAB을 누르면 자동으로 파일이 찾아진다.
 
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.20
PREFIX=24
GATEWAY=192.168.1.100
DNS1=168.126.63.1
DNS2=168.126.63.2

# 저장하고 빠져나온다.
service network restart
 
# DNS 설정
vi /etc/resolv.conf
nameserver 168.126.63.1
nameserver 168.126.63.2
nameserver 8.8.8.8
 
 
# yum repository 에러 해결
# 기존 repo 백업 처리
mkdir /etc/yum.repos.d/repo_bk 
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bk/ 
ls /etc/yum.repos.d/repo_bk/
 
# 새로운 Base Repo 파일 생성
 
vi /etc/yum.repos.d/CentOS-Base.repo
 
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.kakao.com/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#released updates
[updates]
name=CentOS-$releasever - Updates
# kakao
baseurl=http://mirror.kakao.com/centos/$releasever/updates/$basearch
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://centos.mirror.cdnetworks.com/$releasever/extras/$basearch
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://centos.mirror.cdnetworks.com/$releasever/centosplus/$basearch
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://centos.mirror.cdnetworks.com/$releasever/contrib/$basearch
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 
 
# 변경된 repo 로 적용한다.
# yum 캐시 정리하고 최신 정보를 가져온다.
yum clean all
 
# 현재 활성화된 repo 확인
yum repolist
 
#######################################################################
#CentOS update
yum -y update
 
#######################################################################
### 시간 동기화
yum -y install rdate
 
crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
 
# 크론탭 재시작
service crond restart
 
#######################################################################
# 방화벽 설정
yum -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
####################################################################
# mc 설치
yum -y install mc
 
# 열린포트 확인
yum -y install net-tools
netstat -nltp
 

 

위 스크립트 파일을 첨부

CentOS7_inital_setting.txt
0.00MB

728x90
블로그 이미지

Link2Me

,
728x90

날짜를 증가시키면서 반복하는 스크립트

#!/bin/bash
 
# 시작 날짜 설정
#current_date=$(date +%Y%m%d)
current_date="20240131"
echo "현재 날짜: $current_date"
 
# 반복 횟수 설정
num_days=55
 
# 날짜 증가 반복
for (( i=0; i<$num_days; i++ )); do
    # 현재 날짜 출력
    echo "현재 날짜: $current_date"
 
    # 다음 날짜 계산
    next_date=$(date -"$current_date + 1 days" +%Y%m%d)
    echo "다음 날짜: $next_date"
 
    # 그다음 날짜 계산
    next_next_date=$(date -"$current_date + 2 days" +%Y%m%d)
    echo "그다음 날짜: $next_next_date"
 
    unzip ${next_date}_dailynoticedata.zip
    mv AlterD.JUSUBM.${next_next_date}.TI_SPBD_BULD.TXT ${next_next_date}_BULD.cvs
 
    # 다음 반복을 위해 현재 날짜 업데이트
    current_date=$next_date
done
 
rm -*.TXT
rm -*.zip

 

 

728x90

'리눅스' 카테고리의 다른 글

CentOS7 MariaDB 10.6 설치 및 root 비밀번호 복구 방법  (0) 2024.11.25
VMWare 에 CentOS 7 설정  (0) 2024.11.24
CentOS 7 PHP 7.4 MariaDB 10.5 설치  (0) 2022.05.14
CentOS 5.8 APM 설치 과정  (0) 2022.05.14
VMWare Network 설정  (0) 2022.04.23
블로그 이미지

Link2Me

,
728x90

CentOS 7 에서 PHP7.4 와 MariaDB를 설치하는 스크립트이다.

Apache httpd.conf 파일은 보안 설정과 php.ini 파일 보안설정이 고려되어 있다.

이런 스크립트 구하기는 쉽지 않을 것이다. Secure Coding 환경설정까지 고려된 스크립트라고 보면 된다.

 

 
##########################################################################
## CentOS 7 Package Update
# CentOS 7 업데이트
yum -y update
 
##########################################################################
# CentOS 7 방화벽 설정
yum -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
#########################################################################
# Databse 접근을 위한 SELinux 설정 변경
# SELinux 상태 확인
sestatus
 
#SELinux httpd flag 확인 : 네트워크를 통해 Database에 연결할 수 있는 옵션이 꺼져 있음
getsebool -| grep httpd
 
# Database 접근을 위한 SELinx 설정 변경
setsebool -P httpd_can_network_connect_db 1
 
# SELinux 비활성화 하기
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq 로 저장하고 나온다.
 
# 재부팅해야 SELinux 명령어 수정한 사항이 적용된다.
reboot 
 
# 임시 비활성화 방법
setenforce 0
 
################################
##### MariaDB 10.5 버전 설치 #####
################################
# MariaDB를 잘못 설치한 경우에는 기존 MariaDB에서 사용된 파일 삭제 필요
rm --/var/lib/mysql
 
rpm -qa | grep MariaDB
 
# 10.3 버전, 10.4버전도 동일한 형태이다.
cd /root
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
:wq 로 저장하고 나온다.
 
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작
systemctl start mariadb
 
# mariadb 상태 확인
service mariadb status
 
# Maria DB 보안 설정하기
# 거의 Y만 누르면 끝난다.
mariadb-secure-installation
 
mysql_secure_installation
# 알아낸 임시패스워드 입력하고 영문 소문자, 대문자, 숫자, 특수문자를 포함한 패스워드로 변경
 
# root 비밀번호 설정
 
# UTF-8 로 통신하기 위한 서버/클라이언트 설정
vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
 
#:wq (저장)하고 빠져나온다.
# DB서버와 접속을 할 때 클아이언트는 자신이 사용할 문자셋 설정하며, 그 설정을 사용하도록 되어있지만 
# skip-character-set-client-handshake 옵션을 사용할 경우 
# 클라이언트에서 설정한 문자셋을 무시하고 character_set_server값으로 설정된다.
 
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8mb4
[mysqldump]
default-character-set=utf8mb4
 
#:wq (저장)하고 빠져나온다.
 
# MariaDB 재시작
service mariadb restart
 
 
# yum으로 설치한 패키지 경로 알아내기
rpm -ql MariaDB-server.x86_64 | grep cnf
 
# mariadb 버전 확인
mariadb --version
 
# MariaDB 접속하여 적용된 사항 확인
mysql -u root -p
status
show variables like 'c%';
 
# DB 서버의 기본 문자셋으로서 설정 파일에 명시한 대로 utf8mb4 로 설정되어 있다.
 
 
#########################################
####### 실제 적용 예제 ######
#########################################
# https://link2me.tistory.com/431 참조하면 도움된다.
mysql -u root -p
-- DB 생성
drop database phpdb;
create database phpdb default character set utf8mb4 COLLATE = utf8mb4_unicode_ci;
 
-- 사용자 권한 부여
use mysql;
create user codefox@localhost identified by 'Wofullnder!#%';
grant all privileges on phpdb.* to codefox@localhost;
flush privileges;
 
-- 비밀번호 변경 및 권한 부여
grant all privileges on phpdb.* to codefox@localhost identified by 'Wofullnder!#%';
flush privileges;
quit
 
#############################################
# PHP 7.4 와 Apache 설치 
#############################################
## 현재 설치된 PHP 버전 확인
yum list php
 
yum -y install expat-devel
 
# 설치 확인 방법1
yum list installed | grep httpd
yum list installed | grep php
 
# 설치 확인 방법2
rpm -qa | grep httpd
rpm -qa | grep php
 
## httpd 설치된 것 한꺼번에 지우기 ==> 설치된 것이 없으면 생략
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
rpm -qa | grep httpd >list
sudo yum -y remove $(awk '{print $1}' <list)
 
# PHP 설치된 것 한꺼번에 지우기 ==> 설치된 것이 없으면 생략
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
rpm -qa | grep php >list
sudo yum -y remove $(awk '{print $1}' <list)
 
 
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
 
# yum 저장소와 패키지를 관리
yum -y groupinstall "Development tools"
yum -y install epel-release yum-utils
 
# Disable repo for PHP 5.4 ==> yum 기본 설치된 PHP 5.4 버전 대신에 PHP 7.4 버전 설치
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php74
 
# Install PHP 7.4 on CentOS 7
yum install ---enablerepo=remi-php74 httpd httpd-devel
yum install ---enablerepo=remi-php74 php php-cli php-common php-devel php-ldap 
yum install ---enablerepo=remi-php74 mod_ssl php-mbstring php-mcrypt php-mysqlnd php-pdo 
yum install ---enablerepo=remi-php74 php-pgsql php-sqlite php-process php-snmp php-soap 
yum install ---enablerepo=remi-php74 php-libxml php-xml php-pear php-gd php-fpm php-dom 
yum install ---enablerepo=remi-php74 php-ssh2 php-xmlreader php-curl php-date php-exif 
yum install ---enablerepo=remi-php74 php-filter php-simplexml php-hash php-iconv php-imagick 
yum install ---enablerepo=remi-php74 php-json php-openssl php-pcre php-posix php-sockets 
yum install ---enablerepo=remi-php74 php-spl php-tokenizer php-zlib php-gmp php-Icinga php-intl 
yum install ---enablerepo=remi-php74 php-pecl-zip zip php-zip php-pspell 
yum install ---enablerepo=remi-php74 wget unzip mc git nmap telnet net-tools
 
# PHP 버전 확인
php -v
 
# Apache 버전 확인
httpd -v
 
# 서비스 활성화(재부팅시 auto start)
systemctl enable httpd
 
# 서비스 시작
systemctl start httpd
 
# 서비스 구동 상태 확인
systemctl status httpd
 
# 서비스 중지
systemctl stop httpd
# 서비스 재시작
systemctl restart httpd
 
# openssl 버전 확인
openssl version
 
###################################################
# Apache 환경 설정 
###################################################
# Web root 디렉토리 : /var/www/html 기본 설정인데 아래는 home 디렉토리 하단으로 수정했다.
# 보안 설정 부분이 같이 포함되어 있으니 아래와 같이 설정하면 도움된다.
# 더 자세한 사항은 구글링해서 찾아보시라.
## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost
 
DocumentRoot "/var/www/htdocs"
 
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
 
<Directory "/var/www/htdocs">
    Options +FollowSymLinks -Indexes
    AllowOverride All
    Require all granted
    <LimitExcept GET POST>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>
 
<IfModule dir_module>
    DirectoryIndex index.php index.html 
</IfModule>
 
<IfModule mime_module>
    TypesConfig /etc/mime.types
    #AddType application/x-gzip .tgz
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php .html .do
    AddType application/x-httpd-php-source .phps
    AddType text/css .css
    AddType text/javascript .js
    #AddHandler cgi-script .cgi
    #AddHandler type-map var
    #AddOutputFilter INCLUDES .shtml
</IfModule>
 
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 408 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
ErrorDocument 502 /error.php
ErrorDocument 503 /error.php
 
# 반드시 서버 정보 노출 방지 추가해야 함.
ServerTokens Prod
ServerSignature Off 
 
TraceEnable Off
 
# Apache HTTPOXY 취약점 방지
RequestHeader unset Proxy early
 
# 저장(:wq)하고 나온다.
 
##################################
# PHP.ini 환경 설정 수정사항
##################################
 
vi /etc/php.ini
short_open_tag = On
cgi.fix_pathinfo=0
 
;PHP 버전 정보 노출 방지(Hide PHP Version Number)
expose_php = Off
 
date.timezone ="Asia/Seoul"
 
;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
;session.gc_divisor = 1000 으로 되어 있는 것을 1로 변경한다.
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제된다.
; 세션 시간은 1시간으로 설정한다.
session.gc_maxlifetime = 3600
 
post_max_size = 20M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 18M ;// 기본 2M 으로 되어 있었음
 
 
# 저장(:wq)하고 나온다.
 
#####################################################################
# Web 서버 root 디렉토리 생성
mkdir -/var/www/htdocs
 
# 반드시 추가구현해야 문제없이 동작한다. error.php 파일 내용은 오픈하지 않는다.
# error.php 대신에 index.php 로 설정해도 무방하다.
# 해커가 없는 파일을 검색으로 찾을 때 비정상적으로 검색한다는 걸 알려주는 error.php 파일인데,
# 비정상적인 파일 검색 실행시 무조건 index.php 로 가도록 설정해도 되기 때문이다.
 
# Web 서버 root 디렉토리로 이동
cd /var/www/htdocs/
vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ error.php?/$1 [QSA,PT,L]
</IfModule>
 
#:wq(저장)하고 빠져나온다.
 
## 보안설정
sudo chmod 640 /etc/httpd/conf/httpd.conf
sudo chown root:root /etc/httpd/conf/httpd.conf
sudo chmod 640 /etc/php.ini
sudo chown root:root /etc/php.ini
 
sudo chown -R apache:apache /var/www/htdocs
sudo chmod -755 /var/www/htdocs
 
# 방화벽 설정 확인
iptables -L
 
# Apache 재시작
systemctl restart httpd
 
# 만약 Web 서버가 동작하지 않는다면 에러 로그를 살펴봐야 한다.
cd /var/log/httpd/
 
 
# 열린포트 확인
yum -y install net-tools 
netstat -nltp
 
### 시간 동기화
yum -y install rdate
 
crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
 
 
#####################################
# 최신버전 phpMyAdmin 설치
#####################################
# Web 서버 root 디렉토리로 이동
cd /var/www/htdocs
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.zip
unzip phpMyAdmin-5.1.3-all-languages.zip
chown -R apache:apache phpMyAdmin-5.1.3-all-languages
mv phpMyAdmin-5.1.3-all-languages pmaaa
cd pmaaa
cp -rp config.sample.inc.php  config.inc.php
 
# 환경 설정
vi config.inc.php
 
$cfg['blowfish_secret'= 'qtdRoGmbcr]0s)r$9b_JUnoqtdRoGmbcr]0s)r$9b_JUnoGmbcrGmbcr]0s)r$9b{~Xz'// 임의의 값 설정
$cfg['Servers'][$i]['host'= 'localhost';
$cfg['Servers'][$i]['compress'= true;
$cfg['TempDir'= '/tmp';
 
# 저장(:wq)하고 빠져나온다.
 
# 주의사항
# phpMyAdmin 기능이 편리한 만큼 특정한 IP에서만 접속하도록 IPFiltering을 설정하는 걸 추가해줘야 안전하다.
# 설정 방법은 블로그 게시글을 찾아서 적용하기 바란다.
 
###############################
# composor 설치 
###############################
cd /var/www/htdocs
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer -V
# yes 입력
export COMPOSER_ALLOW_SUPERUSER=1
echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc
cat ~/.bashrc | grep export
 
# PHPSpredSheet 설치
cd /var/www/htdocs
composer require phpoffice/phpspreadsheet
 
# PHP Excel 예제는 본 블로그에 게시되어 있다.
 
###############################
# RSA 암호화 통신을 위한 설정
###############################
#리눅스 SSH 에서 RSA 공개키, 개인키 생성방법
mkdir -/home/rsa/key/
cd /home/rsa/key/
 
# Private Key 생성
openssl genrsa -out rsa_pri.pem 1024
 
# Public Key 생성
openssl rsa -pubout -in rsa_pri.pem -out rsa_pub.pem
 
##########################################################################
 
cd /var/www/htdocs/
vi info.php
<?php
phpinfo();
?>
 
#:wq(저장)하고 빠져나온다.
 
# Web 브라우저에서 동작여부 확인한다.
http://192.168.1.20/info.php
 
 
##########################################################################
# 패스워드 변경 (필요시)
mysql -uroot -p
update user set password=password('변경할비밀번호') where user='root';
flush privileges;
quit;
 
### 테이블 백업하기 ####
# 최초 단계에서는 실행하지 않는다.
mysqldump -uroot ---databases phpdb > phpdb.sql
mysqldump -uroot ---databases phpdb > phpdb.sql
 
### 테이블 구조만 백업하기 ####
# 최초 단계에서는 실행하지 않는다.
mysqldump -uroot ---no-data --databases phpdb > phpdb.sql
 
# 서버 접속 권한이 있어야 가능
# 개발용 노트북/맥북이 구로 사무실에서는 접속 가능
# 원격 서버에서 로컬 서버(현재 접속된 서버)로 파일 가져오기. 
scp root@192.168.1.20:/root/phpdb.sql ./
 
# DB 테이블 Upload. SQL 파일이 존재하는 경로에서 실행한다.
mysql -uroot -p
use phpdb;
source phpdb.sql; -- DB load
 
show tables;
drop table customer_bk;
 
-- 테이블 구조 확인
desc customer;
desc deviceM;
 
-- 테이블 칼럼 길이는 가능하면 너무 크지 않게 설정한다.
 
-- 데이터베이스 문자셋 변경
ALTER DATABASE {database} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER DATABASE phpdb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
 
-- 기존 테이블 문자셋 변경
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
##########################################################################
 

 

 

728x90

'리눅스' 카테고리의 다른 글

VMWare 에 CentOS 7 설정  (0) 2024.11.24
CentOS 7 날짜 반복 증가 스크립트  (0) 2024.03.31
CentOS 5.8 APM 설치 과정  (0) 2022.05.14
VMWare Network 설정  (0) 2022.04.23
CentOS 7 Jenkins 설치  (0) 2022.03.25
블로그 이미지

Link2Me

,
728x90

오래된 CentOS 5.8 또는 CentOS 5.9 에 APM(Apache + PHP + MySQL) 설치 과정 스크립트이다.

이 스트립트가 잘 동작되는지 여부는 모른다.

몇년전에는 잘 동작되어 사용했던 스크립트이다.

 

# CentOS 5.8 인스톨 후 APM 설치과정
 
# 버전 확인
cat /etc/redhat-release
 
 
작업 서버
==== IP Setting ====
# 설정정보 확인
ifconfig
 
# DNS를 위한 네임서버를 지정 
cat /etc/resolv.conf   
cat /etc/hosts
 
# 네트워크 살았는지 죽었는지 테스트
ping 168.126.63.1
 
# 현재 MAC address 알아내기
cat /sys/class/net/*/address
 
== 설정 작업
cd /etc/sysconfig/network-scripts
# ll 하고 ifcfg-*** 파일을 확인한다.
# 네트워크 환경 설정에 맞게 변경한다.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=08:00:27:AE:E9:5A
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.20
GATEWAY=192.168.1.100
TYPE=Ethernet
DNS1=168.126.63.1
DNS2=168.126.63.2
 
service network restart
 
=================================
# httpd 데몬 확인
ps -ef | grep httpd
# MySQL 데몬 확인
ps -ef | grep mysql
 
# 아파치(Apache) 시작
/etc/init.d/httpd start
/etc/init.d/httpd stop
# MySQL 시작
/etc/init.d/mysqld start
 
=================================
# RPM이 설치 되어 있는지 확인
rpm -qa httpd php mysql
rpm -qa | grep http
rpm -qa | grep mysql
rpm -qa | grep php
 
# 기존 패키지 삭제
yum remove -y httpd mysql php
 
# 설치된 것이 제대로 제거되었는지 확인
rpm -qa httpd php mysql
rpm -qa | grep http
rpm -qa | grep mysql
rpm -qa | grep php
 
# 제거되지 않고 남아 있는 것이 있다면 rpm -e --nodeps (의존성에 개의치 않고 삭제) 를 붙여준다.
rpm ---nodeps jakarta-commons-httpclient-3.0-7jpp.4.el5_10
rpm ---nodeps php-cli-5.1.6-45.el5_11
rpm ---nodeps php-common-5.1.6-45.el5_11
 
전부 지워졌는지 확인하고 나서 APM 소스 설치에 들어간다.
 
# 모든 웹서버 데몬 죽이기
killall httpd
 
# 기존 패키지 stop
/etc/init.d/mysqld stop
 
# MySQL 데몬 확인
ps -ef | grep mysql
# 구동중인 프로세스 죽이기
kill -9 프로세스번호
 
=========================================================
# cmake 설치전에 필요 라이브러리 설치(경로위치 상관없음)
yum -y install zlib curl
yum -y install gcc gcc-cpp gcc-c++
yum -y install openssl openssl-devel
yum -y install libtermcap-devel ncurses-devel libc-client-devel bzip2-devel
yum -y install bison libpng-devel curl-devel libpng freetype 
yum -y install xml*
yum -y install gd*
yum -y install libxml*
 
# yum -y install php-devel phpize php-pear 
# 이걸 yum 설치하면 apache, php 가 다시 기본 설치된다.
 
=============================================
# 설치할 디렉토리 만들기
cd /usr/local/
mkdir APM
 
# cmake 설치
# 1. cmake 압축 풀고 설치 (기존 설치된 것 있으면 지우고 자동 재설치)
cd /home/htdocs/
rm -rf cmake-2.8.9/
tar -xzf cmake-2.8.9.tar.gz
cd cmake-2.8.9
./bootstrap
make && make install
 
======== MySQL 소스 설치 ==================
# 2. mysql 설치
cd /home/htdocs/
rm -rf mysql-5.5.27/
tar -xvzf mysql-5.5.27.tar.gz
cd mysql-5.5.27
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql/data -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFIGDIR=/etc -DMYSQL_TCP_PORT=3306
make && make install
 
=== PATH 추가 ===
cd
vi .bash_profile
# PATH 경로에 추가
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
저장후
source .bash_profile
 
cd /usr/local/mysql/
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
# mysql 설치 디렉토리에 대한 mysql 권한 부여
 
# mysql 설정 파일 복사
cp support-files/my-medium.cnf /etc/my.cnf
 
# 기본 DB 생성
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
 
 
# 시스템이 재부팅되어도 mysql 이 자동 실행되도록 설정
# 기존 설치된 파일이 있으면 overwrite 하면 됨
cp support-files/mysql.server /etc/init.d/mysqld
 
vi /etc/init.d/mysqld
datadir=/usr/local/mysql/data
로 변경하고 저장
 
# 등록이 잘 되었는지 확인
chkconfig --add mysqld
chkconfig --list | grep mysqld
 
# MySQL 서버와 프로그램을 연결해 줄 소켓을 링크 파일로 생성한다.
ln -/var/lib/mysql/mysql.sock /usr/local/mysql/mysql.socket
 
==== MySQL 구동
/etc/init.d/mysqld start
 
MYSQL root 암호 설정
mysql -uroot -p
password: 그냥 엔터키 (패스워드가 설정되지 않았을 때, 설정되어 있으면 접속 불가)
use mysql;
--update user set password=password('암호') where user='root';
update user set password=password('link2me03') where user='root';
flush privileges;
select host, user, password from user;
quit
 
=========== Apache 소스 설치 ===============
3. 아파치 설치
cd /home/htdocs/
rm -rf apr-1.4.6/
tar -xvzf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure
make && make install
 
cd /home/htdocs/
rm -rf apr-util-1.4.1/
tar -xvzf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --with-apr=/usr/local/apr
make && make install
 
cd /home/htdocs/
rm -rf pcre-8.30/
tar -xvzf pcre-8.30.tar.gz
cd pcre-8.30
./configure
make && make install
 
# pcre-8.30 에러가 발생하는 부분(CentOS 6.6에서는 에러 메시지 없음)
 
cd /home/htdocs/
rm -rf httpd-2.4.3/
tar -xvzf httpd-2.4.3.tar.gz
cd httpd-2.4.3
./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so --enable-rewrite-all
make && make install
 
# 컴파일 실수가 발생하면, 해당 디렉토리에서 바로 make distclean 으로 삭제한다.
# 그리고 나서 다시 실행한다.
 
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
 
# 리부팅시 아파치 프로세스를 자동으로 띄운다
cd /home/htdocs/
ln -/init.d/httpd /etc/rc0.d/K90httpd
ln -/init.d/httpd /etc/rc3.d/S89httpd
ln -/init.d/httpd /etc/rc5.d/S89httpd
 
vi /etc/init.d/httpd
둘째줄에서 i 를 눌러 Insert 모드로 변경한 다음에 아래 5줄을 복사하여 붙여넣기하여 삽입하고 저장
# chkconfig: 2345 90 90
# description: inir file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/lib/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid
 
cd /home/htdocs/httpd-2.4.3
chkconfig --add httpd
chkconfig --list httpd
chkconfig --level 2345 httpd on
 
vi /usr/local/lib/httpd.conf
User daemon 과 Group daemon 라인을 찾아서 daemon 대신에 nobody 로 변경
#ServerName www.example.com:80 아래줄에 추가
ServerName localhost
#처럼 해당 서버주소이름으로 변경. 도메인이 있으면 도메인으로 변경처리
 
# Options Indexes FollowSymLinks 에서 Indexes 제거해야 디렉토리 경로 보이는 것 방지됨
# 그리고 아래처럼 변경해줌
DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
    Require all granted
</Directory>
 
아파치(Apache) 시작
/etc/init.d/httpd start
 
http://192.168.1.20/ --> Web browser 에서 It works! 나오면 성공적인 설치되었다는 표시
 
----It works 화면이 안될때 오류사항 해결 ------
/etc/sysconfig/iptables 에서 80포트 방화벽 해제
/etc/rc.d/init.d
 
 
======= PHP 소스 설치 =======
4. PHP 설치
cd /home/htdocs/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
rm -rf libiconv-1.15/
tar -xvzf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/iconv
make && make install
 
cd /home/htdocs/
wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install
 
 
# PHP 소스 설치시 에러가 발생하면 make clean 을 해줘야 한다.
 
cd /home/htdocs/
wget https://museum.php.net/php5/php-5.4.19.tar.gz
cd /home/htdocs/
rm -rf php-5.4.19/
tar -xvzf php-5.4.19.tar.gz
cd php-5.4.19
./configure --prefix=/usr/local/php \
 --with-config-file-path=/usr/local/apache/conf \
 --with-apxs2=/usr/local/apache/bin/apxs \
 --with-mysql=/usr/local/mysql \
 --with-iconv=/usr/local/iconv \
 --with-curl=/usr/lib \
 --enable-zip \
 --with-openssl \
 --with-mcrypt \
 --enable-mbstring \
 --with-gd \
 --with-mysqli=/usr/local/mysql/bin/mysql_config \
 --with-zlib \
 --with-freetype-dir=/usr/local/lib \
 --with-jpeg-dir=/usr/local/php  --with-mcrypt=/usr/local/
make
make install
 
 
## 위 명령 실행시 아래와 같은 오류가 난다면 해결책 한 후 위에 명령 다시 실행.
# configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
# 해결책 : # yum -y install curl* 또는 yum -y install curl & yum -y install curl-devel
 
# php.ini 샘플파일을 환경설정 디렉토리에 복사
cp php.ini-development /usr/local/lib/php.ini
 
# 아파치와 연동을위해 추가로 httpd.conf 3군데 수정
vi /usr/local/lib/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html index.php   =>index.php추가
</IfModule>
 
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
 
    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
 
    # 그림 이미지, css, js는 기록하지 않게 처리
    SetEnvIfNoCase Request_URI "\.(jpg|png|gif|css|ico|js|swf)$" notloglist
 
    #CustomLog "logs/access_log" common
    #CustomLog "logs/access_log" combined
    #CustomLog "|/아파치 설치 경로/bin/rotatelogs /로그를 저장할 경로/파일명 %Y%m%d%H 86400 +540" combined
    # 날짜별로 로그기록 남기기
    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400 +540" combined env=!notloglist
</IfModule>
 
# 아래 두줄을 <IfModule mime_module>에 추가
    AddType application/x-httpd-php .php .html
    AddType application/x-httpd-php-source .phps
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    #PHP Enable
    AddType application/x-httpd-php .php .html
    AddType application/x-httpd-php-source .phps
</IfModule>
 
# lib, inc 등을 사용할 경우에는 반드시 AddType application/x-httpd-php .php .html .inc .lib .xml 처럼 설정해줘야 한다.
# 이 부분을 빠뜨리면 웹페이지 상에서 텍스트로 인식하여 파일의 내용이 그대로 노출된다.
# 파일 확장자가 htm 으로 끝나면 이 부분도 추가를 해줘야 한다.
# 코드가 뭔지 모르게 하고 싶다면 .do 를 사용하는 것도 방법 중의 하나이다.
 
 
###### php.ini 수정사항  ###########
vi /usr/local/lib/php.ini
시간설정 (앞에 ;지울것) 을 지우고 아래 내용 추가
date.timezone = "Asia/Seoul"
;<? 와 <?php 둘다 인식하게 함
short_open_tag = On
; PHP 가 받아들이는 POST data 최대 크기
;default 8M 로 되어 있음, upload_max_filesize 보다 크게 설정해야 함
post_max_size = 60M 
memory_limit = 128M
upload_max_filesize = 50M
 
; error_reporting 세팅
;개발환경
;error_reporting  =  E_ALL
; 실제 환경, 경고메시지 출력 안됨
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; 해킹의 먹이감이 되므로 평소에는 Off 로 해둔다. 에러가 있을 경우 디버깅 가능하도록 에러 메세지를 출력해준다.
display_errors = Off
; 평소에는 해제(Off)한다. 개발환경에서는 디버깅 가능하도록 On하면 에러 메세지를 출력해준다. 
display_startup_errors = Off
log_errors = On
; 에러 로그 파일 설정이 없으면 Apache 로그 파일에 기록된다.
; 퍼미션 설정해서 /home/user/log/php.log 과 같이 설정
;error_log = filename
 
; register_globals = On 으로 하면, PHP 스크립트의 변수 값을 임의로 변경할 수 있는 취약성이 있다.
; off 로 설정한 후, $_GET, $POST 를 사용해서 사용자가 전달한 값을 얻어야 한다.
register_globals = Off
 
;UTF-8 로 문자 인코딩 설정하기
;해당 부분을 찾아서 아래와 같이 수정
default_charset = "UTF-8"
[mbstring]
mbstring.language = Korean
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
 
#########################################################
다른 방식으로 upload progress 추가
cd /usr/local/bin
./pecl install uploadprogress
 
vi /usr/local/lib/php.ini 파일에서 추가할 사항
extension=uploadprogress.so
 
# 이해 잘 안되는 부분
# 파일 생성 여부 확인
find / -name libphp5.so 
# modules/libphp5.so 설정 여부 확인해본다.
httpd.conf 파일내에 LoadModule php5_module        
 
chcon -t texrel_shlib_t 
# /usr/local/apache/modules/libphp5.so --> 모듈 올라오는 에러 잡는것
# 위 명령 에러날경우 SELINUX를 비활성화에서 활성화로 변경
cat /etc/selinux/config
# vi /etc/selinux/config
SELINUX=enforcing를 SELINUX=disabled로 변경 
 
5. 퍼미션 설정 및 점검
# 일반계정 유출 등에 의해 파일이 변조될 수 있으므로 확인하여 조치한다.
# Apache and PHP 환경설정 파일 퍼미션 변경
# httpd.conf 파일의 경로 찾기 
find / -name httpd.conf 
chmod 640 /usr/local/lib/httpd.conf
chown root:root /usr/local/lib/httpd.conf
chmod 640 /usr/local/lib/php.ini
chown root:root /usr/local/lib/php.ini
# Document Root 디렉토리 설정 확인 및 변경
# Document Root 디렉토리는 755, 파일은 644로 되어 있는지 확인하고 변경
cd /usr/local/apache/htdocs
# 가능하면 home/httpd/ 하위 디렉토리에 Document Root 가 설정되도록 변경(httpd.conf 파일내에서)
chown 작성자(nobody) /usr/local/apache/htdocs
chgrp 작성자그룹 /usr/local/apache/htdocs
chmod 755 /usr/local/apache/htdocs
 
 
DocumentRoot "/home/httpd"
<Directory "/home/httpd">
# 허용하지 않은 디렉토리를 액세스할 수 있으므로 가능하면 FollowSymLinks 를 삭제하는 것이 좋다.
#    Options IncludesNoExec FollowSymLinks
    Options IncludesNoExec
    AllowOverride None
    Order deny,allow
    Allow from all
    Require all granted
</Directory>
 
 
## httpd restart 
/etc/init.d/httpd stop
/etc/init.d/httpd start
/etc/init.d/mysqld start
 
## 정상적으로 설치되었는지 여부 확인
http://192.168.1.20/info.php
 
# phpinfo 가 정상적으로 보이면 APM 설치는 정상적으로 잘 되었다고 보면 된다.
 
========== DB 설정 =========================
1. MySQL 접속 및 사용자 권한 부여
mysql -u root -p
 
-- DB 생성
create database phpdb default character set utf8;
use mysql;
create user codefox@localhost identified by 'Wofullnder!#';
grant all privileges on phpdb.* to codefox@localhost;  -- 사용자 권한 부여
flush privileges;    -- // 변경된 내용을 메모리에 반영(권한 적용)
 
revoke all on phpdb.* from codefox@localhost;  -- 권한 회수
show grants for codefox@localhost;  -- 권한 확인
 
grant all privileges on phpdb.* to codefox@localhost;  -- 사용자 권한 부여
flush privileges;    -- // 변경된 내용을 메모리에 반영(권한 적용)
 
grant all privileges on phpdb.* to codefox@localhost identified by 'Wofullnder!#';
 
-- backup 받은 DB SQL 복구
show databases;
use phpdb;   -- DB를 선택하지 않으면 에러가 발생함
source codefox.sql 
 
 
# 게시물 내용 검색 (찾고자 하는 내용이 들어있는 파일 찾아내기)
cd /usr/local/apache/htdocs
find ./ -name "*.php" | xargs grep -"계정을 다시 확인"
find ./ -name "*.*" | xargs grep -"검색어를 입력"
 
# 서버 네트웍 IP 수정
   /etc/sysconfig/network-script/ifcfg-eth0 -> 서버 IP
   /etc/resolve.conf  -> 도메인 IP
 
# 소스 IP수정
   /usr/local/lib/httpd.conf
   /usr/local/apache/config.php
 
 
##############################################################################
# 환경 설정 
vi /usr/local/lib/httpd.conf
vi /usr/local/lib/php.ini
 
## httpd restart 
/etc/init.d/httpd stop
/etc/init.d/httpd start
/etc/init.d/mysqld start
 
netstat -an | grep "LISTEN "
 
 
<VirtualHost *:8080>
       DocumentRoot "/var/www/html"
       <Directory "/var/www/html"> 
          AllowOverride All 
       </Directory>
       ErrorLog /var/log/httpd/seogu-error-log
       CustomLog /var/log/httpd/seogu-acces-log common
</VirtualHost>
 
###########################################################################################
# 모듈 추가 설치
vi /etc/yum.repos.d/CentOS-Base.repo
https://kkckc.tistory.com/185 에서 파일을 받아서 내용을 전부 교체한다.
yum -y install mc
 
# 설치된 PHP 모듈 확인하기
# 먼저 whereis php 로 경로가 아래와 같은가 틀리는가 확인하고 수정해야 한다.
/usr/local/bin/php -m
 
 
# 오래된 CentOS 5.9 에서는 동작 안될 수도 있음
cd /home/htdocs/
wget https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
 
cd /home/htdocs/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install
 
cd /home/htdocs/php-5.4.6/ext/mcrypt
# phpize 파일을 실행한다.
/usr/local/bin/phpize
 
./configure --with-php-config=/usr/local/bin/php-config --with-mcrypt=/usr/local/
make
 
# cd modules
# ll 하면 mcrypt.so 파일이 생성된 것을 확인할 수 있다.
cd /usr/local/lib/php/extensions/ 
# ll 하여 extensions 디렉토리가 있는지 조사한다. 없으면 mkdir extensions 로 디렉토리를 생성한다.
mkdir -/usr/local/lib/php/extensions/
 
cd /home/htdocs/php-5.4.6/ext/mcrypt
cp -arp modules/mcrypt.so /usr/local/lib/php/extensions/
cd /usr/local/lib/php/extensions/
 
# php.ini 수정 사항
# phpinfo 파일에서 설치된 경로를 확인해야 한다.
# /usr/local/lib/php.ini 
# 검색 기능으로 /extension= 로 검색하여 추가한다.
cd /usr/local/lib/
vi /usr/local/lib/php.ini
extension=/usr/local/lib/php/extensions/mcrypt.so
 
# 아파치 재시작
# ps -ef | grep httpd
/usr/local/apache/bin/apachectl restart
 
# mbstring 모듈 추가
cd /home/htdocs/php-5.4.6/ext/mbstring
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-mbstring
make
 
# ll ./modules/mbstring.so 파일이 생성되었는지 확인한다.
cd /home/htdocs/php-5.4.6/ext/mbstring
cp -arp modules/mbstring.so /usr/local/lib/php/extensions/
cd /usr/local/lib/php/extensions/
 
# php.ini 수정 사항
# 검색 기능으로 /extension= 로 검색하여 추가한다.
vi /usr/local/lib/php.ini
extension=/usr/local/lib/php/extensions/mbstring.so
 
# 아파치 재시작
/usr/local/apache/bin/apachectl restart
 
# 설치된 PHP 모듈 확인하기
/usr/local/bin/php -m
 
 

 

 

728x90

'리눅스' 카테고리의 다른 글

CentOS 7 날짜 반복 증가 스크립트  (0) 2024.03.31
CentOS 7 PHP 7.4 MariaDB 10.5 설치  (0) 2022.05.14
VMWare Network 설정  (0) 2022.04.23
CentOS 7 Jenkins 설치  (0) 2022.03.25
Apache log Full  (0) 2022.02.22
블로그 이미지

Link2Me

,

VMWare Network 설정

리눅스 2022. 4. 23. 20:49
728x90

VMWare Pro 버전을 설치하고 Network 설정하는 방법을 테스트하고 적어둔다.

처음에는 설정방법을 잘 몰라서 한참을 헤매다가 성공했다.

 

 

VMnet0 가 bridge 모드로 설정하는 옵션

 

반드시 Ethernet Controller 로 설정해야 한다.

 

설정이 잘 되어 있는지 확인하는 방법이다.

state UP 이라고 나와야 정상이다. state DOWN 이라고 되어 있으면 비정상이다.

 

브릿지 모드로 설정한다는 것은 IPTIME 과 같은 공유기 환경 내부에서 PC/맥북이 하나의 IP Address 를 할당받고, VMWare 가 같은 환경의 IP를 할당받는 것이다.

윈도우 환경에서 내 IP 주소 확인은 ipconfig 로 확인한다.

 

systemctl restart network 명령어를 입력해도 된다.

728x90

'리눅스' 카테고리의 다른 글

CentOS 7 PHP 7.4 MariaDB 10.5 설치  (0) 2022.05.14
CentOS 5.8 APM 설치 과정  (0) 2022.05.14
CentOS 7 Jenkins 설치  (0) 2022.03.25
Apache log Full  (0) 2022.02.22
CentOS 7 docker 설치 및 컨테이너 사용 방법  (2) 2021.12.31
블로그 이미지

Link2Me

,

CentOS 7 Jenkins 설치

리눅스 2022. 3. 25. 23:57
728x90

CentOS 7 환경에서 Jenkins 설치 스크립트를 적어둔다.

Java 1.8 이 설치되어 있지 않으면 Jenkins 가 동작하지 않는다. 그래서 먼저 자바를 설치해준다.

# CentOS 7에 OpenJDK 1.8 설치
# 자바 1.8 설치
yum -y install java-1.8.0-openjdk
yum -y install java-1.8.0-openjdk-devel
 
# 환경변수 등록
readlink -/usr/bin/java
#/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java
 
vi /etc/profile
 
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
 
#:wq 저장하고 나온다.
 
# 수정한 파일 저장
source /etc/profile
 
# 설치 되어 있는 자바 버전 확인
yum list installed | grep java
 
 
######################################################
Jenkins 설치
######################################################
wget -/etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum -y install jenkins
 
vi /etc/sysconfig/jenkins
JENKINS_LISTEN_ADDRESS="0.0.0.0"
 
#:wq 로 저장하고 나온다.
# 기본 설정된 포트는 8080 이다.
 
######################################################
방화벽 설정
######################################################
# 방화벽 설치
yum -y install firewalld
 
# 마스크 처리되었다고 나올 때
systemctl unmask firewalld
 
# 기본 설정은 /usr/lib/firewalld/ 에 위치
# 방화벽 데몬 시작
systemctl start firewalld
 
# 방화벽 데몬 중지
systemctl stop firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
# 방화벽 상태(실행여부) 확인
systemctl status firewalld
firewall-cmd --state
 
# 서비스 추가
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
 
# 포트 등록
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=2022/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=9000/tcp
 
# 방화벽 재시작
# firewall 설정 후 reload 하지 않으면 적용이 되지 않는다.
firewall-cmd --reload
 
# 방화벽 확인
firewall-cmd --list-all
 
#######################################################
# 젠킨스 등록 및 시작
systemctl enable jenkins 
systemctl start jenkins
 
 
# 초기 패스워드 확인 및 복사
cat /var/lib/jenkins/secrets/initialAdminPassword
 

 

 

 

 

설치 완료후 첫 계정 만드는 화면

 

 

설치완료 후 보이는 화면

 

참고자료

https://suwoni-codelab.com/linux/2017/06/04/Linux-CentOS-jenkins/

 

 

 

728x90

'리눅스' 카테고리의 다른 글

CentOS 5.8 APM 설치 과정  (0) 2022.05.14
VMWare Network 설정  (0) 2022.04.23
Apache log Full  (0) 2022.02.22
CentOS 7 docker 설치 및 컨테이너 사용 방법  (2) 2021.12.31
[CentOS 7] Python + MariaDB 10.4 + PHP 7.4 설치 스크립트  (0) 2021.11.06
블로그 이미지

Link2Me

,

Apache log Full

리눅스 2022. 2. 22. 16:43
728x90

Apache Log 가 Full 이 되어 홈페이지 세션 등 전혀 동작되지 않는 현상이 발생했다.

 

access_log 파일과 error_log 파일을 강제로 삭제하고

apache 를 재시작해주었더니 정상적으로 파일이 생성되면서 동작된다.

728x90
블로그 이미지

Link2Me

,
728x90

CentOS 7 에 docker 를 설치하고 컨테이너를 사용하는 방법을 적어둔다.

기능 익히고 테스트한다고 삽질만 엄청했다.

 

CentOS 7 에 docker 설치

https://docs.docker.com/engine/install/centos/

 

Install Docker Engine on CentOS

 

docs.docker.com

# Docker 설치
# https://docs.docker.com/engine/install/centos/ 사이트 자료를 참고하여 설치한다.
yum -y update
yum install -y yum-utils
 
# Docker repository 시스템에 추가
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
 
# 최신버전의 Docker 설치(Install Docker Engine)
yum -y install docker-ce docker-ce-cli containerd.io
 
# Docker 데몬 시작 및 부팅 시 Docker 데몬 자동 시작
systemctl start docker
systemctl enable docker
 
# Docker 실행중인지 확인
systemctl status docker
 
 

 

 

컨테이너 사용 준비

 

 

# 실행 중인 컨테이너를 나열
docker container ls
 
# Docker Hub 저장소에서 이미지 검색
docker search centos
 
# CentOS 7의 공식 빌드를 다운로드 받고 싶다면 image pull 하위 명령을 사용하여 이를 수행
# docker image pull centos
# 위 명령어로 하면 CentOS 8.X가 설치되더라.
# centOS 7 설치
docker image pull centos:7
docker image ls
 
# docker 이미지 목록 보기
docker images
 
#################################################################################
# CentoOS 이미지를 기반으로 도커 컨테이너를 시작
# docker container run -it centos:7 /bin/bash 를 하면 centos:latest 로 접속된다.
# 즉, centos:8로 접속된다.
# --privileged 옵션과 -d 옵션으로 /sbin/init을 실행한후 exec로 /bin/bash를 실행시켜야 한다
 
docker run --name mycentos -8022:22 -8080:80 -8000:8000 \
 --privileged -d —cap-add=SYS_ADMIN centos:7 /sbin/init
docker exec -it mycentos /bin/bash
 
# 위에 두줄로 docker 를 실행하거나 아래 세줄로 실행한다.
docker create --name mycentos -8022:22 -8080:80  -8000:8000 \
 --privileged —cap-add=SYS_ADMIN centos:7 /sbin/init
docker start mycentos
docker exec -it mycentos /bin/bash
 
# -i : 연결이 종료되어도 컨테이너 상태를 유지한다.
# -t : 가상 tty를 할당한다.
# -d : 백그라운드에서 컨테이너를 실행하고 컨테이너 ID를 인쇄한다.
# -p : 호스트와 컨테이너의 포트를 포워딩한다.
# -name : 컨테이너의 이름을 지정한다.
# -v : 호스트와 컨테이너의 디렉토리를 마운트한다.
# /bin/bash : 컨테이너 생성 후 /bin/bash를 실행하여 bash 쉘을 이용할 수 있게 해 줌.
 
# 위 명령을 실행하고 나면 docker 명령어 사이트로 접속되어 있어 docker container ls 명령어는 수행되지 않는다.
# docker 접속 상태에서 빠져나오기
exit
 
# docker centos:7 으로 접속된 상태에서 CentOS 7 Python 3.6.8 설치를 한다.
# docker run 하는 시점에 포트를 바인딩 하지 않았다면 도커 container를 다시 띄워야 한다.
# 포트 추가를 미쳐 못한 경우 추가 방법 ==> 이미지를 새로 만들어 실행
docker ps -a
# STATUS 가 UP으로 보일 것이다.
docker stop mycentos
# 이미지를 다른 이미지 이름으로 저장 ==> docker commit mycentos 이미지이름
# docker 백업전 상태 저장
#sudo docker commit -p [CONTAINER ID] [NAMES]
docker commit -p mycentos mycentos7_backup
 
# docker 이미지 백업
# sudo docker save -o [저장할이름].tar [이미지 이름]
sudo docker save -o mycentos7.tar mycentos7_backup
 
 
# 새로운 container 이름 부여하고 포트 추가
docker run --privileged --8022:22 -8080:80 -8000:8000 \
 --name mycentos7 mycentos7_backup /sbin/init
docker exec -it mycentos7 /bin/bash
 
 
 
# Failed to get D-Bus connection: Operation not permitted 
# 메시지가 나오는 것은 --privileged 옵션과 /sbin/init 을 생략했을 때 나온다.
 
 
# 정지된 컨테이너를 다시 띄울 땐 docker start로 띄움
docker start <컨테이너명>
docker start <컨테이너ID>
docker attach <컨테이너명>
# docker 컨테이너 내부로 접속
docker exec -it <컨테이너명> /bin/bash

 

docker SSH 접속을 위한 환경 구축

 

docker centos container 에 접속된 상태에서 실행하는 명령어이다.

 

###############################################################
# CentOS 컨테이너에 설치되어 있는 게 거의 없다.
yum -y install ntsysv
yum -y install initscripts && yum clean all
yum -y install net-tools
yum -y groupinstall 'Development Tools'
yum -y install sudo
yum -y install policycoreutils selinux-policy-targeted
yum -y update
 
# docker root 암호 변경 ==> SSH 에서 root 접속하기 위한 암호 설정
passwd root
 
# docker SSH 설정
yum -y install openssh-server openssh-clients openssh-askpass 
cd ~ 
ssh-keygen -t rsa -'' -f ~/.ssh/id_rsa 
cd .ssh 
cat id_rsa.pub >> authorized_keys 
mkdir /var/run/sshd 
sed -'s/#Port 22/Port 22/g' /etc/ssh/sshd_config 
 
vi /etc/ssh/sshd_config
# PermitRootLogin yes 찾아 주석을 해제하고 저장(:wq)하고 빠져나온다.
 
service sshd start 
 
# 여기까지 하면 root 권한으로 SSH 로그인이 가능해진다.
# 가령 CentOS 7 의 IP 주소가 192.168.1.20 이라면
# docker 로 접속하기 위한 IP주소는 동일하고, Container 에 매핑한 포트가 8022이면
# 포트를 8022로 설정하고 접속하면 접속된다.
 
# docker 컨테이너 밖에서 SSH 접속 테스트 방법
# IP 172.16.100.3 인 경우
ssh -8022 root@172.16.100.3
 
 
 

 

 

docker SSH 접속 테스트 (docker container 밖에서 실행)

ssh -l root -p 8022 192.168.1.20

또는

ssh -p 8022 root@192.168.1.20

 

 

파이썬 장고 설치 스크립트 예시

 
###############################################################
# 파이썬(Python) 설치 과정
###############################################################
 
# python 2.7.X 버전이 설치된 것을 확인한다.
rpm -qa | grep python
 
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zlib zlib-devel libffi-devel
yum -y install zip unzip wget mc git net-tools
yum -y install mariadb-devel 
yum -y install gcc gcc-c++ python3 python3-devel openssl openssl-devel
 
python3 -V
pip3 -V
 
# pip 설치는 가상환경 만들어서 하는 걸 권장하므로 아래 한줄은 주석처리했다.
# pip3 install --upgrade pip
 
# 현재 Alias 확인
ls -/bin/python*
 
ln -/bin/pip3.6 /bin/pip
 
# 아래와 같이 수정하지 않으면 yum 설치가 되지 않는다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
###### SQLite3 DB 설정 ###################################
cd /root
mkdir sqlite3
cd sqlite3
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-3.10.2-1.fc22.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sudo yum -y install sqlite-3.10.2-1.fc22.x86_64.rpm sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sqlite3 –version
.quit
# 빠져나오는 것은 .quit
 
##### 파이썬 가상환경 설정 ####################################
mkdir -/home/httpd/python/
cd /home/httpd/python/
python3 -m pip install virtualenv
python3 -m pip install --upgrade pip
 
# 가상환경 이름을 django 로 설정했는데 다른 명칭으로 변경해도 된다.
virtualenv django
cd /home/httpd/python/django
 
# django 가상환경 실행
source /home/httpd/python/django/bin/activate
 
pip3 install --upgrade pip setuptools
pip3 install Django
pip3 install djangorestframework
 
# MySQL 이나 MaraiDB 와 연동 목적
pip3 install mysqlclient
 
# 파이썬 디버깅 도구 설치
pip3 install pylint
pip3 install twisted
 
# 장고 프로젝트 생성 및 Web 서버 구동 테스트
cd /home/httpd/python/django
django-admin startproject config .
chmod 755 manage.py
python manage.py makemigrations
python manage.py migrate
 
# superuser 는 추가하고 싶은 만큼 여러번 실행하면 된다.
python manage.py createsuperuser
# userid,email,password 생성
 
cd config
vi settings.py
ALLOWED_HOSTS = ['*']
 
# 변경하고 :wq (저장)하고 나온다.
 
# 8000번 포트로 Web 서버 구동
cd ..
python manage.py runserver 0.0.0.0:8000
 
# 서버를 재부팅하거나 Web 서버를 중지시킨 경우에 다시 실행하는 명령어
cd /home/httpd/python/django/
source /home/httpd/python/django/bin/activate
python manage.py runserver 0.0.0.0:8000
 
# 가상환경 종료
deactivate
 
# django 프로젝트를 생성해서 하는 사항은 여기서는 생략한다.
 
 

 

 

 

여기까지 하고 크롬 브라우저로 서버 접속이 잘되는지 확인해 보자.

 

 

 

파이썬 구동이 잘되는 걸 확인할 수 있다.

 

 

 

Docker 컨테이너 이미지 백업

그 안에 작업했던 것들을 다시 설치하려면 시간이 또 허비되므로 docker container 이미지를 백업해두자.

 

docker commit -p [CONTAINER ID] [NAMES]   # commit 
 
docker ps -a
# containerID 를 획인 한 후
docker commit -p ad0218d12485 centos_python
 
# 백업하기 (save)
# docker save -o [저장할이름].tar [이미지 이름]
docker save -o centos-python.tar centos_python
 

 

docker 이미지를 확인해보면 centos 7 이미지의 크기는 204MB 인데,

필요한 것들을 설치한 centos_python 이미지는 1.07GB 로 엄청 증가된 것을 확인할 수 있다.

 

 

docker 중지, 컨테이너 삭제, 이미지 삭제

##############################################################################
# Uninstall Docker Engine(Docker 삭제)
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
 
# 컨테이너 삭제 ① 정지된 컨테이너 확인
docker ps -a
# 컨테이너 ID 확인하고 컨테이너 삭제
docker container rm containerID
 
# 컨테이너 ID 강제 삭제
docker rm -f containerID
 
#############################################################################
# docker 중지
# docker ps -a 명령어로 container ID 를 확인한다.
docker ps -a
docker stop 9be30426b6e8
docker ps -a
 
# 컨테이너 정지하지 않고 빠져나오기
Ctrl + p, Ctrl + q
 
# 컨테이너 정지하고 빠져나오기
exit
 
#############################################################################
# 다운로드된 docker 이미지 확인
docker images
 
# docker 이미지 삭제
docker image rm centos
 
#####################################################################
# 현재 접속중인 사용자에게 권한 주기
useradd jsk005
passwd jsk005
sudo usermod -aG docker jsk005
 
#####################################################################

 

728x90

'리눅스' 카테고리의 다른 글

CentOS 7 Jenkins 설치  (0) 2022.03.25
Apache log Full  (0) 2022.02.22
[CentOS 7] Python + MariaDB 10.4 + PHP 7.4 설치 스크립트  (0) 2021.11.06
[CentOS] PHP MySQL 일괄 MySQLi 로 변경 방법  (0) 2021.11.05
VirtualBox CentOS 7 NAT  (0) 2021.11.05
블로그 이미지

Link2Me

,
728x90

파이썬 3.6 + MariaDB 10.4 + PHP 7.4 를 설치하는 스크립트이다.

MariaDB를 Python 에서 이용하기 위해서는 Python 3.6 을 먼저 yum 설치해야 한다.

 

설치 스크립트는 편의상 구분 작성했다.

 

Updated : 2021.12.30

SQLite 3.7.17 버전이라 더 높은 버전의 SQLite 설치가 필요하다는 메시지가 나올 경우

아래 명령어를 실행하면 에러없이 환경 설정 가능하다.

Docker 테스트 할 때 sudo 명령어가 먹히지 않았을 때 나온 현상이라 아래 코드는 별도 설정하지 않아도 된다.

# SQLite 3.7.17 버전보다 높은 버전을 설치하기 위한 작업
wget https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
tar zxvf sqlite-autoconf-3240000.tar.gz
cd sqlite-autoconf-3240000
./configure --prefix=/usr/local
make
make install
 
python3.6 -"import sqlite3; print(sqlite3.sqlite_version)"
export LD_LIBRARY_PATH=/usr/local/lib
python3.6 -"import sqlite3; print(sqlite3.sqlite_version)"
# 3.24.0 버전으로 확인될 것이다.
 
cd ..
rm -rf sqlite-autoconf-3240000
#로 파일을 삭제한다.
 

 

파이썬 3.6 설치 스크립트

###############################################################
## CentOS 7 Package Update
#yum update할 때 kernel은 업데이트되지 않게 하기
vi /etc/yum.conf 
[main]
exclude=kernel*
#저장(:wq)하고 나온다. 
# 그래야만 CentOS 7.4 커널은 업데이트 되지 않고 나머지 사항은 업데이트된다.
 
yum -y update
 
###############################################################
# 파이썬(Python) 설치 과정
###############################################################
 
rpm -qa | grep mariadb
# 설치된 것이 없다면 아래 한꺼번에 지우기는 실행하지 않아도 된다.
 
## 설치된 것 한꺼번에 지우기
rpm -qa | grep mariadb >list
 
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 
# python 2.7.X 버전이 설치된 것을 확인한다.
rpm -qa | grep python
 
# Python 모듈을 빌드하려면 개발 도구가 필요
yum -y install epel-release
yum -y groupinstall 'Development Tools'
yum -y install yum-utils
yum -y install zlib zlib-devel libffi-devel
yum -y install zip unzip wget mc git net-tools
yum -y install mariadb-devel 
yum -y install gcc gcc-c++ python3 python3-devel openssl openssl-devel
 
python3 -V
pip3 -V
 
# pip 설치는 가상환경 만들어서 하는 걸 권장하므로 아래 한줄은 주석처리했다.
# pip3 install --upgrade pip
 
# 현재 Alias 확인
ls -/bin/python*
 
ln -/bin/pip3.6 /bin/pip
 
# 아래와 같이 수정하지 않으면 yum 설치가 되지 않는다.
vi /usr/bin/yum
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
vi /usr/libexec/urlgrabber-ext-down
# 첫줄에 python 을 python2.7 로 변경하고 저장(:wq)한다.
 
###### SQLite3 DB 설정 ###################################
cd /root
mkdir sqlite3
cd sqlite3
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-3.10.2-1.fc22.x86_64.rpm
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.10.2/1.fc22/x86_64/sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sudo yum -y install sqlite-3.10.2-1.fc22.x86_64.rpm sqlite-devel-3.10.2-1.fc22.x86_64.rpm
sqlite3 –version
.quit
# 빠져나오는 것은 .quit
 
##### 파이썬 가상환경 설정 ####################################
mkdir -/home/httpd/python/
cd /home/httpd/python/
python3 -m pip install virtualenv
python3 -m pip install --upgrade pip
 
# 가상환경 이름을 django 로 설정했는데 다른 명칭으로 변경해도 된다.
virtualenv django
cd /home/httpd/python/django
 
# django 가상환경 실행
source /home/httpd/python/django/bin/activate
 
pip3 install --upgrade pip setuptools
pip3 install Django
pip3 install djangorestframework
 
# MySQL 이나 MaraiDB 와 연동 목적
pip3 install mysqlclient
 
# 파이썬 디버깅 도구 설치
pip3 install pylint
pip3 install twisted
 
# Flask 를 하지 않을 경우에는 생략한다. 
# Flask 는 아직 테스트해보지 않아 틀릴 수도 있다.
# Flask 로 API 서버 개발시 필요한 패키지
pip3 install --upgrade pip setuptools
pip3 install flask
pip3 install PyJWT
pip3 install flask-mysqldb
pip3 install bcrypt
pip3 install python-dateutil
pip3 install -U flask-cors
pip3 install pillow
pip3 install pymysql
pip3 install requests
pip3 install firebase-admin
 
 
# 장고 프로젝트 생성 및 Web 서버 구동 테스트
cd /home/httpd/python/django
django-admin startproject config .
chmod 755 manage.py
python manage.py makemigrations
python manage.py migrate
 
# superuser 는 추가하고 싶은 만큼 여러번 실행하면 된다.
python manage.py createsuperuser
# userid,email,password 생성
 
cd config
vi settings.py
ALLOWED_HOSTS = ['*']
 
# 변경하고 :wq (저장)하고 나온다.
 
# 8000번 포트로 Web 서버 구동
python manage.py runserver 0.0.0.0:8000
 
# 서버를 재부팅하거나 Web 서버를 중지시킨 경우에 다시 실행하는 명령어
cd /home/httpd/python/django/
source /home/httpd/python/django/bin/activate
python manage.py runserver 0.0.0.0:8000
 
 
# django 프로젝트를 생성해서 하는 사항은 여기서는 배제한다.
 
##########################################################################
# 방화벽 설정
yum -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
#########################################################################
# Databse 접근을 위한 SELinux 설정 변경
# SELinux 상태 확인
sestatus
 
#SELinux httpd flag 확인 : 네트워크를 통해 Database에 연결할 수 있는 옵션이 꺼져 있음
getsebool -| grep httpd
 
# Database 접근을 위한 SELinx 설정 변경
setsebool -P httpd_can_network_connect_db 1
 
# SELinux 비활성화 하기
vi /etc/sysconfig/selinux
SELINUX=disabled
:wq 로 저장하고 나온다.
 
# 재부팅해야 SELinux 명령어 수정한 사항이 적용된다.
reboot 
 
# 임시 비활성화 방법
setenforce 0
 

 

 

MariaDB 10.4 설치 스크립트

################################
##### MariaDB 10.4 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
:wq 로 저장하고 나온다.
 
sudo yum makecache fast
yum -y install mariadb-server mariadb-client
 
# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb
 
# mariadb 시작
systemctl start mariadb
 
# mariadb 상태 확인
service mariadb status
 
# Maria DB 보안 설정하기
mysql_secure_installation
# root 비밀번호 설정 등 상세 과정은 생략한다. 거의 Y만 누르면 끝난다.
 
# UTF-8 로 통신하기 위한 서버/클라이언트 설정
vi /etc/my.cnf.d/server.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
 
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
# MariaDB 재시작
service mariadb restart
 
# MariaDB 접속하여 적용된 사항 확인
mysql -u root -p
status
show variables like 'c%';
 
#########################################
####### 실제 적용 예제 ######
#########################################
// DB 생성
create database pythondb default character set utf8;
 
use mysql;
create user codefox@localhost identified by 'NiceWonderfull!#%';
grant all privileges on pythondb.* to codefox@localhost;
flush privileges;
quit
 
 
### 테이블 백업하기 ####
mysqldump -uroot ---databases pythondb > pythondb.sql
 
### 테이블 구조만 백업하기 ####
mysqldump -uroot ---no-data --databases pythondb > pythondb.sql
 
###################################
#####   root 패스워드 분실 복구   #####
###################################
# 서비스 정지
systemctl stop mariadb
 
# mariadb 안전모드 실행
sudo /usr/bin/mysqld_safe --skip-grant &
 
# 패스워드 변경
mysql -uroot mysql
update user set password=password('변경할비밀번호') where user='root';
flush privileges;
exit;
 

 

 

PHP 7.4 설치 스크립트

 

#############################################
# PHP 7.4 와 Apache 설치 
#############################################
## 현재 설치된 PHP 버전 확인
yum list php
 
yum -y install expat-devel
 
# 설치 확인 방법1
yum list installed | grep httpd
yum list installed | grep php
 
# 설치 확인 방법2
rpm -qa | grep httpd
rpm -qa | grep php
 
## 설치된 것 한꺼번에 지우기
rpm -qa | grep php >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 
rpm -qa | grep httpd >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 
 
# yum 삭제 방법 (실제 삭제할 사항이 아니라 주석(#) 처리)
# yum remove -y vsftpd
 
 
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
 
# yum 저장소와 패키지를 관리
yum -y groupinstall "Development tools"
yum -y install epel-release yum-utils
 
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php74
 
# Install PHP 7.4 on CentOS 7
yum install ---enablerepo=remi-php74 httpd php php-cli php-common php-devel php-ldap 
yum install ---enablerepo=remi-php74 php-mbstring php-mcrypt php-mysqlnd mod_ssl php-pdo 
yum install ---enablerepo=remi-php74 php-pgsql php-sqlite php-process php-snmp php-soap 
yum install ---enablerepo=remi-php74 php-libxml php-xml php-pear php-gd php-fpm php-dom 
yum install ---enablerepo=remi-php74 php-ssh2 php-xmlreader php-curl php-date php-exif 
yum install ---enablerepo=remi-php74 php-filter php-simplexml php-hash php-iconv php-imagick 
yum install ---enablerepo=remi-php74 php-json php-openssl php-pcre php-posix php-sockets 
yum install ---enablerepo=remi-php74 php-spl php-tokenizer php-zlib php-gmp php-Icinga php-intl 
yum install ---enablerepo=remi-php74 php-pecl-zip zip php-zip php-pspell 
yum install ---enablerepo=remi-php74 wget unzip mc git nmap telnet net-tools
 
# PHP 버전 확인
php -v
 
# Apache 버전 확인
httpd -v
 
# 서비스 활성화(재부팅시 auto start)
systemctl enable httpd
 
# 서비스 시작
systemctl start httpd
 
# 서비스 구동 상태 확인
systemctl status httpd
 
# 서비스 중지
systemctl stop httpd
# 서비스 재시작
systemctl restart httpd
 
# openssl 버전 확인
openssl version
 
###################################################
# Apache 환경 설정 
###################################################
# Web root 디렉토리 : /var/www/html 기본 설정인데 아래는 home 디렉토리 하단으로 수정했다.
# 보안 설정 부분이 같이 포함되어 있으니 아래와 같이 설정하면 도움된다.
# 더 자세한 사항은 구글링해서 찾아보시라.
## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost
 
DocumentRoot "/home/httpd/htdocs"
 
<Directory "/home/httpd">
    AllowOverride None
    Require all granted
</Directory>
 
<Directory "/home/httpd/htdocs">
    Options +FollowSymLinks -Indexes
    AllowOverride All
    Require all granted
    <LimitExcept GET POST>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>
 
<IfModule dir_module>
    DirectoryIndex index.php index.html 
</IfModule>
 
<IfModule mime_module>
    TypesConfig /etc/mime.types
    #AddType application/x-gzip .tgz
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php .html .do
    AddType application/x-httpd-php-source .phps
    AddType text/css .css
    AddType text/javascript .js
    #AddHandler cgi-script .cgi
    #AddHandler type-map var
    #AddOutputFilter INCLUDES .shtml
</IfModule>
 
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 402 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 405 /error.php
ErrorDocument 408 /error.php
ErrorDocument 500 /error.php
ErrorDocument 501 /error.php
ErrorDocument 502 /error.php
ErrorDocument 503 /error.php
 
# 반드시 서버 정보 노출 방지 추가해야 함.
ServerTokens Prod
ServerSignature Off 
 
TraceEnable Off
 
# 저장(:wq)하고 나온다.
 
# Apache HTTPOXY 취약점 방지
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf
 
 
##################################
# PHP.ini 환경 설정 수정사항
##################################
 
vi /etc/php.ini
short_open_tag = On
cgi.fix_pathinfo=0
 
;PHP 버전 정보 노출 방지(Hide PHP Version Number)
expose_php = Off
 
post_max_size = 20M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 18M ;// 기본 2M 으로 되어 있었음
 
date.timezone ="Asia/Seoul"
 
 
;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제된다.
; 세션 시간은 1시간으로 설정한다.
session.gc_maxlifetime = 3600
 
# 저장(:wq)하고 나온다.
 
#####################################################################
# Web 서버 root 디렉토리 생성
mkdir -/home/httpd/htdocs
 
# 반드시 추가구현해야 문제없이 동작한다. error.php 파일 내용은 오픈하지 않는다.
# error.php 대신에 index.php 로 설정해도 무방하다.
# 해커가 없는 파일을 검색으로 찾을 때 비정상적으로 검색한다는 걸 알려주는 error.php 파일인데,
# 비정상적인 파일 검색 실행시 무조건 index.php 로 가도록 설정해도 되기 때문이다.
 
# Web 서버 root 디렉토리로 이동
cd /home/httpd/htdocs/
vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ error.php?/$1 [QSA,PT,L]
</IfModule>
 
## 보안설정
sudo chmod 640 /etc/httpd/conf/httpd.conf
sudo chown root:root /etc/httpd/conf/httpd.conf
sudo chmod 640 /etc/php.ini
sudo chown root:root /etc/php.ini
 
sudo chown -R apache:apache /home/httpd/htdocs
sudo chmod -755 /home/httpd/htdocs
 
# 방화벽 설정 확인
iptables -L
 
# Apache 재시작
systemctl restart httpd
 
# 만약 Web 서버가 동작하지 않는다면 에러 로그를 살펴봐야 한다.
cd /var/log/httpd/
 
 
# 열린포트 확인
yum -y install net-tools 
netstat -nltp
 
### 시간 동기화
yum -y install rdate
 
crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w
 
 
#####################################
# 최신버전 phpMyAdmin 설치
#####################################
# Web 서버 root 디렉토리로 이동
cd /home/httpd/htdocs
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
unzip phpMyAdmin-5.1.1-all-languages.zip
chown -R apache:apache phpMyAdmin-5.1.1-all-languages
mv phpMyAdmin-5.1.1-all-languages pma
cd pma
cp -rp config.sample.inc.php  config.inc.php
 
# 환경 설정
vi config.inc.php
 
$cfg['blowfish_secret'= 'qtdRoGmbcr]0s)r$9b_JUnoGmbcr]0s)r$9b{~Xz'// 임의의 값 설정
$cfg['Servers'][$i]['host'= 'localhost';
$cfg['Servers'][$i]['compress'= true;
$cfg['TempDir'= '/tmp';
 
# 저장(:wq)하고 빠져나온다.
 
# 주의사항
# phpMyAdmin 편리한 만큼 특정 IP에서만 접속하도록 IPFiltering을 설정하는 걸 추가해줘야 안전하다.
# 설정 방법은 블로그 게시글을 찾아서 적용하기 바란다.
 
###############################
# composor 설치 
###############################
cd /home/httpd/htdocs
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer -V
export COMPOSER_ALLOW_SUPERUSER=1
echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc
cat ~/.bashrc | grep export
 
# PHPSpredSheet 설치
cd /home/httpd/htdocs
composer require phpoffice/phpspreadsheet
 
# PHP Excel 예제는 본 블로그에 게시되어 있다.
 
###############################
# RSA 암호화 통신을 위한 설정
###############################
#리눅스 SSH 에서 RSA 공개키, 개인키 생성방법
mkdir -/home/rsa/key/
cd /home/rsa/key/
 
# Private Key 생성
openssl genrsa -out rsa_pri.pem 1024
 
# Public Key 생성
openssl rsa -pubout -in rsa_pri.pem -out rsa_pub.pem
 
# RSA javascript 암호화 PHP 복호화 예제는 구글링으로 찾아보시라.
# RSA kotlin 암호화 PHP 복호화 예제는 구글링으로 찾아서 해결하시라.
 

 

728x90
블로그 이미지

Link2Me

,
728x90

CentOS 리눅스에서 PHP 소스코드가 MySQL 연결방식으로 코딩된 소스코드를 MySQLi 로 일괄 변경하는 방법이다.

디렉토리 /home/httpd/htdocs/ 를 Web Root directory 로 설정되어 있고, PHP 소스코드가 sub directory를 포함하여 있는 경우라고 보면 된다.

PHP 5.X 버전의 소스코드를 PHP 7.X 버전으로 일괄 변경할 때 유용한 기능이다.

# 디렉토리 chmod 755 및 파일 chmod 644 권한으로 변경
find /home/httpd/htdocs -type d -exec chmod 755 {} \;
find /home/httpd/htdocs -type f -exec chmod 644 {} \;
 
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_num_rows/mysqli_num_rows/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_fetch/mysqli_fetch/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_query\(/mysqli_query\(\$db,/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_error\(/mysqli_error\(\$db/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_close\(/mysqli_close\(\$db/g' {} \;
find /home/httpd/htdocs -type f -name '*.php' -exec perl -pi -'s/mysql_insert_id\(/mysqli_insert_id\(\$db/g' {} \;
 

 

위에서 보면 $db 로 되어 있는 걸 확인할 수 있다.

db를 연결하는 dbconnect.php 파일의 내용을 아래와 같이 작성하고 include 해서 사용하면 된다.

<?php
$db_server = 'localhost';
$db_user_name = 'dbuser';
$db_password = 'dbpassword';
$db_name = 'dbname';
$db['port'= "3306";
 
$db = isConnectDb($db);
 
function isConnectDb($db)
{
    $conn = mysqli_connect($db_server,$db_user_name,$db_password,$db_name,$db['port']);
    mysqli_set_charset($conn"utf8");  // DB설정이 잘못되어 euc-kr 로 되어 있으면 문제가 됨
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}
?>

 

 

 

 

728x90
블로그 이미지

Link2Me

,

VirtualBox CentOS 7 NAT

리눅스 2021. 11. 5. 14:04
728x90

윈도우10 에서 Virtual Box 를 설치하고 NAT(Network Address Translation) 방식으로 네트워크 접속을 한 경우 접속이다.

 

네크워크에서 NAT로 설정한다.

브릿지로 연결하면 IP 주소 2개가 필요하다. (IP TIME 과 같은 공유기를 사용하면 가능)

 

NAT 설정된 IP주소가 192.168.56.1 임을 확인한다.

 

확인 누르고 다시 확인 더 눌러서 창을 완전 닫아줘야 적용된다.

 

 

이제 SSH 접속툴을 이용하여 접속하면 접속 가능하다.

 

728x90
블로그 이미지

Link2Me

,
728x90

CentOS 7 에서 MySQL 5.7 버전을 yum 설치하는 스크립트이다.

MariaDB, MySQL 5.6 버전과는 약간 명령어가 다른 것이 있으니 주의가 필요하다.

 

## mariadb 설치된 것 한꺼번에 지우기
rpm -qa | grep mariadb >list
 
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 
rpm -qa | grep MariaDB
 
# 기존 MariaDB에서 사용된 파일 삭제 필요
rm --/var/lib/mysql
 
 
# MySql 5.7 버전
yum -y install wget
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-server
 
 
######### MySQL setting ######################
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
 
# 기본 설정되는 임시패스워드 알아내기
cat /var/log/mysqld.log | grep 'temporary password'
 
 
# Maria DB 보안 설정하기
mysql_secure_installation
알아낸 임시패스워드 입력하고 영문 소문자, 대문자, 숫자, 특수문자를 포함한 패스워드로 변경
 
vi /etc/my.cnf
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
bind-address = 0.0.0.0
 
[mysql]
default-character-set=utf8
 
[mysqldump]
default-character-set=utf8
 
# MySQL 데몬 재시작
systemctl restart mysqld
 
mysql -root -p
비밀번호
 
status
show variables like 'c%';
 
# MYSQL root 암호 변경 방법
mysql -root -p
비밀번호 입력
 
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호';
flush privileges;
select host, user, plugin, authentication_string, password_last_changed from user;
 
quit
 
##########################################
####### 실제 적용 예제 ######
##########################################
// DB 생성
create database studydb default character set utf8;
 
# 비밀번호 정책 확인 (최소 8자리 이상이어야 한다)
show variables like 'validate_password%';
 
use mysql;
create user codefox@localhost identified by 'Autoset12#$';
grant all privileges on studydb.* to codefox@localhost;
flush privileges;
 
use mysql;
create user codefox@'192.168.1.25' identified by 'Autoset12#$';
grant all privileges on studydb.* to codefox@'192.168.1.25';
flush privileges;
 
# 백업하기
mysqldump -uroot ---databases studydb > studydb.sql
 
### 테이블 구조만 백업하기 ####
mysqldump -uroot ---no-data --databases studydb > studydb.sql
 
###############################################################################
# 샘플 테이블 생성
use studydb;
CREATE TABLE User (
  `uid` int(11) NOT NULL,
  `account` varchar(45) NOT NULL,
  `email` varchar(45) DEFAULT NULL,
  `phone_number` varchar(15) DEFAULT NULL COMMENT '전화번호',
  `created_at` datetime NOT NULL,
  `created_by` varchar(45) NOT NULL,
  `updated_at` datetime DEFAULT NULL,
  `updated_by` varchar(45) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
ALTER TABLE `user`
  ADD PRIMARY KEY (`uid`),
  ADD UNIQUE KEY `account` (`account`);
 
ALTER TABLE `user`
  MODIFY `uid` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
 
#######################################################################
# 방화벽 설정
yum -y install firewalld
 
# 방화벽 데몬 시작
systemctl start firewalld
 
# 서버 부팅 시 firewalld 데몬 자동 시작 설정
systemctl enable firewalld
 
firewall-cmd --permanent --add-service=http 
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=mysql
firewall-cmd --permanent --zone=public --add-port=3306/tcp
 
firewall-cmd --permanent --zone=public --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-all
 
#######################################################################
 

 

 

728x90
블로그 이미지

Link2Me

,
728x90

리눅스 파일안에 원하는 내용이 있는지 검색하는 방법이다.

현재 폴더에서 원하는 내용(window.top)이 들어있는 걸 찾는다.

grep -nir "window.top" *.*

 

현재 폴더 및 하위 폴더까지 모두 검색한다.

grep -nir "window.top" ./*

 

find ./ -name "*.php" | xargs grep -l "window.top"

 

 

find ./ -name "*.php" | xargs grep -nir "window.top"

 

window10 에 PowerShell 을 설치하고 아래와 같이 검색한다.

select-string *, */* -pattern "window.top"

 

 

https://github.com/PowerShell/PowerShell/ 에서 PowerShell 파일을 받을 수 있다.

 

 

728x90

'리눅스' 카테고리의 다른 글

VirtualBox CentOS 7 NAT  (0) 2021.11.05
CentOS 7 에서 MySQL 5.7 yum 설치 스크립트  (0) 2021.10.23
CentOS 7 Apache Permission  (0) 2021.07.31
CentOS 7 openssl 최신버전으로 업그레이드  (1) 2021.07.24
CentOS 7 sftp chroot  (0) 2021.07.22
블로그 이미지

Link2Me

,
728x90

You don't have permission to access /index.html on this server.

메시지가 나오면서 Apache 구동을 해도 홈페이지가 보이지 않는다.

cd /var/log/httpd/

cat error_log 를 확인해보니 아래와 같은 메시지가 나온다.

 

httpd.conf 파일에서 홈디렉토리 경로를 /var/www/html 에서 변경해서 그런가 보다.

DocumentRoot "/home/httpd/htdocs"
<Directory "/home/httpd/htdocs">
    Options +FollowSymLinks -Indexes
    AllowOverride All
    Require all granted
    <LimitExcept GET POST>
      Order deny,allow
      Deny from all
    </LimitExcept>
</Directory>

 

# SELinux 상태 확인
sestatus

 

vi /etc/selinux/config
SELINUX=disabled

:wq
재부팅하고 확인해보자.
sestatus

 

를 해주고 나니까 정상적으로 홈페이지가 보인다.

728x90
블로그 이미지

Link2Me

,
728x90

CentOS 7 에서 SSL 인증을 TLS 1.2 버전과 TLS 1.3 버전만 사용하라고 보안 권고를 해서 업그레이드 테스트하고 적어둔다.

리눅스 관리자 권한에서 설치하여 #은 주석으로 인식하므로 복사하여 붙여넣기 편하게 작성했다.

 

# openssl 현재 버전 확인
openssl version 
 
# openssl 설치 위치 확인
which openssl
# /usr/bin/openssl
 
# OpenSSL 지원 프로토콜 확인
openssl ciphers -| awk '{print $2}' | sort | uniq
 
# 현재 버전 openssl 삭제(하지말고 다른 디렉토리로 이동시키자)
# yum -y remove openssl
 
# 기본 라이브러리 설치
yum -y install gcc gcc-c++ perl pcre-devel zlib-devel wget
 
# 다운로드 및 소스 컴파일
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar xvfz openssl-1.1.1k.tar.gz
cd openssl-1.1.1k/ 
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make && make install
 
 
# 새로운 파일 생성하여 아래 한줄 추가하고 저장(:wq)한다. (라이브러리 등록)
vi /etc/ld.so.conf.d/openssl-1.1.1k.conf
/usr/local/ssl/lib
 
# 동적 링크 생성
ldconfig -v
 
ln -/usr/local/ssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -/usr/local/ssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
 
# 기존 openssl 이름 변경
mv /usr/bin/openssl /usr/bin/openssl1.0.2k
 
# 새로 설치한 버전 심볼릭 링크 생성
ln -/usr/local/ssl/bin/openssl /usr/bin/openssl
 
# 업데이트된 버전 확인
openssl version
 
# OpenSSL 지원 프로토콜 확인
openssl ciphers -| awk '{print $2}' | sort | uniq
 
openssl1.0.2k ciphers -| awk '{print $2}' | sort | uniq
 
 

 

 

업데이트 이전 버전 확인

 

업데이트 버전 확인 및 지원 프로토롤 확인

 

아래 방법으로 업그레이드를 하는 것도 추천한다.

 

# openssl 현재 버전 확인
openssl version 
 
# openssl 설치 위치 확인
which openssl
# /usr/bin/openssl
 
# OpenSSL 지원 프로토콜 확인
openssl ciphers -| awk '{print $2}' | sort | uniq
 
# 현재 버전 openssl 삭제
yum -y remove openssl
 
# 기본 라이브러리 설치
yum -y install gcc gcc-c++ perl pcre-devel zlib-devel wget
 
# 다운로드 및 소스 컴파일
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar xvfz openssl-1.1.1k.tar.gz
cd openssl-1.1.1k/ 
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make && make install
 
 
# 라이브러리 등록
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf.d/openssl.conf
 
# 동적 링크 생성
ldconfig -v
 
# 새로 설치한 openssl 복사
cp /usr/local/ssl/bin/openssl /usr/bin/
 
# 업데이트된 버전 확인
openssl version
 
# OpenSSL 지원 프로토콜 확인
openssl ciphers -| awk '{print $2}' | sort | uniq
 
 

 

 

728x90

'리눅스' 카테고리의 다른 글

[리눅스/Window10] 파일 내용 검색  (0) 2021.08.18
CentOS 7 Apache Permission  (0) 2021.07.31
CentOS 7 sftp chroot  (0) 2021.07.22
CentOS 5.9 확장모듈 추가 설치  (0) 2021.07.21
CentOS 5.9 YUM 설치 불가 해결  (0) 2021.07.21
블로그 이미지

Link2Me

,

CentOS 7 sftp chroot

리눅스 2021. 7. 22. 07:20
728x90

CentOS 7 에서 사용자(user)에게 Home 디렉토리를 지정하여 상위 디렉토리로는 이동을 못하게 막으면서 권한을 부여하는 방법이다.

 

# SFTP Configuration
mkdir -/home/data/sftp
chmod 701 /home/data
 
# Group 사용자 등록
groupadd sftpusers
 
# 사용자 계정 자동 생성되면서 그룹에 추가되고 로그인 시 사용할 기본 쉘 지정
useradd -g sftpusers -/upload -/sbin/nologin jsonuser
 
# 사용자 계정 암호 지정
passwd jsonuser
# 암호 입력
 
# upload할 디렉토리 지정
mkdir -/home/data/jsonuser/upload
 
# 그룹 권한 설정
chown -R root:sftpusers /home/data/jsonuser
# 사용자 계정 권한 설정
chown -R jsonuser:sftpusers /home/data/jsonuser/upload
 
# 설정된 권한 확인
ls -ld /home/
ls -ld /home/data/
ls -ld /home/data/jsonuser
ls -ld /home/data/jsonuser/upload
 
cat /etc/passwd | grep jsonuser
 
# vi 에디터에서 맨 아래줄로 이동하는 명령어 shift + g
# 맨 아래줄 하단에 아래 3줄을 추가한다.
vi /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /home/data/%u
ForceCommand internal-sftp
 
# SSH 상태확인 및 재시작
service sshd status
service sshd restart
 
# 적용된 권한 확인
yum -y install nmap
nmap -192.168.1.20
 
sftp jsonuser@192.168.1.20
ssh jsonuser@192.168.1.20

 

실제 적용 테스트한 화면

Virtual Box에 CentOS 7 설치하여 테스트했고, IP address : 192.168.1.20

 

 

SFTP로는 접속이 가능하고, SSH로는 접속이 불가능함을 확인할 수 있다.

 

728x90

'리눅스' 카테고리의 다른 글

CentOS 7 Apache Permission  (0) 2021.07.31
CentOS 7 openssl 최신버전으로 업그레이드  (1) 2021.07.24
CentOS 5.9 확장모듈 추가 설치  (0) 2021.07.21
CentOS 5.9 YUM 설치 불가 해결  (0) 2021.07.21
PHP Excel Library 설치  (0) 2021.04.10
블로그 이미지

Link2Me

,