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 로 확인시 아래 그림과 같이 나온다.

728x90

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

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

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

728x90

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

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
728x90
블로그 이미지

Link2Me

,
728x90

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

 

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


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

728x90

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

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 하면 잘 된다.

728x90

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

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 로 하면 없는 파일을 검색 시 로그인 화면으로 이동하도록 처리하는 것도 좋은 방법인 거 같다.

728x90

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

일반사용자 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

,
728x90

PHP-FPM 환경설정 테스트를 위해 PHP-FPM 설정 옵션을 제거하고 나서

Apache 서버에서 접속하니까 아래와 같은 메시지가 나온다.

 

Warning: require_once(): open_basedir restriction in effect. File(/var/www/config.php) is not within the allowed path(s): (/var/www/html) in /var/www/html/loginView.php on line 11

Warning: require_once(/var/www/config.php): failed to open stream: Operation not permitted in /var/www/html/loginView.php on line 11

Fatal error: require_once(): Failed opening required '.././config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/loginView.php on line 11

 

3Tier 구조에서 PHP-FPM 설치 옵션을 제거하면 3Tier 로 동작되는지 여부를 확인하기 위해서 해봤다.

반드시 PHP-FPM 을 설치해줘야만 3 Tier 구조로 동작이 된다는 것을 확인했다.

728x90
블로그 이미지

Link2Me

,
728x90

Apache 대신에 Nginx 서버를 설치하고, PHP-FPM 7.3 을 설치하는 과정을 테스트하고 적어둔다.

 

테스트 환경 : Virtual Box 6.1을 이용하여 Windows10 기반에서 CentOS 7.4 설치 후 아래 설정 작업

##########################################################
# Step 1. 커널을 제외한 업그레이드
vi /etc/yum.conf
# 첫줄 [main] 다음 라인에 추가하고 저장한다.
exclude=kernel*

 

# 아래 명령어 수행하면 커널은 업데이트되지 않고 다른 것만 업데이트된다.
yum -y update

#########################################################
#Step 2. – Prerequsitis
yum -y install epel-release

# yum 외부 저장소 추가 (이 과정은 생략해도 된다)
cd /etc/yum.repos.d/
vi nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

:wq 저장하고 나온다.

#Step 3. Nginx 설치
yum -y install nginx

# Apache를 설치한 경우에는 아파치 동작 중지
systemctl stop httpd

#Step 4. Nginx 데몬 실행
systemctl start nginx
systemctl enable nginx
systemctl status nginx

# 기존에 설치된 php가 있다면 제거 (필요하면 사용하라)
yum remove -y 'yum list installed | cut -d " " -f 1  | grep php'

### PHP 설치 ####
#Step 5. Repository 설치
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

#Step 6. yum Utilities Package 설치
yum -y install yum-utils

#Step 7. – Install PHP and PHP-FPM
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php73

yum -y install --enablerepo=remi-php73 mod_ssl php php-zip php-fpm php-common php-opcache php-curl php-devel php-gd
yum -y install --enablerepo=remi-php73 php-imap php-ldap php-mysql php-mysqlnd php-pdo php-odbc php-pear php-xml php-xmlrpc php-pecl-apc   
yum -y install --enablerepo=remi-php73 php-mbstring php-mcrypt php-soap php-tidy curl curl-devel php-libwww-perl ImageMagick libxml2 libmxl2-devel    
yum -y install --enablerepo=remi-php73 mod_fcgid php-cli httpd-devel php-intl php-pspell php-openssl      
yum -y install --enablerepo=remi-php73 unzip mc git bind-utils wget

# 시만텍 서버백신 라이브러리 설치
yum -y install gcc glibc.i686 libX11.i686 libX11.x86_64

# CentOS 7.4 버전용 kernel-devel rpm 다운로드
cd /root
wget https://vault.centos.org/7.4.1708/os/x86_64/Packages/kernel-devel-3.10.0-693.el7.x86_64.rpm
rpm -ivh kernel-devel-3.10.0-693.el7.x86_64.rpm

# PHP 설치버전 확인
php -v

# 설치된 PHP Package 확인
rpm -qa | grep php

#Step 8. PHP-FPM 설정 파일 수정
# www.conf 설정파일을 아래와 같이 수정
vi /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

listen.acl_users = nginx

