코드이그나이터4 클라우드에 배포하기 - 4 - 서버 환경 설정하기

고은연·2021년 11월 17일
0

writable 디렉토리 권한 바꾸기

writable 디렉토리는 코드이그나이터4에서 임시 파일을 저장하는 디렉토리입니다.
아파치는 데몬(윈도우에서 서비스처럼 백그라운드 실행)으로 실행된는데 반해, 코드이그나이터4가 설치된 디렉토리는 bitnami가 owner이기 때문에 데몬 프로세스 권한으로는 코드이그나이터4 디렉토리에 접근할 수 없습니다.
따라서 아무나 다 접근할 수 있도록 writable 디렉토리에 권한을 부여하겠습니다.

sudo chmod -R 777 /home/bitnami/htdocs/markdown-blog/writable/

ls /home/bitnami/htdocs/markdown-blog/ -alh로 권한이 잘 부여되었는지 확인해 봅니다.

drwxrwxrwx  7 bitnami bitnami 4.0K Oct 28 01:22 writable

잘 되었네요.

-R은 하위 디렉토리와 파일까지 모두 포함하라는 재귀(Recursive) 명령입니다.

리눅스에서 퍼미션은 읽기 r, 쓰기 w, 실행 x 로 표기하고, 가장 앞의 자리는 파일 유형(d일 경우 디렉토리, -일 경우 파일), 이후 3자리씩 끊어서 각각 소유자 권한, 그룹 소유자 권한, 일반 사용자 권한을 나타냅니다.
rwx를 숫자의 합으로 나타낼 수도 있는데요. r은 4, w는 2, x는 1입니다.
따라서 숫자 7은 4 + 2 + 1 으로 rwx 와 동일합니다.

777은 한자리씩 끊어서 소유자, 그룹소유자, 일반사용자를 나타내고 , 모두 7이므로 소유자, 그룹소유자, 일반사용자 모두 읽기 쓰기 실행이 가능하다는 뜻입니다.

PHP 익스텐션 설정 확인하기

익스텐션 설정을 변경하기 전에 익스텐션이 설치되어 있는지 확인해 보겠습니다.

php -m

비트나미 스택에서는 아래처럼 몇개가 보일꺼에요.

[PHP Modules]
intl
mbstring
mysqli
pdo_mysql
pdo_sqlite
sqlite3

그럼 이미 PHP가 빌트인 될 때 설치된 것이므로 추가로 활성화할 필요는 없습니다.

만약 모듈 목록에 익스텐션이 없다면 php.ini 파일 위치를 알아내야 합니다.

php --ini

php.ini 파일의 위치가 출력됩니다.

Configuration File (php.ini) Path: /opt/bitnami/php/lib
Loaded Configuration File:         /opt/bitnami/php/lib/php.ini
Scan for additional .ini files in: /opt/bitnami/php/etc/conf.d
Additional .ini files parsed:      (none)

/opt/bitnami/php/etc/php.ini 파일에서 익스텐션을 활성화시켜 줍시다. 활성화할 익스텐션은 intl, mbstring, mysqli, pdo_mysql, pdo_sqlite3, sqlite3 입니다.
intl, mbstring은 코드이그나이터 실행에 반드시 필요한 익스텐션이고 , mysqli는 데이터베이스 접속에 필요합니다. pdo_mysql은 PDO를 통해 MySQL에 접속하는 경우 사용되며, sqlite3는 테스트 코드 실행을 위해 필요하죠.

cp /opt/bitnami/php/etc/php.ini /opt/bitnami/php/etc/php.ini.bk
sudo nano /opt/bitnami/php/etc/php.ini

아래처럼 수정해 주세요.

extension=intl
;extension=imap
;extension=ldap
extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=snmp

;extension=soap
;extension=sockets
;extension=sodium
extension=sqlite3
;extension=tidy
;extension=xmlrpc
;extension=xsl

아파치 DOCUMENT_ROOT 설정하기

httpd.conf 수정하기

bitnami 스택에서 아파치의 설정을 담당하는 httpd.conf 파일은 /opt/bitnami/apache/conf/ 디렉토리에 위치합니다.
우선 실수할 경우를 대비해 복사본을 만들어 둡니다.

cd /opt/bitnami/apache/conf/
cp httpd.conf httpd.conf.bk

nano를 통해서 문서를 수정해 보겠습니다. nano는 리눅스에 기본적으로 포함된 편집기로, 개인적으로는 vim 보다 사용하기 편해서 자주 사용합니다.

nano httpd.conf

편집기가 열리면 아래의 두 라인을 수정합니다.

DocumentRoot "/opt/bitnami/apache/htdocs/"
<Directory "/opt/bitnami/apache/htdocs">

우리가 설정한 프로젝트 디렉토리로 바꿔주세요.

DocumentRoot "/opt/bitnami/apache/htdocs/markdown-blog/public/"
<Directory "/opt/bitnami/apache/htdocs/markdown-blog/public">

