본문 바로가기
프로그램개발/Linux(Apache.vim)

CentOS 6.8에서 Apache 2.4,PHP 5.6,MySQL 5.6 컴파일

by 크레도스 2018. 3. 19.

요즘은  거의 CentOS를 주로 사용해서 필요한 거 설치할때 yum을 이용해서 rpm파일들

설치했는데 소스 설치는 실로 오랜만에 해본다~

아래부터 참고

CentOS에 APM(Apache,PHP,MySQL)을 설치하는데, yum을 통한 자동설치가 아닌 Source 설치로 진행한다. (아래 스크립트 중 yum 명령어는 Obuntu OS에서는 해당되지 않으므로, apt-get 명령어를 사용해야한다)

yum으로 설치할 경우, 설치가 빠르고 편리하다는 이점이 있지만 설치버전이 최신버전이 아닌 안정화된 버전(즉, 상대적으로 낮은 버전)으로 설치되는 단점 아닌 단점이 있다. 각각 장,단점이 있으므로 환경이나 여건에 맞게 진행하면 된다.

참고로 아래 설치하는 중간에 종종 vi에디터로 파일을 수정하는 경우가 있는데, 수정할 땐 i키를 눌러 insert 상태로 만들어 수정하고 저장할 땐 ESC키를 누른 다음 :wq를 입력하면 저장된다.


[설치환경 / 2016.11.24기준]

1. OS : CentOS 6.8 (x64)
2. Apache : httpd-2.4.23
3. MySQL : mysql-5.6.30
4. PHP : php-5.6.25
5. VirtualBox에서 진행


[Apache Source 설치]

1. 기존에 설치된 Apache 웹서버 제거

yum remove -y httpd httpd-*




2. 빌드 환경 설정

yum install -y make gcc g++ gcc-c++ autoconf automake libtool pkgconfig findutils oepnssl openssl-devel openldap-devel pcre-devel libxml2-devel lua-devel curl curl-devel libcurl-devel flex




3. 관련 모듈 다운로드 및 설치

(1) apr 다운로드

cd /usr/local/src
wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
tar xvfz apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make
make install


(2) apr-util 다운로드

cd /usr/local/src
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 --with-apr=/usr/local/apr/
make
make install


(3) pcre 다운로드

cd /usr/local/src
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
tar xvzf pcre-8.37.tar.gz
cd pcre-8.37
./configure --prefix=/usr/local/pcre
make
make install




4. Apache 웹서버 다운로드 및 설치

cd /usr/local/src
wget http://mirror.apache-kr.org/httpd/httpd-2.4.23.tar.gz
tar xvfz httpd-2.4.23.tar.gz
mv apr-1.5.2 httpd-2.4.23/srclib/apr
mv apr-util-1.5.4 httpd-2.4.23/srclib/apr-util
cd httpd-2.4.23
./configure --enable-module=so --enable-mods-shared=most --enable-maintainer-mode --enable-deflate --enable-headers --enable-rewrite --enable-ssl --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balance --with-pcre=/usr/local/pcre --prefix=/usr/local/apache
make
make install




5. Apahce 웹서버 서비스 등록 및 실행

(1) httpd 서비스 파일 만들기

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

 


vi에디터로 httpd 파일이 열리면 아래 #으로 처리된 내용을 그대로 추가하고 저장한다.
 
#!/bin/sh
# 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



(2) httpd.conf 파일 수정

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


vi에디터로 httpd.conf 파일이 열리면 ServerName 부분을 찾아 주석을 제거하고 사용할 서버명을 입력한다. (여기서는 localhost로 한다)