; shift + G 를 눌러서 마지막 라인으로 이동한 후 아래 줄 주석 제거
php_value[opcache.file_cache] = /var/lib/php/opcache  ; 주석만 제거

#Step 9. 환경파일 수정
vi /etc/nginx/nginx.conf
    access_log  /var/log/nginx/access.log  combined;

    default_type        application/octet-stream;

    #Prevent system info explosure
    server_tokens off;

    #Prevent Diectory Search
    autoindex off;

    server {
        listen 80;
        server_name  localhost;
        root  /var/www/html;

        location / {
            index index.php index.html index.htm;
        }

        location ~ \.php$ {
            # /var/run/php-fpm/php-fpm.sock 경로에 파일이 있는지 확인
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

# 저장하고 나온다.

CodeIgniter 를 이용하기 위한 세부 설정은 https://hbesthee.tistory.com/1632 참조해서 수정하면 좋을 듯...

 

# Step 10 : Configure PHP-FPM
vi /etc/php.ini
cgi.fix_pathinfo=0
short_open_tag = On
post_max_size = 30M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 30M ;// 기본 2M 으로 되어 있었음

date.timezone ="Asia/Seoul"
expose_php=Off

;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제될 것이다.

# 저장하고 나온다.

#Step 11. 서비스 재시작
systemctl restart php-fpm
systemctl restart nginx
 
#Step 12. 서비스 자동시작 등록
systemctl enable php-fpm

### 시간 동기화
yum -y install rdate

crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w

### phpMyAdmin 설치 #####
chcon -R -t httpd_sys_rw_content_t /var/lib/php/session
chmod -R 777 /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session

cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
unzip phpMyAdmin-5.0.4-all-languages.zip
chown -R nginx:nginx phpMyAdmin-5.0.4-all-languages
mv phpMyAdmin-5.0.4-all-languages pma
cd pma
cp -rp config.sample.inc.php  config.inc.php
vi config.inc.php
$cfg['blowfish_secret'] = 'qtdRoGmbc9{8IZr]0s)r$9b_JUnb{~Xz';
$cfg['Servers'][$i]['host'] = 'mysql DB 서버IP or localhost';
$cfg['Servers'][$i]['compress'] = true;
$cfg['TempDir'] = '/tmp';

 

기존 Apache 환경 구축을 Nginx 로 변경하는 걸 고려하기 위해서 테스트한 것인데, Virtual Host 설정 부분 등을 더 테스트해봐야 할 것 같다.

728x90
블로그 이미지

Link2Me

,
728x90

Web 기반 MySQL 관리 툴인 phpMyAdmin 낮은 버전이 CentOS 7 환경에서 동작되지 않아서 높은 버전을 받아서 설치했다.

 

설치 경로는 Web root 폴더에 설치했다. (5.1.0 버전으로 업데이트)

cd /var/www/html

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.0/phpMyAdmin-5.1.0-all-languages.zip

unzip phpMyAdmin-5.1.0-all-languages.zip

chown -R apache:apache phpMyAdmin-5.1.0-all-languages

mv phpMyAdmin-5.1.0-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_JUnb{~Xz'; // 임의의 값 설정
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = true;
$cfg['TempDir'] = '/tmp';

 

MySQL 설치된 서버와 PHP가 설치된 서버가 다른 경우에는

$cfg['Servers'][$i]['host'] = '172.16.100.253'; // mysql DB 서버IP

 

 

 

한가지 더 해줘야 할 사항은 phpMyAdmin 으로 해킹을 시도하는 경우가 많기 때문에 특정 IP 주소에서만 접속하도록 설정하는 것이 좋다.

<?php
$remote_ip=$_SERVER['REMOTE_ADDR'];
$access_ip = array("192.168.1.14", "100.10.10.145");

if(!in_array($remote_ip,$access_ip)){
    echo $_SERVER['REMOTE_ADDR']; // 허용된 IP주소만 접속하기 위한 목적
    exit;
}
?>
 

 

index.php 파일 수정사항

* 5.1.0 버전의 index.php 파일 내용이 약간 달라졌으므로 그 부분만 고려해서 설정하면 된다.

 

위와 같이 ipFiltering.php 파일을 포함해서 허용된 IP주소외에는 접속할 수 없도록 하는 것이 안전하다.

 

728x90

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

CentOS7 PHP-FPM 제거시  (0) 2021.02.16
CentOS7 nginx + PHP 7.3 설치  (0) 2020.12.28
CentOS 7 glibc.i686 설치  (0) 2020.12.18
CentOS 7 kernel 확인 및 GRUB2 부팅순서 변경  (0) 2020.12.11
CentOS7 무료 SSL 인증서 설치  (0) 2020.11.24
블로그 이미지

Link2Me

,
728x90

yum install glibc.i686




yum 설치를 한 경우에는 아래 파일 다운로드해서 설치해도 설치가 안되더라.

의존성 관련 라이브러리 들이 같이 설치되어서....


# glibc.i686 rmp 다운로드
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/glibc-2.17-317.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/glibc-2.17-317.el7.i686.rpm
wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/nss-softokn-freebl-3.53.1-6.el7_9.x86_64.rpm

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/nss-softokn-freebl-3.53.1-6.el7_9.i686.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/glibc-common-2.17-317.el7.x86_64.rpm


# rpm 설치
rpm -Uvh packagename.rpm

# rpm 삭제
rpm -e packagename.rpm

# 이미 설치된 패키지 질의
rpm -qa packagename.rpm

728x90

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

CentOS7 nginx + PHP 7.3 설치  (0) 2020.12.28
CentOS7 기반 phpMyAdmin 설치  (0) 2020.12.18
CentOS 7 kernel 확인 및 GRUB2 부팅순서 변경  (0) 2020.12.11
CentOS7 무료 SSL 인증서 설치  (0) 2020.11.24
PHP-FPM VirtualHost 설정  (0) 2020.11.03
블로그 이미지

Link2Me

,
728x90

CentOS 7 kernel 확인


# 설치된 커널 확인
sudo rpm -qa kernel
yum list kernel --show-duplicates
yum list all | grep kernel





#yum update할 때 kernel은 업데이트되지 않게 하기
vi /etc/yum.conf
exclude=kernel* centos-release* redhat-release*


kernel 은 업데이트되지 않게 설정하고 나서 yum -y update 로 업데이트 하고 나서 재부팅을 했다.


재부팅후에도 커널은 업데이트 안된 것을 확인했다.


현재 커널버전 확인

uname -r


# 현재 적용된 부팅 1순위 확인 (위의 커널버전과 다른 이유는 다른 리눅스에서 명령어 수행 : 테스트용 서버)
grub2-editenv list



# 부팅 가능 커널 리스트 확인
grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2


# 적용하고 싶은 커널 버전 적용
grub2-set-default "CentOS Linux (3.10.0-1127.19.1.el7.x86_64) 7 (Core)"


시스템 재부팅 reboot 를 하고 나서 현재 커널 버전을 확인해보자.

uname -r


grub2-editenv list


#커널별 엔트리 및 인덱스 넘버 확인

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg


부팅 순서를 보면 0 순위가 1160 으로 나온다.

실제 커널을 확인하면 1127 버전으로 부팅된 것을 확인할 수 있는데도...


#커널 삭제

커널 삭제는 굳이 할 필요는 없다. 삭제되는 걸 테스트 삼아 해본 것 뿐이다.

커널명 확인 명령어 : rpm -qa kernel


커널 삭제 명령어 :  yum -y remove kernel-3.10.0-1127.el7.x86_64



728x90

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

CentOS7 기반 phpMyAdmin 설치  (0) 2020.12.18
CentOS 7 glibc.i686 설치  (0) 2020.12.18
CentOS7 무료 SSL 인증서 설치  (0) 2020.11.24
PHP-FPM VirtualHost 설정  (0) 2020.11.03
CentOS 원격서버로 파일 전송하기  (0) 2020.10.27
블로그 이미지

Link2Me

,
728x90

무료 인증서 설치하는 방법을 적어둔다.


Redirecting vhost in /etc/httpd/conf.d/default.conf to ssl vhost in /etc/httpd/conf.d/default-le-ssl.conf

자동으로 default.conf 에 설정한 VirtualHost 정보를 읽어서 default-le-ssl.conf 에 추가를 해주더라.



# 저장소 추가
yum -y install epel-release

yum -y install certbot

# 설치 : 웹서버가 Apache 인 경우
yum -y install python2-certbot-apache mod_ssl


# 설치하면
cd /etc/letsencrypt
cd /etc/httpd/conf.d/
default-le-ssl.conf
파일이 자동 생성된다.


cd /var/log/letsencrypt
에 로그가 쌓인다.



인증서 발급
# 자동으로 Redirecting vhost in /etc/httpd/conf.d/default.conf to ssl vhost in /etc/httpd/conf.d/default-le-ssl.conf
# VirtualHost 정보를 읽어서 설정을 해주더라.

# vi /etc/httpd/conf.d/default.conf 에 먼저 Virtual Host를 추가 등록해줘야 한다.

# 추가하면 자동으로 /etc/httpd/conf.d/default-le-ssl.conf 에 자동으로 추가된다.


# IP 주소가 변경된 곳에서 설치를 했더니 인증서가 유효하지 않다고 나온다.


certbot --apache -d abc.com
certbot --apache -d food.abc.com


# 재시작
systemctl restart httpd

systemctl status httpd

# ssl.conf 편집
cd /etc/httpd/conf.d/
vi /etc/httpd/conf.d/ssl.conf


#인증서 갱신
certbot renew

# 현재설치된 certbot 확인
certbot certificates

crontab -e

## 두달에 한번씩 인증서가 갱신되도록 작업 추가
0 0 2 * * /bin/bash -l -c 'certbot renew --quiet'

### 인증서 해지(Revoking certificates)
certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem

728x90
블로그 이미지

Link2Me

,
728x90

PHP-FPM 서버에서 VirtualHost 설정하는 예제이다.


vi /etc/httpd/conf/httpd.conf
# 여기서 할 것은 없다.

vi /etc/httpd/conf.d/default.conf
<VirtualHost *:80>
       DocumentRoot "/home/httpd/test/www/htdocs"
       ServerName abc.com
       ServerAlias test.abc.com

       <Directory "/home/httpd/test/www/htdocs">
        AllowOverride None
        Require all granted
       </Directory>

       ErrorLog /var/log/httpd/test-error.log
       CustomLog /var/log/httpd/test-access.log combined

       SuexecUserGroup apache apache

       <Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
               ProxySet disablereuse=off
        </Proxy>

       <FilesMatch \.php$>
               SetHandler proxy:fcgi://php-fpm
       </FilesMatch>
</VirtualHost>

<VirtualHost *:80>
       DocumentRoot "/home/httpd/food/www/htdocs"
       ServerName abc.com
       ServerAlias food.abc.com

       <Directory "/home/httpd/food/www/htdocs">
        AllowOverride None
        Require all granted
       </Directory>

       ErrorLog /var/log/httpd/food-error.log
       CustomLog /var/log/httpd/food-access.log combined

       SuexecUserGroup apache apache

       <Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
               ProxySet disablereuse=off
        </Proxy>

       <FilesMatch \.php$>
               SetHandler proxy:fcgi://php-fpm
       </FilesMatch>
</VirtualHost>
 


728x90
블로그 이미지

Link2Me

,
728x90

CentOS 원격 서버로 파일 전송하기


# 원격 서버 SSH 접속포트가 1922인 경우
scp -p 1922  root@10.10.122.135:/root/backup/


# 원격 서버 SSH 접속포트가 22인 경우

scp qrcode.tar.gz root@10.10.122.133:/var/www/



728x90
블로그 이미지

Link2Me

,
728x90

원하는 Server-Side 언어가 PHP, JSP, node.js 에 따라서 설치하는 사항이 조금씩 다르다.

CentOS7 에서 Apache Web서버와 PHP 7.3 을 설치하는 방법이다.

 

# 설치 확인
rpm -qa | grep httpd
rpm -qa | grep php
rpm -qa | grep MariaDB
rpm -qa | mysql

 

# PHP 설치여부 확인
rpm -qa | grep php
yum list installed | grep php

 

## 설치된 것 한꺼번에 지우기 (잘못 설치한 경우)
rpm -qa | grep httpd >list
rpm -qa | grep php >list

# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '' <list)

 

PHP 설치

#Step 1 – Prerequsitis
yum -y install epel-release

#Step 2 - Repository 설치
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm


#Step 3 - yum Utilities Package 설치
yum -y install yum-utils

#Step 4 – Install PHP and PHP-FPM
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php73

yum -y install --enablerepo=remi-php73 httpd mod_ssl php php-zip php-fpm php-common php-opcache php-curl
yum -y install --enablerepo=remi-php73 php-devel php-gd php-imap php-ldap php-mysql php-mysqlnd php-pdo
yum -y install --enablerepo=remi-php73 php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring   
yum -y install --enablerepo=remi-php73 php-mcrypt php-soap php-tidy curl curl-devel php-libwww-perl
yum -y install --enablerepo=remi-php73 ImageMagick libxml2 libmxl2-devel mod_fcgid php-cli httpd-devel    
yum -y install --enablerepo=remi-php73 php-intl php-pspell wget php-openssl unzip mc git     

# PHP 설치버전 확인
php -v

 

# 설치된 PHP Package 확인
rpm -qa | grep php

 

## 보안설정
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 -R 755 /var/www/html

 

#Step 4 httpd.conf 파일 수정

vi /etc/httpd/conf/httpd.conf
ServerName localhost

# 불필요한 Methods 차단 설정 : method 허용은 GET, POST 만 허용
# Directory 태그를 사용하면 Directory 별로 모두 제한을 걸어줘야 하므로
# URL pattern 을 이용하여 일괄적으로 제한하는 방법
<Location />
   <LimitExcept GET POST>
       Order deny,allow
       Deny from all
   </LimitExcept>
</Location>

<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
</IfModule>

# 서버 정보 노출 방지
ServerTokens Prod
ServerSignature Off 

# Trace Method 처리
TraceEnable off

ErrorDocument 400 /error.html
ErrorDocument 401 /error.html
ErrorDocument 402 /error.html
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 405 /error.html
ErrorDocument 408 /error.html
ErrorDocument 500 /error.html
ErrorDocument 501 /error.html
ErrorDocument 502 /error.html
ErrorDocument 503 /error.html

저장하고 나온다.

# Apache HTTPOXY 취약점 방지
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

 

# Step 5 : Configure PHP-FPM

vi /etc/php.ini
cgi.fix_pathinfo=0
short_open_tag = On
post_max_size = 60M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 50M ;// 기본 2M 으로 되어 있었음

;PHP 버전정보 노출 방지
expose_php=Off

date.timezone ="Asia/Seoul"

;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_probability = 1
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제될 것이다.
session.gc_maxlifetime = 3600

;세션과 쿠키를 동시에 사용
session.use_cookies = 1

;PHP 시작과 동시에 세션 사용(1), 사용하지 않음(0)
session.auto_start = 0

# 저장하고 나온다.
# 반드시 추가구현해야 문제없이 동작한다.
cd /var/www/html/
vi .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>

 

### 시간 동기화
yum -y install rdate

crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w

#크론탭 재시작
service crond restart

 

#crontab 설치 여부 확인
ps -ef | grep cron

# 서비스 활성화
systemctl enable httpd

# 서비스 시작
systemctl start httpd

systemctl stop httpd
systemctl restart httpd
systemctl status httpd

 

위 설치 스크립트에서 추가 설정을 하면 PHP-FPM 설정이 가능하다. 그 내용은 생략한다.

이것으로 윈도우10 에서 CentOS7 을 Virtual Box로 설치하여 Web서버를 운영하는 방법에 대한 설명을 마친다.

728x90
블로그 이미지

Link2Me

,
728x90

CentOS7 환경에서 MariaDB 를 yum 설치하는 방법이다.

root 권한에서 설치하는 것이라서 복사하여 그대로 붙여넣기 편하게 만들었다.

 

################################
##### MariaDB 10.3 버전 설치 #####
################################
 
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
 
 
# 위 사항을 그대로 붙여넣기하고 저장하고 나온다.
 
# MariaDB Sever & Client 설치
yum -y install MariaDB-server MariaDB-client
 
# 서버 부팅시 자동 실행 설정
systemctl enable mariadb
 
# mariadb 시작 (둘 중 하나 실행)
systemctl start mariadb
service mariadb start
 
# mariadb 상태 확인(둘 중 하나 실행)
systemctl status mariadb
service mariadb status
 
# Maria DB 보안 설정하기
mysql_secure_installation
 
아무것도 입력하지 않고 엔터
Root 비밀번호 설정 : Y 입력 후 엔터
Root 비밀번호 입력
Anonymous User 삭제 : Y 입력후 엔터
원격 root 로그인 불가 설정 : Y 입력후 엔터
Test DB 삭제 : Y 입력후 엔터
변경사항 반영 : Y 입력 후 엔터
 
# MariaDB 버전 확인
mysql -uroot -p
use mysql
select version();
 
# 서버 설정 파일 변경
vi /etc/my.cnf.d/server.cnf
[mysqld]
init_connect="SET collation_connection = utf8_general_ci"  
init_connect="SET NAMES utf8"  
character-set-server = utf8
collation-server = utf8_general_ci
 
# Dump 파일에도 동일한 Character Set 적용
vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
 
# MariaDB 실행
systemctl restart mariadb
systemctl status mariadb
mysql -u root -p
status
quit 

 

 

# mariadb 상태 확인

 

 

# Maria DB 보안 설정하기
mysql_secure_installation

 

# 서버 설정 파일 변경
vi /etc/my.cnf.d/server.cnf

 

 

# Dump 파일에도 동일한 Character Set 적용
vi /etc/my.cnf.d/mysql-clients.cnf

 

 

 

 

설정확인

mysql -uroot -p
패스워드 입력

 

show variables like 'c%';

 

 

 

Apache 와 PHP 를 설치 방법 https://link2me.tistory.com/1890 참조

728x90
블로그 이미지

Link2Me

,
728x90

CentOS7 설치가 끝났으면 이제 Network 환경 설정을 static으로 변경해보자.


준비물

1. kitty 프로그램(SSH 접속 프로그램)

2. IP TIME 공유기

    - 공유기 없이 직접 초고속 인터넷에 접속된 경우에는 불필요.

    - 공유기는 Private IP 주소를 Public IP 주소로 변환하는 장치(NAT:Network Address Translation)


kitty 프로그램 다운로드

https://www.fosshub.com/KiTTY.html 에서 portable 버전 파일을 다운로드 한다.



다운로드 받은 포터블 파일을 적당한 위치에 복사/이동해서 실행시킨다.



글꼴 크기를 적절하게 조정하기 위해 8번을 클릭해서 처리한다.




자동 접속을 위해 root 비밀번호를 설정한다.






먼저 ip addr 를 실행한다.



vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 를 하고 내용을 확인하면

DHCP 로 설정된 것을 확인할 수 있다.

DHCP 라는 것은 접속할 때마다 IP주소가 변경될 수 있다는 의미다.

IP주소가 변경되지 않도록 하려면 static으로 변경해야 한다.

공유기 뒷단의 Private IP address 부분이 변경되지 않도록 하기 위함이지, 초고속 인터넷 IP주소가 변경되지 않도록 한다는 의미가 아니다.

IP TIME 공유기를 상시 물려두면 거의 Public IP address가 변경되지 않을 수도 있다.



아래와 같이 BOOTPROTO=none 으로 변경하고 IP주소, Gateway 추가, DNS 를 추가하고 저장한다.

IPADDR=192.168.1.20
PREFIX=24
GATEWAY=192.168.1.100
DNS1=168.126.63.1
DNS2=168.126.63.2


# network 재시작
systemctl restart network


네트워크를 고정(static) IP주소로 변경했다.


이제 외부에서도 홈페이지 접속 및 SSH 접속을 위한 IP TIME 공유기를 설정하자.

IP TIME 공유기 URL 은 위에서 자동으로 설정한 Gateway IP 주소다.

admin 과 비밀번호를 입력하고 나면 아래 화면이 보일 것이다. 관리도구를 클릭한다.

포트포워딩 설정을 해준다.

홈페이지 접속을 위해서 http가 사용하는 포트 80 인데, 외부에서 접속할 때에는 8080 으로 접속하도록 포트를 지정했다. 기존에 사용하던 리눅스 전용서버가 있기 때문에 윈도우10에 설치한 CentOS 기반 Web서버 접속은 이렇게 하도록 설정했다.

외부에서 SSH 접속을 위한 포트번호도 추가했다.



SSH에 사용하는 root 패스워드는 강력하게 15자리 이상으로 하는 게 좋다.

보통 패스워드를 10자리 또는 8자리로 설정하는데 15자리 이상으로 설정하면 패스워드 알아내는 건 거의 어렵다고 볼 수 있기 때문이다.


방화벽 설정

기본 방화벽 설정은 SSH, HTTP(80), HTTPS(443), MariaDB(3306) 만 추가해주면 된다.

# 방화벽 설치
yum -y install firewalld

# 방화벽 확인
firewall-cmd --list-all

# http/https 및 port 방화벽 오픈
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-port=3306/tcp

# 방화벽 적용 및 확인
firewall-cmd --reload
firewall-cmd --list-all




MariaDB 설치 방법 : https://link2me.tistory.com/1889 참조

728x90
블로그 이미지

Link2Me

,
728x90

윈도우 10에 Virtual Box를 설치하고 CentOS7 설치를 위한 준비가 끝났으면 이제 CentOS7 을 설치해보자.

 

 

 

 

 

 

 

※ 어댑터에 브리지 : Windows10 PC가 1개의 IP주소를 가지고, VirtualBox 도 1개의 IP주소를 별도로 갖는 방식

NAT : Windows 10 이 1개의 IP주소를 가지고 그 IP주소에 별도의 사설 IP주소를 할당하여 사용

https://link2me.tistory.com/2061 를 참조하면 NAT 방식으로 사용할 시 설정 방법이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

재부팅을 하고 나면 재시작을 하고 나서 다음과 같이 로그인 창이 나온다.

 

 

 

yum -y update 를 해주면 아래와 같이 실행되면 네트워크가 정상동작된다는 걸 확인할 수 있다.

 

 

여기까지가 CentOS7 기본 설치를 마친 단계이다.

 

Windows 10 에 CentOS7 네트워크 설정 - 4 https://link2me.tistory.com/1888

 

728x90
블로그 이미지

Link2Me

,
728x90

Virual Box 실행화면에서 몇가지 기본적인 사항을 설정하고 나서 CentOS7 설치를 위한 준비 단계를 살펴보자.


환경설정 → 일반 → 가상머신 폴더를 지정한다. 즉 CentOS7 설치할 폴더를 지정한다.


호스트 키 조합을 설정하는 것은 윈도우와 리눅스에서 마우스를 전환하기 위한 키라고 보면 된다.



이제 CentOS7 설치를 해보자.







공간 크기는 16GB로 설정했다. 8GB를 자동으로 잡아주더라.



여기까지 하고 나면 CentOS7 설치 파일을 지정하고 설치를 시작할 준비단계를 마친 것이다.


Windows 10 에 CentOS7 설치 하기 - 3 https://link2me.tistory.com/1887

728x90
블로그 이미지

Link2Me

,
728x90

윈도우10이 설치된 PC/노트북에 CentOS7 을 설치하는 방법이다.


준비물

1. CentOS7 ISO 파일

2. Virtual Box 파일

3. 설치공간 16GB : default 8GB 로 설정해도 된다.

4. IP TIME 공유기 : 사설 IP 여러개를 사용하면서 공인(Public) IP 로 변환하는 장치

    공유기가 있으면 Port Forwarding 기능을 이용하여 외부 접속이 가능하다.

    https://link2me.tistory.com/1449 참조



CentOS7 설치파일 다운로드 안내

1. CentOS7 ISO 파일 : https://www.centos.org/download/ 에서 파일을 다운로드 한다.

2번을 누르면 http://mirror.kakao.com/centos/7.8.2003/isos/x86_64/ 와 같은 파일 다운로드 경로로 변경된다.

토렌토 파일을 받아서 토렌토를 이용하여 파일 다운로드를 하거나 직접 다운로드를 한다.


다운받은 파일을 적당한 폴더에 이동시킨다.


Virtual Box 다운로드 및 설치

1. https://www.virtualbox.org/wiki/Downloads 에서 파일을 다운로드 한다.



2. 다운로드 받은 파일을 실행한다.


3. Virtual Box 설치 과정



적당한 폴더를 선택하고 설치해도 되고 ProgramFiles 에 default 설치를 해도 된다.






여기까지 하면 Virtual Box 설치는 완료되었다.


설치후 Virtual Box 실행화면



Windows 10 에 CentOS7 설치 환경 만들기 - 2  https://link2me.tistory.com/1886

728x90

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

Windows 10 에 CentOS7 설치 하기 - 3  (0) 2020.10.03
Windows 10 에 CentOS7 설치 환경 만들기 - 2  (0) 2020.10.03
CentOS7 SSH 포트 변경  (0) 2020.09.28
CentOS7 PHP-FPM yum 설치  (0) 2020.09.16
MariaDB 깨졌을 때 복구 및 백업  (0) 2020.09.02
블로그 이미지

Link2Me

,