728x90



PHP 7.3을 yum 설치하고 info.php 로 확인해보면 아래와 같이 Server API 정보가 나온다.


PHP를 Apaceh + PHP + DB를 각각 분리하는 구조로 만들려면 PHP-FPM 을 설치하고 설정을 제대로 해주어야 한다.


PHP 7.3 yum 설치 방법은 간단하다.

#Step 1 – Prerequsitis
yum -y install epel-release
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# yum 패키지를 관리
yum -y install yum-utils

#Step 2 – Install Apache2
yum -y install httpd

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

yum -y install --enablerepo=remi-php73 php php-cli mod_ssl php-fpm php-common php-imap php-ldap
yum -y install --enablerepo=remi-php73 php-curl php-hash php-iconv php-json php-openssl php-zip
yum -y install --enablerepo=remi-php73 php-pdo php-process php-mysqlnd php-devel php-mbstring php-mcrypt php-soap php-bcmath
yum -y install --enablerepo=remi-php73 php-pgsql php-libxml php-pear php-gd php-ssh2 php-xmlreader
yum -y install --enablerepo=remi-php73 php-xml php-xmlrpc php-pecl-apc php-sockets
yum -y install --enablerepo=remi-php73 php-tokenizer php-zlib php-gmp php-Icinga php-intl
 


설치 후에 환경 설정을 제대로 해주는 것이 PHP-FPM을 이용할 수 있는데, Virtual Host 설정 방법이 간단하지가 않더라.

보통 자료가 Apache 서버 대신 NGINX 서버로 설정하는 방법이 많이 검색된다.
Apache 서버와 PHP 서버를 분리해서 테스트를 해보고 성공하면 관련 코드를 간단하게 적어둘 생각이다.

같은 서버에서 Apache + PHP-FPM 설치하는 방법은 아래 사이트를 참조하면 해결할 수 있다.
설치 참고 사이트



https://webinformation.tistory.com/101


yum 설치하는 것을 한꺼번에 지우는 방법이다.

환경설정이 맞지 않아서 여러번 테스트 하다보니 개별 삭제가 너무 귀찮아서 한꺼번에 지우는 방법을 적어둔다.

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

## 설치된 것 한꺼번에 지우기

rpm -qa | grep httpd >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)


rpm -qa | grep php >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 



DB서버에 MariaDB 10.3 설치 방법

vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.3 CentOS repository list - created 2019-01-13 00:47 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

yum -y install MariaDB-server MariaDB-client

# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb

# mariadb 시작 (둘 중 하나 실행)
systemctl start mariadb
service mariadb start

# mariadb 상태 확인
service mariadb status

# Maria DB 보안 설정하기
mysql_secure_installation
비밀번호 입력

vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8
collation-server     = utf8_general_ci

service mariadb restart
mysql -u root -p
status
quit

semanage port -a -t mysqld_port_t -p tcp 3306

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

# 접속 테스트
mysql -uroot -p
비밀번호 입력

# 서비스 재시작
systemctl restart mariadb



CentOS 6.10 기반

PHP 5.6.40 yum 설치로 PHP-FPM 설치하는 방법


https://tecadmin.net/setup-httpd-with-fastcgi-and-php-on-centos-redhat/ 에 잘 나와 있다.

이 코드에서는 Apache +PHP-FPM 을 하나의 서버에서 동작하도록 되어 있다.

Virtual Host 설정을 해주어야 하는데 /etc/httpd/conf/httpd.conf 파일의 맨 하단에 Virtual Host 설정을 추가해주면 바로 동작이 되더라.
Virtual Host 설정 안해주면 phpinfo 정보로 위와 같은 그림만 확인되고 실제 PHP개발 코드가 동작이 안되더라.

아직 서버를 분리시켜서 테스트는 못해봤다. IP주소 설정 등을 해주어야 하므로 약간의 세팅 정보 변경이 필요할 거 같다.


rpm -qa | grep remi-release
rpm -qa | grep epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum list remi-release

yum-config-manager --disable remi-php54
yum-config-manager --disable remi-php73
yum-config-manager --enable remi-php56

yum -y --enablerepo=remi,remi-php56 install httpd php php-cli mod_fcgid php-common php-devel php-ldap php-mbstring php-mcrypt php-mysqlnd php-sockets
yum -y --enablerepo=remi,remi-php56 install php-pecl-apc php-pear php-pdo php-pgsql php-pecl-mongo php-sqlite php-pcre php-gmp
yum -y --enablerepo=remi,remi-php56 install php-pecl-memcache php-pecl-memcached php-gd php-xml php-snmp php-libxml php-curl php-openssl
 

# 아래를 주석처리하면 PHP-PFM이 동작된다.
vi /etc/httpd/conf.d/php.conf
#    <FilesMatch \.(php|phar)$>
#        SetHandler application/x-httpd-php
#    </FilesMatch>

vi /var/www/cgi-bin/php.fastcgi
#!/bin/bash

PHPRC="/etc/php.ini"
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi


chown apache:apache /var/www/cgi-bin/php.fastcgi
chmod +x /var/www/cgi-bin/php.fastcgi

vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName localhost
    ServerAdmin jsk005@naver.com
    DocumentRoot /var/www/html
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html">
            Options +Indexes +FollowSymLinks +ExecCGI
            AddHandler php-fastcgi .php
            Action php-fastcgi /cgi-bin/php.fastcgi
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>

#Verify PHP-FPM version
/usr/sbin/php-fpm -version

service httpd restart

## 보안설정
chmod 640 /etc/httpd/conf/httpd.conf
chown root:root /etc/httpd/conf/httpd.conf
chmod 640 /etc/php.ini
chown root:root /etc/php.ini


#부팅시 자동 시작 설정
chkconfig httpd on

## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost

DocumentRoot "/var/www/html"
<Directory "/var/www/html">
# 허용하지 않은 디렉토리를 액세스할 수 있으므로 가능하면 FollowSymLinks 를 삭제하는 것이 좋다.
    Options IncludesNoExec
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>


vi /etc/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



블로그 이미지

Link2Me

,
728x90

아래 코드는 소스 설치를 위해서 만들어서 사용했던 스크립트 파일이다.

CentOS 버전 업데이트 방법
yum update

# IP주소 설정정보 확인
ifconfig

# 아이피,서브넷 마스크,(게이트웨이)
cat /etc/sysconfig/network-scripts/ifcfg-eth0

# 컴퓨터이름,(게이트웨이)
cat /etc/sysconfig/network

# DNS를 위한 네임서버를 지정
cat /etc/resolv.conf
cat /etc/hosts

# 네트워크 살았는지 죽었는지 테스트
ping 168.126.63.1

== 설정 작업
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:1A:64:98:AF:12
ONBOOT=yes
NETMASK=255.255.255.64
IPADDR=100.100.67.101
GATEWAY=100.100.67.65
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
/etc/init.d/mysqld stop

=================================
# 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 -e --nodeps jakarta-commons-httpclient-3.0-7jpp.4.el5_10
rpm -e --nodeps php-cli-5.1.6-45.el5_11
rpm -e --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 프로세스번호

=========================================================
yum install -y make gcc g++ gcc-c++ autoconf automake libtool pkgconfig findutils oepnssl openssl-devel
yum install -y openldap-devel pcre-devel libxml2-devel lua-devel curl curl-devel libcurl-devel flex
yum install -y zlib zlib-devel cpp perl bison freetype freetype-devel freetype-utils
yum install -y ncurses-devel libtermcap-devel bzip2-devel
yum install -y libjpeg libjpeg-devel libjpeg-turbo-devel gd gd-devel gdbm-devel php-mbstring libexif-devel
yum install -y libmcrypt libmcrypt-devel libvpx libvpx-devel libXpm libXpm-devel icu libicu libicu-devel
yum install -y t1lib t1lib-devel gmp-devel mhash* gettext gettext-devel libtidy libtidy-devel libxslt libxslt-devel
yum install -y libedit-devel libc-client libc-client-devel pam-devel readline-devel libpng libpng-devel krb5-devel db4-devel expat*
yum install -y xml*
yum install -y gd*
yum install -y pango*
yum install -y php-devel phpize
yum install -y net-snmp net-snmp-utils
=============================================

