mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
93 lines
3.2 KiB
Python
93 lines
3.2 KiB
Python
import os
|
|
import glob
|
|
from shutil import copy2
|
|
from logging import getLogger
|
|
|
|
from yunohost.app import _is_installed
|
|
from yunohost.utils.legacy import _patch_legacy_php_versions_in_settings
|
|
from yunohost.tools import Migration
|
|
from yunohost.service import _run_service_command
|
|
|
|
logger = getLogger("yunohost.migration")
|
|
|
|
OLDPHP_POOLS = "/etc/php/7.3/fpm/pool.d"
|
|
NEWPHP_POOLS = "/etc/php/7.4/fpm/pool.d"
|
|
|
|
OLDPHP_SOCKETS_PREFIX = "/run/php/php7.3-fpm"
|
|
NEWPHP_SOCKETS_PREFIX = "/run/php/php7.4-fpm"
|
|
|
|
# Because of synapse é_è
|
|
OLDPHP_SOCKETS_PREFIX2 = "/run/php7.3-fpm"
|
|
NEWPHP_SOCKETS_PREFIX2 = "/run/php7.4-fpm"
|
|
|
|
MIGRATION_COMMENT = (
|
|
"; YunoHost note : this file was automatically moved from {}".format(OLDPHP_POOLS)
|
|
)
|
|
|
|
|
|
class MyMigration(Migration):
|
|
"Migrate php7.3-fpm 'pool' conf files to php7.4"
|
|
|
|
dependencies = ["migrate_to_bullseye"]
|
|
|
|
def run(self):
|
|
# Get list of php7.3 pool files
|
|
oldphp_pool_files = glob.glob("{}/*.conf".format(OLDPHP_POOLS))
|
|
|
|
# Keep only basenames
|
|
oldphp_pool_files = [os.path.basename(f) for f in oldphp_pool_files]
|
|
|
|
# Ignore the "www.conf" (default stuff, probably don't want to touch it ?)
|
|
oldphp_pool_files = [f for f in oldphp_pool_files if f != "www.conf"]
|
|
|
|
for pf in oldphp_pool_files:
|
|
# Copy the files to the php7.3 pool
|
|
src = "{}/{}".format(OLDPHP_POOLS, pf)
|
|
dest = "{}/{}".format(NEWPHP_POOLS, pf)
|
|
copy2(src, dest)
|
|
|
|
# Replace the socket prefix if it's found
|
|
c = "sed -i -e 's@{}@{}@g' {}".format(
|
|
OLDPHP_SOCKETS_PREFIX, NEWPHP_SOCKETS_PREFIX, dest
|
|
)
|
|
os.system(c)
|
|
c = "sed -i -e 's@{}@{}@g' {}".format(
|
|
OLDPHP_SOCKETS_PREFIX2, NEWPHP_SOCKETS_PREFIX2, dest
|
|
)
|
|
os.system(c)
|
|
|
|
# Also add a comment that it was automatically moved from php7.3
|
|
# (for human traceability and backward migration)
|
|
c = "sed -i '1i {}' {}".format(MIGRATION_COMMENT, dest)
|
|
os.system(c)
|
|
|
|
app_id = os.path.basename(pf)[: -len(".conf")]
|
|
if _is_installed(app_id):
|
|
_patch_legacy_php_versions_in_settings(
|
|
"/etc/yunohost/apps/%s/" % app_id
|
|
)
|
|
|
|
nginx_conf_files = glob.glob("/etc/nginx/conf.d/*.d/%s.conf" % app_id)
|
|
for nf in nginx_conf_files:
|
|
# Replace the socket prefix if it's found
|
|
c = "sed -i -e 's@{}@{}@g' {}".format(
|
|
OLDPHP_SOCKETS_PREFIX, NEWPHP_SOCKETS_PREFIX, nf
|
|
)
|
|
os.system(c)
|
|
c = "sed -i -e 's@{}@{}@g' {}".format(
|
|
OLDPHP_SOCKETS_PREFIX2, NEWPHP_SOCKETS_PREFIX2, nf
|
|
)
|
|
os.system(c)
|
|
|
|
os.system(
|
|
"rm /etc/logrotate.d/php7.3-fpm"
|
|
) # We remove this otherwise the logrotate cron will be unhappy
|
|
|
|
# Reload/restart the php pools
|
|
os.system("systemctl stop php7.3-fpm")
|
|
os.system("systemctl disable php7.3-fpm")
|
|
_run_service_command("restart", "php7.4-fpm")
|
|
_run_service_command("enable", "php7.4-fpm")
|
|
|
|
# Reload nginx
|
|
_run_service_command("reload", "nginx")
|