Exment est un système de base de données Web créé par Laravel (c'est-à-dire LAMP, ce qui signifie qu'il fonctionne également sur des serveurs de location). Vous pouvez exploiter une base de données relationnelle à partir de l'écran de gestion GUI.
Exment est OSS et est une licence GPL. Le développement est centré sur Kajitori Co., Ltd. Pour plus de détails, consultez Article du développeur.
Quand vous pensez à GUI Web DB, vous pourriez penser au kintone de Cybozu.
Je n'entends même pas le caractère kintone du développeur, mais je pense secrètement que c'est un clone de kintone, et je pense que c'est un produit OSS avec un potentiel considérable.
Pour être honnête, j'aime beaucoup ça, mais je n'expliquerai pas mes points préférés dans cet article. À une autre occasion.
Localement, vous pouvez Essayer Exment avec Docker. Merci de l'avoir fait!
Quand je l'ai essayé localement (confirmé avec macOS Mojave et Windows 10 Home WSL2), c'était facile. C'est incroyable.
Ensuite, c'est dans la nature humaine de vouloir l'héberger dans le cloud et d'y accéder de l'extérieur.
J'ai pensé à diverses destinations d'hébergement. Pour le front-end uniquement, il existe des services gratuits tels que Netlify et Vercel, mais malheureusement c'est un système back-end ...
Comme mentionné précédemment, Exment peut également être exploité sur un serveur de location.
La procédure d'installation avec Rensaba comme Sakura et le serveur X est publiée sur le site officiel d'Exment, mais malheureusement, le compte de Sakura et du serveur X est ouvert. Je ne l'ai pas. En d'autres termes, je n'ai pas de contrat Rensaba. (Netlify et Vercel ont des produits personnels qui sont à proximité de la réception.)
Je me demande s'il est possible de louer un Rensaba juste pour Exment, alors VPS n'est-il pas meilleur? À la suite de diverses enquêtes, j'ai réalisé que Lightsail d'Amazon était parfait pour mon utilisation.
(L'auteur est VPS, AWS vierge à ce stade)
De la connexion à Lightsail à la création d'une instance, les articles suivants sont détaillés.
Cette fois, j'ai choisi l'instance de RAM 512 Mo la moins chère à 3,5 $ / mois. Le thème est d'être le moins cher possible. Si les spécifications ne suffisent pas, il s'agit de passer à l'échelle et de réfléchir à la façon de les gérer.
Lightsail a un modèle d'instance qui est un ensemble d'applications Web telles que WordPress, mais bien sûr, il n'y a pas de modèle Exment qui soit encore bien connu.
Par conséquent, sélectionnez une instance de système d'exploitation uniquement. Cette fois, j'ai choisi CentoOS7.
Exment publie officiellement la procédure d'installation sur CentOS 7, et il y a aussi un article pour la renforcer. (Voir ci-dessous)
Cependant, comme vous pouvez le voir dans la formule, il y a plusieurs étapes. Donc, je l'ai fait une fois. En train d'abandonner l'environnement et de recommencer plusieurs fois, "Je ne peux pas faire cette procédure à chaque fois!"
** Non, pourquoi ne pas simplement mettre Docker dessus? ** **
À partir de là, je décrirai la procédure, y compris les solutions de contournement basées sur les points addictifs. Si vous suivez ceci, vous pouvez obtenir l'extension sur Lightsail + Docker dans les plus brefs délais.
Ensuite, je vais tout installer.
Il est difficile de mettre sudo à chaque fois, alors je deviens root.
Pour devenir root avec Lightsail, je me suis référé à cet article.
$ sudo su -
Installez Docker. Cet article est détaillé.
[root@ip-172-xx-xx-x ~]# yum install -y docker #installation de docker
[root@ip-172-xx-xx-x ~]# service docker start #Démarrer docker
[root@ip-172-xx-xx-x ~]# groupadd docker #Rendre possible l'exécution avec les privilèges de l'utilisateur
[root@ip-172-xx-xx-x ~]# usermod -g docker centos #Ajouter un utilisateur centos au groupe créé
[root@ip-172-xx-xx-x ~]# sudo /bin/systemctl restart docker.service
[root@ip-172-xx-xx-x ~]# docker info
Vous avez maintenant installé Docker. Vient ensuite Docker-compose.
[root@ip-172-xx-xx-x ~]# curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
[root@ip-172-xx-xx-x ~]# chmod +x /usr/local/bin/docker-compose
[root@ip-172-xx-xx-x ~]# docker-compose --version
Enfin, installez Git. Le Git fourni avec yum de CentOS7 est la 1.8.2 et l'ancienne version. Si vous êtes intéressé, veuillez vous référer à l'article ci-dessous et en ajouter un nouveau. Cette fois, je veux juste git clone, donc je vais l'installer avec yum tel quel.
[root@ip-172-xx-xx-x ~]# yum install -y git
Vous avez maintenant installé Git également.
Comme il s'agit d'une instance de 512 Mo de RAM, j'ai manqué de mémoire lorsque je suis passé à MySQL avec Docker. (Point addictif 1), créons donc d'abord une zone d'échange.
Je me suis référé à l'article suivant pour savoir comment faire un échange.
[root@ip-172-xx-xx-x ~]# dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
J'étais assez accro car j'ai fait une erreur en écrivant la commande (addiction point 2)
C'est un bon souvenir que je ne savais pas quel fichier / dev / zero était et rm -rf en cours d'essais et d'erreurs.
J'ai fait référence à cet article pour relancer / dev / zero.
[root@ip-172-xx-xx-x ~]# mknod -m 666 /dev/zero c 1 5
[root@ip-172-xx-xx-x ~]# chown root:mem /dev/zero
L'option status = progress
, mais cette fois, la zone d'échange est aussi grande que 4G, donc je crains que le terminal reste silencieux pendant un certain temps. J'ai donc ajouté une option pour vous informer de la progression de la commande dd. Je me réfère à l'article suivant.
Une fois l'espace d'échange créé avec dd, continuez le reste du travail en silence.
[root@ip-172-xx-xx-x ~]# chmod 600 /swapfile #Modifier les autorisations
[root@ip-172-xx-xx-x ~]# mkswap /swapfile #Créer un swap
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=d0519bf6-8abf-4c0d-9375-8068c9e5e9a1
[root@ip-172-xx-xx-x ~]# swapon /swapfile #Activation du swap
[root@ip-172-xx-xx-x ~]# free -m #Confirmation du swap
Enfin, rendez le swap persistant. Ouvrez / etc / fstab avec vi et
/swapfile swap swap defaults 0 0
C'est ça.
Prise en charge sur Github de la personne qui a créé Docker of Exment présenté plus tôt.
[root@ip-172-xx-xx-x /home/centos/]# git clone https://github.com/yamada28go/docker-exment.git
Je pense que l'emplacement peut être n'importe où, mais je l'ai fait directement sous le répertoire utilisateur par défaut.
Quand il s'agit de https dans Docker, https-portal semble être célèbre.
Tout d'abord, lorsque j'ai installé l'extension avec ** https-portal défini en premier, cela n'a pas fonctionné! !! !! (Point addictif 3) **
Donc, avant de configurer SSL, procédez à l'installation d'Exment dans l'état non SSL.
Voulez-vous lire docker-compose.yml pour le moment?
docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 8080:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
- www-data:/var/www
depends_on:
- php
php:
build: ./php
volumes:
- www-data:/var/www
depends_on:
- db
db:
image: mysql:5.7
ports:
- 13306:3306
volumes:
- mysql-data:/var/lib/mysql
environment:
MYSQL_DATABASE: exment_database
MYSQL_ROOT_PASSWORD: secret
MYSQL_USER: exment_user
MYSQL_PASSWORD: secret
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- 8888:80
depends_on:
- db
#Définir les volumes
volumes:
#Spécifiez le nom du volume
#Chemin d'installation d'Exment
www-data:
#Réglez la ture pour spécifier un volume qui a déjà été créé en dehors de Compose.
#Puis docker-Compose n'essaie pas de créer du volume lors de la composition.
#Et si le volume spécifié n'existe pas, une erreur sera générée.
#external: true
#chemin d'installation de mysql db
mysql-data:
Étant donné que https-portal utilisera le port 80 plus tard, il est pratique que nginx soit 8080. En particulier, je ne modifierai rien en l'état.
docker-compose.yml et Dockerfile ne touchent à rien, mais seul php.ini ajoute une ligne.
Sur la dernière ligne
memory_limit=-1
J'ajouterai (point supplémentaire 4, les détails seront décrits plus tard)
Finalement ...
[root@ip-172-xx-xx-x /home/centos/]# docker-compose up -d
Comme c'est la première fois, il obtiendra l'image, la construira et créera le volume.
Une fois le démarrage terminé, utilisez docker-comopse ps
pour vérifier que tous les conteneurs sont actifs. (MySQL sortait ici quand je ne faisais pas d'échange)
Effectuez les étapes suivantes du côté Lightsail.
Essayez d'accéder à xx.xx.xx.xx: 8080 avec un navigateur, et si l'écran initial de Laravel s'affiche, il réussit.
L'accès à xx.xx.xx.xx: 8080 / admin vous amènera à l'écran d'initialisation d'Exment.
L'écran se compose de trois parties
Il y a 3 écrans. Ce que vous entrez est le paramètre DB sur le deuxième écran.
Puisque j'utilise Docker, remplissez les paramètres en vous référant à l'article "J'ai essayé de créer un environnement Docker pour Exment".
--Nom de l'hôte → db --Nom de la base de données → extension_database --Nom d'utilisateur → extension_user --Mot de passe → secret
Après cela, si l'installation est terminée avec succès, l'écran initial d'Extension s'affichera.
L'instance Lightsail a cette fois une zone de stockage de 20 Go, il est donc agréable de déplacer quelque chose, mais c'est une capacité qui deviendra bientôt un bang si vous insérez des données binaires.
Exment a la possibilité d'enregistrer divers fichiers sur un service de stockage externe.
C'est un gros problème, alors préparons-le sur AWS et sauvegardons-le dans S3.
S3 était aussi vierge, j'ai donc fabriqué un seau en me référant à l'article suivant.
Des paramètres sont également requis du côté d'Exment. Allez dans le conteneur qui contient déjà docker-compose exec php bash
.
[root@ip-172-xx-xx-x /home/centos/]# docker-compose exec php bash
Vous pouvez maintenant le mettre dans le conteneur php où Extension est en cours d'exécution. Si l'invite change en quelque chose comme ça, vous réussissez.
root@f54bef27801a:/var/www#
En d'autres termes, il a une double structure d'être dans le conteneur Docker php dans Lightsail sur le cloud.
Continuez à modifier le fichier Exment (Laravel) en lisant "Changer la destination de sauvegarde des fichiers (avancés)".
Modifiez / ajoutez le fichier .env dans le dossier racine d'Exment avec vim.
.env
EXMENT_DRIVER_EXMENT=s3
EXMENT_DRIVER_BACKUP=s3
EXMENT_DRIVER_TEMPLATE=s3
EXMENT_DRIVER_PLUGIN=s3
AWS_ACCESS_KEY_ID=(Clé d'accès AWS S3)
AWS_SECRET_ACCESS_KEY=(Clé d'accès secrète AWS S3)
AWS_DEFAULT_REGION=(Région AWS S3)
AWS_BUCKET_EXMENT=(Bucket AWS S3 à utiliser dans les pièces jointes)
AWS_BUCKET_BACKUP=(Bucket AWS S3 utilisé pour la sauvegarde)
AWS_BUCKET_TEMPLATE=(Bucket AWS S3 utilisé dans le modèle)
AWS_BUCKET_PLUGIN=(Bucket AWS S3 à utiliser avec le plug-in)
Il n'est pas nécessaire de définir tous les EXMENT_DRIVER_xxx
, uniquement ceux qui doivent être définis. Vous n'avez besoin que du AWS_BUCKET_xxx
nécessaire qui lui est associé.
Je voulais enregistrer les pièces jointes et sauvegarder les données dans S3,
EXMENT_DRIVER_EXMENT
EXMENT_DRIVER_BACKUP
AWS_BUCKET_EXMENT
AWS_BUCKET_BACKUP
J'ai mis seulement 4 de.
Enfin, installez la bibliothèque avec composer.
Auparavant, j'ai édité php.ini avant docker-compose up -d
, mais Composer consomme de la mémoire et atteint bientôt la limite d'utilisation de la mémoire de PHP, donc je l'ai réglé pour lever cette limite. fait.
Composer prend beaucoup de temps à installer, il est donc douloureux qu'il ait échoué à cause du temps ... (j'étais très triste), alors vérifiez à nouveau ce paramètre avant de faire composer require
Faisons le.
root@f54bef27801a:/var/www# php -i | grep memory_limit
memory_limit => -1 => -1
Si c'est -1, c'est OK. (Cela signifie qu'il n'y a pas de limite de mémoire)
Il est maintenant temps d'installer la bibliothèque
root@f54bef27801a:/var/www# composer require league/flysystem-aws-s3-v3 ~1.0 -vvv
L'option -vvv
est une instruction qui signifie se connecter dans les moindres détails. L'installation de Composer prend beaucoup de temps, donc je m'inquiète si le terminal reste silencieux pendant une longue période.
Donc, je m'assurerai de sortir les journaux un par un. Si vous êtes resté silencieux pendant longtemps avec cette option, c'est vraiment soit arrêté pour une raison quelconque, soit vous faites beaucoup de travail difficile ...
Ceci termine les paramètres d'option pour le téléchargement des fichiers joints vers S3. Assurez-vous d'avoir le fichier dans votre bucket en téléchargeant une image appropriée.
Non, il n'y a rien de mal avec https, mais j'en étais tellement accro ...
Je me suis demandé s'il y avait quelque chose qui n'allait pas, et je l'ai réinstallé à partir de l'environnement Docker complètement abandonné, donc cela a pris beaucoup de temps.
Comme je l'ai dit plus tôt, si vous mélangez https-portal avec docker-compose, l'installation initiale échouera. En fin de compte, j'ai rencontré une erreur peu claire et suis resté bloqué.
J'ai dit qu'il y avait 3 écrans pour l'installation, mais lorsque j'appuie sur le bouton d'installation sur le dernier 3ème écran, cet écran d'erreur grisâtre de Laravel apparaît.
Use of undefined constant STDIN - assumed 'STDIN' (this will throw an Error in a future version of PHP)
Je suis sorti et je n'ai pas pu insérer de données dans la base de données. J'ai abandonné ici car je ne suis pas familier avec PHP et Laravel.
Comme http fonctionnait bien, j'ai abandonné après tout la suppression de cette erreur et je suis passé à la stratégie consistant à terminer l'installation avec http, puis à passer à https.
Exportez uniquement la partie https-portal.
docker-compose.yml
https-portal:
image: steveltn/https-portal:1
ports:
- '80:80'
- '443:443'
links:
- nginx
restart: always
volumes:
- ./certs:/var/lib/https-portal
environment:
STAGE: 'production'
DOMAINS: >-
example.com -> http://nginx:8080
depends_on:
- php
Il n'y a rien de particulièrement difficile. Ce n'est pas très différent de l'échantillon officiel. Le fait est que si «STAGE:» de «enviroment:» n'est pas «production» ou «staging», vous ne pourrez pas obtenir le certificat de ce Chan de Let's Encrypt. Si cela n'est pas spécifié comme local, un certificat sera émis car il s'agit d'un développement local. C'était aussi un simple point addictif (point addictif 5)
Enfin, si vous visitez https://example.com/ et que l'écran initial de Laravel s'affiche, ce sera très bien et réussi ...
Je voudrais dire, mais il y en a encore.
Lorsque vous accédez à https://example.com/admin, l'écran se réduit considérablement!
En regardant la console du navigateur, tous les CSS / JS provenant de http dans un contenu mixte sont bloqués.
Au début, je ne savais pas comment gérer cela, mais après essais et erreurs, Laravel et Laravel-admin étaient déterminés à être les coupables! Il semble que le chemin avec http soit affiché à la description comme asset ('/ css / hoge.css') ...
Voici des mesures à cet égard. Aussi, faites docker-compose exec php bash
pour entrer.
/var/www/exment/.env
APP_ENV=production
/var/www/exment/app/Providers/AppProvider.php
class AppServiceProvider extends ServiceProvider
public function boot()
{
if (config('app.env') === 'production') {
\URL::forceScheme('https'); //Schéma, pas schéma!!!(Point addictif 6)
}
}
/var/www/exment/config/admin.php
/*
|--------------------------------------------------------------------------
| Access via `https`
|--------------------------------------------------------------------------
|
| If your page is going to be accessed via https, set it to `true`.
|
*/
'https' => env('ADMIN_HTTPS', true), //← La valeur par défaut est false, alors définissez-la sur true!
Désormais, tous les actifs sont livrés à partir de https et affichés sans casser l'écran.
Pour être honnête, je ne sais pas si c'est vraiment la bonne réponse. Peut-être que AppProvider.php n'est pas nécessaire ... Il semblait que la manière d'écrire le code était légèrement différente selon la version de Laravel. La réalité est que j'ai lu beaucoup de sources de référence et réussi à m'installer dans un code fonctionnel.
Si vous avez un meilleur moyen, veuillez nous le faire savoir dans les commentaires.
Jusqu'ici, ça marche de bonne humeur.
Cet article n'aborde pas la sécurité, etc. pour créer un environnement à des fins de vérification. Si vous le connaissez, je vous serais reconnaissant de bien vouloir le compléter.
Je veux écrire un article qui complimente la partie merveilleuse d'Exment!
Recommended Posts