작성일 : 2023/01/26
개발환경
macOS Monterey (Apple Silicon)
⛔️주의사항
이미지파일 직접 다운로드하여 설치 시, server.iso 파일이 아닌 반드시 desktop.iso 파일로 다운로드해야 GUI가 있는 리눅스를 설치할 수 있다. 처음에 server파일로 설치했더니 콘솔 화면만 보여서 읭 했다…
설치가 완료된 모습
$ 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
/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
/usr/local# sudo apache2.4/bin/httpd -k start
서버 이름을 지정해주지 않아 생긴 에러이고, /usr/local/apache2.4/conf/httpd.config 파일을 수정해주면 해결된다.
굳이 디버깅 해주지 않아도 서버 구축에는 지장이 없지만 그렇게 되면 서버 시작할때마다 에러문이 뜬다.
80번 포트에 연결할 수 없다는 오류. 사실은 이 실습 이전에 apt install로 아파치를 한번 설치했었다. 그래서 생기는 오류인 것 같아서 해당 포트에 연결된 프로세스를 죽이면 될 것 같았다. 근데…
죽여도 죽여도 계속 생겨나는 좀비였다(이 짓을 30번 가량 반복했다.)
그래서 현 실행중인 아파치 서버를 종료하고 아파치 설치부터 다시 진행했더니 에러없이 실행됐다.
# sudo service apache2 stop
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 포트로 출력해줬다.
$ 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
$ 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
$ 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가 필요로 하는 어떤 모듈이 없었던 것 같다.
```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
$ 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
$ 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
// 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
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 서버가 실행된다.
$ 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가 필요로 하는 어떤 모듈이 없었던 것 같다.
```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
/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
/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
/usr/local# cd apache2.4/conf
/usr/local/apache2.4/conf# vi httpd.conf
해당 파일의 380번째 줄에 아래와 같이 추가해준다./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
성공!😆