Skip to content

Commit 829c726

Browse files
authored
Install v4 and upgrade (#1149)
* Install v4 and upgrade * update install * review * remove misleading comments
1 parent 7290703 commit 829c726

2 files changed

Lines changed: 71 additions & 37 deletions

File tree

scripts/install.sh

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,16 @@ chown -R vito:vito /home/vito
5656
chsh -s /bin/bash "vito"
5757
su - "vito" -c "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa" <<< y
5858

59-
# upgrade
6059
apt clean
60+
rm -f /etc/apt/sources.list.d/*ondrej*php* 2>/dev/null || true
6161
apt update
6262
apt upgrade -y
6363
apt autoremove -y
6464

65-
# requirements
6665
apt install -y software-properties-common curl zip unzip git gcc
6766

68-
# certbot
6967
apt install certbot python3-certbot-nginx -y
7068

71-
# nginx
7269
export V_NGINX_CONFIG="
7370
user vito;
7471
worker_processes auto;
@@ -85,7 +82,7 @@ export V_NGINX_CONFIG="
8582
types_hash_max_size 2048;
8683
include /etc/nginx/mime.types;
8784
default_type application/octet-stream;
88-
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
85+
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
8986
ssl_prefer_server_ciphers on;
9087
access_log /var/log/nginx/access.log;
9188
error_log /var/log/nginx/error.log;
@@ -100,37 +97,47 @@ if ! echo "${V_NGINX_CONFIG}" | tee /etc/nginx/nginx.conf; then
10097
fi
10198
service nginx start
10299

103-
# nodejs
104100
export V_NODE_VERSION="20.x"
105101
curl -fsSL https://deb.nodesource.com/setup_${V_NODE_VERSION} | sudo -E bash -
106102
apt install -y nodejs
107103

108-
# php
109-
export V_PHP_VERSION="8.4"
110-
add-apt-repository ppa:ondrej/php -y
111-
apt update
112-
apt install -y php${V_PHP_VERSION} php${V_PHP_VERSION}-fpm php${V_PHP_VERSION}-mbstring php${V_PHP_VERSION}-mcrypt php${V_PHP_VERSION}-gd php${V_PHP_VERSION}-xml php${V_PHP_VERSION}-curl php${V_PHP_VERSION}-gettext php${V_PHP_VERSION}-zip php${V_PHP_VERSION}-bcmath php${V_PHP_VERSION}-soap php${V_PHP_VERSION}-redis php${V_PHP_VERSION}-sqlite3 php${V_PHP_VERSION}-intl
104+
. /etc/os-release
105+
export V_DISTRO_CODENAME="${UBUNTU_CODENAME:-${VERSION_CODENAME}}"
106+
107+
if curl -fsSL "https://ppa.launchpadcontent.net/ondrej/php/ubuntu/dists/${V_DISTRO_CODENAME}/Release" -o /dev/null; then
108+
export V_PHP_VERSION="8.4"
109+
add-apt-repository ppa:ondrej/php -y
110+
apt update
111+
else
112+
echo "ondrej/php has no packages for '${V_DISTRO_CODENAME}'; using the distribution's PHP."
113+
apt update
114+
V_PHP_VERSION=$(apt-cache search --names-only '^php[0-9]+\.[0-9]+-fpm$' | grep -oE '^php[0-9]+\.[0-9]+-fpm' | grep -oE '[0-9]+\.[0-9]+' | sort -V | tail -n 1)
115+
export V_PHP_VERSION
116+
fi
117+
118+
if [[ -z "${V_PHP_VERSION}" ]]; then
119+
echo "Error: could not determine a PHP version to install for '${V_DISTRO_CODENAME}'." && exit 1
120+
fi
121+
122+
echo "Installing PHP ${V_PHP_VERSION}..."
123+
apt install -y php${V_PHP_VERSION} php${V_PHP_VERSION}-fpm php${V_PHP_VERSION}-mbstring php${V_PHP_VERSION}-gd php${V_PHP_VERSION}-xml php${V_PHP_VERSION}-curl php${V_PHP_VERSION}-zip php${V_PHP_VERSION}-bcmath php${V_PHP_VERSION}-soap php${V_PHP_VERSION}-redis php${V_PHP_VERSION}-sqlite3 php${V_PHP_VERSION}-intl
113124
if ! sed -i "s/www-data/vito/g" /etc/php/${V_PHP_VERSION}/fpm/pool.d/www.conf; then
114125
echo 'Error installing PHP' && exit 1
115126
fi
116-
service php${V_PHP_VERSION}-fpm enable
127+
systemctl enable php${V_PHP_VERSION}-fpm
117128
service php${V_PHP_VERSION}-fpm start
118-
apt install -y php${V_PHP_VERSION}-ssh2
119129
service php${V_PHP_VERSION}-fpm restart
120130
sed -i "s/memory_limit = .*/memory_limit = 1G/" /etc/php/${V_PHP_VERSION}/fpm/php.ini
121131
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 1G/" /etc/php/${V_PHP_VERSION}/fpm/php.ini
122132
sed -i "s/post_max_size = .*/post_max_size = 1G/" /etc/php/${V_PHP_VERSION}/fpm/php.ini
123133

124-
# composer
125134
curl -sS https://getcomposer.org/installer -o composer-setup.php
126135
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
127136

128-
# redis
129137
apt install redis-server -y
130138
service redis enable
131139
service redis start
132140

133-
# setup website
134141
export COMPOSER_ALLOW_SUPERUSER=1
135142
export V_REPO="https://github.com/vitodeploy/vito.git"
136143
export V_VHOST_CONFIG="
@@ -222,13 +229,10 @@ ssh-keygen -y -f /home/vito/vito/storage/ssh-private.pem > /home/vito/vito/stora
222229
chown -R vito:vito /home/vito/vito/storage/ssh-private.pem
223230
chown -R vito:vito /home/vito/vito/storage/ssh-public.key
224231

225-
# optimize
226232
php artisan optimize
227233

228-
# cleanup
229234
chown -R vito:vito /home/vito
230235

231-
# setup supervisor
232236
export V_WORKER_CONFIG="
233237
[program:worker]
234238
process_name=%(program_name)s_%(process_num)02d
@@ -248,7 +252,6 @@ mkdir -p /home/vito/.logs/workers
248252
touch /home/vito/.logs/workers/worker.log
249253
echo "${V_WORKER_CONFIG}" | tee /etc/supervisor/conf.d/worker.conf
250254

251-
# websocket server
252255
export V_WEBSOCKET_CONFIG="
253256
[program:websocket]
254257
process_name=%(program_name)s
@@ -264,14 +267,11 @@ echo "${V_WEBSOCKET_CONFIG}" | tee /etc/supervisor/conf.d/websocket.conf
264267
supervisorctl reread
265268
supervisorctl update
266269

267-
# start worker
268270
supervisorctl start worker:*
269271
supervisorctl start websocket
270272

271-
# setup cronjobs
272273
echo "* * * * * cd /home/vito/vito && php artisan schedule:run >> /dev/null 2>&1" | sudo -u vito crontab -
273274

274-
# print info
275275
echo "🎉 Congratulations!"
276276
echo "✅ You can access Vito at: ${VITO_APP_URL}"
277277
echo "✅ SSH User: vito"

scripts/upgrade-3x-to-4x.sh

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
#!/bin/bash
2+
set -uo pipefail
23

34
echo "Upgrading Vito from 3.x to 4.x"
45

6+
VITO_DIR="/home/vito/vito"
7+
NGINX_VHOST="/etc/nginx/sites-available/vito"
8+
9+
export COMPOSER_ALLOW_SUPERUSER=1
10+
511
echo "Getting started"
6-
cd /home/vito/vito
7-
git stash
8-
sudo chown -R vito:vito /home/vito/vito
9-
10-
# Add websocket proxy to nginx
11-
if ! grep -q "location /ws/" /etc/nginx/sites-available/vito; then
12-
echo "Configuring Nginx for websocket support..."
13-
sudo sed -i '/location ~ \/\\.(?!well-known).*/i \
12+
cd "${VITO_DIR}" || { echo "${VITO_DIR} not found — is Vito installed here?" >&2; exit 1; }
13+
14+
trap 'sudo chown -R vito:vito "${VITO_DIR}" 2>/dev/null || true' EXIT
15+
16+
git reset --hard HEAD
17+
git clean -fd
18+
sudo chown -R vito:vito "${VITO_DIR}"
19+
20+
if [ -f "${NGINX_VHOST}" ]; then
21+
if ! grep -q "location /ws/" "${NGINX_VHOST}"; then
22+
echo "Configuring Nginx for websocket support..."
23+
sudo cp "${NGINX_VHOST}" "${NGINX_VHOST}.pre-4x.bak"
24+
sudo sed -i '/location ~ \/\\.(?!well-known).*/i \
1425
location /ws/ {\
1526
proxy_pass http://127.0.0.1:8085;\
1627
proxy_http_version 1.1;\
@@ -20,11 +31,27 @@ if ! grep -q "location /ws/" /etc/nginx/sites-available/vito; then
2031
proxy_set_header X-Real-IP $remote_addr;\
2132
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\
2233
proxy_read_timeout 86400;\
23-
}' /etc/nginx/sites-available/vito
24-
sudo service nginx restart
34+
}' "${NGINX_VHOST}"
35+
36+
if ! grep -q "location /ws/" "${NGINX_VHOST}"; then
37+
echo "❌ Could not insert the /ws/ block into ${NGINX_VHOST}; restoring backup. Add it manually." >&2
38+
sudo cp "${NGINX_VHOST}.pre-4x.bak" "${NGINX_VHOST}"
39+
exit 1
40+
fi
41+
42+
if sudo nginx -t; then
43+
sudo service nginx restart
44+
else
45+
echo "❌ nginx config test failed after edit; restoring backup." >&2
46+
sudo cp "${NGINX_VHOST}.pre-4x.bak" "${NGINX_VHOST}"
47+
sudo service nginx restart || true
48+
exit 1
49+
fi
50+
fi
51+
else
52+
echo "⚠️ ${NGINX_VHOST} not found. Manually add a '/ws/' -> 127.0.0.1:8085 proxy to your Vito vhost so websockets/terminal work." >&2
2553
fi
2654

27-
# Add websocket supervisor configuration
2855
if [ ! -f /etc/supervisor/conf.d/websocket.conf ]; then
2956
echo "Adding websocket supervisor configuration..."
3057
sudo mkdir -p /home/vito/.logs/workers
@@ -42,9 +69,16 @@ stdout_logfile=/home/vito/.logs/workers/websocket.log
4269
" | sudo tee /etc/supervisor/conf.d/websocket.conf
4370
sudo supervisorctl reread
4471
sudo supervisorctl update
72+
sudo supervisorctl start websocket 2>/dev/null || true
4573
fi
4674

4775
echo "Fetching the latest release"
48-
git fetch
49-
git checkout 4.x
50-
bash scripts/update.sh
76+
git fetch --all --tags
77+
git checkout 4.x || { echo "❌ Failed to checkout the 4.x branch." >&2; exit 1; }
78+
79+
if ! bash scripts/update.sh "$@"; then
80+
echo "❌ update.sh failed. If 4.x is still in beta, re-run with: sudo bash scripts/upgrade-3x-to-4x.sh --beta" >&2
81+
exit 1
82+
fi
83+
84+
echo "✅ Upgrade to 4.x complete."

0 commit comments

Comments
 (0)