В этой публикации я разберу как развернуть Laravel-приложение на сервере под операционной системой Ubuntu Linux 20.04.
Laravel — это общедоступный PHP-фреймоворк, был разработан еще в 2011 году. Используется для создания многоуровневых Web-ресурсов и приложений.
Он оперативно поддерживает функциональное тестирование при создании ПО, и можно не использовать другие инструменты тестирования ПО. Легкая масштабируемость проектов на фреймворке Laravel.
Фреймворк обеспечивает простую, но быструю и доступную систему авторизации и сразу дает права доступа к вашим файлам. Что позволяет нам, сделать ограничение на доступ неавторизованных пользователей. Обеспечение защиту приложений, код фреймворка защищен от таких угроз как SQL-иньекций или межсайтовых подделок запросов.
Laravel предоставляет простой и гибкий подход к разработке веб-приложений. Он поставляется с мощными функциями и инструментами, которые позволяют разработчикам быстро и легко создавать и обслуживать веб-приложения. Также для продвинутых разработчиков есть возможность использовать шаблоны и модули для более эффективного проектирования и разработки приложений.
Запуск простого java приложения на удаленном сервере.
Кроме того, Laravel поддерживает много популярных баз данных, таких как MySQL, Postgres, SQLite и MS SQL, что делает его более пригодным для разработки приложений с различными базами данных. У него есть встроенные механизмы для безопасности и аутентификации, ко всему перечисленну он имеет мощные инструменты для мониторинга приложений. Все это делает Laravel очень привлекательным для разработки веб-приложений.
Nginx поддерживает следующие уникальные фишки:
- Управление производительностью: Nginx предоставляет много инструментов для настройки производительности сервера, включая возможность масштабирования и контроля нагрузки.
- Поддержка большого количества протоколов: Nginx поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP, SMTP и многие другие.
- Управление кешированием: Nginx позволяет настраивать кеширование, чтобы улучшить производительность и повысить скорость отклика.
- Поддержка распределенных приложений: Nginx поддерживает распределенные приложения, позволяя распределять нагрузку между несколькими серверами.
- Поддержка виртуального хостинга: Nginx позволяет делать виртуальный хостинг, что позволяет запускать несколько веб-сайтов на одном сервере.
Требования к системе
- Сервер на операционной системе Linux Ubuntu;
- Обновленные пакеты системы и приложений;
- Установленный Web-сервер Nginx, «БД» MySQL, PHP и Composer.
Начало работы
sudo apt update
Устанавливаем нужные пакеты модулей PHP.
sudo apt install php-mbstring php-xml php-bcmath
Создание БД
Чтобы показать основное предназначение фреймворка, создадим таблицу «city list», где я внес лист популярных городов.
Spring Boot: публикуем приложение на сервер (deploy)
Заходим в консоль MySQL из под root`a базы данных.
sudo mysql
Создал новую «БД».
Создал пользователя и выдал все права для созданной «БД».
Выдал все права для «БД» пользователю, затем вышел из «БД».
Это дает пользователю все права доступа к «БД» для администрирования.
Проверяем можем ли зайти в MySQL используя учетные данные нашего пользователя.
Проверяем так же доступ к созданной «БД», затем выйдите из «БД».
Создание нового приложения
Создаю табличку в «БД».
Вносим данные в таблицу. В моем случае, вношу данные популярных городов.
Проверяем, внеслись ли записи в таблицу. Появится вот такое окно.
Разработка приложения для фреймворка
После того, как создал приложение citylist. Она используется для показа основных конфигурации фреймворка и доступом подключения к «БД».
Создал новый каталог «citylist», где будет содержаться сам фреймворк.
composer create-project —prefer-dist laravel/laravel “name_of_your_project”
После установки, будет показан следующая информация в командной строке.
Теперь открываем каталог нашего приложения, запускаем команду artisan для того, чтобы проверить установились ли нужные компоненты правильно.
cd “name_of_your_project”
php artisan
Artisan – это CLI входящий в состав фремворка. Он выдает ряд команд, которые полезны при разработке вашего приложения.
Если все сделано как по инструкции, то показано будет следующие.
Настройка фреймворка
Настройка фреймворка расположена в каталоге “config” вашего главного каталога. Когда мы устанавливали фреймворк через утилиту “Composer” то создался файл среды.
Файл среды — записаны настройки вашей среды, где находится приложение, и ставит свой файл по приоритету выше перед другими файлами настроек, которые находятся в каталоге «config».
Открываем файл “.env”.
Хоть и в файле на первый взгляд много конфигураций, но я буду настраивать лишь те, которым нам понадобятся. Дальше я напишу и опишу, какие параметры я буду менять.
- APP_NAME: Имя вашего проекта, в основном пользуется для уведомления;
- APP_ENV: Актуальная среда вашего приложения;
- APP_KEY: Специальный ключ для генерации хэш-сумм, создается сразу после установки фреймворка, его не трогаем;
- APP_URL: Сюда вписываем ваш ip-адрес;
- DB_DATABASE: имя вашей «БД»;
- DB_USERNAME: имя пользователя для подключения к «БД»;
- DB_PASSWORD: пароль к «БД» чтобы подключаться к ней.
Изменяем следующие ключи в файле приложения.
Настройка веб-сервера
Перемещаем папку нашего приложения в каталог «/var/www», где обычно хранят все приложения, которые функционируют на веб-севере.
sudo mv ~/yourproject /var/www/yourproject
Выдал доступ к папкам, куда фреймворк сохраняет созданные приложением файлы.
Приступим к настройке веб сервера. Создаем файл настроек виртуального хоста.
sudo nano /etc/nginx/sites-available/yourproject
Вставляем следующие настройка для веб-сервера.
server <
listen 80;
server_name IP ADDRESS/DOMAIN_NAME;
root /var/www/YOURPROJECT/public;
add_header X-Frame-Options «SAMEORIGIN»;
add_header X-XSS-Protection «1; mode=block»;
add_header X-Content-Type-Options «nosniff»;
index index.html index.htm 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_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;>
location ~ /.(?!well-known).*
>
Теперь, запускаем новый файл с настройками виртуального хоста, создаем ссылку на ваш проект в «sites-enabled».
sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled/
Проверяем на синтаксис ошибок в настройках.
sudo nginx -t
systemctl reload nginx
Настройка главной страницы фреймворка
Открываем файл главного маршрута.
Источник: serverspace.ru
Deployment
Когда вы готовы развернуть ваше приложение Angular на удаленном сервере,у вас есть различные варианты развертывания.
Простые варианты развертывания
Прежде чем полностью развернуть приложение,вы можете протестировать процесс,построить конфигурацию и установить поведение с помощью одной из этих промежуточных методик.
Сборка и подача с диска
Во время разработки вы обычно используете команду ng serve для создания, просмотра и обслуживания приложения из локальной памяти с помощью webpack-dev-server . Однако, когда вы будете готовы к развертыванию, вы должны использовать команду ng build для сборки приложения и развертывания артефактов сборки в другом месте.
И ng build , и ng serve очистки выходной папки перед сборкой проекта, но только команда ng build записывает сгенерированные артефакты сборки в выходную папку.
Выходная папка по умолчанию является dist/project-name/ . Для вывода в другую папку измените outputPath в angular.json .
По мере того,как вы приближаетесь к концу процесса разработки,обслуживание содержимого вашей выходной папки с локального веб-сервера может дать вам лучшее представление о том,как ваше приложение будет себя вести,когда оно будет развернуто на удаленном сервере.Вам понадобятся два терминала,чтобы получить опыт работы в реальном времени.
-
На первом терминале запустите ng build команды в часовом режиме для компиляции приложения в dist папки.
ng build —watch
lite-server —baseDir=»dist/project-name»
Этот метод предназначен только для разработки и тестирования и не является поддерживаемым или безопасным способом развертывания приложения.
Автоматическое развертывание с помощью CLI
Команда Angular CLI ng deploy (представленная в версии 8.3.0) выполняет компоновщик CLI для deploy связанный с вашим проектом. Ряд сторонних сборщиков реализуют возможности развертывания на разных платформах. Вы можете добавить любой из них в свой проект, запустив ng add [package name] .
Когда вы добавляете пакет с возможностью развертывания, он автоматически обновляет конфигурацию вашего рабочего пространства ( файл angular.json ) с разделом deploy для выбранного проекта. Затем вы можете использовать команду ng deploy для развертывания этого проекта.
Например,следующая команда автоматически развертывает проект на Firebase.
Команда интерактивная.В этом случае вы должны иметь или создать учетную запись Firebase и аутентифицироваться,используя эту учетную запись.Команда попросит вас выбрать проект Firebase для установки
Эта команда создает ваше приложение и загружает производственные активы в Firebase.
В таблице ниже вы можете найти список пакетов, которые реализуют функциональность развертывания на разных платформах. deploy команды для каждого пакета может потребоваться различные параметры командной строки. Вы можете прочитать больше, перейдя по ссылкам, связанным с именами пакетов ниже:
Если вы выполняете развертывание на самоуправляемом сервере или у вас нет сборщика для вашей любимой облачной платформы, вы можете либо создать конструктор, который позволяет использовать команду ng deploy , либо прочитать это руководство, чтобы узнать, как вручную развернуть ваше приложение. .
Базовое развертывание на удаленном сервере
Для простейшего развертывания создайте производственную сборку и скопируйте выходной каталог на веб-сервер.
-
Начните с производственного корпуса:
ng build
Это самое простое развертывание вашего приложения,готового к производству.
Развертывание на страницах GitHub
Чтобы развернуть приложение Angular на GitHub Pages , выполните следующие шаги:
- Создайте репозиторий GitHub для своего проекта.
- Настройте git в своем локальном проекте, добавив пульт, который указывает репозиторий GitHub, созданный на предыдущем шаге. GitHub предоставляет эти команды при создании репозитория, чтобы вы могли копировать и вставлять их в командной строке. Команды должны быть похожи на следующие, хотя GitHub заполняет настройки для вашего проекта за вас:
git remote add origin https://github.com/your-username/your-project-name.git git branch -M main git push -u origin main
git checkout -b gh-pages
ng build —output-path docs —base-href /your_project_name/
Проверьте angular-cli-ghpages , полнофункциональный пакет, который делает все это для вас и имеет дополнительную функциональность.
Server configuration
В этом разделе рассматриваются изменения,которые,возможно,придется внести на сервер или в файлы,развернутые на сервере.
Маршрутизированные приложения должны возвращаться к index.html
Приложения Angular-идеальные кандидаты на обслуживание с помощью простого статического HTML-сервера.Вам не нужен серверный движок для динамической компоновки страниц приложения,поскольку Angular делает это на стороне клиента.
Если приложение использует маршрутизатор Angular, вы должны настроить сервер так, чтобы он возвращал страницу хоста приложения ( index.html ) при запросе файла, которого у него нет.
Маршрутизируемое приложение должно поддерживать «глубокие ссылки». Глубокая ссылка является URL , который указывает путь к компоненту внутри приложения. Например, http://www.mysite.com/heroes/42 — это глубокая ссылка на страницу сведений о герое, на которой отображается герой с id: 42 .
Нет никаких проблем,когда пользователь переходит на этот URL изнутри работающего клиента.Угловой маршрутизатор интерпретирует URL и маршруты к этой странице и герою.
Но переход по ссылке в электронном письме, ввод ее в адресную строку браузера или просто обновление браузера на главной странице — все эти действия выполняются самим браузером, а не работающим приложением. Браузер делает прямой запрос на сервер для этого URL-адреса, минуя маршрутизатор.
Статический сервер обычно возвращает index.html , когда получает запрос на http://www.mysite.com/ . Но он отклоняет http://www.mysite.com/heroes/42 и возвращает ошибку 404 — Not Found если только он не настроен на возврат index.html .
Примеры обратной конфигурации
Не существует единой конфигурации,которая бы работала на каждом сервере.В следующих разделах описаны конфигурации для некоторых из наиболее популярных серверов.Этот список ни в коем случае не является исчерпывающим,но должен предоставить вам хорошую отправную точку.
Apache | Добавьте правило перезаписи в файл .htaccess , как показано ( ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess ): |
RewriteEngine On # Если запрашивается существующий актив или каталог, перейдите к нему как есть RewriteCond % % -f [OR] RewriteCond % % -d RewriteRule ^ — [L] # Если запрошенный ресурс не существует, используйте index.html RewriteRule ^ /index.html
try_files $uri $uri/ /index.html;
require ‘sinatra’ # Структура папки # . # — server.rb # — публичный # |— имя-проекта # |— index.html get ‘/’ do folderDir = settings.public_folder + ‘/project-name’ # ng построить выходную папку send_file File.join(folderDir, ‘index.html’) end
system.webServer> rewrite> rules> rule name=»Angular Routes» stopProcessing=»true»> match url=».*» /> conditions logicalGrouping=»MatchAll»> add input=»» matchType=»IsFile» negate=»true» /> add input=»» matchType=»IsDirectory» negate=»true» /> conditions> action type=»Rewrite» url=»/index.html» /> rule> rules> rewrite> system.webServer>
«rewrites»: [ «source»: «**», «destination»: «/index.html» > ]
Настройка правильного MIME-типа для активов JavaScript
Все файлы JavaScript вашего приложения должны обслуживаться сервером с заголовком Content-Type , установленным в text/javascript или другой MIME-тип, совместимый с JavaScript .
Большинство серверов и хостинг-услуг уже делают это по умолчанию.
Сервер с неправильно настроенным mime-типом для файлов JavaScript приведет к тому,что приложение не запустится со следующей ошибкой:
Failed to load module script: The server responded with a non-JavaScript MIME type of «text/plain». Strict MIME type checking is enforced for module scripts per HTML spec.
В этом случае вам нужно будет проверить конфигурацию вашего сервера и перенастроить его для обслуживания файлов .js с Content-Type: text/javascript . См. Руководство к вашему серверу, чтобы узнать, как это сделать.
Angular 15.0
Инъекция зависимостей в угловой
Когда вы разрабатываете небольшую часть системы,например,модуль или класс,вам может понадобиться использовать функции из других классов.
Настройка поставщиков зависимостей
В разделе Создание и внедрение сервисов описывается использование зависимостей классов.
Запрос услуг с другого сервера (CORS)
Разработчики Angular могут столкнуться с ошибкой совместного использования ресурсов между источниками при выполнении запроса на обслуживание (обычно данные на сервер, отличный от собственного приложения).
Источник: runebook.dev
Как развернуть Python-приложение на сервере
Узнайте, как успешно развернуть Python-приложение на сервере с помощью этой информативной статьи для новичков, шаг за шагом.
Алексей Кодов
Автор статьи
30 июня 2023 в 10:42
Развертывание Python-приложения на сервере может быть сложным процессом, особенно для новичков. В этой статье мы рассмотрим основные шаги, которые помогут вам успешно развернуть ваше приложение.
Шаг 1: Выбор сервера и операционной системы
Первым делом, выберите подходящий сервер для вашего приложения. Вам может потребоваться выбрать между облачными серверами, выделенными серверами или виртуальными серверами. Определитесь с операционной системой: популярными вариантами являются Linux (например, Ubuntu, CentOS) и Windows.
Шаг 2: Установка Python и необходимых библиотек
Убедитесь, что на вашем сервере установлен Python и все необходимые библиотеки для вашего приложения. Если нет, выполните установку соответствующих пакетов.
sudo apt-get update sudo apt-get install python3 python3-pip
Шаг 3: Загрузка вашего приложения на сервер
Теперь загрузите исходный код вашего приложения на сервер. Вы можете использовать такие инструменты, как scp , rsync или git для копирования кода на сервер.
git clone https://github.com/yourusername/yourapp.git cd yourapp
Шаг 4: Установка виртуального окружения
Создайте виртуальное окружение для вашего приложения. Это позволит изолировать зависимости вашего приложения от системных библиотек.
python3 -m venv venv source venv/bin/activate
Шаг 5: Установка зависимостей
Теперь установите зависимости вашего приложения с помощью pip .
pip install -r requirements.txt
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT
Шаг 6: Настройка веб-сервера
Выберите подходящий веб-сервер для вашего приложения.
Варианты включают Nginx, Apache или Gunicorn. Настройте веб-сервер таким образом, чтобы он перенаправлял запросы на ваше приложение.
Пример конфигурации Nginx:
location / < proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; >
Шаг 7: Запуск приложения
Теперь ваше приложение готово к запуску. Запустите его с помощью веб-сервера или с использованием командной строки.
python manage.py runserver 0.0.0.0:8000
Поздравляем! Вы успешно развернули ваше Python-приложение на сервере. Теперь вы можете начать использовать его и продолжить разработку.
Не забудьте регулярно обновлять исходный код вашего приложения на сервере и следить за обновлениями зависимостей. Это обеспечит безопасность и стабильность вашего приложения.
Источник: sky.pro