ServerName localhost
 




 이어서 아래 내용을 주석처리하고 저장한다. (#추가)
 
#LoadModule unique_id_module modules/mod_unique_id.so




(3) httpd 서비스 시작

service httpd start
 
별다른 오류가 발생하지 않았다면, 서비스가 정상적으로 시작된 것이다.


(4) httpd 서비스 실행 확인

ps -ef | grep httpd
 

(5) 리눅스 시작 시, httpd 서비스 자동실행

chkconfig httpd on
 

(6) httpd 서비스가 자동시작되도록 설정되었는지 확인

chkconfig | grep httpd



6. 방화벽 설정

※ CentOS 7부터는 방화벽으로 iptables를 사용하지 않고, firewalld를 사용한다. (/etc/sysconfig/iptables에 파일이 없음)
따라서, 포트를 열여줘야 한다면 조금 다른 방법으로 진행해야 한다.


아파치 웹서버를 외부에서 웹브라우저로 접속하기 위해서는 TCP 80 포트를 방화벽에서 열어줘야만 한다.

vi /etc/sysconfig/iptables
 


 vi에디터로 iptables 파일이 열리면 아래 #부분의 내용을 추가하고 저장한다. (실제 삽입 시, #을 포함하면 안됨)
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
 





 저장까지 완료되었다면, 방화벽 설정 재시작
 
service iptables restart



여기까지 설정했다면 Apache 웹서버 설치가 완료되었다.

이제 브라우저를 실행해 주소창에 localhost를 입력해 보면 It Works! 라는 텍스트가 표시될 것이다.



Apache 웹서버 설치 완료 후 MySQL을 이어서 설치한다.
아직 Apache를 설치하지 않았다면 아래 포스트를 먼저 진행하고 오자.


[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 1 http://jguru-study.tistory.com/29


[설치환경 / 2016.11.24기준]

1. OS : CentOS 6.8 (x64)
2. Apache : httpd-2.4.23
3. MySQL : mysql-5.6.30
4. PHP : php-5.6.25
5. VirtualBox에서 진행


[MySQL Source 설치]

1. 기존에 설치된 MySQL과 cmake 삭제

yum remove -y mysql* cmake

2. 빌드 환경 설정

yum install -y zlib zlib-devel cpp perl bison freetype freetype-devel freetype-utils ncurses-devel libtermcap-devel bzip2-devel

3. cmake 다운로드 및 설치

MySQL 5.5부터는 ./configure가 아닌 cmake를 통해 컴파일을 진행해야 한다.

cd /usr/local/src
wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
tar xvfz cmake-3.5.2.tar.gz
cd cmake-3.5.2
./bootstrap
make && make install

4. MySQL 그룹 및 계정 만들기

groupadd mysql
useradd -g mysql mysql

5. MySQL 다운로드

cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz
tar xvfz mysql-5.6.30.tar.gz
cd mysql-5.6.30

6. MySQL cmake 컴파일

/usr/local/bin/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 \
-DMYSQL_TCP_PORT=3306
make
make install

위 컴파일 내용을 간단히 설명하자면 다음과 같다.

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ //mysql 설치할 디렉토리
-DMYSQL_DATADIR=/usr/local/mysql/data \ //db설치(data폴더)할 디렉토리
-DDEFAULT_CHARSET=utf8 \ //mysql 서버의 문자셋
-DDEFAULT_COLLATION=utf8_general_ci \ //db의 문자셋
-DWITH_EXTRA_CHARSETS=all \ //추가로 지원할 문자셋
-DENABLED_LOCAL_INFILE=1 \ //local_infile변수 사용가능여부, 텍스트 파일의 데이터를 특정 테이블에 저장하는 변수
-DMYSQL_USER=mysql \ //mysql유저를 지정
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ //스토리지 엔진, default innodb
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ //스토리지 엔진
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ //스토리지 엔진
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ //스토리지 엔진
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ //mysql 소켓 디렉토리
-DMYSQL_TCP_PORT=3306 //mysql 포트번호, default가 3306임


7. mysql그룹/계정 권한주기

chown -R (계정명):(그룹명) /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data

8. DB 생성

cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

9. MySQL 설정파일 및 데몬 복사 / base, datadir지정

cp support-files/my-default.cnf /etc/my.cnf
#(메모리 용량에 따라 my- 뒤에 이름이 다를 수 있음)
#(이미 존재하는 파일이라면 덮어씌우면 됨)
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
vi /etc/init.d/mysqld 
#입력 후 아래 내용 추가
#basedir=/usr/local/mysql
#datadir=/usr/local/mysql/data



10. 환경변수 등록 및 MySQL 데몬 실행

cd ~
vi .bash_profile
#PATH부분에 아래 내용을 추가한다
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source .bash_profile
service mysqld start


service mysqld start로 msyql의 데몬을 실행하면 mysql만 입력해도 root계정을 통해 mysql에 접근이 가능하다.


11. MySQL root 계정 비밀번호 변경

# mysqladmin -u root password 암호
mysqladmin -u root password root123
암호 설정 후 root 유저로 접속 테스트
mysql -u root -p
Enter password : 


root 계정 비밀번호를 설정하면, mysql 입력만 하면 오류가 발생한다.
따라서, mysql -u root -p로 비밀번호까지 입력해야 접근할 수 있다.


12. 리눅스 시작시 mysql 구동되도록 설정

chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqld


여기까지 했다면 Apache 웹서버에 이어 MySQL까지 설치가 완료되었다.
이제 PHP만 남았다.

ps. MySQL 5.7부터는 cmake에 이어 boost를 설치해야 컴파일이 가능하다. 이 부분에 대해서는 차후 별도의 포스트를 통해 따로 다룰 예정이다.


이제 마지막.. PHP 설치를 진행하자.
혹 아직 Apache나 MySQL을 설치하지 않았다면 아래 포스트를 먼저 진행하고 오자.

[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 1 http://jguru-study.tistory.com/29
[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 2 http://jguru-study.tistory.com/30


1. 빌드 환경 설정

yum install -y libjpeg libjpeg-devel libjpeg-turbo-devel gd gd-devel gdbm-devel php-mbstring libexif-devel libmcrypt libmcrypt-devel libvpx libvpx-devel libXpm libXpm-devel icu libicu libicu-devel t1lib t1lib-devel gmp-devel mhash* gettext gettext-devel libtidy libtidy-devel libxslt libxslt-devel libedit-devel libc-client libc-client-devel pam-devel readline-devel libpng libpng-devel krb5-devel db4-devel expat*

1-1. libmcrypt & libmcrypt-devel 패키지 설치

CentOS에서는 위 패키지가 yum에 포함되어있지 않아 직접 설치해야 한다. Ubuntu는 확인하지 못했는데 apt-get으로 된다면 그렇게 설치하면 된다.

cd /usr/local/src
wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-2.5.8-9.puias6.x86_64.rpm
wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm
rpm -ivh libmcrypt-2.5.8-9.puias6.x86_64.rpm
rpm -ivh libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm

2. MySQL 라이브러리 참조

cd /usr/local/mysql
ln -s lib lib64


3. PHP 다운로드 및 컴파일

cd /usr/local/src
wget http://kr1.php.net/get/php-5.6.25.tar.gz/from/this/mirror
tar xvfz mirror
cd php-5.6.25
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-regex=php \
--with-libxml-dir=/usr \
--with-openssl --with-pcre-regex --with-zlib \
--with-bz2 --with-curl --with-gdbm \
--with-db4=/usr --with-dbm --with-pcre-dir=/usr --with-openssl-dir=/usr \
--with-libxml-dir=/usr --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr \
--with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr \
--with-t1lib=/usr --with-gettext --with-gmp --with-mhash --with-imap \
--with-imap-ssl --with-kerberos --with-icu-dir=/usr --with-ldap \
--with-ldap-sasl --with-libmbfl --with-onig --with-mcrypt \
--with-libedit --with-readline --with-tidy --with-libexpat-dir=/usr \
--with-xmlrpc --with-xsl --with-pear --with-pic --with-libdir=lib64 \
--enable-bcmath --enable-calendar --enable-exif \
--enable-ftp --enable-pcntl --enable-gd-native-ttf \
--enable-gd-jis-conv --enable-intl --enable-mbstring \
--enable-shmop --enable-sockets --enable-sysvmsg \
--enable-sysvsem --enable-sysvshm --enable-wddx \
--enable-zip --enable-mysqlnd --enable-dba=shared \
--enable-mod-charset --enable-dom --enable-mbregex \
--enable-inline-optimization --enable-sigchild --enable-soap \
--enable-maintainer-zts --enable-opcache=nom
make
make install


4. PHP 환경설정

cp php.ini-production /etc/httpd/php.ini
 vi /etc/httpd/php.ini


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Module Settings;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Date]
date.timezone = "Asia/Seoul"



5. Apache 환경설정

vi /usr/local/apache/conf/httpd.conf
# httpd.conf 내에서 PHP모듈이 정상적으로 추가되어있는지 확인 (자동으로 연동되어 등록됨)
LoadModule php5_module          modules/libphp5.so
#<IfModule dir_module>을 찾아 아래 내용 추가
<IfModule dir_module>
     DirectoryIndex index.html index.htm index.php index.cgi
</IfModule>
#<IfModule mime_module> 을 찾아 아래 내용 추가
<IfModule mime_module>
     AddType application/x-compress . z
     AddType application/x-gzip . gz . tgz
     AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml .html .htm .inc
     AddType application/x-httpd-source .phps
</IfModule>
#httpd.conf 저장한 뒤
/etc/init.d/httpd restart



6. 환경변수 등록

cd ~
vi .bash_profile
#PATH부분에 아래 내용을 추가한다
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin
#.bash_profile 저장한 뒤
source .bash_profile




7. 연동 확인

vi /usr/local/apache/htdocs/phpinfo.php
<? php
phpinfo();
?>
# 입력 후 저장



이렇게 APM 설치를 마무리했다.
각 버전마다 컴파일 설정값이나 관련 라이브러리가 바뀌는 등 여러가지 변수가 있을 수 있으니, 실제 진행할 때 이 점을 유의해야한다.


이번 포스팅을 진행할 때, 사용한 버전은 최대한 이것저것 테스트 해보긴 했지만 부족한 부분이나 잘못된 부분이 있다면 언제든 댓글 부탁드립니다.



출처: http://jguru-study.tistory.com/31 [ITstudy]