문서의 이전 판입니다!
선택한 페이지
선택에서 페이지가 제거됨
Piwigo 설치
Debian 13 기준으로 작성.
설치, 운영에 필요한 패키지 설치
# 패키지 설치 전 시스템 업데이트
sudo apt update && sudo apt upgrade
# 아파치, MariaDB, PHP 및 동영상 처리 관련 필수 모듈 설치
sudo apt install apache2 mariadb-server ffmpeg imagemagick libimage-exiftool-perl mediainfo zip
sudo apt install php{,-{common,gd,mysql,curl,mbstring,xml,zip,imagick,bcmath}}
설치할 디렉토리 생성 및 권한 설정
sudo bash -c "mkdir /var/www/piwigo && chown www-data:www-data piwigo && chmod 755 piwigo"
아파치 VHost 설정
sudo nano /etc/apache2/sites-available/piwigo.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/piwigo
ServerName piwigo.example.com
<Directory /var/www/piwigo>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/piwigo_error.log
CustomLog ${APACHE_LOG_DIR}/piwigo_access.log combined
</VirtualHost>
sudo a2ensite piwigo.conf
sudo a2enmod rewrite
sudo apache2ctl restart
PHP 설정
업로드 크기 제한, 메모리 사용, 실행 시간 제한을 조정
sudo nano /etc/php/8.2/apache2/php.ini
upload_max_filesiz = 500M
post_max_size = 520M
memory_limit = 1024M
max_excution_time = 600
sudo apache2ctl restart
MariaDB 설정
MariaDB를 처음 설치했다면 다음과 같이 보안 관련 설정을 진행
sudo mariadb-secure-installation
Piwigo 데이터베이스 생성 및 설정
sudo mysql -u root -p
CREATE DATABASE piwigo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'piwigo_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON piwigo.* TO 'piwigo_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Piwigo 설치
sudo wget -O piwigo.zip https://www.piwigo.org/download/dlcounter.php?code=latest
sudo unzip -d /var/www piwigo.zip
sudo chown -R www-data:www-data /var/www/piwigo
Piwigo 설치
아파치 가상 호스트 설정에서 지정한 URL로 접속
정상적으로 설치 페이지가 나온다면 필요한 정보 입력
Piwigo 설정
필수 플러그인 : LocalFiles Editor, VideojS
LocalFiles Editor > Settings > Locfiledit.onglet_localcofn
<?php
/* locfiledit_newfile */
// 이미지 크기조정에 사용하는 라이브러리 설정
// 설정 가능한 겂은 'auto', 'imagick', 'ext_imagick' or 'gd'이며
// 'auto'를 선택하면 위에 나열한 순서대로 확인하면 설치되어 있는 것을 사용합니다.
// HEIC 파일을 위해서 ext_imagick 선택
$conf['graphics_library'] = 'ext_imagick';
// ImageMagick ('ext_imagick') 설치 디렉토리 설정
// 아래의 위치는 데비안 기준입니다.
$conf['ext_imagick_dir'] = '/usr/bin/';
// 동영상 미리보기를 위해서 FFMPEG 실행파일 디렉토리 설정
// 아래의 위치는 데비안 기준입니다.
$conf['ffmpeg_dir'] = '/usr/bin/';
// HEIC, MP4, PDF 등을 위한 설정
$conf['upload_form_all_types'] = true;
$conf['file_ext'] = array_merge(
$conf['picture_ext'],
array('jpg','jpeg','png','gif','heic','mp4','webmv','m4v','webm', 'mov', 'pdf','ai','psd','eps')
);
?>
모두 적용했다면
도구 > 유지보수 > 환경 에서
아래와 같이
환경 항목에 “그래픽 라이브러리: External ImageMagick x.x.xx-xx”,
활성화된 플러그인 목록에 “VideojS”
항목이 있는지 확인
Multisite 설정
하나의 Piwigo 여러개의 독립된 인스턴스 운영을 하는 방법
Mulitple Site (Multisite) 참고
다중 사이트 (Multisite)
다중 사이트는 Piwigo 2.2에서 추가된 한번의 Piwigo 설치로 여러개의 갤러리를 운영하는 기능입니다. Piwigo.com에서는 수천개의 갤러리들을 하나의 설치본으로 운영하고 있습니다.
데이터베이스
각 갤러리마다 하나의 데이터베이스를 사용하거나 같은 데이터베이스에 테이블 접두사만 다르게해서 여러 갤러리가 사용하는 것이 가능합니다.
Piwigo files
Piwigo 파일을 다운로드 받고 서버가 운용될 위치(ex /var/www/piwigo)에 압축 해제 하십시오.
웹서버 설정 (Apache기준)
서브 디렉토리 방식으로 한다면 처음 코드를, 서브도메인 방식으로 한다면 두번째의 코드를 참고해서 아파치 설정 파일을 작성합니다.
# 서브디렉터리 방식: 디렉터리 별칭이 모두 Piwigo 설치 위치를 참고합니다.
Alias /gallery1 /var/www/piwigo
Alias /gallery2 /var/www/piwigo
# 서브도메인 방식: 서버 별칭이 모두 Piwigo 서브 도메인은 참고합니다.
ServerName piwigo.yourdomain.com
ServerAlias gallery1.yourdomain.com
ServerAlias gallery2.yourdomain.com
사이트 디렉터리
/var/www/piwigo/gallery1, /var/www/piwigo/gallery2를 생성하고 개별 운영에 필요한 디렉터리를 추가로 생성, 그리고 소유권과 모드를 조정합니다.
우선 1번 갤러리를 설정하고
mkdir /var/www/piwigo/gallery1
cd /var/www/piwigo/gallery1
mkdir -p local/config _data upload
chown -R www-data:www-data .
이어서 2번 갤러리도 설정합니다.
mkdir /var/www/piwigo/gallery1
cd /var/www/piwigo/gallery1
mkdir -p local/config _data upload
chown -R www-data:www-data .
그리고 필요한 만큼 동일하게 설정합니다.
멀티사이트 활성화
처음 Piwigo를 설치한 디렉터리에서 local/conf/config.inc.php 파일에 다음과 같은 내용을 추가합니다.
if (preg_match('#^/gallery1#', $_SERVER['SCRIPT_NAME']))
#if (preg_match('/^gallery1.yourdomain.com$/', $_SERVER['SERVER_NAME']))
{
$site_dir = 'gallery1';
}
elseif (preg_match('#^/gallery2#', $_SERVER['SCRIPT_NAME']))
#elseif (preg_match('/^gallery2.yourdomain.com$/', $_SERVER['SERVER_NAME']))
{
$site_dir = 'gallery2';
}
if (isset($site_dir))
{
define('PWG_LOCAL_DIR', $site_dir.'/local/');
$conf['upload_dir'] = './'.$site_dir.'/upload';
$conf['data_location'] = $site_dir.'/_data/';
# in case there is a specific configuration file for each "site"
@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR. 'config/config.inc.php');
}
이 방식은 Piwigo가 현재 gallery1 또는 gallery2를 실행하는지 어떻게 이해할 수 있는지 확인하는 것입니다. 이 예시에서는 $_SERVER['SCRIPT_NAME'] 변수를 사용했습니다. 웹 서버 또는 $_SERVER['SERVER_NAME'] 변수의 서버 이름(특정 하위 도메인을 검색하는 경우)에서 설정한 환경 변수를 사용할 수도 있습니다. 별칭 또는 서버 이름이 일치하지 않으면 처음 설치한 위치에 있는 기본 갤러리를 사용합니다.
설치
이제 각각의 Piwigo 갤러리: http://yourdomain.com/gallery1, http://yourdomain.com/gallery2 또는 http://gallery1.yourdomain.com/, http://gallery2.yourdomain.com/ 로 이동해서 각각의 설치를 진행합니다. 명심해야 하는 것은 http://yourdomain.com/piwigo 이나 http://piwigo.yourdomain.com/ 형식으로 접근이 가능한 기본 갤러리가 있어야 한다는 사실입니다.
물리 앨범
Multisites의 Physical Albums (일명 Synchronization)는 아직 (평균 버전 2.5.1)가 바로 사용할 수는 없습니다. 그건 galleries 디렉토리에 있는 모든 것을 의미합니다. 여기서 주요 문제는 설치의 모든 멀티사이트가 이 디렉토리를 공유하고 있다는 것입니다. 다른 문제는 현재 코드 디렉토리 traversals를 사용하면 다른 갤러리를 가져올 수 있다는 것입니다.
로컬/config/config.inc.php에서 다음 코드 스니펫으로 동기화를 비활성화합니다.
사진 추가를 위한 동기화 방법 비활성화
$conf['enable_synchronization'] = false;
또는 포럼 게시물 22173에 설명 된대로 코드를 수정, 물리적 앨범은 멀티 사이트 저장되지 않도록 하는 방법이 있습니다.
멀티사이트를 위한 동기화 개조
galleries 디렉터리 경로가 upload_dir이나 data_locaction과 달리 설정 파일에서 정의되어 있지 않기 때문에 $conf변수에 site_dir을 추가해야 합니다. 이미 위에서 기술한 if (isset($site_dir)) 블럭에 다음을 추가합니다.
$conf['site_dir'] = $site_dir;
그리고 admin/site_manager.php을 수정해서 멀티 사이트 설치시 gallieries에 필요한 접두사를 붙이도록 합니다. 설치한 뒤에 이 수정을 적용하면 이미 생성된 galleries에 자동으로 접두사가 붙지는 않습니다. 따라서 이미 설치한 경우에는 데이터베이스에서 prefix_piwigo_site 테이블도 수정해야 합니다.
--- admin/site_manager.php 2013-01-01 13:35:02.000000000 +0100
+++ admin/site_manager.php 2013-05-31 17:06:31.000000000 +0200
@@ -53,8 +58,12 @@
{
fatal_error('remote sites not supported');
}
- $url = preg_replace('/[\/]*$/', '', $_POST['galleries_url']);
+ $url = preg_replace(array('/\/+/', '/(\.+\/)|(^\/)|(\/$)/'), array('/', ''), $_POST['galleries_url']);
$url.= '/';
+ if (isset($conf['site_dir']))
+ {
+ $url = $conf['site_dir'] . '/' . $url;
+ }
if ( ! (strpos($url, '.') === 0 ) )
{
$url = './' . $url;
추가된 정규표현식(regex)은 다음에 나오는 것을 제거하는 역할입니다.
- 다중 슬래시 (/)
- 처음과 마지막에 붙는 슬래시들
- ./, ../, .../ 등등 디렉터리 표시
잘 되길 바랍니다.
멀티 사이트 설치 후에 수정
멀티사이트를 설치하기 전에 위에 기술한 수정사항을 적용했다면 아래의 내용을 적용하지 마십시오.
구글링 하면서 한것이라 깔끔하지 못함 주의!
관리자 > 도구 > 동기화하기 > 사이트 관리자 > 새 사이트 만들기
디렉토리 입력칸이 .입력 후 <Enter>
./galleries/<multisite name>/gallieries/ 와 같이 디렉토리 추가 확인
다음과 같이 테이블 내용 수정
mariadb -u piwigo_user -p
USE piwigo; # 설치한 데이터베이스로 변경
SELECT * FROM <prefix>_piwigo_sites; # <prefix>는 멀티사이트 설정시에 입력한 값
DELEETE FROM <prefix>_piwigo_sites WHERE id = 1; # 기본으로 설정된 ROOT Piwigo 갤러리위치가 기록된 행, 위에 SELECT 구문으로 확인
UPDATE TABLE set id = 1 WEHRE id = 2; # 설정, site_admin.php 수정후 생성한 갤러리를 기본으로 설정
quit;
사이트 관리자 화면을 새로고침해서 정상적으로 설정되었는지 확인 모든 적용되면
이런식으로 동기화하기 옆에 삭제 버튼이 없어야 합니다.
설치후기
생각보다 쉽게 설치가 가능하고 많은 플러그인과 간결한 UI로 편리합니다.
N40L에서 처음에 5000장 정도의 사진을 한번에 처리하느라 고생했지만
일상적으로 몇 장씩 추가한다면 잘 작동합니다.
위에서 기술한 설정 변경과 패치를 적용해도 최상위 Piwigo에서 galleries 전체를 읽어들이는 문제는 여전함으로 galleries가 아니 piwigo 하위에 multisite 전용 디렉토리를 마련하고 거기에 각 사이트를 생성하는 것이 좋아보입니다.