⚠️ END OF LIFE NOTICE: Pico CMS is no longer maintained. The latest stable release was v2.1.4 (August 29, 2020). For new projects, consider actively maintained alternatives like Grav CMS, Typemill, HTMLy, or Automad.
This guide installs a minimal Pico CMS stack using Apache and PHP.
It supports Debian 10 to latest stable, Ubuntu LTS, and RHEL 9+ compatible systems.
- name: Install Pico CMS
hosts: picocms
become: true
vars:
pico_version: "2.1.4"
pico_root: /var/www/picocms
tasks:
- name: Install dependencies on Debian/Ubuntu
apt:
name:
- apache2
- php
- php-xml
- php-mbstring
- php-curl
- unzip
- wget
- curl
- git
- composer
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install dependencies on RHEL family
dnf:
name:
- httpd
- php
- php-xml
- php-mbstring
- php-curl
- php-zip
- unzip
- wget
- curl
- git
- composer
state: present
when: ansible_os_family == "RedHat"
- name: Enable and start web service
service:
name: "{{ 'apache2' if ansible_os_family == 'Debian' else 'httpd' }}"
state: started
enabled: true
- name: Create Pico CMS root
file:
path: "{{ pico_root }}"
state: directory
mode: "0755"
- name: Install Pico CMS via Composer
command: composer create-project picocms/pico:{{ pico_version }} .
args:
chdir: "{{ pico_root }}"
become_user: "{{ ansible_user_id }}"
- name: Set ownership for web root
file:
path: "{{ pico_root }}"
state: directory
recurse: true
owner: "{{ 'www-data' if ansible_os_family == 'Debian' else 'apache' }}"
group: "{{ 'www-data' if ansible_os_family == 'Debian' else 'apache' }}"
- name: Set directory permissions
find:
paths: "{{ pico_root }}"
type: directory
mode: "0755"
- name: Set file permissions
find:
paths: "{{ pico_root }}"
type: file
mode: "0644"
After installation, create content by editing Markdown files:
# Create a new page
nano /var/www/picocms/content/index.md
Example content:
---
Title: Welcome
---
Welcome to my Pico CMS site!
We develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact