Leitfaden für ein neues Projekt: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Celine (Diskussion | Beiträge) |
|||
(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
- Lokal eine Entwicklungsumgebung einrichten Taskx mittels Laraknife
- Lokales Git-Repository einrichten:
PROJ=taskx
BASE=/home/ws/php/$PROJ
cd $BASE
git init
git add *
git commit -m "Initial commit"
Auf dem Server
- Repository auf dem Server einrichten: Git 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