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;
 
##########################################################################
 

 

 

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

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

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
 
 

 

 

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

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
CentOS 7 docker 설치 및 컨테이너 사용 방법  (2) 2021.12.31
블로그 이미지

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 명령어를 입력해도 된다.

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

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/

 

 

 

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

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 를 재시작해주었더니 정상적으로 파일이 생성되면서 동작된다.

블로그 이미지

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
 
#####################################################################

 

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

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 복호화 예제는 구글링으로 찾아서 해결하시라.
 

 

블로그 이미지

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;
    }
}
?>

 

 

 

 

블로그 이미지

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 접속툴을 이용하여 접속하면 접속 가능하다.

 

블로그 이미지

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
 
#######################################################################
 

 

 

블로그 이미지

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 파일을 받을 수 있다.

 

 

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

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

 

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

블로그 이미지

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
 
 

 

 

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

[리눅스/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로는 접속이 불가능함을 확인할 수 있다.

 

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

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

,
728x90

고객사에 설치된 PHP 버전이 5.4.6 이 설치되어 있더라.

PHPINFO 로 확인해보니 mcrypt.so 파일과 mbstring.so 파일이 설치되어 있지 않았다.

 

mcrypt 모듈 설치

먼저 libmcrypt-2.5.8.tar.gz 파일이 위 경로에 받아져 있거나 Upload로 올려져 있어야 한다.

PHP 5.4.6 소스 설치된 폴더 경로가 /home/install_files/ 라고 되어 있다고 가정한다.

 
cd /home/install_files/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install
 
cd /home/install_files/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/ 
 
cd /home/install_files/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 모듈 설치

 
# mbstring 모듈 추가
cd /home/install_files/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/install_files/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
 

 

 

PHPINFO 로 확인시 아래 그림과 같이 나온다.

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

CentOS 7 openssl 최신버전으로 업그레이드  (1) 2021.07.24
CentOS 7 sftp chroot  (0) 2021.07.22
CentOS 5.9 YUM 설치 불가 해결  (0) 2021.07.21
PHP Excel Library 설치  (0) 2021.04.10
일반사용자 root 권한 부여  (0) 2021.04.10
블로그 이미지

Link2Me

,
728x90

CentOS 5.9 에서 yum 설치를 하니까 안되어 확인하고 수정했다.

CentOS-Base.repo 파일이 없다.

 

vi /etc/yum.repos.d/CentOS-Base.repo

로 접속하여 아래 코드를 붙여넣기 했다.

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
# http://vault.centos.org/?release=5&arch=i386&repo=os
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 
#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://vault.centos.org/5.11/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://vault.centos.org/5.11/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
baseurl=http://vault.centos.org/5.11/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://vault.centos.org/5.11/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 

저장(:wq)하고 나서 yum 설치 잘 되는지 확인해 본다.

 

yum -y install mc

로 간단하게 테스트를 했더니 잘된다.

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

CentOS 7 sftp chroot  (0) 2021.07.22
CentOS 5.9 확장모듈 추가 설치  (0) 2021.07.21
PHP Excel Library 설치  (0) 2021.04.10
일반사용자 root 권한 부여  (0) 2021.04.10
yum update 시 에러 Berkeley DB library error  (0) 2021.03.24
블로그 이미지

Link2Me

,

PHP Excel Library 설치

리눅스 2021. 4. 10. 22:13
728x90
#### PHP Excel Library 설치를 위한 Composer 설치 #####
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

cd /var/www/html/
composer require phpoffice/phpspreadsheet
블로그 이미지

Link2Me

,
728x90

# 예시 : 사용자 id : jsk005 
usermod -aG wheel jsk005

 

sudo visudo
/Same thing 부분 찾아서 아래 주석(#)을 제거한다.
# %wheel 의 주석(#)을 제거하고 저장하고 나온다.


# 사용자(jsk005) 접속
$su - jsk005
$sudo bash
하면 root 권한이 부여된 것을 확인할 수 있다.

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

CentOS 5.9 YUM 설치 불가 해결  (0) 2021.07.21
PHP Excel Library 설치  (0) 2021.04.10
yum update 시 에러 Berkeley DB library error  (0) 2021.03.24
No input file specified 발생문제 해결방법  (0) 2021.03.24
CentOS7 PHP-FPM 제거시  (0) 2021.02.16
블로그 이미지

Link2Me

,
728x90

yum -y update 를 했더니 아래와 같은 에러가 발생하면서 update가 실패된다.

error: rpmdb: BDB0113 Thread/process 7238/140477050860864 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 -  (-30973)
error: cannot open Packages database in /var/lib/rpm
Error: Error: rpmdb open failed

해결 방법은

cd /var/lib/rpm

rm __db*

으로 해서 관련 파일을 삭제한다.

 

그 이후에

yum -y update 하면 잘 된다.

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

PHP Excel Library 설치  (0) 2021.04.10
일반사용자 root 권한 부여  (0) 2021.04.10
No input file specified 발생문제 해결방법  (0) 2021.03.24
CentOS7 PHP-FPM 제거시  (0) 2021.02.16
CentOS7 nginx + PHP 7.3 설치  (0) 2020.12.28
블로그 이미지

Link2Me

,
728x90

Aapche 서버를 3Tier 로 구성할 때 Apache + PHP-FPM 설정한 WAS 서버 환경 옵션을 제대로 처리를 못해서 이 문제 해결하는데 엄청 시간을 허비했다.

이 자료를 오픈할까 말까 엄청 고민했다.

아래 예시는 무료 인증서를 설치한 것 기준으로 작성된 Apache httpd.conf 와 관련 파일이다.

 

httpd.conf 설정사항

 

DocumentRoot "/home/httpd/test/www/htdocs"
 
# Further relax access to the default document root:
<Directory "/home/httpd/test/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>
 

 

default.conf

<VirtualHost *:80> 
       DocumentRoot "/home/httpd/test/www/htdocs"
       ServerName test.abc.com
       ServerAlias test.abc.com
 
       ErrorLog /var/log/httpd/test-error.log
       CustomLog /var/log/httpd/test-access.log combined
 
RewriteEngine on
RewriteCond %{SERVER_NAME} =test.abc.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

 

 

default-le-ssl.conf

 

<IfModule mod_ssl.c>
<VirtualHost *:443> 
       DocumentRoot "/home/httpd/test/www/htdocs"
       ServerName test.abc.com
       ServerAlias test.abc.com
 
       ErrorLog /var/log/httpd/test-error.log
       CustomLog /var/log/httpd/test-access.log combined
 
SSLCertificateFile /etc/letsencrypt/live/test.abc.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.abc.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/test.abc.com/chain.pem
</VirtualHost>
</IfModule>
 

 

.htaccess

 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [R=405,L]
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ error.html?/$1 [QSA,PT,L]
</IfModule>

 

.htaccess 에서 error.html 대신에 index.php 로 하면 없는 파일을 검색 시 로그인 화면으로 이동하도록 처리하는 것도 좋은 방법인 거 같다.

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

일반사용자 root 권한 부여  (0) 2021.04.10
yum update 시 에러 Berkeley DB library error  (0) 2021.03.24
CentOS7 PHP-FPM 제거시  (0) 2021.02.16
CentOS7 nginx + PHP 7.3 설치  (0) 2020.12.28
CentOS7 기반 phpMyAdmin 설치  (0) 2020.12.18
블로그 이미지

Link2Me

,