웹서버 설치
✒️ 2025-05-22 15:20 내용 수정
- 웹서버에 대한 내용은 웹 서버와 웹 애플리케이션 서버 참고.
APM 설치
- 참고 자료 : Hyunho Jung's 리눅스에 APM(Apache + PHP + MySQL) 설치 및 연동
- Apache, PHP, MySQL 대신 MariaDB 설치를 진행한다.
- 방화벽이 꺼져 있는지 확인한다.
1. httpd, Apache 설치
CentOS 7
- http 패키지를
yum install -y httpd로 다운 받는다.- 패키지를 다운 받았다면 항상
로 확인한다.
- 패키지를 다운 받았다면 항상
- http 버전을
httpd -v나httpd -V로 확인한다.httpd -V가 더 상세한 정보를 제공한다.- Apache 2.4.6버전이 설치된 것을 확인하였다.
ls /etc/httpd와ls /var/www/로 웹서버와 관련된 파일들이 있는지 확인한다.- /etc/httpd/ : 환경 설정 파일(conf)
- /var/www/ : 홈페이지 관련 파일
- 웹서버 데몬 서비스를 실행하고 서비스의 부팅 옵션을 설정한다.
systemctl enable httpd && systemctl start httpd: 서비스 재부팅 시 시작 및 서비스 실행systemctl status httpd: 서비스 상태 확인
- 로컬 pc에서 크롬이나 혹은 리눅스에서 웹 브라우저를 통해 사이트 연결을 확인한다.
- http://리눅스ip주소 로 입력한다.(http 생략 시 자동으로 https로 연결됨)
- /var/www/html/ 디렉터리에 html 확장자 파일을 생성하고 html 내용을 입력하면 사이트에 적용된다.
- CLI 모드에서
curl ip주소로도 확인이 가능하다.yum install -y curl로 패키지를 설치하고 진행해야 한다.
- 기타 사항
- 웹 서버의 로그는 /var/log/httpd/에 저장된다.
- 파일 이름에 ssl이 있으면 SSL(7계층 웹 서버 보안 프로토콜, https)의 로그 파일들이며, http는 access_log와 error_log 파일에 로그를 저장한다.
- access_log : 웹 서버 접속 기록,
tail -f access_log를 사용하면 실시간 접속 로그 추적이 가능하다.- awk 명령어로 정보를 쉽게 추출할 수 있다. 참고 자료 : https://recipes4dev.tistory.com/171
- 사진에선
awk '{print $1, $4}' access_log를 사용해 ip와 접속 시간만 출력했다.
- error_log : 웹 서버 에러 기록
Rocky 9
- 테스트를 위해 설치했기에 다른 부분은 설정하지 않음
dnf -y install httpd로 http 패키지를 설치하고,rpm -qa | grep httpd로 패키지가 제대로 설치되었는지 확인한다.
systemctl start httpd로 서비스를 실행하고,systemctl enable httpd로 재부팅 옵션을 설정한 뒤,systemctl status httpd로 서비스 상태를 체크한다.
firewall-config로 방화벽 GUI를 열어 방화벽에 http를 등록한다.- 영역 -> 설정을 영구적 -> 서비스에 http를 체크 -> 메뉴바에서 옵션 중 Firewalld 다시 불러오기(데몬 재실행)
- 또는
firewall-cmd --permanent --add-service=http를 터미널에 입력하여 http를 등록한 다음firewall-cmd --reload로 Firewalld를 재실행해도 된다.
firewall-config에서 서비스 중 http를 찾아 등록한 경우
firewall-config에서 포트로 추가한 경우(http는 tcp 포트 80번. 프로토콜)
firewall-cmd --permanent --add-service=http를 사용하여 추가한 경우. 사진에선 이미 추가되어 경고문이 떴다.
- 웹 브라우저에 http 호스트 ip를 입력해서 테스트 페이지가 뜨는지 확인한다.
- 현재는 본인 컴퓨터가 호스트이므로,
http://본인컴퓨터의ip를 입력한다.
- 현재는 본인 컴퓨터가 호스트이므로,
- Rocky에서도 http의 로그 파일은 /var/log/httpd 에 있다.
2. PHP 설치
-
패키지를
yum update -y로 업데이트 한다.- 인터넷 상태에 따라 시간이 조금 걸린다.
-
데이터베이스 및 PHP 관련 저장소를 추가한다.
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
-
yum install -y yum-utils로 yum 유틸 파일을 받는다. 이미 최신 버전이라면 안내 문구가 뜬다. -
php 7.3 버전을 저장소에 위해 yum에
yum-config-manager --enable remi-php73로 설정해준다.- 실습에는 5 버전이 아닌 7 버전이 필요해 따로 설정하였다.
- php 패키지와 추가 패키지를 받는다.
yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-mysqlnd php*-zip php*-dom php-xml php-intl php-mbstring- 설치 후에는
rpm -aq | grep php로 확인한다. 5, 7, 8버전이 모두 설치되어 있다. - https://hoing.io/archives/183 에서 나온 방법처럼 바로 버전 번호를 입력해서 해당 버전만 받을 수 있다.
- 설치 후에는
yum remove -y php5*로 php 5 버전을 삭제하고,rpm -aq | grep php로 5버전이 삭제되었는지 확인한다.- 상위 버전은 하위 버전을 포함하기 때문에 문제가 발생하지 않지만, 하위 버전은 상위 버전과 호환되지 않으므로 문제가 발생할 수 있어 주의해야 한다.
- /var/www/html/ 디렉터리에
gedit phpinfo.php로 php 파일을 생성한다.- 파일 내용은 연결 테스트를 위해
<?php phpinfo(); ?>만 입력한다.
- 파일 내용은 연결 테스트를 위해
- 웹서버 데몬을
systemctl restart httpd로 재실행한 뒤 http://리눅스ip주소/phpinfo.php 로 접속해서 PHP 도움말 화면이 뜨는지 확인한다.
3. MariaDB 설치
gedit /etc/httpd/conf/httpd.conf으로 /etc/httpd/conf/httpd.conf 파일의 내용을 수정한다.- 42번 라인에 기본 80 -> 5050으로 수정한다.
cd /etc/yum.repos.d로 /etc/yum.repos.d 디렉터리 이동 후에gedit MariaDB.repo파일을 생성하여 아래 내용을 작성한다.
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
- MariaDB를
yum install -y MariaDB로 설치한다.- 패키지를
rpm -aq | grep MariaDB로 확인한다.
- 패키지를
- MariaDB 서비스 데몬을
systemctl enable mariadb && systemctl start mariadb으로 활성화 및 재부팅해준다.- 서비스 데몬의 상태를
systemctl status mariadb로 확인한다.
- 서비스 데몬의 상태를
# mysql_secure_installation로 MariaDB의 암호 및 설정들을 초기화한다.
Enter current password for root (enter for none):
--초기 설정 암호는 없으므로 enter로 넘어감(있다면 입력)
Switch to unix_socket authentication [Y/n]:
-- 암호화 보안인증 여부. 실습에선 no로 설정
Change the root password? [Y/n]:
-- 관리자 암호 변경 여부. yes로 설정
-- yes로 설정했다면 암호를 입력한다.
Remove anonymous users? [Y/n]:
-- 기타 계정 삭제 여부. 상황에 따라 설정.
Disallow root login remotely? [Y/n]:
-- 관리자 계정으로 원격 접속 허용 차단 여부. 실습에선 no로 설정
Remove test database and access to it? [Y/n]:
-- 테스트용 DB 삭제 및 접근 여부.
Reload privilege tables now? [Y/n]:
-- 관리자 권한으로 DB 재실행 여부. yes로 설정.
-- Thanks for using MariaDB! 가 뜨면 설정이 완료된다.
# mysql -u root -p로 MariaDB를 관리자 계정으로 로그인 한 후, sql문으로 사용자를 추가한다.- sql문은 대소문자 구별이 없고, 명령어 마지막엔 항상 ";"를 넣어야 한다.
- SQL(Structured Query Language), DDL(Data Definition Language) 참고.
CREATE USER 'owncloud'@'%' IDENTIFIED BY '1234';
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY '1234';
CREATE USER 'owncloud'@'127.0.0.1' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
- 웹하드에서 사용할 데이터베이스를 생성한다.
CREATE DATABASE ownclouddb;
SHOW DATABASES; --해당 데이터베이스는 비어있다.
- 생성된 데이터베이스를 사용할 수 있는 유저에게 권한을 설정해준다. (퍼미션 부여)
GRANT ALL PRIVILEGES ON ownclouddb.* TO 'owncloud'@'%';
GRANT ALL PRIVILEGES ON ownclouddb.* TO 'owncloud'@'localhost';
GRANT ALL PRIVILEGES ON ownclouddb.* TO 'owncloud'@'127.0.0.1';
EXIT; -- MariaDB 종료
cd /var/www로 /var/www/ 디렉터리로 이동한 후, owncloud를wget https://download.owncloud.com/server/stable/owncloud-10.8.0.tar.bz2로 다운받는다.
-
받은 파일을
tar xvfj owncloud-10.8.0.tar.bz2로 압축 해제한다.- 파일 압축 명령어 참고.
-
디렉터리와 그 하위 디렉터리의 소유권을
chown -R apache:apache /var/www/owncloud로 변경한다.
- 웹하드 환경 설정을 만든다.
gedit /etc/httpd/conf.d/owncloud.conf로 /etc/httpd/conf.d/owncloud.conf 파일 생성 후 아래 내용을 입력 후 저장하고 종료한다.
Alias /owncloud "/var/www/owncloud/"
<Directory /var/www/owncloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv Home /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
</Directory>
-
웹서버 서비스를
systemctl restart httpd로 재실행한 뒤 http://localhost:5050/owncloud/ 혹은 http://ip주소:5050/owncloud/ 로 접속해서 연결을 확인한다. -
웹 페이지에서 접속이 되었다면 사용자를 생성 후 로그인한다.
- 로컬에서 /var/www/owncloud/data/사용자이름 위치 폴더에 사용자의 파일들이 저장된다.