학교 수업시간에 사용했던 Virtual Box 와 Ubuntu 를 별도의 설치 없이 그대로 진행했다. (Ubuntu 버전 : 18.04 LTS)
메모리 크기 : 4096MB
하드디스크 : 지금 새 가상 하드 디스크 만들기
파일크기 : 동적 크기 + 50GB 로 여유있게 확보
하드디스크 파일종류 : VDI 선택
광학 드라이브 : 다운 받았던 ubuntu.18.04.iso 파일을 추가
cf) 일반적인 소스 패키지 설치는 configure - make - make install 의 3단계로 이루어진다.
설치할 떄 옵션을 주지 않으면 기본으로 /usr/local/bin 이나 /usr/local/bin 밑에 설치하는데, 이 디렉토리들은 관리자 권한 없이는 접근 불가능
=> 이 경우는 --prefix 옵션을 주어 설치 디렉토리를 바꿔야한다.
예를 들어 홈 디렉토리 밑에 package 이라는 디렉토리를 만들어 그 곳에 설치하려 한다면 아래와 같이 작성한다.
# ./configure --prefix=/home/oracle/package
아래 트러블 슈팅에서도 다루었지만, 필수적인 패키지를 설치하지 않자 설치가 원활히 진행되지 않고 에러가 발생했다!! (구글링하느라 애먹었다는..)
Apache 설치전에 꼭 미리 설치하자!
또 "sudo su" 명령어를 통해 관리자 계정으로 로그인 하도록 하자!
$ sudo su
# apt-get install make
# apt-get install build-essential
# apt-get install gcc
# apt-get install --reinstall make
# apt-get install libexpat1-dev
# apt-get install g++
# apt-get install net-tools
# apt-get install curl
apache 라는 파일을 생성하고 거기에다 파일을 다운받도록 했다.
구글링을 해보니 아래 사이트에서 httpd 파일을 설치하라는게 있었는데,
2.4.51 버전이 없어서 따로 직접 사이트에 접속해서 최신 버전을 찾아서 다운 받도록 했다.
/usr/local# wget --no-check-certificate https://dlcdn.apache.org//httpd/httpd-2.4.51.tar.gz
cd /usr
cd local
mkdir apache
/usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz
/usr/local# wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz
/usr/local# wget --no-check-certificate https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
/usr/local# tar xvfz apr-1.7.0.tar.gz
/usr/local# tar xvfz apr-util-1.6.1.tar.gz
/usr/local# tar xvfz pcre-8.45.tar.gz
/usr/local# tar xvfz httpd-2.4.51.tar.gz
압축해제가 끝났다면, configure(빌드) - make(컴파일) - make install(소스파일 설치) 과정을 진행해주자!
/usr/local# cd apr-1.7.0
/usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr
/usr/local/apr-1.7.0# make
/usr/local/apr-1.7.0# make install
/usr/local# cd apr-util-1.6.1
/usr/local/apr-util-1.6.1# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
/usr/local/apr-util-1.6.1# make
/usr/local/apr-util-1.6.1# make install
/usr/local# cd pcre-8.45
/usr/local/pcre-8.43# ./configure --prefix=/usr/local/pcre
/usr/local/pcre-8.43# make
/usr/local/pcre-8.43# make install
/usr/local# cd httpd-2.4.51
/usr/local/httpd-2.4.51# ./configure --prefix=/usr/local/apache2.4 \
--enable-module=so --enable-rewrite --enable-so \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre \
--enable-mods-shared=all
/usr/local/httpd-2.4.51# make
/usr/local/httpd-2.4.51# make install
/usr/local# sudo apache2.4/bin/httpd -k start
/usr/local# ps -ef | grep httpd | grep -v grep
/usr/local# sudo netstat -anp | grep httpd
/usr/local# sudo curl http://127.0.0.1
아래와 같이 결과가 나오면 성공한 것이다!
Firefox에서 127.0.0.1 주소로 들어가서 확인해보면 아래와 같이 It works! 가 떠야지 성공한 것이다~!
apcache 설치때 처럼 패키지 설치 안해서 애먹지 말자..!
/usr/local# apt-get update
/usr/local# apt-get install cmake
/usr/local# apt-get install libssl-dev
/usr/local# apt-get install libboost-all-dev
/usr/local# apt-get install libncurses5-dev libncursesw5-dev
/usr/local# apt-get install perl
/usr/local# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19.tar.gz
/usr/local# tar xvfz mysql-8.0.19.tar.gz
dir_mysql 라는 새 디렉토리를 생성후 그곳에 소스파일을 설치했다.
오타없이 진행하도록 하자! 오타 발생해서, mysql 설치가 올바르게 되지 않아서 소스파일 삭제하고 다시 다운받음...
(make 과정은 굉장히 오래걸리니, 다른 공부 하고있자! 나는 논리회로 수업들음ㅎ 내 컴퓨터 기준 1~2시간정도 걸렸던 것 같음)
Makefile 은 간단한 프로젝트를 관리하기 좋지만, 프로젝트 크기가 커질 경우, 아니면 해당 프로젝트를 여러 플랫폼에서 배포하기 위해서는 이것 저것 불편한 점이 많다. 이러한 문제를 해결하기 위해서 자주 사용하는 프로그램이 CMake 이다.
/usr/local# cd mysql-8.0.19
/usr/local/mysql-8.0.19# mkdir dir_mysql
/usr/local/mysql-8.0.19# cd dir_mysql
/usr/local/mysql-8.0.19# cd ..
/usr/local# cd src
/usr/local/src# sudo wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.gz
/usr/local/src# sudo tar xvfz boost_1_70_0.tar.gz
/usr/local/src# cd ..
/usr/local# cd mysql-8.0.19/dir_mysql
/usr/local/mysql-8.0.19/dir_mysql# cmake \
.. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/boost_1_70_0
설치가 완료되면, mysql 설정에 관해 진행할것 들이 아래와 같이 좀 많다..!
cd /usr/local/mysql-8.0.19/dir_mysql
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql
/usr/local# cd mysql
/usr/local/mysql# mkdir mysql-files (이름 아무거나 상관없음)
/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql# chown mysql:mysql mysql-files
/usr/local/mysql# chmod 750 mysql-files
/usr/local/mysql# bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
기본 DB 생성까지 끝나면 임시 비밀번호가 발급된다!
어딘가에 기록해두었다가, 나중에 비밀번호를 변경시키자!
/usr/local/mysql# bin/mysqld_safe --user=mysql &
명령어를 입력하면 터미널이 아래 그림처럼 멈추는데, 바로 명령어들을 입력하고 발급받은 임시 비밀번호 입력하면 MySQL 에 접속 성공!
#bin/mysql -u root -p
#Enter password: 비밀번호 입력
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '재설정할 비비밃번호'; // 비밀번호 재설정
mysql>exit // 서버 종료
$sudo su
/usr/local# apt-get install libxml2-dev
/usr/local# apt-get install libjpeg-dev
/usr/local# apt-get install libpng-dev
/usr/local# apt-get install libsqlite3-dev
make 하고나서 바로 make install 을 하는 것이 아니라,
make test 를 반드시 진행하고 make install 을 진행해야한다.
make test 과정 속에서 PHP install warning 경고가 뜰수도 있는데, 구글링을 잘 해보길 바란다. 대부분의 경우는 경고문이 뜬다고해서 다시 재설치 받을 필요없고 바로 make install 을 해주면 된다!
/usr/local# wget https://www.php.net/distributions/php-8.1.0.tar.gz
/usr/local# tar xvfz php-8.1.0.tar.gz
/usr/local# cd php-8.1.0
/usr/local/php-8.1.0# ./configure \
--with-apxs2=/usr/local/apache-2.4/bin/apxs \
--enable-mysqlnd \
--with-mysql-sock=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-imap-ssl \
--with-iconv \
--enable-gd \
--with-jpeg \
--with-libxml \
--with-openssl
/usr/local/php-8.1.0# make
/usr/local/php-8.1.0# make test
/usr/local/php-8.1.0# make install
/usr/local/apache2.4/modules 에 libphp.so 가 잘 깔려있다!
$ vi /usr/local/apache2.4/conf/httpd.conf
vi 편집기로 열었다면, 아래와 같이 모듈을 추가하자!
AddType application x-httpd-php .php .html
php configure 시에 옵션으로 php.ini 의 위치를 지정하지 않으면
디폴트로 /usr/local/lib/php.ini 를 사용한다!
$cd /usr/local/php-8.1.0
$cp php.ini-production /usr/local/lib/php.ini
$cd /usr/local/apache2.4/htdocs
$vi phpinfo.php
아래와 같이 작성 후 저장
<? php
phpinfo();
?>
/usr/local# apache2.4/bin/httpd -k start
/usr/local# ps -ef | grep httpd | grep -v grep
/usr/local# sudo netstat -anp | grep httpd
/usr/local# sudo curl http://127.0.0.1
예를들어 내가 아래와 같은 에러를 직면했었다.
no acceptable C compiler found in $PATH
이 문제를 해결하기 위해 여러 블로그에서 제안한 방법을 찾았지만, 결국 해결안은 패키지를 설치하는 것이였다! (간단한 일을 계속 애먹고 있었음..)
mysql, apache 를 설치할때 진짜 너무너무 힘들었다...... configure 작업 진행시에 오타 하나로 인해 컴파일 에러가 발생해서 설치 하는데만 하루 종일 걸렸다..!
configure 이 성공했다고 한들, make 이후 make install 을 하다가 중간에 에러가 계속 발생해서 새롭게 다시 설치한 적이 많았다!
Apache 와 PHP 를 연동할때 vi 명령어를 통해 AddType application/x-http-php .php .html 모듈을 설치할 떄 에러가 발생했다.
"vi changing a readonly file" 오류가 발생함.
=> "sudo vi 파일경로" 를 입력해서 파일 수정이 가능하도록 했다!
https://woochan-autobiography.tistory.com/654#4.%204.%20php%20ini%20%EC%85%8B%ED%8C%85
https://vanillacreamdonut.tistory.com/209
https://blog.ddagi.com/no-acceptable-c-compiler-found-in-path-%EC%98%A4%EB%A5%98/