# 설치할 디렉토리 만들기
cd /usr/local/
mkdir APM

#################### MySQL 소스 설치 #################
# cmake 설치
https://src.fedoraproject.org/lookaside/extras/cmake/ 적정버전을 다운로드 한다.
버전이 너무 높아도 설치가 안된다.
# 1. cmake 압축 풀고 설치 (기존 설치된 것 있으면 지우고 자동 재설치)
cd /usr/local/APM/
rm -rf cmake-2.8.12/
tar -xzf cmake-2.8.9.tar.gz
cd cmake-2.8.9
./bootstrap
make && make install

https://src.fedoraproject.org/lookaside/extras/community-mysql/ 에서 최신버전을 구한다.
# 2. mysql 설치
cd /usr/local/APM/
rm -rf mysql-5.6.40/
tar -xvzf mysql-5.6.40.tar.gz
cd mysql-5.6.40
cmake \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_EXTRA_CHARSETS=all \
 -DENABLED_LOCAL_INFILE=1 \
 -DMYSQL_DATADIR=/usr/local/mysql/data \
 -DMYSQL_USER=mysql \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 -DSYSCONFIGDIR=/etc \
 -DMYSQL_TCP_PORT=3306

make && make install

=== PATH 추가 ===
## /root 디렉토리로 이동
cd
vi .bash_profile
# PATH 경로에 추가
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
저장후
source .bash_profile

cd /usr/local/mysql/
# 시스템에 mysql 그룹 생성
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
# mysql 설치 디렉토리에 대한 mysql 권한 부여

# mysql 설정 파일 복사 (반드시 복사해야 정상적으로 처리됨)
cd support-files 한 다음 ll 해서 파일명 확인 필요
#cp support-files/my-medium.cnf /etc/my.cnf
cd ..
cp support-files/my-default.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 mysql on -- 나중에 추가했음
chkconfig --list | grep mysqld

# MySQL 서버와 프로그램을 연결해 줄 소켓을 링크 파일로 생성한다.
ln -s /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';
flush privileges;
select host, user, password from user;
quit

################################################################
=========== Apache 소스 설치 ===============
# https://apr.apache.org/download.cgi 에서 apr-1.5.2.tar.gz / apr-util-1.5.4.tar.gz 파일 다운로드
3. 아파치 설치
cd /usr/local/APM/
rm -rf apr-1.5.2/
#wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
tar -xvzf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install

cd /usr/local/APM/
rm -rf apr-util-1.5.4/
#wget http://mirror.apache-kr.org/apr/apr-util-1.5.4.tar.gz
tar -xvzf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr/ --with-openssl
make && make install

# pcre(Perl Compatible Regular Expressions)
https://sourceforge.net/projects/pcre/ 에서 최신버전 다운로드 가능하나 버전에 맞는 걸 설치해야 한다.

cd /usr/local/APM/
rm -rf pcre-8.38/
#wget http://downloads.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz
tar -xvzf pcre-8.38.tar.gz
cd pcre-8.38
./configure --prefix=/usr/local/pcre
make && make install


https://httpd.apache.org/download.cgi 에서 최신버전 다운로드 또는 아래 버전 다운로드
https://www.icewalkers.com/linux/software/58450/Apache-Server.html 에서 맞는 버전 다운로드
cd /usr/local/APM/
rm -rf httpd-2.4.25/
#wget http://mirror.apache-kr.org/httpd/httpd-2.4.25.tar.gz
tar -xvzf httpd-2.4.25.tar.gz
cd httpd-2.4.25
./configure \
 --prefix=/usr/local/apache \
 --enable-module=so \
 --enable-mods-shared=most \
 --enable-maintainer-mode \
 --enable-deflate \
 --enable-headers \
 --enable-proxy \
 --enable-proxy-http \
 --enable-proxy-ajp \
 --enable-proxy-balance
 --enable-ssl \
 --enable-rewrite-all \
 --with-apr=/usr/local/apr \
 --with-apr-util=/usr/local/aprutil/ \
 --with-pcre=/usr/local/pcre
make && make install

# Uninstall Apache on a CentOS / Red Hat Enterprise Linux (RHEL)
yum erase httpd httpd-tools apr apr-util

컴파일 실수가 발생하면, 해당 디렉토리에서 바로 make distclean 으로 삭제한다.
그리고 나서 다시 실행한다.

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

# 리부팅시 아파치 프로세스를 자동으로 띄운다
cd /usr/local/APM/
ln -s /init.d/httpd /etc/rc0.d/K90httpd
ln -s /init.d/httpd /etc/rc3.d/S89httpd
ln -s /init.d/httpd /etc/rc5.d/S89httpd

vi /etc/init.d/httpd
둘째줄에서 i 를 눌러 Insert 모드로 변경한 다음에 아래 5줄을 복사하여 붙여넣기하여 삽입하고 저장
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/apache/bin/apachectl
# config: /usr/local/apache/conf/httpd.conf
# pidfile: /usr/local/apache/logs/httpd.pid

cd /usr/local/APM/httpd-2.4.25
chkconfig --add httpd
chkconfig --list httpd
chkconfig --level 2345 httpd on

vi /usr/local/apache/conf/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 IncludesNoExec
    AllowOverride None
    Order deny,allow
    Allow from all
    Require all granted
</Directory>

아파치(Apache) 시작
/etc/init.d/httpd start

http://100.100.67.101/ --> Web browser 에서 It works! 나오면 성공적인 설치되었다는 표시

----It works 화면이 안될때 오류사항 해결 ------
/etc/sysconfig/iptables 에서 80포트 방화벽 해제

#############################
======= PHP 소스 설치 =======
4. PHP 설치
cd /usr/local/APM/
rm -rf libiconv-1.16/
tar -xvzf libiconv-1.16.tar.gz
cd libiconv-1.16
./configure --prefix=/usr/local/iconv
make && make install

cd /usr/local/APM/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install

# https://www.php.net/releases/index.php 에서 php-5.6.40.tar.gz 다운로드

# \ 다음에 공백이 있으면 에러 발생하므로 주의한다.

cd /usr/local/APM/
tar -xvzf php-5.6.40.tar.gz
cd php-5.6.40
./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-mysqli=/usr/local/mysql/bin/mysql_config \
 --with-pdo-mysql=shared,/usr/local/mysql \
 --enable-mysqlnd \
 --with-mysql=mysqlnd \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=mysqlnd \
 --with-iconv=/usr/local/iconv \
 --with-curl=/usr/lib \
 --enable-mod-charset \
 --enable-sigchild \
 --with-libxml-dir \
 --with-openssl \
 --with-mhash \
 --with-mcrypt \
 --with-gd \
 --with-zlib \
 --with-zlib-dir \
 --with-bz2 \
 --with-gdbm \
 --with-freetype-dir=/usr/local/lib \
 --with-jpeg-dir=/usr/local/php \
 --with-png-dir \
 --with-gettext \
 --with-kerberos \
 --with-mcrypt=/usr/local/ \
 --enable-mbstring \
 --with-regex=php \
 --enable-sockets \
 --enable-calendar \
 --enable-dba \
 --enable-exif \
 --enable-ftp \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-wddx \
 --enable-zip

make && make install

