1. Linux에 AMP 소스설치 해보기

minn·2023년 3월 17일
0

Rising Camp

목록 보기
1/4

작성일 : 2023/01/26

✔︎ Checklist

  1. 패러렐즈 및 Ubuntu 다운로드 및 설치
  2. Apache-2.4.55 설치
  3. Mysql-8.0.32 설치
  4. Php-8.2.1 설치
  5. Apache-php 연동

개발환경

macOS Monterey (Apple Silicon)

1. 패러렐즈 및 Ubuntu 다운로드 및 설치

  • Ubuntu 홈페이지에서 ubuntu desktop arm64 iso 파일 다운로드 혹은 패러렐즈 번들 기능을 이용해 우분투OS 22.04 LTS 설치

⛔️주의사항
이미지파일 직접 다운로드하여 설치 시, server.iso 파일이 아닌 반드시 desktop.iso 파일로 다운로드해야 GUI가 있는 리눅스를 설치할 수 있다. 처음에 server파일로 설치했더니 콘솔 화면만 보여서 읭 했다…

설치가 완료된 모습

2. Apache-2.4.55 설치

  • 필수 패키지 설치
$ 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
cd /usr/local
  • 인터넷에서 소스설치 파일 다운로드
$ sudo su
/usr/local# mkdir apache
// 1) apr-1.7.0
/usr/local# wget http://mirror.navercorp.com/apache//apr/apr-1.7.0.tar.gz 

// 2) apr-util-1.6.1
/usr/local# wget http://mirror.navercorp.com/apache//apr/apr-util-1.6.1.tar.gz 

// 3) pcre-8.45
/usr/local# wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz/

// 4) apache-2.4.55
/usr/local# wget https://dlcdn.apache.org//httpd/httpd-2.4.55.tar.g

Apache2는 반드시 최신 버전으로 다운로드 해줘야한다. 최신 버전이 아닐 경우 ERROR 404 : NOT FOUND 에러가 발생한다.

  • 파일 압축 풀기
/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.55.tar.gz
  • 파일 설치
    apr 설치
/usr/local/apr-1.7.0# ./configure --prefix=/usr/local/apr // 여기서 오류 발생 
/usr/local/apr-1.7.0# cp -arp libtool libtoolT
/usr/local/apr-1.7.0# make
/usr/local/apr-1.7.0# make install

apr-util 설치

/usr/local/pcre-8.45# ./configure --prefix=/usr/local/pcre
/usr/local/pcre-8.45# make
/usr/local/pcre-8.45# make install

pcre 설치

/usr/local/pcre-8.45# ./configure --prefix=/usr/local/pcre
/usr/local/pcre-8.45# make
/usr/local/pcre-8.45# make install

apache 설치

/usr/local/httpd-2.4.55# ./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/bin/pcre-config \
--enable-mods-shared=all
  • Apache 실행
/usr/local# sudo apache2.4/bin/httpd -k start
  • ‼️에러 발생

  • AH00558 에러

서버 이름을 지정해주지 않아 생긴 에러이고, /usr/local/apache2.4/conf/httpd.config 파일을 수정해주면 해결된다.

굳이 디버깅 해주지 않아도 서버 구축에는 지장이 없지만 그렇게 되면 서버 시작할때마다 에러문이 뜬다.

  • AH00072 에러

80번 포트에 연결할 수 없다는 오류. 사실은 이 실습 이전에 apt install로 아파치를 한번 설치했었다. 그래서 생기는 오류인 것 같아서 해당 포트에 연결된 프로세스를 죽이면 될 것 같았다. 근데…

죽여도 죽여도 계속 생겨나는 좀비였다(이 짓을 30번 가량 반복했다.)

그래서 현 실행중인 아파치 서버를 종료하고 아파치 설치부터 다시 진행했더니 에러없이 실행됐다.

# sudo service apache2 stop
  • 추가 (01.28)

php까지 설치 완료 후 apache와 연동하는 단계에서 또 동일한 오류가 발생하여, apache 설치부터 다시 진행했다. 설치 시 가장 주의해야 하는건 configure 할 때 각 파일의 경로를 구체적으로 적어주어야 한다는 점이다.

/usr/local# ps -ef | grep httpd | grep -v grep
/usr/local# sudo netstat -anp | grep httpd
/usr/local# sudo curl http://127.0.0.2

http://127.0.0.1은 기존 아파치 서버의 페이지가 계속 떠서 127.0.0.2 포트로 출력해줬다.

3. Mysql-8.0.32 설치

  • 필수 패키지 인스톨
$ apt-get update
$ apt-get install cmake
$ apt-get install libssl-dev
$ apt-get install libboost-all-dev
$ apt-get install libncurses5-dev libncursesw5-dev
  • Mysql 소스 설치파일 다운로드 및 압축 풀기
$ cd /usr/local
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32.tar.gz
$ tar xvfz mysql-8.0.32.tar.gz
  • Mysql 소스설치
$ cd mysql-8.0.32
$ rm -f CMakeCache.txt
$ mkdir mysql_dir
$ cd mysql_dir
$ 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/mysql/boost
  • ‼️에러 발생다섯번 째 줄 — cmake 시 에러가 발생했다.

구글링한 결과 뭔가 cmake가 필요로 하는 어떤 모듈이 없었던 것 같다.

```jsx
sudo apt-get install pkg-config
sudo apt-get install cmake-data
```

설치해주자 정상적으로 mysql이 설치되었다.