아래에 보면 AllowOverride None 항목이 있습니다. AllowOverride All 로 변경해 주세요.

AllowOverride 항목은 아파치의 .htaccess 파일을 이용해서 웹서버의 설정을 바꾸게 허용할 것인지 여부입니다.
AllowOverride All로 되어 있어야 코드이그나이터4에서 /컨트롤러/메소드/파라미터 형태의 Clean URL 을 사용할 수 있으므로 바꿔줍니다. 만약 AllowOverride None 이라면 웹사이트의 주소 체계가 http://호스트:포트/index.php?/컨트롤러/메소드/파라미터 형태로 보여지므로 좀 더 예쁜 URL 설정을 위해 바꿔줍시다.
모두 완성되었으면 ctrl + o 키를 눌러서 저장 후 ctrl + x 키를 눌러서 nano 편집기를 빠져나갑니다.

bitnami.conf 수정하기

비트나미 스택에서는 가상호스트를 설정하는 설정 파일이 /opt/bitnami/apache2/conf/bitnami/bitnami.conf 에 위치합니다.
가상 호스트란 아파치 서버 하나에 여러개의 포트를 이용해서 여러개의 웹 어플리케이션을 실행시킬 수 있는 겁니다.
예를 들어 http://URL 로 접속하면 마크다운 블로그 운영서버가 실행되고, http://URL:8080으로 접속하면 마크다운 블로그 테스트향 서버가 실행된다거나 하는 식입니다.
이걸 조금 더 응용하면 포트를 고정시키고 도메인별로 웹 어플리케이션을 분기하는 리버스 프록시로서 사용할 수도 있습니다.

우선 만약의 사태를 대비해 원본 파일을 백업합니다.

cd /opt/bitnami/apache2/conf/bitnami
cp bitnami.conf bitnami.conf.bk

nano bitnami.conf 로 편집기를 열고 아래의 두 라인을 수정합니다.

DocumentRoot "/opt/bitnami/apache/htdocs/"
<Directory "/opt/bitnami/apache/htdocs">

우리가 설정한 프로젝트 디렉토리로 바꿔주세요.

DocumentRoot "/opt/bitnami/apache/htdocs/markdown-blog/public/"
<Directory "/opt/bitnami/apache/htdocs/markdown-blog/public">

비트나미 아파치 재시작하기

아파치는 설정이 바뀌면 자동으로 웹서버가 인지하는 것이 아니라 한번 재시작이 필요합니다.
일반적인 리눅스에서 APM을 설치했을 경우 service httpd restart (centos) 혹은 service apache2 restart(우분투) 로 합니다만, 비트나미 스택에서는 전용 쉘스크립트가 준비되어 있습니다.
비트나미 스택에서 아파치를 재시작하려면 아래와 같이 실행하세요.

sudo /opt/bitnami/ctlscript.sh restart apache
sudo /opt/bitnami/ctlscript.sh restart php-fpm

Restarted apache 메시지가 보이면 성공입니다.

sudosuper user, 즉 관리자 권한으로 실행한다는 접두어입니다. 리눅스에서는 보안상 현재 사용자가 실제 관리자라고 하더라도 관리자 권한으로 접근하는 것을 명시해야 합니다.

Whoops

인스턴스의 IP를 웹브라우저에 입력해 봅니다.
Whoops! 가 나왔네요. 뭔가 기대랑 다른 화면이 나왔습니다.

다행히도 이 화면은 코드이그나이터4에서 내보내는 겁니다. app/Views/errors/html/production.php 파일에 정의되어 있죠.
따라서 아파치 설정은 잘 끝났고, 이제 코드이그나이터4의 설정이 남았다는 것을 짐작할 수 있습니다.

코드이그나이터 환경설정 변경하기

프로젝트 루트에 보면 .env 파일이 있는 것을 확인할 수 있습니다. 만약 없다면 env 파일을 복사해서 .env 파일로 쓰면 됩니다.

환경설정 부분을 production으로 변경합니다. production 환경에서는 오류 메세지가 상세하게 표시되지 않습니다.

CI_ENVIRONMENT = production

기본 주소를 설정합니다.
소스코드

app.baseURL = 'http://{서버 IP 주소}'

데이터베이스 정보를 설정합니다.
웹 콘솔이든, 터미널 프로그램이든 간에 라이트세일에 접속했다면 기본 어플리케이션 비밀번호를 알아낼 수 있습니다.

cat bitnami_application_password

.env 파일은 이렇게 바뀝니다.

database.default.hostname = localhost
database.default.database = ci4db
database.default.username = root
database.default.password = {라이트세일 기본 어플리케이션 암호}
database.default.DBDriver = MySQLi
profile
중년 아저씨. 10 + n년차 백엔드 개발자. 스타트업과 창업, 솔로프리너와 1인 기업에 관심 많아요.

0개의 댓글