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 -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
메시지가 보이면 성공입니다.
sudo
는 super user
, 즉 관리자 권한으로 실행한다는 접두어입니다. 리눅스에서는 보안상 현재 사용자가 실제 관리자라고 하더라도 관리자 권한으로 접근하는 것을 명시해야 합니다.
인스턴스의 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