//위 명령 실행시 아래와 같은 오류가 난다면 해결책 한 후 위에 명령 다시 실행.
해결책 : # yum -y install curl* 또는 yum -y install curl & yum -y install curl-devel

# php.ini 샘플파일을 환경설정 디렉토리에 복사
cp php.ini-development /usr/local/apache/conf/php.ini

# 아파치와 연동을 위해 추가로 httpd.conf 3군데 수정
vi /usr/local/apache/conf/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/apache/conf/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

5. 퍼미션 설정 및 점검
# 일반계정 유출 등에 의해 파일이 변조될 수 있으므로 확인하여 조치한다.
# Apache and PHP 환경설정 파일 퍼미션 변경
# httpd.conf 파일의 경로 찾기
find / -name httpd.conf
chmod 640 /usr/local/apache/conf/httpd.conf
chown root:root /usr/local/apache/conf/httpd.conf
chmod 640 /usr/local/apache/conf/php.ini
chown root:root /usr/local/apache/conf/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

## httpd restart
/etc/init.d/httpd stop
/etc/init.d/httpd start
/etc/init.d/mysqld start

## 정상적으로 설치되었는지 여부 확인
http://100.100.67.101/info.php

index.php 에 아래 3줄을 추가해서 정상적으로 보이면 APM 설치는 정상적으로 잘 되었다고 보면 된다.
<?php
phpinfo();
?>


블로그 이미지

Link2Me

,
728x90

php.ini 파일을 수정하고 나서 service httpd restart 를 하니까 httpd 데몬이 살아나지 않는다.


Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName


라는 에러 메시지가 나온다.


vi /usr/local/apache/conf/httpd.conf
ServerName localhost

yum 설치가 아닌 소스 설치라서 httpd 경로명이 다르다.

vi 에서 /ServerName 입력하면 해당 라인으로 바로 이동된다.


httpd.conf 에 분명히 ServerName localhost 라고 적어주고 재시작을 했음에도 에러 메시지가 출력된다.


hosts 파일을 한번도 수정해 준 적어 없어서 생기는 에러였다.


# vi /etc/hosts
127.0.0.1   localhost.localdomain localhost
로 수정하고 저장한 다음 재시작을 눌러주니 정상적으로 OK가 출력된다. 또는

127.0.0.1   localhost

로 수정해도 된다.



만약 httpd 데몬이 죽지 않는다는 메시지가 나온다면

# killall -9 httpd

# netstat -anp | grep 80

로 확인해보라.

필요시

# kill -9 pid번호

를 하면 해당 데몬이 죽을 것이다.


블로그 이미지

Link2Me

,
728x90

이번에 HDD 를 교체하면서 PHP 5.6 버전 대신 PHP 7.3 버전을 설치했다.

CentOS 6.10 에 Apache 2.4 를 별도 설치했더니 PHP 와 연동이 안된다. 그래서 삭제하고 다시 설치했다.


# 삭제를 위한 리스트 확인

yum list installed | grep httpd
yum list installed | grep php


#### 삭제
yum -y remove *php*  /*패키지 중간에 php가 들어간 패키지 전체 삭제*/
yum -y remove httpd


# 제거되지 않고 남아 있는 것이 있다면 rpm -e --nodeps (의존성에 개의치 않고 삭제) 를 붙여준다.
rpm -e --nodeps 삭제모듈명



뭐가 필요하고 뭐가 불필요한지 구분하지 않고 이것저것 기본적인 걸 설치했다.


yum install -y make gcc g++ gcc-c++ autoconf automake libtool pkgconfig findutils oepnssl openssl-devel
yum install -y openldap-devel pcre-devel libxml2-devel lua-devel curl curl-devel libcurl-devel flex
yum install -y zlib zlib-devel cpp perl bison freetype freetype-devel freetype-utils
yum install -y ncurses-devel libtermcap-devel bzip2-devel
yum install -y libjpeg libjpeg-devel libjpeg-turbo-devel gd gd-devel gdbm-devel php-mbstring libexif-devel
yum install -y libmcrypt libmcrypt-devel libvpx libvpx-devel libXpm libXpm-devel icu libicu libicu-devel
yum install -y t1lib t1lib-devel gmp-devel mhash* gettext gettext-devel libtidy libtidy-devel libxslt libxslt-devel
yum install -y libedit-devel libc-client libc-client-devel pam-devel readline-devel libpng libpng-devel krb5-devel db4-devel expat*
yum install -y xml*
yum install -y gd*
yum install -y pango*
yum install -y php-devel phpize


################################
##### MariaDB 10.3 버전 설치 #####
################################
# https://tecadmin.net/install-mariadb-10-centos-redhat/ 참조하면 된다.

Step 1: Add MariaDB Yum Repositories
cat /etc/yum.repos.d/MariaDB.repo
vi /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/rhel6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

저장하고 빠져나온다.

Step 2 – Install MariaDB Server
yum -y install MariaDB-server MariaDB-client
service mysql start
service mysql stop
service mysql restart

Step 3 – Secure MariaDB Install
/usr/bin/mysql_secure_installation
root 패스워드 지정한다.

Step 4 – Working with MariaDB
mysql -u root -p
패스워드 입력

chkconfig mysql on


##############################################
##### How to Install PHP 7.4 on CentOS 6 #####
##############################################
## 설치확인
yum list installed | grep httpd
yum list installed | grep php
yum list installed | grep MariaDB


php -m | grep -i mysql
php -v
php -m

## Remi, a third-party repository which offers the latest version of PHP (7.4 / 7.3 / 7.2 / 7.1) for CentOS.
rpm -qa | grep remi-release
rpm -qa | grep epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-6.rpm
yum install -y --enablerepo=remi-php73 httpd php php-cli php-common php-devel php-ldap php-mbstring php-mcrypt php-mysqlnd php-pdo php-pgsql php-sqlite php-process php-snmp php-soap php-libxml php-xml php-pear php-gd
yum install -y --enablerepo=remi-php73 php-dom php-simplexml php-ssh2 php-xmlreader php-curl php-date php-exif php-filter php-ftp php-hash php-iconv php-imagick php-json php-openssl php-pcre php-posix php-sockets php-spl php-tokenizer php-zlib

# httpd.conf, php.ini 의 설정파일 찾기
find / -name httpd.conf
find / -name php.ini

## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost

vi /etc/php.ini
short_open_tag = On

#부팅시 자동 시작 설정
chkconfig httpd on

#서비스 구동 (apache 2.2 구동됨)
service httpd start
service httpd stop
service httpd restart


블로그 이미지

Link2Me

,
728x90
cacti 는 업계 표준 오픈 소스 데이터 로깅 도구인 RRDtool 프론트 엔드용으로 설계된, 오픈 소스 웹 기반 네트워크 모니터링 및 그래프 도구이다.

SNMP를 통해 네트워크 스위치 또는 라우터 인터페이스를 폴링하여 네트워크 트래픽을 감시한다.
각자의 그래프 세트를 가진 복수의 사용자를 처리 할 수 있어서 전용 서버, 가상 개인 서버 및 코로케이션을 공급하는 웹 호스팅 제공 업체가 고객들의 대역폭 통계를 확인하기 위해 사용 가능하다.



Cacti를 설치하기에 앞서 Cacti를 사용하려면 설치하려는 서버의 APM(Apache, php, MySQL)이 설정 되어 있어야 사용할 수 있다. https://link2me.tistory.com/1559 에 yum 으로 설치하는 APM에 대한 스크립트가 있는데, 이 기반위에 설치하는 스크립트를 테스트한 걸 기록해 둔다.

최신버전(Cacti Server v.1.2.8)으로 설치를 해서인지 삽질을 엄청 많이 하면서 스크립트를 수정 보완했다.


RRDTool 최신 버전 및 cacti 최신버전 설치 스크립트 과정이다.


