{"id":246,"date":"2020-10-29T14:49:16","date_gmt":"2020-10-29T14:49:16","guid":{"rendered":"https:\/\/www.virtono.ro\/blog\/?p=246"},"modified":"2021-07-13T19:03:16","modified_gmt":"2021-07-13T19:03:16","slug":"instalarea-laravel-pe-vps","status":"publish","type":"post","link":"https:\/\/www.virtono.ro\/blog\/instalarea-laravel-pe-vps\/","title":{"rendered":"Instalarea LAMP \u0219i Laravel pe un VPS"},"content":{"rendered":"<p>Laravel este un framework open-source devenit popular mul\u021bumit\u0103 flexibilit\u0103\u021bii sale, iar pentru o mai bun\u0103 dezvoltare se recomand\u0103 folosirea acestui framework pe un <a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">VPS<\/a>. \u00cen r\u00e2ndurile urm\u0103toare o s\u0103 v\u0103 ar\u0103t\u0103m cum pute\u021bi instala toate pachetele necesare rul\u0103rii framework-ului Laravel, precum \u0219i framework-ul Laravel.<\/p>\n<p>Pentru acest tutorial se folose\u0219te Ubuntu 20.04 LTS, dar poate func\u021biona \u0219i pe versiunile anterioare de Ubuntu. O s\u0103 instalam stack-ul LAMP (<strong>L<\/strong>inux, <strong>A<\/strong>pache, <strong>M<\/strong>ySQL, <strong>P<\/strong>HP).<\/p>\n<p>Cerin\u021bele Laravel sunt:<\/p>\n<ul>\n<li>PHP &gt;= 7.3<\/li>\n<li>BCMath PHP Extension<\/li>\n<li>Ctype PHP Extension<\/li>\n<li>Fileinfo PHP Extension<\/li>\n<li>JSON PHP Extension<\/li>\n<li>Mbstring PHP Extension<\/li>\n<li>OpenSSL PHP Extension<\/li>\n<li>PDO PHP Extension<\/li>\n<li>Tokenizer PHP Extension<\/li>\n<li>XML PHP Extension<\/li>\n<\/ul>\n<p>Primul pas este conectarea la <a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">VPS<\/a>, iar pentru aceast\u0103 ac\u021biune o s\u0103 folosim <span><a href=\"https:\/\/the.earth.li\/~sgtatham\/putty\/latest\/w32\/putty.exe\" target=\"_blank\" rel=\"noopener\">PuTTY<\/a><\/span><a href=\"https:\/\/the.earth.li\/~sgtatham\/putty\/latest\/w32\/putty.exe\" target=\"_blank\" rel=\"noopener\"><\/a>, tocmai de aceea o s\u0103 introducem \u00een aplica\u021bia PuTTy detaliile primite pe mail. Introducem ip-ul primit, portul 22, alegem SSH apoi ap\u0103s\u0103m tasta ENTER sau butonul Open (din aplica\u021bie)<\/p>\n<div id=\"attachment_247\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-247\" src=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/ssh-300x112.png\" alt=\"\" width=\"300\" height=\"112\" class=\"wp-image-247 size-medium\" srcset=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/ssh-300x112.png 300w, https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/ssh.png 449w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-247\" class=\"wp-caption-text\">Conectarea la VPS folosind PuTTY<\/p><\/div>\n<p>\u00cen acest moment o s\u0103 te conectezi la server, iar la prima conectare o s\u0103 prime\u0219ti o alert\u0103 deoarece nu sunt cheile ad\u0103ugate, ape\u0219i YES, iar aceasta o s\u0103 fie pentru prima \u0219i ultima dat\u0103 c\u00e2nd o s\u0103 vezi aceast\u0103 alert\u0103 (at\u00e2t timp c\u00e2t nu reinstalezi <a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">VPS<\/a> sau <a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">Windows<\/a>). Alerta arat\u0103 ca \u00een imaginea de mai jos:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/cheie-300x199.png\" alt=\"\" width=\"300\" height=\"199\" class=\"size-medium wp-image-248 aligncenter\" srcset=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/cheie-300x199.png 300w, https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/cheie-360x240.png 360w, https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/cheie.png 394w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Dup\u0103 ap\u0103sarea butonului YES o s\u0103 se deschid\u0103 terminalul de pe care po\u021bi administra VPS-ului, acum s\u0103 trecem la partea tehnic\u0103 \u0219i serioas\u0103.<\/p>\n<h5 style=\"text-align: center;\"><strong>1.) Instalare LAMP<\/strong><\/h5>\n<p><strong>1.1) Update &amp; Upgrade<\/strong><\/p>\n<p>Imediat ce ne-am conectat la server scriem comanda:<\/p>\n<blockquote><p>apt-get update -y<\/p><\/blockquote>\n<p>Folosind aceast\u0103 comand\u0103 facem update la pachete, iar <strong>-y\u00a0<\/strong>reprezint\u0103 confirmarea, nu o s\u0103 ne mai cear\u0103 alte detalii. Dup\u0103 update facem un upgrade, comenzile seam\u0103n\u0103, tocmai de aceea introducem:<\/p>\n<blockquote><p>apt-get upgrade -y<\/p><\/blockquote>\n<p>\u00cen acest moment avem toate pachetele la zi, tocmai de aceea putem trece la pasul urm\u0103tor: instalarea.<\/p>\n<p>Update-urile \u0219i upgrade-urile pot s\u0103 dureze p\u00e2n\u0103 la 10 minute &#8211; conteaz\u0103 performan\u021bele VPS-ului.<\/p>\n<p><strong>1.2) Instalarea PHP<\/strong><\/p>\n<p>Laravel cere are nevoie de PHP &gt;= 7.3, tocmai de aceea \u00een acest pas o s\u0103 instal\u0103m PHP 7.4 folosind comenzile de mai jos:<\/p>\n<blockquote><p>apt install zip unzip software-properties-common -y<\/p>\n<p>add-apt-repository ppa:ondrej\/php -y<br \/>\napt install php7.4 php7.4-gd php7.4-mbstring php7.4-xml php-zip -y<\/p><\/blockquote>\n<p>\u00cen primul r\u00e2nd instal\u0103m un manager de arhive, \u00een r\u00e2ndul cu num\u0103rul doi ad\u0103ug\u0103m loca\u021bia care con\u021bine PHP versiunea 7.4 (care dep\u0103\u0219e\u0219te condi\u021bia pe care o cere Laravel: minim sau egal cu 7.3), iar \u00een r\u00e2ndul num\u0103rul trei inst\u0103l\u0103m PHP 7.4, iar apoi libr\u0103riile: mbstring, xml si zip.<\/p>\n<p><strong>1.3) Instalarea Apache<\/strong><\/p>\n<p>Avem de instalat Apache, apoi configurarea lui cu PHP, iar pentru aceste lucruri pur \u0219i simplu scriem comanda:<\/p>\n<blockquote><p>apt install apache2 libapache2-mod-php7.4 -y<\/p><\/blockquote>\n<p>\u00cen acest moment avem Apache instalat, \u00eempreuna cu PHP 7.4 \u0219i modulele specifice, dar Laravel are nevoie \u0219i de o baz\u0103 de date, tocmai, de aceea, urm\u0103torul pas este instalarea unei baze de date.<\/p>\n<p><strong>1.4) Instalarea mySQL<\/strong><\/p>\n<p>Laravel mai are nevoie \u0219i de mySQL, tocmai, de aceea, \u00een acest pas o s\u0103 instal\u0103m \u0219i configur\u0103m mySQL.<\/p>\n<blockquote><p>apt install mysql-server php7.4-mysql -y<\/p><\/blockquote>\n<p>mySQL a fost instalat, iar \u00een acest moment urmeaz\u0103 configurarea acestuia folosind comanda:<\/p>\n<blockquote><p>mysql_secure_installation<\/p><\/blockquote>\n<p>Complet\u0103m dup\u0103 bunul plac, noi am completat astfel:<\/p>\n<blockquote><p>root@test:~# mysql_secure_installation<\/p>\n<p>Securing the MySQL server deployment.<\/p>\n<p>Connecting to MySQL using a blank password.<\/p>\n<p>VALIDATE PASSWORD COMPONENT can be used to test passwords<br \/>\nand improve security. It checks the strength of password<br \/>\nand allows the users to set only those passwords which are<br \/>\nsecure enough. Would you like to setup VALIDATE PASSWORD component?<\/p>\n<p>Press y|Y for Yes, any other key for No: N<br \/>\nPlease set the password for root here.<\/p>\n<p>New password:<\/p>\n<p>Re-enter new password:<br \/>\nBy default, a MySQL installation has an anonymous user,<br \/>\nallowing anyone to log into MySQL without having to have<br \/>\na user account created for them. This is intended only for<br \/>\ntesting, and to make the installation go a bit smoother.<br \/>\nYou should remove them before moving into a production<br \/>\nenvironment.<\/p>\n<p>Remove anonymous users? (Press y|Y for Yes, any other key for No) : N<\/p>\n<p>&#8230; skipping.<\/p>\n<p>Normally, root should only be allowed to connect from<br \/>\n&#8216;localhost&#8217;. This ensures that someone cannot guess at<br \/>\nthe root password from the network.<\/p>\n<p>Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y<br \/>\nSuccess.<\/p>\n<p>By default, MySQL comes with a database named &#8216;test&#8217; that<br \/>\nanyone can access. This is also intended only for testing,<br \/>\nand should be removed before moving into a production<br \/>\nenvironment.<\/p>\n<p>Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y<br \/>\n&#8211; Dropping test database&#8230;<br \/>\nSuccess.<\/p>\n<p>&#8211; Removing privileges on test database&#8230;<br \/>\nSuccess.<\/p>\n<p>Reloading the privilege tables will ensure that all changes<br \/>\nmade so far will take effect immediately.<\/p>\n<p>Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y<br \/>\nSuccess.<\/p>\n<p>All done!<br \/>\nroot@test:~#<\/p><\/blockquote>\n<p>Adica NO, NO, NO, YES, YES. Dup\u0103 instalare \u0219i configurare avem de f\u0103cut o nou\u0103 baz\u0103 de date, iar un prim pas este conectarea la acesta. Pentru a ne conecta \u0219i ad\u0103uga o nou\u0103 baz\u0103 de date mySQL apoi un nou utilizator folosim comenzile:<\/p>\n<blockquote><p>mysql -u root<\/p>\n<p>CREATE DATABASE <strong>virtono<\/strong>;<br \/>\nCREATE USER &#8216;<strong>laravel<\/strong>&#8216;@&#8217;localhost&#8217; IDENTIFIED by &#8216;<strong>ceparolavrei<\/strong>&#8216;;<\/p><\/blockquote>\n<p>Avem baza de date, avem utilizatorul, dar acel utilizator nu are acces la baza de date, tocmai de aceea trebuie s\u0103-i oferim, apoi s\u0103-i re\u00eenc\u0103rc\u0103m accesul. Folosim urm\u0103toarele comenzi:<\/p>\n<blockquote><p>GRANT ALL on <strong>virtono<\/strong>.* to &#8216;<strong>laravel<\/strong>&#8216;@&#8217;localhost&#8217;;<br \/>\nFLUSH PRIVILEGES;<\/p><\/blockquote>\n<h5 style=\"text-align: center;\"><strong>2.) Instalarea composer<\/strong><\/h5>\n<p><a href=\"https:\/\/getcomposer.org\" target=\"_blank\" rel=\"noopener\">Composer<\/a> o aplica\u021bie folosit\u0103 pentru a instala diferite depende\u021be, folosind composer po\u021bi ad\u0103uga \u0219i \u0219terge pachete \u00een doar c\u00e2teva r\u00e2nduri de cod, dar pentru acest lucru este necesar\u0103 prima oar\u0103 instalarea composer.<\/p>\n<blockquote><p>curl -sS https:\/\/getcomposer.org\/installer | php<br \/>\nsudo mv composer.phar \/usr\/local\/bin\/composer<br \/>\nsudo chmod +x \/usr\/local\/bin\/composer<\/p><\/blockquote>\n<p>\u00cencep\u00e2nd din acest moment putem s\u0103 folosim aplica\u021bia <strong>composer<\/strong>.<\/p>\n<h5 style=\"text-align: center;\">3.) Instalarea Laravel<\/h5>\n<p>Pentru a instala ultima versiune de <a href=\"https:\/\/www.laravel.com\" target=\"_blank\" rel=\"noopener\">Laravel<\/a> avem de introdus urm\u0103toarea comand\u0103:<\/p>\n<blockquote><p>composer create-project &#8211;prefer-dist laravel\/laravel ceDirectorVrei<\/p><\/blockquote>\n<p>Inlocuie\u0219ti ceDirectorVrei cu numele directorului \u00een care vrei s\u0103 \u00eenstalezi Laravel, apoi ape\u0219i enter. Pentru acest tutorial o s\u0103 lucr\u0103m \u00een directorul \/var\/www\/html\/virtono, comenzile potrivite fiind:<\/p>\n<blockquote><p>cd \/var\/www\/html<\/p>\n<p>composer create-project &#8211;prefer-dist laravel\/laravel virtono<\/p><\/blockquote>\n<p>O s\u0103 dureze c\u00e2teva minute deoarece este prima oar\u0103 c\u00e2nd downloadezi pachetele folosind composer urm\u00e2nd ca \u00een viitor pachetele s\u0103 se \u00eencarce din cache.<\/p>\n<p>\u00cen acest moment putem vedea ceea ce s-a downloadat vizit\u00e2nd folderul \/virtono, dar a se remarca faptul c\u0103 nu este afi\u0219at cum trebuie, mai avem de configurat Apache-ul pentru Laravel, deschidem fi\u0219ierul <strong>\/etc\/apache2\/sites-available\/000-default.conf<\/strong> folosind editorul preferat, apoi set\u0103m DocumentRoot-ul ca fiind loca\u021bia <strong>\/var\/www\/html\/virtono\/public<\/strong> (locul \u00een care a fost instalat Laravel este \/var\/www\/html\/virtono, dar noi trebuie s\u0103 facem point c\u0103tre folderul public, ave\u021bi fi\u0219ierul editat \u00een r\u00e2ndurile de mai jos.<\/p>\n<blockquote><p>&lt;VirtualHost *:80&gt;<br \/>\nServerAdmin webmaster@localhost<br \/>\nDocumentRoot \/var\/www\/html\/<a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">virtono<\/a>\/public<\/p>\n<p>ErrorLog ${APACHE_LOG_DIR}\/error.log<br \/>\nCustomLog ${APACHE_LOG_DIR}\/access.log combined<\/p>\n<p>&lt;\/VirtualHost&gt;<\/p><\/blockquote>\n<p>Salv\u0103m, apoi d\u0103m un restart la apache folosind comanda<\/p>\n<blockquote><p>service apache2 restart<\/p><\/blockquote>\n<p>Oferim drepturile drepturile necesare framework-ului Laravel folosind comenzile:<\/p>\n<blockquote><p>chmod -R 755 \/var\/www\/html\/<a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">virtono<\/a>\/<br \/>\nchmod -R 777 \/var\/www\/html\/<a href=\"https:\/\/www.virtono.com\" target=\"_blank\" rel=\"noopener\">virtono<\/a>\/storage<\/p><\/blockquote>\n<p>Intr\u0103m \u00een browser, vizit\u0103m ip-ul VPS-ului \u0219i g\u0103sim Laravel-ul instalat. Felicit\u0103ri!<\/p>\n<h5 style=\"text-align: center;\">4.) Configurarea Laravel<\/h5>\n<p>Ultimul pas este conectarea framework-ului Laravel la baza de date mySQL, vizit\u0103m directorul Laravel, apoi edit\u0103m fi\u0219ierul .env astfel:<\/p>\n<blockquote><p><span>DB_CONNECTION=mysql<\/span><br \/>\n<span>DB_HOST=127.0.0.1<\/span><br \/>\n<span>DB_PORT=3306<\/span><br \/>\n<span>DB_DATABASE=<strong>virtono<\/strong><\/span><br \/>\n<span>DB_USERNAME=<strong>laravel<\/strong><\/span><br \/>\n<span>DB_PASSWORD=<strong>ceparolavrei<\/strong><\/span><\/p><\/blockquote>\n<p>Datele pe care le edit\u0103m \u00een fi\u0219ierul .env sunt cele introduse la pasul 1.4.<\/p>\n<p>Ultimul lucru pe care trebuie s\u0103-l facem este introducem comanda:<\/p>\n<blockquote><p>php artisan migrate<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/migrate-300x66.png\" alt=\"Datele au fost imporate cu succes in mySQL.\" width=\"300\" height=\"66\" class=\"alignnone wp-image-263 size-medium\" srcset=\"https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/migrate-300x66.png 300w, https:\/\/www.virtono.ro\/blog\/wp-content\/uploads\/2020\/10\/migrate.png 661w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Dac\u0103 totul este configurat \u0219i instalat ok o s\u0103 apar\u0103 fix ca \u00een imaginea de mai sus. Felicit\u0103ri! Ave\u021bi un <a href=\"https:\/\/www.virtono.com\/cloud-vps\" target=\"_blank\" rel=\"noopener\">VPS<\/a> pe care a\u021bi instalat Apache, PHP, mySQL, composer \u0219i Laravel!<\/p>\n<p>Spor la programare!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel este un framework open-source devenit popular mul\u021bumit\u0103 flexibilit\u0103\u021bii sale, iar pentru o mai bun\u0103 dezvoltare se recomand\u0103 folosirea acestui framework pe un VPS. \u00cen r\u00e2ndurile urm\u0103toare o s\u0103 v\u0103 ar\u0103t\u0103m cum pute\u021bi instala toate pachetele necesare rul\u0103rii framework-ului Laravel, precum \u0219i framework-ul Laravel. Pentru acest tutorial se folose\u0219te Ubuntu<\/p>\n","protected":false},"author":1,"featured_media":370,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[5,7,4,12,6],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps","tag-composer","tag-instalare","tag-laravel","tag-virtono","tag-vps"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":15,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":496,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/posts\/246\/revisions\/496"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/media\/370"}],"wp:attachment":[{"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.virtono.ro\/blog\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}