현업에서는 패키지를 통으로 설치하면 필요없는 것도 같이 깔리는 경우가 많기 때문에
거의 무조건 소스설치로 진행한다고 한다.
소스 설치 과정을 스크립트로 만들어봤다.
처음 해보는 소스 설치라 틀린 부분이 많을 수 있다.
(버전이랑 권한 맞추기 어려워...)
Apache:
오픈 소스 웹 서버 소프트웨어로, HTTP 요청을 처리하고 클라이언트에 웹 페이지를 제공하는 역할을 합니다. Apache는 모듈형 아키텍처를 가지고 있어 다양한 기능을 추가할 수 있습니다.
PHP:
서버 측 스크립팅 언어로, 동적 웹 페이지를 생성하는 데 사용됩니다. PHP 코드는 웹 서버에서 실행되며, HTML, CSS, JavaScript 등과 결합하여 동적 콘텐츠를 제공합니다.
MariaDB:
오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, MySQL의 대안으로 널리 사용됩니다. 데이터 저장, 관리, 검색 기능을 제공하며, 높은 성능과 확장성을 자랑합니다.
Tomcat:
Tomcat은 Apache Software Foundation에서 개발한 오픈 소스 서블릿 컨테이너이자 웹 서버입니다. 주로 Java Servlet, JavaServer Pages (JSP), Java Expression Language, Java WebSocket을 실행하기 위해 사용됩니다.
#!/bin/bash
######### SElinux 해제
sed -i 's|^SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config
setenforce 0
##########사전 필요 패키지 설치
echo '# 사전 필요 패키지 설치 '
## apache 사전 패키지
yum install -y wget
yum install -y gcc
yum install -y gcc-c++
yum install -y make
yum install -y expat-devel
## mariadb 사전 패키지
yum install -y cmake
yum install -y ncurses-devel
yum install -y gnutls-devel
yum install -y libaio-devel
yum install -y bison
yum install -y libevent-devel
yum install -y openssl-devel
yum install -y pcre-devel
yum install -y zlib-devel
yum install -y perl
yum install -y libcurl-devel
yum install -y bzip2-devel
yum install -y lz4-devel
yum install -y xz-devel
yum install -y lzo-devel
yum install -y java-21-openjdk
###########################
echo '# libiconv-1.13.1 설치 '
##libiconv 설치
cd /usr/local/src
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
# 경로 중요
./configure --prefix=/usr/local
make && make install
########## apache 설치
echo '# apache 설치 '
mkdir /usr/local/src/apachebuild
cd /usr/local/src/apachebuild
wget https://downloads.apache.org/httpd/httpd-2.4.59.tar.bz2
wget https://downloads.apache.org/apr/apr-1.7.4.tar.bz2
wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.bz2
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.bz2
tar xvfj httpd-2.4.59.tar.bz2
tar xvfj apr-1.7.4.tar.bz2
tar xvfj apr-util-1.6.3.tar.bz2
tar xvfj pcre-8.45.tar.bz2
cd /usr/local/src/apachebuild/apr-1.7.4 && ./configure --prefix=/usr/local/src/apachebuild/apr ; make ; make install
cd /usr/local/src/apachebuild/apr-util-1.6.3 && ./configure --prefix=/usr/local/src/apachebuild/aprutil --with-apr=/usr/local/src/apachebuild/apr ; make ; make install
cd /usr/local/src/apachebuild/pcre-8.45 && ./configure --prefix=/usr/local/src/apachebuild/pcre ; make ; make install
cd /usr/local/src/apachebuild/httpd-2.4.59 && ./configure --prefix=/usr/local/apache --with-apr=/usr/local/src/apachebuild/apr --with-apr-util=/usr/local/src/apachebuild/aprutil --with-pcre=/usr/local/src/apachebuild/pcre/bin/pcre-config ; make ; make install
# httpd.conf serverName 수정
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf_bak
sed -i 's/#ServerName www.example.com:80/ServerName localhost/' /usr/local/apache/conf/httpd.conf
cat <<EOF > /etc/systemd/system/httpd.service
[Unit]
Description=Apache
After=network.target
[Service]
Type=forking
User=root
ExecStart=/usr/local/apache/bin/httpd -k start
ExecStop=/usr/local/apache/bin/httpd -k stop
ExecReload=/usr/local/apache/bin/httpd -k graceful
PIDFile=/usr/local/apache/logs/httpd.pid
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload
systemctl daemon-reload
########## mariadb 설치
echo '# mariadb 설치 '
mkdir /usr/local/src/mariadbbuild
cd /usr/local/src/mariadbbuild
wget https://archive.mariadb.org/mariadb-11.3.2/source/mariadb-11.3.2.tar.gz
tar xvfz mariadb-11.3.2.tar.gz
cd /usr/local/src/mariadbbuild/mariadb-11.3.2
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/usr/local/mariadb/data
make && make install
# 초기 root 비밀번호 test123으로 설정
/usr/local/mariadb/scripts/mariadb-install-db --user=root --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data
/usr/local/mariadb/bin/mariadb-admin -u root password '!@test123'
# mariadb 서비스 등록
cat <<EOF > /etc/systemd/system/mariadb.service
[Unit]
Description=mariadb
After=syslog.target network.target
[Service]
Type=forking
User=root
ExecStart=/usr/local/mariadb/support-files/mysql.server start --user=root
ExecStop=/usr/local/mariadb/support-files/mysql.server stop --user=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now mariadb
########## php 설치
echo '# php 설치 '
yum install libjpeg-devel libpng-devel libxml2-devel -y
yum -y install curl-devel libpng
yum -y install ibpng-devel libjpeg libjpeg-devel libwebp
yum -y install libwebp-devel libXpm libXpm-devel openssl
yum -y install openssl-devel autoconf curl zlib zlib-devel
yum -y install freetype freetype-devel gd gd-devel
yum -y install libjpeg libjpeg-devel libmcrypt libmcrypt-devel
yum -y install libtool-ltdl-devel libzip libzip-devel
yum -y install cmake gcc-c++ gcc
yum -y install libxml2-devel libxml2 libcurl libcurl-devel
yum -y install bzip2-devel sqlite-devel gmp gmp-devel perl wget
yum -y install php-mbstring
yum -y install libicu-devel
yum config-manager --set-enabled powertools
yum -y install oniguruma-devel oniguruma
mkdir /usr/local/src/phpbuild
cd /usr/local/src/phpbuild
wget https://www.php.net/distributions/php-7.4.29.tar.gz
tar xvfz php-7.4.29.tar.gz
cd /usr/local/src/phpbuild/php-7.4.29
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--enable-gd \
--with-onig \
--enable-mbstring \
--with-zip \
--enable-zip \
--with-libxml-dir \
--with-openssl \
--with-zlib \
--with-bz2 \
--without-gmp \
--with-jpeg \
--with-iconv=/usr/local \
--with-freetype \
--with-libxml-dir=/usr \
--with-curl \
--enable-intl \
--with-mcrypt \
--with-regex=php \
--with-gettext \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--enable-json \
--enable-gd-native-ttf \
--enable-calendar \
--enable-mod-charset \
--enable-sigchild \
--enable-sockets \
--enable-exif \
--enable-ftp \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--enable-hash \
--without-mhash \
--enable-soap \
--disable-debug \
--enable-magic-quotes
make && make install
#상용 서버로 배포할 목적이면 production 파일을, 개발 및 테스트 목적이면 development 파일
cp /usr/local/src/phpbuild/php-7.4.29/php.ini-development /usr/local/apache/conf/php.ini
#환경변수 설정
sed -i 's|export PATH|export PATH=$PATH:/usr/local/mariadb/bin:/usr/local/php/bin|g' ~/.bash_profile
source ~/.bash_profile
#아파치 버전 숨기기
echo 'ServerTokens Prod' >> /usr/local/apache/conf/httpd.conf
## test용 phpinfo 생성
echo -e '<?php
phpinfo();
?>' >> /usr/local/apache/htdocs/phpinfo.php
# apache conf 변경
sed -i 's,\(IfModule mime_module.*\),\1\nAddType application/x-httpd-php .html .php ,g;' /usr/local/apache/conf/httpd.conf
sed -i 's,\(IfModule mime_module.*\),\1\nAddType application/x-httpd-php-source .phps,g;' /usr/local/apache/conf/httpd.conf
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.html index.htm index.php index.jsp /' /usr/local/apache/conf/httpd.conf
# apache 시작
systemctl enable --now httpd
########## tomcat 설치
echo '# tomcat 설치 '
mkdir /usr/local/src/tomcatbuild
cd /usr/local/src/tomcatbuild
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.24/bin/apache-tomcat-10.1.24.tar.gz
tar xvfz apache-tomcat-10.1.24.tar.gz
mv apache-tomcat-10.1.24 /usr/local/tomcat
# tomcat service 파일 생성
cat <<EOF > /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=root
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
EOF
#방화벽
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
# tomcat service 시작
systemctl daemon-reload
systemctl enable --now tomcat.service
ownCloud는 오픈 소스 파일 동기화 및 공유 소프트웨어로, 개인 클라우드 스토리지를 설정하고 관리할 수 있게 해줍니다. 사용자는 자신의 서버에 데이터를 저장할 수 있으며, 이를 통해 데이터의 프라이버시와 보안을 강화할 수 있습니다. ownCloud는 파일을 동기화하고, 공유하며, 접근할 수 있는 다양한 기능을 제공합니다. ownCloud의 주요 기능과 장점은 다음과 같습니다:
파일 동기화 및 공유:
사용자는 자신의 파일을 여러 디바이스 간에 동기화하고, 다른 사람들과 파일을 쉽게 공유할 수 있습니다.
웹 인터페이스, 데스크톱 클라이언트, 모바일 앱을 통해 파일에 접근할 수 있습니다.
사용자 및 그룹 관리:
ownCloud는 사용자 계정과 그룹을 생성하고 관리할 수 있는 기능을 제공합니다.
LDAP/Active Directory와 같은 외부 인증 소스와 통합할 수 있습니다.
버전 관리:
파일의 이전 버전을 보관하여 필요할 때 복원할 수 있습니다.
파일 변경 내역을 추적하고, 삭제된 파일을 복구할 수 있습니다.
암호화:
서버 측 암호화를 통해 저장된 데이터를 보호합니다.
TLS/SSL을 사용하여 전송 중인 데이터를 보호합니다.
확장성:
다양한 플러그인과 애드온을 통해 기능을 확장할 수 있습니다.
캘린더, 연락처 관리, 문서 편집 등의 추가 기능을 통합할 수 있습니다.
파일 접근 제어:
파일에 대한 접근 권한을 설정하고 관리할 수 있습니다.
공유된 파일에 대한 읽기/쓰기 권한을 세밀하게 설정할 수 있습니다.
# mariadb 접속 & DB/유저 생성 및 권한 부여
mariadb -u root -ptest123
create database webDB;
grant all on webDB.* to webUser@localhost identified by '1234';
exit
# owncloud 다운로드 & 경로 설정
mkdir /usr/local/src/owncloudbuild
cd /usr/local/src/owncloudbuild
wget https://download.owncloud.com/server/stable/owncloud-10.10.0.zip
unzip -q owncloud-10.10.0.zip
mv owncloud /usr/local/apache/htdocs/owncloud
mkdir /usr/local/apache/htdocs/owncloud/data
# http 방화벽 허용
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
# owncloud 디렉토리 권한 설정 & apache 유저 추가
useradd apache
groupadd apache
chown -R apache.apache owncloud
chmod -R 755 owncloud
# apache config - 유저 변경
sed -i 's/User daemon/User apache/' /usr/local/apache/conf/httpd.conf
sed -i 's/Group daemon/Group apache/' /usr/local/apache/conf/httpd.conf
# apache restart
systemctl restart httpd
도메인 설정까지 적용한 모습

private한 파일 저장소. NAS 같은 느낌으로 사용 가능하다.

사진은 캡쳐를 하지 못 한 관계로 인터넷에서 가져왔다...

Tomcat 설치 후, DB 연동까지 해보았다.