설치할 APM 버전

Apache : 2.4.6

PHP : 7.4

MySQL : 5.7

 

설치 전 필요한 패키지 설치

yum -y install curl-devel libpng \
libpng-devel libjpeg libjpeg-devel libwebp \
libwebp-devel libXpm libXpm-devel openssl \
openssl-devel autoconf curl zlib zlib-devel \
freetype freetype-devel gd gd-devel \
libjpeg libjpeg-devel libmcrypt libmcrypt-devel \
libtool-ltdl-devel libzip libzip-devel \
oniguruma-devel cmake gcc-c++ gcc \
libxml2-devel libxml2 libcurl libcurl-devel \
bzip2-devel sqlite-devel

Apache 설치

[jinhyeok@localhost ~]$ yum install -y httpd

PHP 설치

[jinhyeok@localhost ~]$ sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[jinhyeok@localhost ~]$ sudo yum -y install epel-release yum-utils
// 저장소 변경
[jinhyeok@localhost ~]$ sudo yum-config-manager --disable remi-php54
[jinhyeok@localhost ~]$ sudo yum-config-manager --enable remi-php74
// php 설치
[jinhyeok@localhost ~]$ sudo yum install -y php
[jinhyeok@localhost ~]$ sudo yum -y install php-fpm

// 다시 세팅해보니 이게 필요하네요
[jinhyeok@localhost ~]$ sudo yum install php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y
// php에 필요한 라이브러리 설치 이건 길어서 코드만 올려두겠습니다.
yum -y install php-fpm
um -y install  \
php-cli  \
php-redis  \
php-brotli \
php-intl \
php-gd \
php-gmp \
php-imap \
php-bcmath \
php-interbase \
php-json \
php-mbstring \
php-mysqlnd \
php-odbc \
php-opcache \
php-memcached \
php-tidy \
php-pdo \
php-pdo-dblib \
php-pear \
php-pgsql \
php-process \
php-pecl-apcu \
php-pecl-geoip \
php-pecl-imagick \
php-pecl-hrtime \
php-pecl-json \
php-pecl-memcache \
php-pecl-mongodb \
php-pecl-rar \
php-pecl-pq \
php-pecl-redis4 \
php-pecl-yaml \
php-pecl-zip


// Apache 재시작
[jinhyeok@localhost ~]$ systemctl restart httpd

// php-fpm 자동시작 등록
[jinhyeok@localhost ~]$ systemctl enable php-fpm

// php-fpm 시작
[jinhyeok@localhost ~]$ systemctl start php-fpm



MySQL 

// mysql 5.7 저장소에서 다운
[jinhyeok@localhost ~]$ sudo yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

// mysql server 다운
[jinhyeok@localhost ~]$ sudo yum -y install mysql-community-server

 

설치 후 나오는 화면

 

[jinhyeok@localhost home]$ ifconfig

 

sudo vi /etc/httpd/conf/httpd.conf

// ESC -> : -> set number 치고 엔터



=====================  httpd.conf  =====================
// 95번째 라인 주석 해제 후 이전 사진에 있는 할당된 ip 입력
95Line -> ServerName 192.168.10.129

119Line -> DocumentRoot "웹 서버로 사용할 디렉터리"
ex		-> DocumentRoot "/home/www/lab"

124Line -> <Directory "웹 서버로 사용할 이전 디렉터리?">
ex		-> <Directory "/home/www">

131Line -> <Directory "웹 서버로 사용할 디렉터리">
ex		-> <Directory "/home/www/lab">

164Line -> DirectoryIndex index.php index.html

// ESC -> : -> wq 치고 엔터

//아래 httpd 재시작 명령어는 해당 디렉터리가 없거나 디렉터리 안에 파일이 없으면 에러남
sudo systemctl restart httpd
sudo systemctl restart php-fpm

 

여기서 403이 뜨는 경우에는 selinux 체크를 해볼 것

 

Composer 설치

