Linux 계열 OS인 Ubuntu 에 APM(Apache+PhP+MySQL) 소스 설치(= 컴파일 설치, 수동 설치) 하기 2탄(대망의 PhP)

Jayden JaeMin Jeong·2021년 5월 31일
1

Rising programmer 3

목록 보기
2/12
post-custom-banner

이번에는 PhP를 소스설치 해보겠다. 이번에도 https://bluexmas.tistory.com/1128?category=343945 --> 이 분의 블로그를 참고하면서 했다.

먼저

$ sudo apt install pkg-config libxml2-dev libsqlite3-dev libgmp-dev libonig-dev libbz2-dev libreadline-dev libxslt1-dev

이 명령어 컴파일 관련 라이브러리를 설치한다.
그 다음

$ wget https://www.php.net/distributions/php-7.4.12.tar.gz

이 명령어로 PhP 컴파일 관련 파일을 설치한다.
그 다음

$ tar xvfz php-7.4.12.tar.gz

압축해제 해준다. 그리고 그 디렉토리로 이동

$ cd php-7.4.12/

그리고 ./configure ~~~ 를 해줘야하는데 또 다시 디렉토리 조심해라.

$ ./configure --prefix=/apps/php-7.4.12 --with-apxs2=/apps/apache24/bin/apxs --enable-fpm --enable-inline-optimization --enable-shared --enable-soap --with-xmlrpc --with-openssl --with-mhash --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd --with-openssl-dir --with-zlib-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-pdo --with-mysqli=/mysql-5.7.23/bin/mysql_config --with-pdo-mysql=/mysql-5.7.23/bin/mysql --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xsl --enable-mysqlnd-compression-support --with-pear --enable-opcache --with-mhash --with-curl --with-openssl --with-zlib --enable-intl

[Error: 자기 나 기다렸어?ㅎㅎ]

침착하게 냉수 한잔 하고 에러를 처리해본다. no package 'libcurl' found를 검색해보니

$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install pkg-config

이 라이브러리들을 다운로드해주라고 한다. 했더니,

ㄹㅇ ㅋㅋ만 치라고 ㅋㅋ

$ sudo apt-get install libpng-dev

이걸 다운로드 해준다. 그랬더니,
엇 생각해보니 난 MySQL 없는데?

그래서 configure 명령어를 수정 좀 해봤다.

$ ./configure --prefix=/apps/php-7.4.12 --with-apxs2=/apps/apache24/bin/apxs --enable-fpm --enable-inline-optimization --enable-shared --enable-soap --with-xmlrpc --with-openssl --with-mhash --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd --with-openssl-dir --with-zlib-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-pdo --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xsl --enable-mysqlnd-compression-support --with-pear --enable-opcache --with-mhash --with-curl --with-openssl --with-zlib --enable-intl

(mysql 적힌 건 다 지워줬다)

바로 성공. 그 다음,

$ make -j4

[빌드 성공한 모습]

저기 보면 $ make test를 꼭 하라고 한다. 함 해주자.(참고로 X나 오래 걸린다. 난 너무 오래 걸려서 그냥 넘어갔음)

$ sudo make install

로 PHP 설치를 해준다.

[설치 완료한 모습]

그 다음,

$ cp php.ini-production /apps/php-7.4.12/php.ini

php.ini 파일을 복사해준다. 그 다음,

$ sudo vi /apps/apache24/conf/httpd.conf

apache 설정 파일 수정해준다.

[수정 1]

그 다음 SSI를 검색해준 다음에(vi에서 검색 단축키가 뭔지 알아와라)

[수정 2]

저것들을 추가해준다 하하. (AddHandler랑 AddType이랑 다르니까 걱정말고)

자 이제 설정 파일도 끝났겠다, Apache 웹 서버를 재실행 해준다

$ sudo systemctl restart apache2

재실행 해준 뒤

$ sudo systemctl restart apache2

상태 확인을 해서 잘 뜨면 다음 단계로 진행하면 된다.

그 다음 단계는 PHP 확인을 위한 파일을 생성하는 단계인데 /var/www/html 이 경로로 파일을 생성해줘야 한다.

일단

$ cd /var/www/html

로 이동시도를 해보니 난 없더라 ㅋ. 그래서 직접 만들어 줌.

$ cd /var
$ sudo mkdir www
$ cd www
$ sudo mkdir html

끝. 그 다음 html 폴더까지 이동 한 다음에,

$ sudo vi phpinfo.php

한 다음,

<?php phpinfo(); ?>

로 파일을 생성해주고 유유히 떠나면 된다. 하지만 웬걸,

phpinfo.php 가 왜 없노?

허허 이거 참. 이럴 땐 httpd/conf 파일을 뒤져보는게 좋다. DocumentRoot 키워드로 검색을 해보니

보이능가 루트 디렉토리가 /apps/apache24/htdocs 로 돼 있는 것을,,,,

그렇다면 우리가 해야할 건 phpinfo.php 파일을 저기로 옮겨주면 끝이다.

$ sudo mv /var/www/html/phpinfo.php /apps/apache24/htdocs/phpinfo.php

이 명령어로 잘라붙여넣기를 함 해보자.

???: 내가 사라져볼게, 얍! 얍!

무사히 옮긴 다음 "내 외부아이피/phpinfo.php" 로 접속해보자.

???: Hello motherfucker 🔪

여기까지 성공했으면 축배를 들어라. 나는 이만 글을 줄이고 데스페라도스 한 캔 따러 가야겠다. 그럼 다들 수고!
(아 참고로 각 파일들의 역할이나 좀 더 원리적인 부분은 각자가 알아서 서칭하길 바란다
ㅎㅎ,,, 나도 사실 잘 모름,, )

profile
천방지축 CEO & CTO
post-custom-banner

0개의 댓글