forked from littlebizzy/slickstack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ss-install-php-packages.txt
185 lines (144 loc) · 9.63 KB
/
ss-install-php-packages.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
####################################################################################################
#### author: SlickStack ############################################################################
#### link: https://slickstack.io ###################################################################
#### mirror: https://mirrors.slickstack.io/bash/ss-install-php-packages.txt ########################
#### path: /var/www/ss-install-php-packages ########################################################
#### destination: n/a (not a boilerplate) ##########################################################
#### purpose: Reinstalls the PHP-FPM module Ubuntu packages and extensions (idempotent) ############
#### module version: PHP-FPM 7.4.x #################################################################
#### sourced by: ss-install ########################################################################
#### bash aliases: ss install php core, ss install php packages ####################################
####################################################################################################
## SS-CONFIG MUST BE PROPERLY CONFIGURED AND ON CURRENT BUILD BEFORE RUNNING SS-INSTALL ##
## ENSURE YOUR SS-CONFIG BUILD REMAINS CURRENT BY RUNNING SS-UPDATE OCCASIONALLY ##
## source ss-config ##
source /var/www/ss-config
## source ss-functions ##
source /var/www/ss-functions
## BELOW THIS RELIES ON SS-CONFIG AND SS-FUNCTIONS
####################################################################################################
#### SS-Install-PHP-Packages: Message (Begin Script) ###############################################
####################################################################################################
## this is a simple message that announces to the shell the purpose of this bash script ##
## it will only be noticed by sudo users who manually call ss core bash scripts ##
## echo message ##
echo -e "${PURPLE}Running ss-install-php-packages: Reinstalls the PHP-FPM module Ubuntu packages and extensions (idempotent)... ${NOCOLOR}"
sleep "$SLEEP_MESSAGE_BEGIN"
####################################################################################################
#### SS-Install-PHP-Packages: Purge Any Existing PHP Packages (Ubuntu) #############################
####################################################################################################
## here we first purge any existing PHP packages and then reinstall PHP-FPM from scratch ##
## this approach is safe and helps avoid any conflicts between package versions ##
## purge packages ##
apt purge ^php
## delete any leftover PHP files (disable for now because apt will not create these files if it notices the php directory exists already) ##
# rm /etc/php*
## cleanup any outdated packages and system files ##
apt autoremove
apt autoclean
## update repo cache ##
apt update
####################################################################################################
#### SS-Install-PHP-Packages: Install PHP-FPM + PHP Extensions #####################################
####################################################################################################
## here PHP-FPM will be installed along with any custom PHP extensions in your ss-config ##
## remember to check version compatibility of PHP extensions if you modify them ##
## php8.1 not needed for php8.1-fpm (Ubuntu 22.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "22.04" ]] && [[ -n "$PHP_EXTENSIONS" ]]; then
PHP_EXTENSIONS_NOW=$(source /var/www/ss-config; echo $PHP_EXTENSIONS)
if [[ "$PHP_EXTENSIONS_NOW" == *"php8.1"* ]]; then
apt install $PHP_EXTENSIONS_NOW
else
echo -e "${PURPLE}Running ss-install-php-packages: Mismatch with PHP extension versions in ss-config so installing 8.1 defaults... ${NOCOLOR}"
apt install php8.1-fpm php8.1-bcmath php8.1-curl php8.1-gd php8.1-imagick php8.1-json php8.1-mbstring php8.1-mysql php8.1-soap php8.1-sqlite3 php8.1-xml php8.1-zip
fi
fi
## php7.4 not needed for php7.4-fpm (Ubuntu 20.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "20.04" ]] && [[ -n "$PHP_EXTENSIONS" ]]; then
PHP_EXTENSIONS_NOW=$(source /var/www/ss-config; echo $PHP_EXTENSIONS)
if [[ "$PHP_EXTENSIONS_NOW" == *"php7.4"* ]]; then
apt install $PHP_EXTENSIONS_NOW
else
echo -e "${PURPLE}Running ss-install-php-packages: Mismatch with PHP extension versions in ss-config so installing 7.4 defaults... ${NOCOLOR}"
apt install php7.4-fpm php7.4-bcmath php7.4-curl php7.4-gd php7.4-imagick php7.4-json php7.4-mbstring php7.4-mysql php7.4-soap php7.4-sqlite3 php7.4-xml php7.4-zip
fi
fi
## php7.2 not needed for php7.2-fpm (Ubuntu 18.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "18.04" ]] && [[ -n "$PHP_EXTENSIONS" ]]; then
PHP_EXTENSIONS_NOW=$(source /var/www/ss-config; echo $PHP_EXTENSIONS)
if [[ "$PHP_EXTENSIONS_NOW" == *"php7.2"* ]]; then
apt install $PHP_EXTENSIONS_NOW
else
echo -e "${PURPLE}Running ss-install-php-packages: Mismatch with PHP extension versions in ss-config so installing 7.2 defaults... ${NOCOLOR}"
apt install php7.2-fpm php7.2-bcmath php7.2-curl php7.2-gd php7.2-imagick php7.2-json php7.2-mbstring php7.2-mysql php7.2-soap php7.2-sqlite3 php7.2-xml php7.2-zip
fi
fi
####################################################################################################
#### SS-Install-PHP-Packages: Install PHP-Redis Extension (Required) ###############################
####################################################################################################
## we force install the php-redis extension to ensure it exists on SlickStack servers ##
## this is because Redis is a core module and required for i.e. object caching ##
## php-redis (Ubuntu 22.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "22.04" ]]; then
apt install php-redis
fi
## php-redis (Ubuntu 20.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "20.04" ]]; then
apt install php-redis
fi
## php-redis (Ubuntu 18.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "18.04" ]]; then
apt install php-redis
fi
####################################################################################################
#### SS-Install-PHP-Packages: Set Default PHP Version (Ubuntu) #####################################
####################################################################################################
## here we set the default PHP version depending on the version of Ubuntu LTS detected ##
## in most cases this step is not necessary but we do it anyway for consistency ##
## php8.1 (Ubuntu 22.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "22.04" ]]; then
update-alternatives --set php /usr/bin/php8.1
fi
## php7.4 (Ubuntu 20.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "20.04" ]]; then
update-alternatives --set php /usr/bin/php7.4
fi
## php7.2 (Ubuntu 18.04 LTS) ##
if [[ "${UBUNTU_VERSION}" == "18.04" ]]; then
update-alternatives --set php /usr/bin/php7.2
fi
####################################################################################################
#### SS-Install-PHP-Packages: Reset Permissions (PHP Packages) #####################################
####################################################################################################
## run ss-perms-php-packages ##
source "$PATH_SS_PERMS_PHP_PACKAGES"
####################################################################################################
#### SS-Install-PHP-Packages: Purge Cache (PHP OPcache) ############################################
####################################################################################################
## run ss-purge-opcache ##
source "$PATH_SS_PURGE_OPCACHE"
####################################################################################################
#### SS-Install-PHP-Packages: Restart Services (PHP-FPM) ###########################################
####################################################################################################
## run ss-restart-php ##
source "$PATH_SS_RESTART_PHP"
####################################################################################################
#### SS-Install-PHP-Packages: Touch Timestamp File (End Script) ####################################
####################################################################################################
## this is a dummy timestamp file that will remember the last time this script was run ##
## it can be useful for developer reference and is sometimes used by SlickStack ##
## script timestamp ##
touch "$TIMESTAMP_SS_INSTALL_PHP_PACKAGES"
####################################################################################################
#### SlickStack: External References Used To Improve This Script (Thanks, Interwebz) ###############
####################################################################################################
## Ref: https://askubuntu.com/questions/541781/install-list-of-packages-using-apt-get
## Ref: https://stackoverflow.com/questions/22284131/why-cant-i-install-multiple-packages-with-apt-get-install
## Ref: https://askubuntu.com/questions/913221/why-does-my-install-shell-script-not-work-when-i-can-run-it-line-by-line-and-it
## Ref: https://askubuntu.com/questions/39497/apt-get-install-multiple-packages-without-stopping
## Ref: https://www.getastra.com/kb/knowledgebase/how-to-install-sqlite-for-php-on-my-apache-nginx-server/
## Ref: https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-21.10-PHP-8-Transition
## Ref: https://linuxize.com/post/how-to-check-if-string-contains-substring-in-bash/
## Ref: https://stackoverflow.com/questions/229551/how-to-check-if-a-string-contains-a-substring-in-bash
## SS_EOF