Преглед на файлове

Upgrade selfoss to current version. Use release to include php dependencies. Ensure data is saved between upgrades and re-runs.

Thomas Buck преди 5 години
родител
ревизия
387addc958

+ 6
- 3
roles/news/defaults/main.yml Целия файл

@@ -2,15 +2,18 @@ secret_root: '{{ inventory_dir | realpath }}'
2 2
 secret_name: 'secret'
3 3
 secret: '{{ secret_root + "/" + secret_name }}'
4 4
 
5
-selfoss_domain: "news.{{ domain }}"
5
+selfoss_subdomain: "news"
6
+selfoss_domain: "{{ selfoss_subdomain }}.{{ domain }}"
7
+
6 8
 selfoss_db_username: selfoss
7 9
 selfoss_db_password: "{{ lookup('password', secret + '/' + 'selfoss_db_password length=32') }}"
8 10
 selfoss_db_database: selfoss
9
-selfoss_version: 2.16
11
+
12
+selfoss_version: 2.18
10 13
 
11 14
 selfoss_username: "{{ main_user_name }}"
12 15
 # this is the sha512 hash of the desired password
13
-selfoss_password_hash: "{{ lookup('password', secret + '/' + 'selfoss_password_hash', length=32, crypt='sha512')|hash('sha512') }}"
16
+selfoss_password_hash: "{{ lookup('password', secret + '/' + 'selfoss_password_hash length=32') | hash('sha512') }}"
14 17
 
15 18
 # must match values in roles/common
16 19
 db_admin_username: 'postgres'

+ 1
- 1
roles/news/tasks/main.yml Целия файл

@@ -1 +1 @@
1
-- include: selfoss.yml tags=selfoss
1
+- include: selfoss.yml tags=selfoss

+ 95
- 41
roles/news/tasks/selfoss.yml Целия файл

@@ -1,51 +1,92 @@
1
-- name: Clone Selfoss
2
-  git: repo=https://github.com/SSilence/selfoss.git
3
-       dest=/var/www/selfoss
4
-       accept_hostkey=yes
5
-       version={{ selfoss_version }}
1
+- name: Install selfoss dependencies
2
+  apt:
3
+    name: "{{ packages }}"
4
+    state: present
5
+  vars:
6
+    packages:
7
+    - php
8
+    - php-pgsql
9
+    - php-gd
10
+    - curl
11
+    - unzip
12
+  tags:
13
+    - dependencies
14
+
15
+- name: Create Selfoss temp directory
16
+  file: path=/root/selfoss state=directory
17
+
18
+- name: Download Selfoss-{{ selfoss_version }}
19
+  get_url:
20
+    url=https://github.com/SSilence/selfoss/releases/download/{{ selfoss_version }}/selfoss-{{ selfoss_version }}.zip
21
+    dest=/root/selfoss/selfoss-{{ selfoss_version }}.zip
22
+
23
+- name: Create Selfoss unpack directory
24
+  file: path=/root/selfoss/selfoss-{{ selfoss_version }} state=directory
25
+
26
+- name: Extract Selfoss archive
27
+  unarchive:
28
+    copy: no
29
+    src: /root/selfoss/selfoss-{{ selfoss_version }}.zip
30
+    dest: /root/selfoss/selfoss-{{ selfoss_version }}/
31
+    creates: /root/selfoss-{{ selfoss_version }}/index.php
32
+
33
+- name: Back-Up old Selfoss data
34
+  shell: cp -r /var/www/selfoss/data /root/selfoss/data_bak || true
35
+
36
+- name: Delete old Selfoss document root
37
+  file: path=/var/www/selfoss state=absent
38
+
39
+- name: Copy Selfoss source to document root
40
+  shell: cp -r /root/selfoss/selfoss-{{ selfoss_version }} /var/www/selfoss
41
+
42
+- name: Delete empty Selfoss data
43
+  file: path=/var/www/selfoss/data state=absent
44
+
45
+- name: Restore old Selfoss data
46
+  shell: cp -r /root/selfoss/data_bak /var/www/selfoss/data || cp -r /root/selfoss/selfoss-{{ selfoss_version }}/data /var/www/selfoss/data
47
+
48
+- name: Delete old Selfoss source
49
+  file: path=/root/selfoss state=absent
6 50
 
7 51
 - name: Set selfoss ownership
