Leitfaden für ein neues Projekt: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 48: Zeile 48:


== Auf dem Server ==
== Auf dem Server ==
* Nginx installieren: [[Nginx]]
=== Nginx einrichten ===
=== Nginx einrichten ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Zeile 105: Zeile 107:
systemctl reload nginx
systemctl reload nginx
</syntaxhighlight>
</syntaxhighlight>
=== PHP und DB installieren ===
* [[PHP einrichten]]
* [[Mysql]]


=== Webapplikation einrichten ===
=== Webapplikation einrichten ===
Zeile 117: Zeile 123:
chown -R www-data:www-data $DOMAIN
chown -R www-data:www-data $DOMAIN
cd $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
sudo -u www-data ./Build prod
</syntaxhighlight>
</syntaxhighlight>

Aktuelle Version vom 20. Februar 2024, 20:20 Uhr

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