Linux

Ch.12 웹 서버 설치 및 운영

낑깡꺙냥 2024. 4. 29. 13:55

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

/var/www/html

 

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. 웹 서버에 접속해 워드프레스 초기 설정을 진행한다.

 

 

wordpress 알림

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

 

php 업데이트 권장 알림 사라짐

 

 

--------------------------------------------

phpMyAdmin =웹에서 구현 가능한 GUI database Client

+에서 다운받은 phpMyAdmin 폴더를 wordpress 폴더로 이동

  • mv phpMA phpMyAdmin wordpresss

웹에서 확인 192.168.111.100/phpMA

 

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(); ?>