Cacti는 RRD에 특화된 정교한 프론트 엔드 툴이다.


SSH Shell 프로그램에서 접속한 # root mode에서 작성한 것이다.

복사 붙여넣기를 편하기 하기 위해서 편의상 #은 삭제했다. 간혹 #이 붙은 것은 주석처리 표시이다.


yum -y install openldap-devel pcre-devel lua-devel curl curl-devel libcurl-devel flex
yum -y install php-snmp php-gd php-devel
yum -y install gd gd-devel libart_lgpl libart_lgpl-devel zlib zlib-devel
yum -y install libxml2 libxml2-devel libpng libpng-devel
yum -y install freetype freetype-devel
yum -y install pango-devel
yum -y install php-ldap
yum -y install gmp php-gmp
yum -y install net-snmp-*


gmp 가 설치되지 않았다고 나오면,

PHP 7.3 을 yum 설치한 환경이라면

yum install -y --enablerepo=remi-php73 php-gmp

을 해줘야 된다.

기존에 설치된 것은 지워야 한다.

rpm -e --nodeps gmp.x86_64
yum -y erase rh-php70-php-gmp
즉 상황에 맞게 구글링해서 처리해야 하는데, 정보 검색이 잘못될 수 있고, 그러면 고생을 좀 할 수 있다.



# net-snmp 패키지를 설치하였다면 /etc/snmp/snmpd.conf 파일에서 4가지 설정사항을 수정해줘야 한다.
vi /etc/snmp/snmpd.conf
com2sec public default public
group public v1 public
group public v2c public
view all included .1
access public "" any noauth exact all none none

/etc/rc.d/init.d/snmpd stop
/etc/rc.d/init.d/snmpd start
# 또는
service snmpd restart


### RRDTOOL 설치 ####
RRD툴(RRDtool, round-robin database tool)은 시간에 따른 자료를 다룰 수 있는 도구이다. 그림 형식으로 시각화 해주는 기능도 있다.
MRTG를 모방해 일반화 하여 개발한 도구이며 자료 수집에 관한 일부분이 빠져 완전한 대체물은 아니지만, 네트워크 모니터링 분야에서 매우 인기있는 도구이다.
펄, 파이썬, 루비, Tcl, PHP를 지원한다.
라운드 로빈 데이터베이스(Round Robin Database, RRD)는 Tobias Oetiker에 의해 제작되었으며 현재는 전 세계의 수많은 사람들의 참여로 진행되고 있는 오픈 소스 기반의 소프트웨어이다.
Round Robin은 고정된 크기의 데이터와 현재 element에 대한 포인터로 동작하는 기술로 현재 데이터를 읽고 쓸 때 포인터는 다음 element로 이동하게 된다.
시작과 끝이 없는 원과 같이, Round Robin 기술을 사용하면 계속해서 데이터를 읽고 쓰는 작업이 가능하다.
사용하는 중에도 모든 가용 위치에 대한 사용이 가능하며, 자동적으로 이전의 위치에 대한 재사용이 가능하다.
이러한 방법으로 데이터베이스는 크기는 증가하지 않지만 어떠한 인위적인 작업 없이 사용 가능하게 된다.

#### RRDtool 설치: source 설치 방법

## 배포 사이트 : https://oss.oetiker.ch/rrdtool/ 에서 최신버전을 확인한다.
## cacti 에서 권장하는 버전을 설치하는 것이 좋을 것이다.
cd /root/rrdtool
wget https://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.9.tar.gz
tar xvfz rrdtool-1.4.9.tar.gz
cd rrdtool-1.4.9
./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl
make && make install
echo $?
여기서는 컴파일 작업 중 아무런 문제가 발생되지 않아 0 이 나타났다.
만약 0 이 아닌 다른 숫자가 나오면 제대로 설치가 안되었다는 것이더라.


### uninstall 하는 방법
# 처음 설치한 /usr/local/rrdtool 폴더를 찾아서 지운다.
cd /usr/local/
rm -rf rrdtool/
# 소스를 설치한 폴더로 이동하여 make uninstall 한다.
cd /root/rrdtool/rrdtool-1.7.2
./configure
make uninstall


#### cacti 설치하기 : cacti source 설치 방법
## https://www.cacti.net/download_cacti.php 에서 최신 버전을 확인한다.
# The latest stable version is 1.2.8, released 12/08/19.
# Cacti requires MySQL, PHP, RRDTool, net-snmp, and a webserver that supports PHP such as Apache.
# Requirements : RRDTool 1.4+ recommended, MySQL 5.x or greater, PHP 5.1 or greater

cd /usr/local/src
wget http://www.cacti.net/downloads/cacti-1.2.8.tar.gz
tar zxvf cacti-1.2.8.tar.gz
# mv cacti-1.2.8 cacti
cp -Rf cacti-1.2.8 /var/www/html/cacti

# cacti 디렉토리 권한 설정

cd /var/www/html/cacti
#chown cacti.cacti /var/www/html/cacti -R
chmod 755 /var/www/html/cacti


# 데이터 파일과 로그 파일이 저장되는 디렉토리 등 퍼미션을 777로 설정한다.
cd /var/www/html/cacti
chmod 777 rra log scripts
chmod 777 -R cache/
chmod 777 -R resource/
chmod 777 /var/lib/php/session


/usr/local/cacti/include/config.php 를 열어보면 아래처럼 설정되어있다.
$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuser';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';

# 패스워드는 변경하는 것이 보안에 안전하다.

## cacti DB 생성 및 사용자 권한 등록
cd /var/www/html/cacti
mysql -u root -p
비밀번호 입력

show databases;
drop database cacti; -- db delete
create database cacti default character set utf8mb4 COLLATE utf8mb4_unicode_ci;
grant all on cacti.* to cactiuser@localhost identified by 'cactiuser'; -- 패스워드 반드시 변경한 걸 적어주시라.
GRANT ALL PRIVILEGES ON mysql.* TO cactiuser@localhost WITH GRANT OPTION;
flush privileges;


-- cacti 테이블 생성
show databases;
use cacti;
source cacti.sql
-- 육안으로 확인한다. 에러가 발생한 부분이 어떤 것인지 등등...
quit



====================================================
## cacti 테이블 생성
cd /usr/local/src/cacti
mysql cacti < ./cacti.sql -uroot -p
# 에러가 발생하면 이후 테이블 생성이 제대로 안되는 증상 발생하더라.
====================================================


# httpd.conf 찾기
find / -name httpd.conf
vi /etc/httpd/conf/httpd.conf

## php.ini 파일 찾기
find / -name php.ini
vi /etc/php.ini
memory_limit = 800M
max_execution_time = 60
date.timezone = Asia/Seoul
수정하고 저장한다.

#MariaDB 설정
## vi /etc/my.cnf 을 아래와 같이 수정한다.
vi /etc/my.cnf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
default-time-zone='+9:00'
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

max_heap_table_size = 200M
max_allowed_packet = 64M
tmp_table_size = 64M
join_buffer_size = 128M
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_buffer_pool_size = 1073741824
innodb_buffer_pool_instances = 10
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000

저장(:wq) 하고 빠져나온다.

# cacti web 설정시 문제가 되면 SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_%' 로 확인하여 수정해야 한다.
# https://jsonobject.tistory.com/408 에 나온 내용을 참조하면 도움된다.


# MySQL 구동
service mysql start
service mysql stop
service mysql restart

#서비스 구동
service httpd start
service httpd stop
service httpd restart


## Crontab poller.php 등록
# vi /etc/cron.d/cacti 을 아래와 같이 설정한다
vi /etc/cron.d/cacti
*/5 * * * *    cacti   /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1



