Leitfaden für ein neues Projekt

Aus Vokabulabor
Zur Navigation springen Zur Suche springen

Links

Zielsetzung

Es soll eine neue Webapplikation entwickelt werden, die letzendlich auf einem Server läuft.

In diesem Leitfaden werden die einzelnen Schritte erläutert.

Vorgehen

Auf dem Entwicklungsrechner

PROJ=taskx
BASE=/home/ws/php/$PROJ
cd $BASE
git init
git add *
git commit -m "Initial commit"

Auf dem Server

PROJ=taskx

REPO=/home/git/repo/$PROJ.git
mkdir -p $REPO
cd $REPO
git init --bare
chown -R git:git -R .
# Für das Git-Protokoll:
touch git-daemon-export-ok
# für gitweb:
echo "Eine Web-App für Notizen" >description
chown -R git:git -R .
sudo -u git git symbolic-ref HEAD refs/heads/main

Lokal

  • Verbindung zum Repository auf dem Server:
PROJ=taskx
DOMAIN=git.hamatoma.de
git remote add origin ssh://git@$DOMAIN:/home/git/repo/$PROJ.git
git push --set-upstream origin main

Auf dem Server

  • Nginx installieren: Nginx

Nginx einrichten

PROJ=taskx
DOMAIN=$PROJ.hamatoma.de
PHP_VERS=8.2

cd /etc/nginx/sites-available
cat <<EOS >$DOMAIN
server {
  listen 80;
  server_name $DOMAIN;
  include snippets/letsencrypt.conf;
  root $BASE/$DOMAIN;
  location / {
    return 301 https://\$server_name\$request_uri;
  }
}
server {
  listen 443 ssl http2;
  listen [::]:443;
  server_name $DOMAIN;
  root $BASE/$PROJ/public;

  #ssl_certificate     /etc/letsencrypt/live/latest/fullchain.pem;
  #ssl_certificate_key /etc/letsencrypt/live/latest/privkey.pem;
  ssl_certificate /etc/ssl/certs/$DOMAIN.pem;
  ssl_certificate_key /etc/ssl/private/$DOMAIN.key;

  access_log  /var/log/nginx/a_$DOMAIN.log;
  error_log   /var/log/nginx/e_$DOMAIN.log warn;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-Content-Type-Options "nosniff";
  index index.php;
  charset utf-8;
  location / {
    try_files \$uri \$uri/ /index.php?\$query_string;
  }
  location = /favicon.ico { access_log off; log_not_found off; }
  location = /robots.txt  { access_log off; log_not_found off; }
  error_page 404 /index.php;
  location ~ \.php\$ {
    fastcgi_pass unix:/var/run/php/php$PHP_VERS-fpm.sock;
    fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
    include fastcgi_params;
  }
  location ~ /\.(?!well-known).* {
    deny all;
  }
}
EOS
cd ../sites-enabled
ln -s ../sites-available/$DOMAIN .
MkCert.sh $DOMAIN
nginx -t
# Wenn alles OK, dann:
systemctl reload nginx

PHP und DB installieren

Webapplikation einrichten

WWW_BASE=/srv/www
GIT_REPO=/home/git/repo

cd $WWW_BASE
git clone $GIT_REPO/$PROJ.git
chown -R www-data.www-data $PROJ
mv $PROJ $DOMAIN
chown -R www-data:www-data $DOMAIN
cd $DOMAIN


apt install composer npm

mkdir -p /var/www/.cache
chown www-data:www-data /var/www/.cache
sudo -u www-data ./Build prod