@@ -56,19 +56,16 @@ chown -R vito:vito /home/vito
5656chsh -s /bin/bash " vito"
5757su - " vito" -c " ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa" <<< y
5858
59- # upgrade
6059apt clean
60+ rm -f /etc/apt/sources.list.d/* ondrej* php* 2> /dev/null || true
6161apt update
6262apt upgrade -y
6363apt autoremove -y
6464
65- # requirements
6665apt install -y software-properties-common curl zip unzip git gcc
6766
68- # certbot
6967apt install certbot python3-certbot-nginx -y
7068
71- # nginx
7269export 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
10097fi
10198service nginx start
10299
103- # nodejs
104100export V_NODE_VERSION=" 20.x"
105101curl -fsSL https://deb.nodesource.com/setup_${V_NODE_VERSION} | sudo -E bash -
106102apt 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
113124if ! 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
115126fi
116- service php${V_PHP_VERSION} -fpm enable
127+ systemctl enable php${V_PHP_VERSION} -fpm
117128service php${V_PHP_VERSION} -fpm start
118- apt install -y php${V_PHP_VERSION} -ssh2
119129service php${V_PHP_VERSION} -fpm restart
120130sed -i " s/memory_limit = .*/memory_limit = 1G/" /etc/php/${V_PHP_VERSION} /fpm/php.ini
121131sed -i " s/upload_max_filesize = .*/upload_max_filesize = 1G/" /etc/php/${V_PHP_VERSION} /fpm/php.ini
122132sed -i " s/post_max_size = .*/post_max_size = 1G/" /etc/php/${V_PHP_VERSION} /fpm/php.ini
123133
124- # composer
125134curl -sS https://getcomposer.org/installer -o composer-setup.php
126135php composer-setup.php --install-dir=/usr/local/bin --filename=composer
127136
128- # redis
129137apt install redis-server -y
130138service redis enable
131139service redis start
132140
133- # setup website
134141export COMPOSER_ALLOW_SUPERUSER=1
135142export V_REPO=" https://github.com/vitodeploy/vito.git"
136143export V_VHOST_CONFIG="
@@ -222,13 +229,10 @@ ssh-keygen -y -f /home/vito/vito/storage/ssh-private.pem > /home/vito/vito/stora
222229chown -R vito:vito /home/vito/vito/storage/ssh-private.pem
223230chown -R vito:vito /home/vito/vito/storage/ssh-public.key
224231
225- # optimize
226232php artisan optimize
227233
228- # cleanup
229234chown -R vito:vito /home/vito
230235
231- # setup supervisor
232236export V_WORKER_CONFIG="
233237[program:worker]
234238process_name=%(program_name)s_%(process_num)02d
@@ -248,7 +252,6 @@ mkdir -p /home/vito/.logs/workers
248252touch /home/vito/.logs/workers/worker.log
249253echo " ${V_WORKER_CONFIG} " | tee /etc/supervisor/conf.d/worker.conf
250254
251- # websocket server
252255export V_WEBSOCKET_CONFIG="
253256[program:websocket]
254257process_name=%(program_name)s
@@ -264,14 +267,11 @@ echo "${V_WEBSOCKET_CONFIG}" | tee /etc/supervisor/conf.d/websocket.conf
264267supervisorctl reread
265268supervisorctl update
266269
267- # start worker
268270supervisorctl start worker:*
269271supervisorctl start websocket
270272
271- # setup cronjobs
272273echo " * * * * * cd /home/vito/vito && php artisan schedule:run >> /dev/null 2>&1" | sudo -u vito crontab -
273274
274- # print info
275275echo " 🎉 Congratulations!"
276276echo " ✅ You can access Vito at: ${VITO_APP_URL} "
277277echo " ✅ SSH User: vito"
0 commit comments