[jinhyeok@localhost ~]$ curl -sS https://getcomposer.org/installer | php
[jinhyeok@localhost ~]$ sudo mv composer.phar /usr/local/bin/composer
[jinhyeok@localhost ~]$ composer -v

// composer -v가 안될때
[jinhyeok@localhost ~]$ sudo PATH=$PATH:/usr/local/bin/


[jinhyeok@localhost ~]$ cd /home/www/
[jinhyeok@localhost www]$ sudo rm -rf ./lab

// 라라벨 인스톨러 다운로드
[jinhyeok@localhost www]$ sudo composer global require laravel/installer

[jinhyeok@localhost www]$ composer create-project --prefer-dist laravel/laravel lab

// 권한 확인
[jinhyeok@localhost www]$ ll

// 저같은 경우는 jinhyeok이라는 계정으로 설치를 했기 때문에 그룹권한을 apache로 바꿔주겠습니다
[jinhyeok@localhost www]$ sudo chown -R apache:apache ./lab
// storage와 bootstrap/cache디렉터리의 읽기쓰기 권한도 바꿔주겠습니다.
[jinhyeok@localhost www]$ sudo chmod -R 775 ./lab/storage/
[jinhyeok@localhost www]$ sudo chmod -R 775 ./lab/bootstrap/cache/

// httpd.conf에 가서 디렉토리 경로를 바꿔줍니다
// 프레임워크를 받은 디렉토리 안으로 들어가면 public 폴더가 있습니다.
[jinhyeok@localhost www]$ sudo vi /etc/httpd/conf/ httpd.conf

================== httpd.conf ==================
// 라인 넘버를 보기 위해 치는 명령어?
ESC -> : -> set number -> 엔터

119Line -> DocumnetRoot "디렉토리 경로/프로젝트이름/public"
ex 		-> DocumentRoot "/home/www/lab/public"

131Line -> <Directory "/디렉토리 경로/프로젝트이름/public">
ex		-> <Directory "/home/www/lab/public">

 

SSH를 이용해 원격 접속이 가능하도록 셋팅해보자 :D

우선 SSH를 설치하기 전에 yum에 ssh가 있는지 확인해본다.

 

터미널을 열고 다음과 같은 명령어를 입력한다

[root@localhost ~]# yum list | grep ssh

!14는 history명령어를 입력했을 때 나오는 해당 번호를 실행시켜주는 명령어(?)다

저기서 나는 openssh-server를 사용할 생각이라 아래에 있는 명령어로 설치해준다.

[root@localhost ~]# yum install -y openssh-server

이유는 모르겠는데 자동으로 설치되어 있었다..

설치 후 자동 실행을 위해 서비스 등록을 해준다

[root@localhost ~]# systemctl enable sshd

Created~~~가 안뜨고 바로 입력 대기(?)를 하면 이미 연결되어 있는겁니다.

 

이후 서비스 시작을 하고 서비스가 동작하고 있는지 확인해보자

// 서비스 등록
[root@localhost ~]# systemctl start sshd
// 서비스 상태 보기
[root@localhost ~]# systemctl status sshd

22번 포트를 사용하고 있는걸 볼 수 있다. 이제 IP를 확인하고 PuTTY에서 연결해보자

 

PuTTY는 아래의 링크에서 받을 수 있다.

www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

Download PuTTY: latest release (0.74)

This page contains download links for the latest released version of PuTTY. Currently this is 0.74, released on 2020-06-27. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel

www.chiark.greenend.org.uk

 

IP확인을 해보자

[root@localhost ~]# ifconfig

 

 

위의 사진에 나와있는 inet 192.168.10.128이 내가 들어갈 IP주소이다

 

위처럼 IP번호와 포트를 적어주고 Open을 누르면 연결이 된다.

아이디와 패스워드를 입력하면 다음과 같은 결과가 나온다

 

포트 변경

22번 포트는 잘 알려져 있다 그래서 보안에 별로 좋지 않다고 한다

 

