Leitfaden für ein neues Projekt
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
- 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