=== 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
ServerAdmin admin@example.com
DocumentRoot /var/www/piwigo
ServerName piwigo.example.com
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/piwigo_error.log
CustomLog ${APACHE_LOG_DIR}/piwigo_access.log combined
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
모두 적용했다면 \\
**도구 > 유지보수 > 환경** 에서\\
아래와 같이 \\
환경 항목에 "그래픽 라이브러리: **External ImageMagick x.x.xx-xx**", \\
활성화된 플러그인 목록에 **"VideojS"** \\
항목이 있는지 확인
{{.:pasted:20251224-055830.png}}
=== Multisite 설정 ===
하나의 Piwigo 여러개의 독립된 인스턴스 운영을 하는 방법\\
[[https://github.com/Piwigo/Piwigo/wiki/Multiple-Site-%28Multisite%29|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;
또는 [[https://piwigo.org/forum/viewtopic.php?id=22173|포럼 게시물 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)은 다음에 나오는 것을 제거하는 역할입니다.
* 다중 슬래시 (/)
* 처음과 마지막에 붙는 슬래시들
* %%./, ../, .../%% 등등 디렉터리 표시
잘 되길 바랍니다.
== 멀티 사이트 설치 후에 수정 ==
**멀티사이트를 설치하기 전에 위에 기술한 수정사항을 적용했다면 아래의 내용을 적용하지 마십시오.**\\
구글링 하면서 한것이라 깔끔하지 못함 주의!\\
관리자 > 도구 > 동기화하기 > 사이트 관리자 > 새 사이트 만들기 \\
디렉토리 입력칸이 ''.''입력 후 \\
''./galleries//gallieries/'' 와 같이 디렉토리 추가 확인 \\
다음과 같이 테이블 내용 수정
mariadb -u piwigo_user -p
USE piwigo; # 설치한 데이터베이스로 변경
SELECT * FROM _piwigo_sites; # 는 멀티사이트 설정시에 입력한 값
DELEETE FROM _piwigo_sites WHERE id = 1; # 기본으로 설정된 ROOT Piwigo 갤러리위치가 기록된 행, 위에 SELECT 구문으로 확인
UPDATE TABLE set id = 1 WEHRE id = 2; # 설정, site_admin.php 수정후 생성한 갤러리를 기본으로 설정
quit;
사이트 관리자 화면을 새로고침해서 정상적으로 설정되었는지 확인 \\
모든 적용되면 {{.:pasted:20251231-115925.png}} 이런식으로 동기화하기 옆에 삭제 버튼이 없어야 합니다.
=== 설치후기 ===
생각보다 쉽게 설치가 가능하고 많은 플러그인과 간결한 UI로 편리합니다.\\
N40L에서 처음에 5000장 정도의 사진을 한번에 처리하느라 고생했지만 \\
일상적으로 몇 장씩 추가한다면 잘 작동합니다.\\
위에서 기술한 설정 변경과 패치를 적용해도 최상위 Piwigo에서 galleries 전체를 읽어들이는 문제는 여전함으로 galleries가 아니 piwigo 하위에 multisite 전용 디렉토리를 마련하고 거기에 각 사이트를 생성하는 것이 좋아보입니다.