8 52
   action: file owner=root group=www-data path=/var/www/selfoss recurse=yes state=directory
9 53
 
10
-# only data/cache, data/favicons, data/logs, data/thumbnails, data/sqlite public/ should be writeable by httpd
11 54
 - name: Set selfoss permission
12 55
   action: file path=/var/www/selfoss/{{ item }} mode=0775
13 56
   with_items:
14 57
     - data/cache
15 58
     - data/favicons
59
+    - data/fulltextrss
16 60
     - data/logs
17
-    - data/thumbnails
18 61
     - data/sqlite
62
+    - data/thumbnails
19 63
     - public
20 64
 
21
-- name: Install selfoss dependencies (PHP5 variant)
22
-  apt: pkg={{ item }} state=present
23
-  with_items:
24
-    - php5
25
-    - php5-pgsql
26
-    - php5-gd
27
-  when: (ansible_distribution_release != "xenial" and ansible_distribution_release != "bionic" and ansible_distribution_release != "stretch")
28
-  tags:
29
-    - dependencies
30
-
31
-- name: Install selfoss dependencies
32
-  apt: pkg={{ item }} state=present
33
-  with_items:
34
-    - php
35
-    - php-pgsql
36
-    - php-gd
37
-  when: (ansible_distribution_release == "xenial" or ansible_distribution_release == "bionic" or ansible_distribution_release == "stretch")
38
-  tags:
39
-    - dependencies
40
-
41 65
 - name: Create database user for selfoss
42
-  postgresql_user: login_host=localhost login_user={{ db_admin_username }} login_password="{{ db_admin_password }}" name={{ selfoss_db_username }} password="{{ selfoss_db_password }}" state=present
66
+  postgresql_user:
67
+    login_host=localhost
68
+    login_user={{ db_admin_username }}
69
+    login_password="{{ db_admin_password }}"
70
+    name={{ selfoss_db_username }}
71
+    password="{{ selfoss_db_password }}"
72
+    state=present
43 73
 
44 74
 - name: Create database for selfoss
45
-  postgresql_db: login_host=localhost login_user={{ db_admin_username }} login_password="{{ db_admin_password }}" name={{ selfoss_db_database }} state=present owner={{ selfoss_db_username }}
75
+  postgresql_db:
76
+    login_host=localhost
77
+    login_user={{ db_admin_username }}
78
+    login_password="{{ db_admin_password }}"
79
+    name={{ selfoss_db_database }}
80
+    state=present
81
+    owner={{ selfoss_db_username }}
46 82
 
47 83
 - name: Install selfoss config.ini
48
-  template: src=var_www_selfoss_config.ini.j2 dest=/var/www/selfoss/config.ini group=www-data owner=root mode=0640
84
+  template:
85
+    src=var_www_selfoss_config.ini.j2
86
+    dest=/var/www/selfoss/config.ini
87
+    owner=root
88
+    group=www-data
89
+    mode=0640
49 90
 
50 91
 - name: Enable Apache rewrite module
51 92
   command: a2enmod rewrite creates=/etc/apache2/mods-enabled/rewrite.load
@@ -59,21 +100,34 @@
59 100
   command: a2enmod expires creates=/etc/apache2/mods-enabled/expires.load
60 101
   notify: restart apache
61 102
 
62
-- name: Rename existing Apache blog virtualhost
63
-  command: mv /etc/apache2/sites-available/selfoss /etc/apache2/sites-available/selfoss.conf removes=/etc/apache2/sites-available/selfoss
64
-
65
-- name: Remove old sites-enabled/selfoss symlink (new one will be created by a2ensite)
66
-  file: path=/etc/apache2/sites-enabled/selfoss state=absent
103
+- name: Create the Apache sites config files
104
+  template:
105
+    src=etc_apache2_sites-available_selfoss.j2
106
+    dest=/etc/apache2/sites-available/selfoss_{{ item.name }}.conf
107
+    owner=root
108
+    group=root
109
+  with_items: "{{ virtual_domains }}"
67 110
 
68
-- name: Configure the Apache HTTP server for selfoss
69
-  template: src=etc_apache2_sites-available_selfoss.j2 dest=/etc/apache2/sites-available/selfoss.conf group=root owner=root
111
+- name: Remove old sites-enabled symlinks (new ones will be created by a2ensite)
112
+  file: path=/etc/apache2/sites-enabled/selfoss_{{ item }}.conf state=absent
113
+  with_items: "{{ virtual_domains | json_query('[*].name') }}"
70 114
 