참고링크 : 

[CMAKE Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)](https://askubuntu.com/questions/717302/cmake-could-not-find-pkgconfig-missing-pkg-config-executable)
$ make
$ make test
$ make install

3. Mysql-8.0.32 설치

  • 필수 패키지 인스톨
    $ apt-get update
    $ apt-get install cmake
    $ apt-get install libssl-dev
    $ apt-get install libboost-all-dev
    $ apt-get install libncurses5-dev libncursesw5-dev
  • Mysql 소스 설치파일 다운로드 및 압축 풀기
    $ cd /usr/local
    $ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32.tar.gz
    $ tar xvfz mysql-8.0.32.tar.gz
  • Mysql 서버 실행
    // 1. mysql 그룹 및 유저 생성
    /usr/local/mysql-8.0.19/dir_mysql# groupadd mysql
    /usr/local/mysql-8.0.19/dir_mysql# useradd -r -g mysql -s /bin/false mysql
    
    // 2. 디렉토리 생성
    /usr/local# cd mysql
    /usr/local/mysql# mkdir mysql-files
    
    // 3. 권한주기
    /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 
    
    // 4. 기본 DB 생성
    /usr/local/mysql# bin/mysqld --initialize --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/usr/local/mysql/data

    명령어 정리

    chown : 파일의 소유자를 변경 chmod : 사용권한을 변경
    • R : 하위 디렉토리까지 소유권 할당

      mysql 서버를 실행한다.

      /usr/local/mysql# bin/mysqld_safe --user=mysql &

      여기까지 실행하면 콘솔 화면이 대기 상태가 된다. 이 상태에서 아래처럼 root 유저로 접속하고 비밀번호를 입력하면 된다.

      #bin/mysql -u root -p
      #Enter password: [password]

      이 때 앞서 받았던 임시 비밀번호를 입력해야 하는데, 만약에 까먹었으면 /var/log/mysql/error.log 파일에서 password라고 검색하면 나와있다. 정식 루트는 이게 아니었던 것 같은데, 난 한번 틀려서 여기에 기록된 것 같다. 아무튼 여기서 임시 비밀번호를 찾아서 넣어주면 mysql 서버가 실행된다.

  • Mysql 소스설치
    $ cd mysql-8.0.32
    $ rm -f CMakeCache.txt
    $ mkdir mysql_dir
    $ cd mysql_dir
    $ 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/mysql/boost
    • ‼️에러 발생
    다섯번 째 줄 — cmake 시 에러가 발생했다.

구글링한 결과 뭔가 cmake가 필요로 하는 어떤 모듈이 없었던 것 같다.

    ```jsx
    sudo apt-get install pkg-config
    sudo apt-get install cmake-data
    ```
    

설치해주자 정상적으로 mysql이 설치되었다.

참고링크 :

CMAKE Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

    $ make
    $ make test
    $ make install
  • ‼️에러 발생

첫번째 줄 — make 실행 시 에러가 났다.

fatal error : ld terminated with signal 9 [killed] 를 구글링해보니 메모리 부족 문제인 것 같아 다른 포스팅을 참고하여 아래 순서대로 진행했다.

        // 1, create an empty file
        dd if=/dev/zero of=/media/swapfile.img bs=1024 count=1M
        
        // 2, generate a file exchange system
        mkswap /media/swapfile.img
        
        // 3, set the boot
        vi /etc/fstab // 이 파일에
        /swapfile.img swap swap sw 0 0 // 이 내용 추가
        
        // 4, activate
        swapon /media/swapfile.img
        
        // 5, Is the verification successful?
        # cat /proc/swaps
        # grep 'Swap' /proc/meminfo
        SwapCached:        42180 kB
        SwapTotal:       3145720 kB
        SwapFree:        2456940 kB
    나는 다른 분들과 다르게 SwapCached가 0으로 뜨지 않았지만 SwapFree가 약 2GB로 넉넉해진 것 같아 다시 make를 시도했다.
    
    다행이도 설치는 이전에 멈춘 부분부터 시작했다..😭
    

make 완료된 모습!

make 완료하는데 대략 3시간, make install도 1시간 정도 걸렸다.
  • 비밀번호 재설정 및 서버 종료
    // 1. 비밀번호 재설정
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
    
    // 2. 서버 종료
    mysql> exit
    /usr/local/mysql# bin/mysqladmin -u root -p shutdown

4. Php-8.2.1 설치

  • 필수 패키지 인스톨
    /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
  • 소스설치 파일 다운로드 및 압축 해제
    /usr/local# wget https://www.php.net/distributions/php-8.2.1.tar.gz
    /usr/local# tar xvfz php-8.2.1.tar.gz
  • php configure 및 설치
    /usr/local# cd php-8.2.1
    $ ./configure \
    --with-apxs2=/usr/local/apache2.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
    
    $ make
    $ make test
    $ make install

5. 연동

  • httpd.conf 파일에 AddType 추가
    /usr/local# cd apache2.4/conf
    /usr/local/apache2.4/conf# vi httpd.conf
    해당 파일의 380번째 줄에 아래와 같이 추가해준다.

  • php.ini 파일 설정
/usr/local# cdphp-8.2.1
/usr/local/php-8.2.1# cp php.ini-production /usr/local/lib/php.ini
  • 테스트 파일 작성 및 서버 실행
$ cd /usr/local/apache2.4/htdocs
$ vi phpinfo.php
// 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

성공!😆
profile
Backend Developer

0개의 댓글