### Web 으로 설치 ###
# http://서버IP/ cacti 로 접속하여 install버튼을 이용하여 설치를 마무리 한다.

## 기본 접속 세팅

RRDTool Binary Path : /usr/local/rrdtool/bin/rrdtool 로 수정해서 적어준다.


## User Login
admin / admin

## 패스워드 변경하라고 하면 패스워드를 변경한다.

# 반드시 대문자, 숫자, 특수문자를 포함해서 8자리 이상으로 변경해야 한다.



원하는 설정을 100% 충족해야만 다음으로 넘어간다.


service httpd restart 를 해주면 Web - No 가 사라진다.









## cacti 그래프 확인



# 서버에 가서 아래와 같은 명령어를 입력하면 그래프가 생성된다.

# whereis php 로 php 경로를 찾아 맞게 수정한다.
/usr/bin/php /var/www/html/cacti/poller.php –force


참고 : APM 소스 설치한 경우의 php 설치 경로


세부 설정 방법은 http://blog.syszone.co.kr/2551 하단에 있는 이미지를 참조하면 도움될 수 있다.

설치된 버전이 달라서 도움이 안될 수도 있다.

블로그 이미지

Link2Me

,
728x90

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.


에러가 접속되면서 phpMyAdmin 에 접속되지 않는다.


사용환경 : CentOS 6.10

APM 설치 : yum 설치


# chmod 777 /var/lib/php/session

를 하고 Web 브라우저로 phpMyAdmin 사이트를 다시 접속하면 문제가 해결되더라.





블로그 이미지

Link2Me

,

net-snmp 5.4.4 설치

리눅스 2020. 1. 18. 02:08
728x90

SNMP(Simple Network Management Protocol) 은 원래 네트워크 장비를 관리하기 위한 통신 규약이다.
이제는 네트워크 장비뿐만아니라 컴퓨터, 전자장비까지 확장해서 사용하고 있다.

리눅스 시스템에서도 SNMP를 사용할 수 있다.


파일 다운로드

https://sourceforge.net/projects/net-snmp/files/net-snmp/5.4.4/

에서 파일을 다운로드 하여 파일을 서버에 업로드한다.

wget 으로 직접 받으니까 실행 에러가 발생해서 윈도우에서 받은 다음 서버로 업로드했다.


tar -xvzf net-snmp-5.4.4.tar.gz
cd net-snmp-5.4.4
./configure
엔터키 누르고 3번 누른다음 물음에 답을 하고 나서
make
make intall


혹시 잘못 되었으면 make distclean 을 해준다.


# snmpwalk  파일 생성여부 확인
cd /usr/local/bin/
ll



SNMP는 기본적으로 161번 포트를 사용한다.

그 중에 Trap 기능을 사용할 경우에는 162번 포트를 사용한다

방화벽 추가사항

-A INPUT -p udp --dport 161 -j ACCEPT
-A INPUT -p udp --dport 162 -j ACCEPT


snmp 서비스 실행

service snmpd start

동작 여부 확인

cd /usr/local/bin/
snmpwalk -v 2c -c public localhost system



블로그 이미지

Link2Me

,
728x90

CentOS 6 에서 Sendmail 발송하는 걸 처리하기 위해서 구글링하고 테스트한 것을 적어둔다.


#### CentOS Sendmail ####
# 설치 확인
cd /etc/mail/
# 디렉토리 경로가 없으면 sendmail은 설치되지 않는 것이다.
rpm -qa sendmail*

# sendmail 설치
yum install sendmail sendmail-cf

# sendmail 동작 여부 확인
service sendmail status

# 서비스 시작
service sendmail start

#sendmail.mc 수정
ll /etc/mail | grep sendmail
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.original
cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.original
vi /etc/mail/sendmail.mc
# 에디터 상에서 53을 누르고 대문자 G를 누르면 아래와 같이 이동된다.
# 주석인 앞의 dnl 을 제거한다.
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl

# 에디터 상에서 116을 누르고 대문자 G를 누르면 아래와 같이 116 라인으로 이동된다.
# 127.0.0.1 로 되어 있으면 내부에서만 사용한다는 의미이다.
# 여기서 127.0.0.1 을 0.0.0.0 으로 수정한다.
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA’)dnl
# 저장하고 나온다.

# 원본과 수정본의 내용을 비교한다.
diff /etc/mail/sendmail.mc.original /etc/mail/sendmail.mc

# 메크로 처리 언어인 m4를 이용하여 sendmail.cf을 재생성한다.
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
vi /etc/mail/sendmail.cf
# 95 G 를 하여 95 행으로 이동한다.
#Dj$w.Foo.COM
DjXXXXX.co.kr 또는 Dj$ naver.com <== 도메인을 직접 추가해준 것으로 발송 성공은 했으나 naver.com 으로 설정은 안해봐서..
* /etc/access 파일에 sendmail.cf 파일 95줄에 적은 도메인의 릴레이를 허용되어야 하며,
* /etc/mail/local-host-names 파일에도 이곳에 적은 도메인을 입력해 놓아야 한다.
# 보안을 위해 sendmail 버전 정보가 표시되지 않게 수정한다.
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
O SmtpGreetingMessage=$j Sendmail; $b  로 수정한다.

* $j : 도메인 이름, $v : sendmail 버전, $Z : sendmail 버전, $b : 접속시간

# 그냥 메일 수신자에 해당하는 도메인을 한줄에 추가하면 된다.
# 주의할 것은 local-host-names 파일을 수정한 후에는 반드시 sendmail을 restart 해야지 수정 사항이 적용된다.
vi /etc/mail/local-host-names
abc.com


# sendmail 을 재시작한다.
service sendmail restart


# 포트 확인
netstat -anp | grep sendmail | grep LISTEN

# 25번 포트가 올라왔는지 여부 체크
netstat -nlp | grep 25

# 리부팅시 서비스 자동 실행 설정
chkconfig –list sendmail

# 방화벽에 25번 포트 등록 여부 확인
iptables -nL |grep 25

# 방화벽에 25번 포트 추가



블로그 이미지

Link2Me

,
728x90

####  find 명령어로 특정 디렉토리 내 특정 파일들의 특정 문자열 일괄 변경하기
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/변경할문자열/변경된문자열/g' {} \;

# sed는 모든 특수 문자에 '\'을 붙여야 한다.

## 변경할 대상을 찾는다. DB 접속은 $db 로 처리하는 경우다.
mysql_num_rows
mysql_fetch_row
mysql_fetch_assoc
mysql_fetch_array
mysql_query(
mysql_error(
mysql_close(
mysql_insert_id(

find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_num_rows/mysqli_num_rows/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_fetch_row/mysqli_fetch_row/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_fetch_assoc/mysqli_fetch_assoc/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_fetch_array/mysqli_fetch_array/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_query\(/mysqli_query\(\$db,/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_error\(/mysqli_error\(\$db/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_close\(/mysqli_close\(\$db/g' {} \;
find /var/www/html/center -type f -name '*' -exec perl -pi -e 's/mysql_insert_id\(/mysqli_insert_id\(\$db/g' {} \;



블로그 이미지

Link2Me

,
728x90

소스설치했던 MySQL 이 자꾸 죽는 현상이 발생해서 테스트 서버에 CentOS 6.6 을 설치하고 나서 yum -y update 를 하고 reboot 을 해서 CentOS 6.10 으로 업그레이드를 했다.


이 과정에서 sshd Port 를 22번에서 1922 로 변경했었는데 다시 22번으로 초기화되어 있더라.


CentOS 6.X 에서 yum 으로 PHP 5.6.40 버전과 MariaDB 10.3 버전을 설치하는 법을 몰라서 삽질을 엄청한 후에야 겨우 성공했다.

최근 자료는 CentOS 7.X 에 PHP 7.X 기반으로 설치하는 방법에 대해 나온다.

기존 소스를 최대한 손대지 않고 할 수 있는 방법을 찾아보니 자료를 좀 찾기가 쉽지 않았다.


순서는 이렇게 하면 된다.

1. 먼저 MariaDB 10.3 을 yum 설치한다.

2. PHP 5.6 버전을 yum 설치하면서 httpd 를 같이 설치한다.

   Apache 2.4 버전을 별도 설치하고 PHP 5.6을 설치하니까 에러가 발생해서 지우고 Apache 2.2 로 다시 설치했다.



가장 먼저 확인할 사항

##=== 설치 확인

yum list installed | grep httpd

yum list installed | grep php

yum list installed | grep mysql


기존에 설치된 yum 버전이 있다면 모두 찾아서 삭제한다.
yum remove -y 해당파일명
을 하면 삭제된다.

epel 저장소는 Fedora Project 에서 제공되는 저장소로 각종 패키지의 최신 버전을 제공하는 community 기반의 저장소이고, webtatic 저장소는 업데이트된 웹 관련 패키지들이 포함된 CentOS / RHEL 저장소다.

cd /etc/yum.repos.d/


붉은색 안에 파일은 다음과 같이 해서 추가된 파일이다.


CentOS 7에서는 기본 DB가 MySQL에서 MariaDB로 변경되어 설치가 쉬운 반면에, CentOS6에서는 레포지터리부터 추가해서 따로 설치를 해줘야한다.


1단계 : Add MariaDB Yum Repositories

cd /etc/yum.repos.d/

vi /etc/yum.repos.d/mariadb.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.3/rhel6-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1


복사하여 붙여넣기하고 저장하고 빠져나온다.


2단계 – Install MariaDB Server

yum -y install MariaDB-server MariaDB-client


=== MariaDB 구동

service mysql start

service mysql stop

service mysql restart


3단계 – Secure MariaDB Install

/usr/bin/mysql_secure_installation

root 패스워드 지정한다.

이 부분에 대한 자세한 사항은 https://tecadmin.net/install-mariadb-10-centos-redhat/ 의 Step3 부분을 참조하라.


4단계 – Working with MariaDB

mysql -u root -p

지정한 root 패스워드를 입력한다.

===부팅시 자동 시작 설정

chkconfig mysql on


##############################################

##### How to Install PHP 5.6 on CentOS 6 #####

##############################################

Install Remi repository

이 부분이 게시글마다 약간씩 다르며, 버전업이 되어 나오는 거 같다. 아래 코드 복사하여 붙여넣기 한다.

rpm -qa | grep remi-release
rpm -qa | grep epel-release
yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum list remi-release

Install PHP 5.6.X modules : 아래 코드 복사하여 붙여넣기 한다.
yum -y --enablerepo=remi,remi-php56 install httpd php php-common php-devel php-ldap php-mbstring php-mcrypt php-mysqlnd php-sockets
yum -y --enablerepo=remi,remi-php56 install php-pecl-apc php-cli php-pear php-pdo php-pgsql php-pecl-mongo php-sqlite php-pcre php-gmp
yum -y --enablerepo=remi,remi-php56 install php-pecl-memcache php-pecl-memcached php-gd php-xml php-snmp php-libxml php-curl php-openssl

를 하고 나면 기본 설치가 모두 완료된다.

=== httpd.conf, php.ini 의 설정파일 찾기
find / -name httpd.conf
find / -name php.ini

=== httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost  추가
User nobody
Group nobody

DocumentRoot "/var/www/html"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
# 허용하지 않은 디렉토리를 액세스할 수 있으므로 가능하면 FollowSymLinks 를 삭제하는 것이 좋다.
    Options IncludesNoExec
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

=== php.ini 파일 수정
vi /etc/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

# 저장하고 나온다.

=== 부팅시 자동 시작 설정
chkconfig httpd on

=== 서비스 구동
service httpd start
service httpd stop
service httpd restart

=== 부팅시 자동시작 설정
chkconfig httpd on

# vi /etc/hosts
127.0.0.1   localhost.localdomain localhost

## 보안설정
chmod 640 /etc/httpd/conf/httpd.conf
chown root:root /etc/httpd/conf/httpd.conf
chmod 640 /etc/php.ini
chown root:root /etc/php.ini

이제 잘 설치되었는지 여부를 확인하기 위한 과정이다.
vi /var/www/html/info.php
<?php
phpinfo();
?>
저장하고 나온다.

## 아래와 같은 에러메시지가 나올 때 조치 방안
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
# 실행중인 프로세스 강제 종료
ps ax | grep httpd | awk '{print $1}' | xargs kill
killall -9 httpd
netstat -ltnp | grep ':80'
service httpd start

방화벽에서 포트 오픈에 대한 자료는 여기서는 생략한다.

http://ip_address/info.php 를 실행한다.


와 같이 나오면 정상적으로 설치된 거다.


소스 설치와 달리 MySQL/MariaDB 와의 연결은 알아서 해주나보다. phpinfo()에서는 MySQL 부분이 버전이 낮게 보이는데 사용해보니 DB와의 연결은 잘 된다.

MariaDB 는 MySQL 명령어와 동일한 명령어를 사용하므로 사용방법은 MySQL 사용한다고 보면 된다. 

PHP 파일의 소스코드도 수정없이 동작된다.


Apache 환경설정 방법

- http://link2me.tistory.com/426 참조하면 도움된다.

- http://link2me.tistory.com/999 날짜별로 로그기록 남기기


PHP.ini 설정 게시글

http://link2me.tistory.com/967

http://link2me.tistory.com/986 PHP 보안설정



출처: http://link2me.tistory.com/797 [소소한 일상 및 업무TIP 다루기]
Apache 환경설정 방법
- http://link2me.tistory.com/426 참조하면 도움된다.
- http://link2me.tistory.com/999 날짜별로 로그기록 남기기


PHP.ini 설정 게시글
http://link2me.tistory.com/986 PHP 보안설정

참고한 사이트



블로그 이미지

Link2Me

,
728x90

Node.js 와 MySQL 을 연동 테스트하려고 설치를 하는 도중에 mysql 에러가 발생한 거 같다.


Not connected :Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid).


에러 메시지가 나온다.

지난번에는 그냥 APM 을 다시 설치했는데 이건 아닌거 같아서 구글링을 해보니 여러가지 해결책이 나오는데 대부분 해결이 안된다.


운영환경 : CentOS 6.6, MySQL 5.6.30


# cd /usr/local/mysql/data 디렉토리로 이동해서 확인해보니 ....

localhost.pid 파일이 정상동작할 때는 있다. 에러메시지가 나올 때는 이 파일이 없더라.




ps -aux | grep mysql 를 한다음 kill -9 PID 를 하라고 나오는데 mysql 프로세스가 동작되는게 없어서 안된다.


https://manage.accuwebhosting.com/knowledgebase/2342/How-to-Fix-MySQL-Error-The-server-quit-without-updating-PID-file.html


나온 7번째를 해보고 나서 정상적으로 MySQL을 Start 할 수 있었다.


Move the log file named ib_logfile in /var/lib/mysql and restart MySQL service.
cd /var/lib/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
mv /var/lib/mysql/ib_logfile* /some/tmp/folder/



ib_logfile0 ib_logfile0, ib_logfile0 ib_logfile1 두개의 파일을 다른 폴더로 이동시켰다.

이 파일은 /usr/local/mysql/data 에도 존재한다. 여기에 있는 것은 그대로 두었다.


정상동작시키고 나서 해당 파일이 자동 생성되는지 확인해봤는데 생성된 것은 없다.


정상동작하는 다른 서버에서 에러 발생을 대비하여 확인해보니....

ib_logfile0 과 ib_logfile1 은 /usr/local/mysql/data 에만 존재한다.

cd /var/lib/mysql 폴더는 아예 없다. 에러가 발생하면서 여기에 복사가 된 것인지 여부는 아직 잘 모르겠다.



openfire 메신저 파일을 설치하면서 또 한번 동일한 증상이 발생했다.

다른 폴더(/usr/local/mysql/data)에 있던 ib_logfile0, ib_logfile1 파일을 다른 폴더로 이동시키고 나서 MySQL을 재기동 시켰더니 다시 생성되더라. 그러면서 정상 동작된다.


그 이후의 증상.....(2018.11.4일 수정)

에러가 너무 자주 발생한다.

아무래도 APM을 재설치를 해줘야 할 거 같다.

블로그 이미지

Link2Me

,
728x90

Apache 2.4 이상에서 Port-Based Virtual Host 설정하는 방법이다.


httpd.conf 파일 수정사항

Listen 80
Listen 8080


# Apache 2.4 이상에서는 NameVirutal Host 설정 불필요


DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


# Virtual hosts
# 비활성화되어 있는 걸 주석제거하고 활성화 처리
Include conf/extra/httpd-vhosts.conf

# Virtual Host 를 추가하면 아래 경로를 추가하고 Virtual Host 파일에서도 추가해야 한다.
<Directory "/home/httpd/abc/www/htdocs">
     AllowOverride None
     Require all granted
</Directory>


Virutal Host 파일 수정사항

<VirtualHost *:80>
    DocumentRoot "/usr/local/apache/htdocs"
    ServerName abc.com
    ServerAlias www.abc.com
</VirtualHost>

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


블로그 이미지

Link2Me

,
728x90

리눅스 서버 시간이 자꾸 늦어지는 현상이 있어서 매일 동기화하는 법을 검색하고 적어둔다.


== 터미널 창에서 동기화하기
# date
# rdate -s zero.bora.net


Temporary failure in name resolution 에러 메시지가 나온다.


# chmod o+r /etc/resolv.conf
vi /etc/resolv.conf
nameserver 168.126.63.1
nameserver 168.126.63.2


네임서버를 등록해준다.


cat /etc/sysconfig/network-scripts/ifcfg-eth0

로 네트워크 설정 정보를 확인했더니 DNS 설정이 빠져있더라.

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DNS1=168.126.63.1
DNS2=168.126.63.2
를 추가해주고 나서 네트워크를 재시작했다.


# /etc/rc.d/init.d/network restart


이제는 안먹던 rdate -s zero.bora.net 가 잘 먹는다.


Crontab 에 설정하는 방법


== rdate 설치
# yum -y install rdate

== crontab을 설정한다.
# cat /etc/crontab
# vi /etc/crontab

아래 2줄 추가(시간은 매일 5시에 실행)

# date time sync
0 5 * * * root /usr/bin/rdate -s zero.bora.net && /sbin/hwclock -w

#시스템이 재부팅될 경우 시간을 동기화하기 위해 시작스크립트에 등록해둔다.
vi /etc/rc.d/rc.local
/usr/bin/rdate -s zero.bora.net
/sbin/hwclock -w

블로그 이미지

Link2Me

,
728x90

IPTIME 공유기가 좀 저렴한 것이 DDNS 기능이 제대로 동작이 안되어 7만원대 공유기를 사서 이용중이다.

DDNS 란 유동 IP주소를 마치 고정 IP주소처럼 동작시켜주는 기능이다.

IPTIME 공유기는 단순 DDNS가 아니라 개인 도메인을 할당받아 사용이 가능하여 매우 편리하다.

http://aaa.iptime.org

여기서 aaa 가 개인이 설정할 수 있는 도메인이라고 보면 된다.

 

 

 

포트포워딩(port forwarding) 기능을 설정하고 사용하면 외부에서 내부에 있는 리눅스 서버에 자동으로 접속이 가능하다.

아래 그림에서 내부 IP 는 CentOS 7 이 설치된 IP주소이다.

만약 내가 설정한 CentOS 7 IP 주소가 192.168.0.20 이면 내부 IP 주소를 맞게 적어줘야 한다.

 

리눅스 시스템에서 방화벽 설정으로 접속을 제한하는 기능은 동작하고 있다.

설정방법(CentOS 6) : http://link2me.tistory.com/438 참조

 

외부에서 WinSCP 툴을 이용해서 IPTIME 공유기 내부에 있는 리눅스 서버 접속이 잘 된다.

80 포트를 통한 Web 서비스도 잘 된다.

 

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

 

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

CentOS6 Apache 2.4 Virtual Host 설정  (0) 2018.07.14
리눅스 시간 동기화  (0) 2018.04.30
CentOS6 SSH 포트 변경  (0) 2017.08.18
phpize 실행시 에러  (0) 2017.06.08
PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
블로그 이미지

Link2Me

,
728x90

CentOS SSH 접속포트를 변경하는 방법을 적어둔다.



#Port 22 라고 주석처리되어 있다는 건 기본으로 22번 포트를 사용하고 있다는 의미다.

주석 제거하고 변경하고 싶은 포트를 적어준다.

수정하고 :wq 로 저장하고 빠져나온다.


SSH 데몬을 재구동한다.


# service sshd restart

아래 그림에서 보면 둘 중 어느것을 하더라도 동일하다는 걸 알 수 있다.



포트를 변경하면 반드시 방화벽에서 해당 포트를 등록해줘야만 접속이 가능하다.


-A INPUT -p tcp -m state --state NEW -m tcp --dport 1922 -j ACCEPT


방화벽 변경은 아래 순서로 해준다.

vi /etc/sysconfig/iptables
// 방화벽 재시작
/etc/init.d/iptables restart
// 변경한 정보 저장(재시작을 하고 나서 저장해야 적용된 정보가 저장됨)
service iptables save

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

리눅스 시간 동기화  (0) 2018.04.30
iptime 공유기 포트포워딩  (0) 2018.04.19
phpize 실행시 에러  (0) 2017.06.08
PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
php sockets 동적 모듈 추가 (phpize)  (0) 2017.06.08
블로그 이미지

Link2Me

,
728x90

phpize 실행시 에러가 발생하면서 동작이 제대로 안되는 현상이 있는 사이트가 있다.


Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.


이런 메시지가 나오면서 phpize 가 실행이 되지 않는다.


검색해보니 http://panic910.tistory.com/52 에 해결방법이 나온다.

따라서 해보니 제대로 동작되고 동적 모듈이 추가된다.


# phpize 실행시 에러가 발생할 때

cd /usr/local/APM/
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz

cd /usr/local/APM/
tar -zvxf m4-1.4.9.tar.gz
cd /usr/local/APM/m4-1.4.9/
./configure && make && make install

cd /usr/local/APM/
tar -zvxf autoconf-2.62.tar.gz
cd /usr/local/APM/autoconf-2.62
./configure && make && make install


이렇게 해결되기도 하지만, 모듈이 제대로 추가되었다고 나오는데도 불구하고 모듈이 추가되지 않는 곳도 있다.


[root@localhost /]# /usr/local/php/bin/phpize
Cannot find config.m4.
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module

해결방법

확장할 모듈까지 이동하여 phpize를 실행해야 함.

cd /usr/local/APM/php-5.6.30/ext/snmp
phpize


블로그 이미지

Link2Me

,
728x90

phpMyAdmin을 접속하면 아래와 같은 메시지가 나오는 사이트가 있다.

이 메시지가 나오지 않도록 해보자.


그리고

PHP언어를 통해 AES 암호화를 하려면 mcrypt_encrypt 함수를 이용해야 한다.
이 함수를 사용하려면 php-mcrypt 모듈 확장을 설치해야 한다.

가장 먼저 할 일은 <?php phpinfo();?> 로 PHP 버전을 확인한다.

그리고 설치된 사항을 확인한다.

PHP 버전을 확인했으면 리눅스 서버에 소스 컴파일했던 PHP 파일이 있는지 찾아본다.

만약 없다면 해당 버전을 받아 압축을 푼다.


=== 참고용 ====

yum install php-mcrypt 를 하면 버전이 낮은 버전이 설치된다.
# php-mcrypt 버전
rpm -qa | grep mcrypt
# 설치한 php-mcrypt 의 경로
rpm -ql php-mcrypt
# 설치된 경로가 /usr/lib/php/modules/mcrypt.so 라고 보여준다.
# 모듈 제거하기
rpm -qa | grep mcrypt
# 버전을 확인한 다음 remove 로 지운다.
yum remove php-mcrypt-5.1.6-15.el5.centos.1
yum remove libmcrypt-2.5.8-4.el5.centos


그래서 설치했던 걸 모두 삭제처리했다.


libmcrypt-2.5.8.tar.gz


먼저 위 파일을 다운로드 받아서 리눅스 서버에 올린다. (PHP 버전과 호환이 안되면 호환되는 버전을 찾아야 한다.)

cd /usr/local/APM/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install

그 다음에 설치한 버전과 동일한 버전의 PHP 소스 파일을 다운로드 받아서 압축을 해제한다.


tar -xvzf php-5.4.6.tar.gz
cd /usr/local/APM/php-5.4.6/ext/mcrypt
# phpize 파일을 실행한다.
/usr/local/php/bin/phpize

# configure 및 compile
./configure --with-php-config=/usr/local/php/bin/php-config --with-mcrypt=/usr/local/
make
# make 명령어를 실행후 ./modules/확장모듈명.so 파일이 생성되었는지 확인한다.

# 확장모듈.so 파일을 php.ini 파일의 extension_dir=확장모듈 경로에 복사한다.
# 먼저 php.ini 에서 .so 로 설치된 모듈을 찾는다.
# find / -name 'openssl.so'
# 찾은 경로로 복사한다.

cp -arp modules/mcrypt.so /usr/local/php/lib/php/extensions/no-debug-zts-20100525
cd /usr/local/php/lib/php/extensions/no-debug-zts-20100525

# php.ini 파일을 열어 extension=mcrypt.so 파일을 추가한다.
# 아파치(Apache) 재시작한다.
/usr/local/apache/bin/apachectl restart

파일이 설치되었는지 확인한다.
확인방법은
/usr/local/php/bin/php -m
또는 phpinfo()함수로 확인한다.



모듈이 추가된 것을 확인할 수 있다.

그리고 phpMyAdmin 접속시 메시지 나오는 것이 없어진 것을 확인할 수 있다.

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

CentOS6 SSH 포트 변경  (0) 2017.08.18
phpize 실행시 에러  (0) 2017.06.08
php sockets 동적 모듈 추가 (phpize)  (0) 2017.06.08
윈도우기반 리눅스 VMware 네트워크 설정  (0) 2017.05.28
리눅스 시스템 종료  (0) 2017.05.19
블로그 이미지

Link2Me

,
728x90

안드로이드 socket 통신에 대한 강의를 들으면서 소켓통신에 관한 사항을 알고 싶어졌다.

자바 서버 소스 파일을 다루는 방법은 아직 모르다보니 PHP 와 연동하는 방법을 찾아봤다.

PHP 서버에서 socket 설치 방법을 알아보니 현재 설치된 APM(Apache + PHP + MySQL)에 sockets.so 모듈이 설치 안되어 있다는 걸 확인했다.



가장 먼저 해야 할 일은 서버에 설치된 PHP버전과 동일한 php-5.4.6.tar.gz 파일을 인터넷에서 찾아서 받아야 한다.

받은 파일을 리눅스 서버에 올리고 압축을 해제한다.


cd /usr/local/APM/
tar -xvzf php-5.4.6.tar.gz


소스파일에서 설치할 확장모듈과 동일한 이름의 경로로 이동한다.
cd /usr/local/APM/php-5.4.6/ext/sockets


phpize 파일을 실행한다.

만약 에러가 발생하면 config.m4 파일이 없어서 발생하는 에러이므로 폴더를 확인하고 config.m4 파일로 복사한다.

/usr/local/php/bin/phpize


configure 및 compile 한다.
./configure --with-php-config=/usr/local/php/bin/php-config --enable-sockets
make


make 명령어를 실행후 ./modules/확장모듈명.so 파일이 생성되었는지 확인한다.


확장모듈.so 파일을 php.ini 파일의 extension_dir=확장모듈 경로에 복사한다.

확장모듈이 설치된 경로를 찾기 위해서 php.ini 에서 .so 로 설치된 모듈을 찾는다.


find / -name 'sockets.so'


찾은 경로로 복사한다. (모듈 설치 경로는 다를 수 있다)

cd /usr/local/APM/php-5.4.6/ext/sockets/modules
cp -arp sockets.so /usr/local/php/lib/php/extensions/
sockets.so

cd /usr/local/php/lib/php/extensions/

ll

로 sockets.so 파일이 복사되었는지 확인한다.


php.ini 파일을 열어 extension=확장모듈.so 파일을 추가한다.

extension=/usr/local/php/lib/php/extensions/sockets.so


아파치(Apache) 재시작한다.
/usr/local/apache/bin/apachectl restart

파일이 설치되었는지 확인한다.
확인방법은
/usr/local/php/bin/php -m
또는 phpinfo()함수로 확인한다.


여기서 주의할 점은 phpinfo()로 확인하면 아래 화면에는 변동된 내역이 없다.

최초 설치한 정보만 보인다.


하지만 아래로 내려보면 모듈이 추가된 것을 확인할 수 있다.


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

phpize 실행시 에러  (0) 2017.06.08
PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
윈도우기반 리눅스 VMware 네트워크 설정  (0) 2017.05.28
리눅스 시스템 종료  (0) 2017.05.19
sftp 파일 전송 shell script  (0) 2017.03.09
블로그 이미지

Link2Me

,
728x90

윈도우 운영체제에 리눅스를 설치하기 위해서 VMware 를 이용해서 CentOS 6.6 을 설치했다.


리눅스 설치가 되고 WinSCP, SSH 접속 모두 잘된다.


네트워크 환경설정하는 방법을 알아보고 적어둔다.




vi /etc/sysconfig/network-scripts/ifcfg-eth0 로 접속해서 위 정보를 토대로 수정한다.


vi /etc/resolv.conf 로 nameserver 를 추가한다.



/etc/init.d/network restart 로 네트워크를 재시작한다.


ping 168.126.63.1 로 테스트하면 성공적으로 패킷이 온다.


하지만 IPTime 공유기 외부에서 접속하는 건 성공하지 못했다.


http://blog.naver.com/bongss2/220830879059 참고해서 한번 해봐야겠다.



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

PHP mcrypt 동적 모듈 추가  (0) 2017.06.08
php sockets 동적 모듈 추가 (phpize)  (0) 2017.06.08
리눅스 시스템 종료  (0) 2017.05.19
sftp 파일 전송 shell script  (0) 2017.03.09
리눅스 파일/디렉토리 구조  (0) 2017.03.09
블로그 이미지

Link2Me

,
728x90
# shutdown -H now

will halt the system - meaning the system will shutdown and at the end stop at a screen with the last message beeing something like "System halted".

# shutdown -P now

will power off the system - meaning the system will shutdown and at the end power off (only possible if the system actually supports it but most systems I know have for quite a while now)

# shutdown -h now

will only halt or power off the system depending on what's the default on that system (can sometimes be changed in BIOS)

블로그 이미지

Link2Me

,