71
-- name: Enable the selfoss site
72
-  command: a2ensite selfoss.conf creates=/etc/apache2/sites-enabled/selfoss.conf
115
+- name: Enable Apache sites (creates new sites-enabled symlinks)
116
+  command: a2ensite selfoss_{{ item }}.conf creates=/etc/apache2/sites-enabled/selfoss_{{ item }}.conf
73 117
   notify: restart apache
118
+  with_items: "{{ virtual_domains | json_query('[*].name') }}"
74 119
 
75 120
 - name: Install selfoss cronjob
76
-  cron: name="selfoss" user="www-data" minute="*/5" job="curl --silent --show-error -k 'https://{{ selfoss_domain }}/update' > /dev/null"
121
+  cron:
122
+    name="selfoss"
123
+    user="www-data"
124
+    minute="*/5"
125
+    job="curl --silent --show-error -k 'https://{{ selfoss_domain }}/update' > /dev/null"
77 126
 
78 127
 - name: Configure selfoss logrotate
79
-  copy: src=etc_logrotate_selfoss dest=/etc/logrotate.d/selfoss owner=root group=root mode=0644
128
+  copy:
129
+    src=etc_logrotate_selfoss
130
+    dest=/etc/logrotate.d/selfoss
131
+    owner=root
132
+    group=root
133
+    mode=0644

+ 4
- 5
roles/news/templates/etc_apache2_sites-available_selfoss.j2 Целия файл

@@ -1,16 +1,15 @@
1 1
 <VirtualHost *:80>
2
-    ServerName {{ selfoss_domain }}
2
+    ServerName {{ selfoss_subdomain }}.{{ item.name }}
3 3
 
4
-    Redirect permanent / https://{{ selfoss_domain }}/
4
+    Redirect permanent / https://{{ selfoss_subdomain }}.{{ item.name }}/
5 5
 </VirtualHost>
6 6
 
7 7
 <VirtualHost *:443>
8
-    ServerName {{ selfoss_domain }}
9
-    SSLEngine On
8
+    ServerName {{ selfoss_subdomain }}.{{ item.name }}
10 9
 
10
+    SSLEngine               On
11 11
     DocumentRoot            /var/www/selfoss
12 12
     Options                 -Indexes
13
-
14 13
     ErrorLog                /var/log/apache2/selfoss.info-error_log
15 14
     CustomLog               /var/log/apache2/selfoss.info-access_log common
16 15
 

+ 11
- 10
roles/news/templates/var_www_selfoss_config.ini.j2 Целия файл

@@ -1,19 +1,20 @@
1 1
 ; see https://github.com/SSilence/selfoss/wiki/Configuration for more information about the configuration parameters
2 2
 [globals]
3 3
 db_type=pgsql
4
-db_database="{{selfoss_db_database}}"
5
-db_username="{{selfoss_db_username}}"
6
-db_password="{{selfoss_db_password}}"
4
+db_database="{{ selfoss_db_database }}"
5
+db_username="{{ selfoss_db_username }}"
6
+db_password="{{ selfoss_db_password }}"
7 7
 db_port=5432
8 8
 db_prefix=
9
-logger_level=DEBUG
9
+; use DEBUG to check for rss fetch errors, INFO to keep log smaller
10
+logger_level=INFO
10 11
 items_perpage=50
11 12
 items_lifetime=30
12
-base_url=
13
-username={{selfoss_username}}
14
-password={{selfoss_password_hash}}
13
+base_url=https://{{ selfoss_domain }}
14
+username={{ selfoss_username }}
15
+password={{ selfoss_password_hash }}
15 16
 salt=
16
-public=0
17
+public=1
17 18
 rss_title=selfoss feed
18 19
 rss_max_items=1000
19 20
 rss_mark_as_read=0
@@ -23,7 +24,7 @@ auto_mark_as_read=1
23 24
 anonymizer=
24 25
 use_system_font=1
25 26
 readability=
26
-share=gtfprdew
27
-wallabag=https://read.{{domain}}
27
+share=gtfprde
28
+wallabag=
28 29
 allow_public_update_access=0
29 30
 unread_order=

Loading…
Отказ
Запис