포트 변경할 파일은 /etc/ssh/sshd_config에 있다

 

다음과 같은 명령어를 입력하여 vi편집기로 내용을 보자

vi /etc/ssh/sshd_config

라인 번호를 보고 싶으면 esc -> : -> set number를 치고 엔터를 누르자

17번 라인에 #Port 22로 주석처리가 되어 있다

 

포트 번호를 30032로 바꿔보자

esc -> :17 엔터 후 포트 변경 -> esc -> wq(저장 및 종료)

 

vi에디터를 모르면 아래 링크를 클릭해서 보고오자

 

www.guru99.com/the-vi-editor.html

 

VI Editor with Commands in Linux/Unix Tutorial

Details Last Updated: 02 March 2021 What is the VI editor? The VI editor is the most popular and classic text editor in the Linux family. Below, are some reasons which make it a widely used editor – 1) It is available in almost all Linux Distributions 2)

www.guru99.com

 

이렇게 ssh의 포트 변경은 끝이 났고 이제 firewall의 포트를 열어줘야 한다

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=30032/tcp // 포트 열어줌
[root@localhost ~]# firewall-cmd --reload // firewall 재시작

 

잘 열려있는지 포트를 확인해 보자

firewall-cmd --list-all

 

SSH를 재시작 해주자

[root@localhost ~]# systemctl restart sshd

만약 에러가 나면 아래와 같은 명령어를 쳐서 로그(?)를 보자

[root@localhost ~]# journalctl -xe

나 같은 경우는 이런 글이 쓰여져 있었다

SELinux를 안꺼서 생긴 일이였다 이제 SELinux를 해제해보자

[root@localhost ~]# vi /etc/selinux/config

왼쪽 라인 번호는 esc->:set number -> enter

편집기로 들어가면 위의 이미지가 나오는데 7번라인의 SELINUX=enforcing을 SELINUX=disabled로 바꿔주고 저장 후 재부팅해준다.

 

재부팅이 끝나면 sshd의 상태를 보기 위해 다음과 같은 명령어를 쳐준다

[root@localhost ~]# systemctl status sshd

우측 하단을 보면 30032포트가 열린걸 확인할 수 있다.

 

다시 PuTTY로 들어가보자

 

22번 포트로 들어갔을 경우 연결이 안되는것을 확인할 수 있다.

다음과 같이 쳐보자

Open을 누르면 다음과 같은 창이 뜨는데 예(Y)를 클릭해준다.

 

터미널(?)이 열리고 아이디와 패스워드를 입력하면 연결이 된다.

 

'Linux > RHEL-CentOS8' 카테고리의 다른 글

[RHEL/CentOS8] 방화벽(firewalld) 설정  (0) 2021.03.14

어쩌다 보니 RHEL4로 키워드 랩 개발을 하게 되었다.

 

그래서 vsftpd를 2.3.2버전으로 설치하였는데 pam이 제대로 동작하지를 않아서 git을 써보기로 했다

 

현재 개발하는 서버는 wget, yum 같은 명령어들을 사용하질 못해서 찾아본 결과 압축 파일이 있었다.

git tar.gz는 아래 링크에서 받을 수 있다

 

https://www.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

 

받고 나서 다음과 같은 명령어를 입력해서 설치했다

// 압출 풀기
tar xvzf git-2.26.2.tar.gz

// git-2.26.2 디렉토리에 들어가서 실행 
./configure && make && make install

// 설치가 끝나면 version 확인
git --version

설치가 끝나고 나서 테스트로 깃 클론을 하려고 하니 다음과 같은 에러가 발생했다.

 

/usr/local/libexec/git-core/git-remote-https: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

 

libcurl.so.4가 없다고 말해서 find 명령어로 찾아보니 잘 나오기만 한다..

 

파일이 어디에 있는지 정확한 위치를 못찾아서 에러를 발생시키는 것 같아 구글링을 해본 결과 /etc/ld.so.conf에 파일이 존재하는 디렉토리를 등록해주면 된다.

 

