Многие фронт-концевые друзья могут не понимать конфигурацию сервера. Сегодня я вдруг обратился к предыдущей статье, а модификации были пересмотрены и поделились, дали вам несколько общих веб-серверов проектов развертывания.
написать впереди
Каждый из серверов, описанных ниже, очень сложен для погружения, и в этой статьеПросто для обсуждения базового развертывания и использования. Более продвинутые знания и использование по-прежнему нуждаются в друзьях, чтобы исследовать и открывать их самостоятельно, я надеюсь, вы сможете понять некоторые из них, прежде чем начнете читать.Linux
Основы не выглядят слишком сложными.
Примечание: Большинство приведенных ниже примеров основаны наvue-router
изhistory
Статические файлы, сгенерированные по упаковке в режиме, другие рамки аналогичны
Nginx-сервер
Nginx
это высокая производительностьHTTP
и обратный проксиweb
Сервер, в случае высокого параллелизма соединений,Nginx
Выступил довольно хорошо.
Установка Nginx
Я не буду говорить об этом здесь, нуждающиеся друзья могут посмотреть это.это
Модификация конфигурации
поддерживатьhistory
режим, мы хотим изменитьnginx/conf/nginx.conf
документ
location / {
root html;
try_files $uri $uri/ /index.html; # 只需要加上这么一行
index index.html index.htm;
}
Затем поместите статические ресурсы вhtml
внутри папки
затем начнитеNginx
сервер
cd usr/local/nginx/sbin
./nginx
Затем войдите на свой сервер в строке OK.
Поддержка GZip
nginx
Принцип реализации сжатия ресурсов заключается вngx_http_gzip_module
Модуль перехватывает запрос и делаетgzip
тип делатьgzip
Compression, этот модуль является базовым по умолчанию и не нуждается в перекомпиляции, просто откройте его напрямую. Общая конфигурация выглядит следующим образом
#开启和关闭gzip模式
gzip on|off;
#gizp压缩起点,文件大于1k才进行压缩
gzip_min_length 1k;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 1;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript ;
#nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
gzip_static on|off
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区
gzip_buffers 2 4k;
# 设置gzip压缩针对的HTTP协议版本
gzip_http_version 1.1;
Nginx
Хотя конфигурация проста, она сама по себе очень мощная, а прокси, загрузка и т. д. очень практичны.
сервер Apache
Apache
Это первое в мире программное обеспечение веб-сервера, которое очень широкое. Благодаря Vuerouterhash
Паттерны по сути ничем не отличаются от статических ресурсов, вApache
Публиковать в Интернете относительно просто, здесь мы пропускаем публикацию и сразу переходим к настройке для поддержки режима истории.
Базовая конфигурация
- Изменить конфигурацию Apache по умолчанию
первая доработка\conf\httpd.conf
Файл дает файловую поддержкуrewrite
оказаться
// 这一行需要解开注释 引入这个模块
LoadModule rewrite_module modules/mod_rewrite.so
Затем добавьте или измените следующий код
# 重写文件根目录
DocumentRoot "/usr/local/apache/demo"
# 目录
<Directory "/usr/local/apache/demo">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
Options Indexes FollowSymLinks
#
# 修改未允许重写
AllowOverride all
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
- Добавить правило htaccess
Во время вышеуказанной операции измените конфигурацию сервера по умолчанию, чтобы сервер мог поддерживатьRewrite
, давайте создадимRewrite
правило
первый в иindex.html
Новое братское место.htacces
Файл, пожалуйста, обратитесь кVue-Router
Официальный сайтпример
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Apache включает сжатие Gzip
/usr/local/apache/bin/apxs -i -c -n -a mod_deflate.so
Развертывание сервера Tomcat
В текущей среде, где передняя и задняя части разделены, как правило, немногие используют его.Tomcat
делатьweb
сервер.有的企业可能会配合着SpringMVC
Давайте воспользуемся им вместе и напишем здесь. Он также прост в настройке.
настроитьserver.xml
найди первымTomcat
в каталоге сервераtomcat/conf/server.xml
файл, нашелHost
, измените его на желаемую конфигурацию. в основномappBase
, который определяет базовый каталог для статических файловых запросов.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
Настроить для поддержки режима истории
Просто добавьте в опубликованную папкуWEB-INF
в папке конфигурации. Как показано ниже
WEB-INF
папку в проекте, затемtomcat
будет автоматически сканироватьweb.xml
Затем добавьте конфигурацию.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<!-- <display-name>webapp</display-name> -->
<description>
webapp
</description>
<error-page>
<!-- 重写404页面 -->
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
</web-app>
Эта конфигурация является полной, можно сказать, что вор просто. Что касается того, как установитьTomcat
Сервер, давайте решим сами 😁
Проект Nuxt (рендеринг на стороне сервера)
выпускатьSSR
Когда проект официально рекомендовал два методаРазвертывание приложения рендеринга на стороне сервераа такжеРазвертывание статического приложения. Статическое развертывание приложений в основном теряетсяSSR
преимущества, а способ развертывания аналогичен описанному выше. Здесь обсуждается только развертывание приложения рендеринга на стороне сервера.
Развертывание приложения рендеринга на стороне сервера отличается от статического развертывания, нам также необходимо развернуть его на сервере.Node
окружающая обстановка.
Node环境部署
- CD To
/usr/local
node
после входаnode
Папка (имя может быть произвольным, здесь узел используется для демонстрации)
cd /usr/local
mkdir -p node
- скачать
Node
Здесь я использую последнюю долгосрочную версию службы. Если вы хотите установить другие версии, вы можетездесьнайти, вы также можете использоватьnvm
управлять своимNode
,Простойруководство
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.gz
- После завершения загрузки разархивируйте и переименуйте папку
# 解压到当前文件夹
tar -zxvf node-v10.13.0-linux-x64.tar.gz -C ./
# 改名
mv node-v10.13.0-linux-x64/ ./node10.13.0
- Установите мягкое соединение для
node,npm
Зарегистрируйте переменные среды (другиеnpm
Глобальный пакет также должен быть зарегистрирован так)
# 软链接指向到node npm
ln -s /usr/local/node/node10.13.0/bin/node /usr/local/bin/node
ln -s /usr/local/node/node10.13.0/bin/npm /usr/local/bin/npm
- Проверьте, успешно ли установлена программная ссылка
ls -al /usr/local/bin
Следующий дисплей указывает на успех
затем используйтеnode -v
node -v
# 出现版本号就是安装成功了
v10.13.0
Пока нашNode
Среда успешно установлена, и следующим шагом будет продолжениеnuxt
развертывать
Nuxt
развертывать
- Установить глобально
nuxt
, Затем установите мягкое соединение вышеописанным способом
# 安装
npm i nuxt -g
# 建立软连接
ln -s /usr/local/node/node10.13.0/bin/nuxt /usr/local/bin/nuxt
- развертывание кода
назад/local
папку, мы создаемnuxt
файл для хранения моегоnuxt
проект. затем введитеnuxt
папка
# 回到local
cd ../
mkdir nuxt
cd nuxt
Выполнить в локальной средеnuxt build
, который затем генерирует.nuxt
папка.
затем изменитьpackage.json
, добавить в него новый контент,nuxt
Приложение автоматически настроит номер порта и адрес службы в соответствии с приведенной ниже конфигурацией.
"config": {
"nuxt": {
"host": "0.0.0.0", # 通过IPV4访问
"port": xxxx
}
},
Затем положить в проект.nuxt文件夹 static文件夹 package.json nuxt.config.js
загрузил на серверnuxt
папка,
затем вnuxt
Выполнить в папке
# 为了方便我这这里服务器上执行了install,正式项目不建议这么干
npm i
Выполнить после завершения загрузкиnuxt start
Следующий журнал показывает, что мы успешно запустили нашуnuxt
заявление
pm2
использовать
С момента использованияNode
сервис, то нам лучше использоватьpm2Сделайте процесс опекуна, как дляpm2
что есть иpm2
Что он делает? В этой статье мы не будем вдаваться в подробности. Если вам интересно, вы можете посмотреть сами.
Установить первымpm2
npm i pm2 -g
# 建立软连接
ln -s /usr/local/node/node10.13.0/bin/pm2 /usr/local/bin/pm2
затем вpackage.json
Присоединяйсяpm
Запустите команду или запустите ее напрямую, как показано ниже.
# package.json
"scripts": {
"pm2:nuxt": "pm2 start npm --name 'XXX' -- run nuxt:start", # 启动名字为xxx的进程
"nuxt:start": "PORT=xxxx nuxt start",
"start": "nuxt start",
"generate": "nuxt generate",
"pm2:stop:all": "pm2 stop all" # 停止所有进程
}
# 直接启动命令
pm2 start npm --name 'XXX' -- run nuxt:start
Такой журнал означает успех
Ниже приведены некоторые часто используемыеpm2
Заказ
pm2 start 0 # 启动 id为 0的指定应用程序
pm2 restart 0 # 重启 id为 0的指定应用程序
pm2 stop 0 # 停止 id为 0的指定应用程序
pm2 delete 0 # 删除 id为 0的指定应用程序
pm2 list # 查看当前正在运行的进程
pm2 start all # 启动所有应用
pm2 restart all # 重启所有应用
pm2 stop all # 停止所有的应用程序
pm2 delete all # 关闭并删除所有应用
pm2 logs # 控制台显示所有日志
pm2 logs 0 # 控制台显示编号为0的日志
pm2 show 0 # 查看执行编号为0的进程
pm2 monit xxx # 监控名称为xxxx的进程
До сих порNuxt
Приложение даже развернуто.
Проблема
-
пройти через
koa server.js
Когда он запускается, к нему нельзя получить доступ из Интернета. Используется сервер Alibaba Cloud, добавлены правила группы безопасности.Я еще не нашел точную причину этой проблемы, но позже изменил ее.
nuxt start
После запуска доступ к внешней сети осуществляется плавно. Надеюсь, кто-то из знающих ответит. -
Недостаточно прав для использования
sudo su
не могу найтиnode npm
команда ожиданияЭто очень просто, мы можем восстановить мягкую ссылку на другой стороне.
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
Суммировать
После того, как проект закончен, его нужно аккуратно выпустить, чтобы получить чувство выполненного долга, правильно 😁, типов серверов в этой статье очень много, но не помешает узнать больше 😭 , научиться настраивать сервер, а затем сотрудничать сNode
Публикация автоматизированных скриптов, процесс публикации просто безупречен.
исходный адресСтавьте ⭐, если считаете это полезным