소스 검색

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
 secret_name: 'secret'
2
 secret_name: 'secret'
3
 secret: '{{ secret_root + "/" + secret_name }}'
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
 selfoss_db_username: selfoss
8
 selfoss_db_username: selfoss
7
 selfoss_db_password: "{{ lookup('password', secret + '/' + 'selfoss_db_password length=32') }}"
9
 selfoss_db_password: "{{ lookup('password', secret + '/' + 'selfoss_db_password length=32') }}"
8
 selfoss_db_database: selfoss
10
 selfoss_db_database: selfoss
9
-selfoss_version: 2.16
11
+
12
+selfoss_version: 2.18
10
 
13
 
11
 selfoss_username: "{{ main_user_name }}"
14
 selfoss_username: "{{ main_user_name }}"
12
 # this is the sha512 hash of the desired password
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
 # must match values in roles/common
18
 # must match values in roles/common
16
 db_admin_username: 'postgres'
19
 db_admin_username: 'postgres'

+ 1
- 1
roles/news/tasks/main.yml 파일 보기

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

+ 95
- 41
roles/news/tasks/selfoss.yml 파일 보기

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
 - name: Set selfoss ownership
51
 - name: Set selfoss ownership
8
   action: file owner=root group=www-data path=/var/www/selfoss recurse=yes state=directory
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
 - name: Set selfoss permission
54
 - name: Set selfoss permission
12
   action: file path=/var/www/selfoss/{{ item }} mode=0775
55
   action: file path=/var/www/selfoss/{{ item }} mode=0775
13
   with_items:
56
   with_items:
14
     - data/cache
57
     - data/cache
15
     - data/favicons
58
     - data/favicons
59
+    - data/fulltextrss
16
     - data/logs
60
     - data/logs
17
-    - data/thumbnails
18
     - data/sqlite
61
     - data/sqlite
62
+    - data/thumbnails
19
     - public
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
 - name: Create database user for selfoss
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
 - name: Create database for selfoss
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
 - name: Install selfoss config.ini
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
 - name: Enable Apache rewrite module
91
 - name: Enable Apache rewrite module
51
   command: a2enmod rewrite creates=/etc/apache2/mods-enabled/rewrite.load
92
   command: a2enmod rewrite creates=/etc/apache2/mods-enabled/rewrite.load
59
   command: a2enmod expires creates=/etc/apache2/mods-enabled/expires.load
100
   command: a2enmod expires creates=/etc/apache2/mods-enabled/expires.load
60
   notify: restart apache
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
   notify: restart apache
117
   notify: restart apache
118
+  with_items: "{{ virtual_domains | json_query('[*].name') }}"
74
 
119
 
75
 - name: Install selfoss cronjob
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
 - name: Configure selfoss logrotate
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
 <VirtualHost *:80>
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
 </VirtualHost>
5
 </VirtualHost>
6
 
6
 
7
 <VirtualHost *:443>
7
 <VirtualHost *:443>
8
-    ServerName {{ selfoss_domain }}
9
-    SSLEngine On
8
+    ServerName {{ selfoss_subdomain }}.{{ item.name }}
10
 
9
 
10
+    SSLEngine               On
11
     DocumentRoot            /var/www/selfoss
11
     DocumentRoot            /var/www/selfoss
12
     Options                 -Indexes
12
     Options                 -Indexes
13
-
14
     ErrorLog                /var/log/apache2/selfoss.info-error_log
13
     ErrorLog                /var/log/apache2/selfoss.info-error_log
15
     CustomLog               /var/log/apache2/selfoss.info-access_log common
14
     CustomLog               /var/log/apache2/selfoss.info-access_log common
16
 
15
 

+ 11
- 10
roles/news/templates/var_www_selfoss_config.ini.j2 파일 보기

1
 ; see https://github.com/SSilence/selfoss/wiki/Configuration for more information about the configuration parameters
1
 ; see https://github.com/SSilence/selfoss/wiki/Configuration for more information about the configuration parameters
2
 [globals]
2
 [globals]
3
 db_type=pgsql
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
 db_port=5432
7
 db_port=5432
8
 db_prefix=
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
 items_perpage=50
11
 items_perpage=50
11
 items_lifetime=30
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
 salt=
16
 salt=
16
-public=0
17
+public=1
17
 rss_title=selfoss feed
18
 rss_title=selfoss feed
18
 rss_max_items=1000
19
 rss_max_items=1000
19
 rss_mark_as_read=0
20
 rss_mark_as_read=0
23
 anonymizer=
24
 anonymizer=
24
 use_system_font=1
25
 use_system_font=1
25
 readability=
26
 readability=
26
-share=gtfprdew
27
-wallabag=https://read.{{domain}}
27
+share=gtfprde
28
+wallabag=
28
 allow_public_update_access=0
29
 allow_public_update_access=0
29
 unread_order=
30
 unread_order=

Loading…
취소
저장