위의 이미지에 있는 ld.so.conf파일의 내용을 보면 include ld.so.conf.d 디렉토리의 모든 .conf 파일을 포함하고 있다.

그래서 ll명령어로 디렉토리 내부에 있는 것을 봤더니 다음의 결과가 나왔다

다음과 같은 명령어로 적용을 시켰더니 libcurl.so.4는 해결되었다..

vi /etc/ld.so.conf.d/libcurl.conf	// 파일 생성

////////////////    libcurl.conf   ////////////////////
/usr/local/lib		//libcurl.conf에 libcurl.so.4가 존재하는 디렉토리 경로 입력 후 저장
///////////////////////////////////////////////////////

ldconfig // 적용

 

해결한 후 다시 git clone을 쳐보니 또 다음과 같은 에러가 생겼다.....

SSL certificate problem: unable to get local issuer certificate

이것도 구글링을 통해 간단하게 해결할 수 있었다

git config --global http.sslVerify false

위의 명령어는 ssl인증서검사를 안 하겠다는 뜻인데 --global을 줄 경우 모든 저장소에 대해 인증서 검사를 안하게 되어 보안에 문제가 생긴다 되도록 --local을 사용하는걸 추천..

 

아무튼 이제 git clone을 하면 잘 받아와진다

집에서 개인 서버를 만들기 위해 최신 버전으로 서버를 구축하는데 iptables로 동작하질 않아서 찾아봤더니  

RHEL7/CentOS7부터 iptables로 방화벽을 관리하는 것이 아닌 firewalld로 변경되었다고 한다 (ㅜㅜ)

 

혹시 모르니 터미널에서 다음과 같은 명령어를 입력해보자

systemctl status iptables

 

명령어를 쳤을 때의 결과

그럼 다음과 같은 명령어를 입력해보자

systemctl status firewalld

명령어를 쳤을 때의 결과

 

방화벽(firewalld)가 없을 경우

1. yum으로 firewalld를 설치한다

yum install firewalld

저 같은 경우는 기본적으로 설치되어 있습니다.

2. firewalld를 시작한다

systemctl start firewalld

3. 서버를 킬 때 자동으로 시작하기 위해 서비스 등록을 해준다

systemctl enable firewalld

 

설정파일

zone 관련 파일 : /usr/lib/firewalld/

시스템 개별 설정 파일 : /etc/firewalld/

default zone, firewall 관련 파일 : /etc/firewalld/firewalld.conf

public zone 관련 파일 : /etc/firewalld/zones/public.xml ( root 권한 필요 )

 

서비스 등록

서비스 추가는 아래와 같이 추가할 수 있다 

firewall-cmd --premanent --zone=public --add-service=http
firewall-cmd --premanent --zone=public --add-service=https

 

서비스 삭제

firewall-cmd --permanent --zone=public --remove-service=http

 

포트 등록

특정 포트를 열어서 서비스를 해야 할 때가 있다

firewall-cmd --permanent --zone=public --add-port=80/tcp

포트 여러개 등록할 때 ( 50000 ~ 50010 까지 tcp로 포트 엶)

firewall-cmd --permanent --zone=public --add-port=50000-50010/tcp

이제 등록한 포트를 확인해보자

cat /etc/firewalld/zones/public.xml

 

포트 삭제

firewall-cmd --permanent --zone=public --remove-port=80/tcp

 

특정 ip 허용

특정 ip를 허용하여 서비스 등록을 할 수 있다.

firewall-cmd--permanent --add-source=192.168.10.110

특정 ip 제거

sudo firewall-cmd --permanent --remove-source=192.168.10.110

서비스 재시작

firewall-cmd --reload

'Linux > RHEL-CentOS8' 카테고리의 다른 글

[RHEL/CentOS8] ssh 설정  (0) 2021.03.16

+ Recent posts