Ch.12 웹 서버 설치 및 운영
12.1 APM 설치와 웹사이트 구축
12.1.1 dnf 명령을 활용한 쉬운 설치 방법 (패키지)
1. dnf -y install httpd php php-mysqlnd mariadb-server
NOTE
*커널
커널이 가장 내부에 존재
사용자 앱이 가장 외부에 존재
사용자 앱 -> 시스템 콜 -> 커널 -> HW(cpu)

2. systemctl --now enable httpd mariadb && firewall-cmd -add-service=http
- phpsms httpd에 포함된 기능이므로 별도로 실행시키지 않아도 된다.
3. curl localhost / 웹 서버 정상 작동 확인
- curl 명령어: Client URL / 서버와 통신 가능한 명령어 도구
4. vi /var/www/html/php.php / php 확인
<?php phpinfo(); ?>
12.1.2 워드프레스를 사용한 웹사이트 구축
웹 서버(PHP로 된 워드프레스)
워드프레스 - 어플리케이션
DB - mariaDB
1. 데이터베이스 생성 (입력할 DB 정보 - 데이터베이스, 사용자, 주소, 비밀번호)
- GRANT ALL PRIVILEGES ON wpdb.* TO wpuser@localhost IDENTIFIED BY 'qwer';
- FLUSH PRIVILEGES; / 사용자 정보 다시 로딩
+ phpmyadmin 설치 ( 웹을 통해서 db 제어 ) / cd /var/www/html를 한 후
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
unzip -q phpMyAdmin-5.2.1-all-languages.zip
3. 워드프레스 / cd /var/www/html를 한 후
wget https://ko.wordpress.org/latest-ko_KR.tar.gz
tar xfz latest-ko_KR.tar.gz
ln -s wordpress wp
*apache user
httpd 어플리케이션 외부 접속 시 허용 사용
chmod -R apache.apache wordpress
chmod -R apache.apache phpMA
4. /var/www/html/wordpress/wp-config-sample.php 파일을 해당 디렉토리에 wp-config.php로 복사 후 vi (1번 참고)
5. 웹 서버 설정 파일을 수정하고 저장
vi /etc/httpd/conf/httpd.conf
- DocumentRoot "var/www/html" -> DocumentRoot "var/www/html/wordpress"
- <Directory "/var/www/html"> -> <Directory "/var/www/html/wordpress">
- AllowOverride None -> AllowOverride All
6. 웹 서버에 접속해 워드프레스 초기 설정을 진행한다.
php 버전 확인: php -v
php 업데이트: dnf module list php
NOTE
오류 발생 시
dnf -y remove php*
dnf module reset php
dnf module enable php:8.0
dnf module list php #8.0에 [e] 확인
dnf -y install php*
재설치 후 systemctl restart httpd
--------------------------------------------
phpMyAdmin =웹에서 구현 가능한 GUI database Client
+에서 다운받은 phpMyAdmin 폴더를 wordpress 폴더로 이동
- mv phpMA phpMyAdmin wordpresss
NOTE
GUI Rocky Linux 인터페이스 = 점검
systemctl --now enable cockpit
웹 브라우저에서 192.168.111.100:9090
12.2 웹 서버의 응용 서비스: 클라우드 저장소
1. next cloud 설치 (/var/www/html) / PHP
- tar xfj
- ln -s nextcloud nc
- chown -R apache.apache nextcloud
2. 데이터베이스 생성 및 유저 생성
- create database webdb;
- grant ALL on *.* to webuser@localhost identified by '1234';
3. systemctl restart httpd
4. 웹에서 192.168.111.100/nc 입력
5. 오류 시
vi /var/www/html/wordpress/nextcloud/config/config.php
dbuser 수정
NOTE
SQLite
소형 데이터베이스
클라이언트의 어플리케이션, 응용 프로그램에 임베디드되어서 동작하는 DBMS
단일 파일로 데이터를 관리하므로 다량의 데이터 처리에는 부적합
+ 웹 서버 소스 설치
dnf를 사용하지 않고 별도의 소스를 다운받아 설치하는 방법
장점: 최신 버전이나 변경 사항 적용
단점: 번거로움
-----------------------------------------------------------------------------------------------
웹 서버&PHP 소스 설치
------------------------------------------------------------------------------------------------
1. 웹에서 필요한거 다운로드(/usr/local/src)
httpd 다운로드
wget https://dlcdn.apache.org/httpd/httpd-2.4.59.tar.bz2
apr, apr-util 다운로드
wget https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
PCRE2 다운로드
wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.43/pcre2-10.43.tar.bz2
php 다운로드
wget https://www.php.net/distributions/php-8.3.6.tar.gz
+다운로드 후 압축 해제
NOTE
XML 또한 마크업 언어 - 데이터를 일정 형식으로 표현 및 전달
웹에서 데이터 전송을 위해 미리 약속해둔 방식으로 만든 문서
apr(apache portable runtime)
PCRE 펄 호환 정규 표현식 구현 라이브러리
------------------------------------------------------------------------------------------------
2. dnf로 설치
컴파일러 설치
dnf -y install gcc gcc-c++
아파치 서버 설치에 필요한 라이브러리 설치(XML Parser)
dnf -y install expat expat-devel
make 설치
dnf -y install make
PHP 설치를 위한
dnf -y install libxml2 libxml2-devel (XML 라이브러리 설치)
dnf -y install sqlite-devel (sqlite3 라이브러리 설치)
---------------------------------------------------------------------------------------------
3. 소스 컴파일
configure - make - make install
설정하고 설정 파일을 만들어서 설치
mysql은 약간 다름
cmake - make install
-----------------------------------------------------------------------------------------------
PCRE2 소스 컴파일(cd /usr/local/src/pcre2-10.43)
./configure --prefix=/usr/local/pcre #Makefile 생성
make
make install
----------------------------------------------------------------------------------------------
httpd 소스 컴파일 (/usr/local/src)
해당 디렉터리 내의 srclib에 apr-1.7.4와 apr-util-1.6.3을 이름 변경하여 복사(apr, apr-util)
cp -r apr-1.7.4 httpd-2.4.59/srclib/apr
cp -r apr-util-1.6.3 httpd-2.4.59/srclib/apr-util
httpd 경로 진입 후 configure (cd /usr/local/src/httpd-2.4.59)
./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all --with-include-apr --with-pcre=/usr/local/pcre/bin/pcre2-config
make
make install
NOTE
prefix 설치 경로 지정
enable-so 모듈 자동 사용 지정
enalbe-mods-shared=all 모든 모듈 동적 모듈로 설치(httpd.conf 파일에서 LoadModule 밑의 모든 모듈을 자동으로 읽기)
with-include-apr apr 연동
with-pcre=/usr/local/pcre/bin/pcre2-config
--------------------------------------------------------------------------------------------
php 소스 컴파일 (cd /usr/local/src/php-)
./configure --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/apache/conf
make
make install
NOTE
--with-apxs2 PHP가 아파치 데몬에 모듈로서 로딩되도록 관련 실행 면령어인 apxs라는 명령어의 위치를 지정
--with-config-file-path php 설정파일의 위치를 지정, 추후에 설정 파일을 복사
--------------------------------------------------------------------------------------------
상기한 경로에 설정 샘플 복사(cd /usr/local/src/php-)
cp php.ini-production /usr/local/apache/conf
아파치 설정 파일에 php 확장자 등록(해당 확장자를 가진 파일들을 해석할 수 있도록 지정)
vi /usr/local/apache/conf/httpd.conf
403행 빈 칸에 두 줄 기입
AddType application/x-httpd-php .php .htm .html .inc .php8
AddType application/x-httpd-php-source .phps
207행에 도메인 기입 혹은 주석 해제
bin 내부의 실행 파일로 시작
/usr/local/apache/bin/apachectl restart
ls /usr/local/apache/modules 디렉터리를 점검하여 libphp.so의 유무를 통해 php 연동 확인
추가적으로 php 모듈을 아파치 설정 파일에 로드하는지 확인
grep libphp.so /usr/local/apache/conf/httpd.conf
php 테스트 파일 작성 후 확인
vi /usr/local/apache/htdocs/php.php #<?php phpinfo(); ?>