Если вы когда-либо написали код, вы, вероятно, знаете, что:
- 🔍 В поисках примеров кода полезно для многих вещей.
- 🤦♂️. Github поиск вид отстой.
Возможно, вы не попросили продвинутые инструменты поиска кода, такие как SourceGraphraph, потому что начаток выглядит слишком много усилий.
Страница «Начало работы» Souraphraph уже имеет тонна информации о различных способах начать использовать SourceGraph, но здесь мы пройдем через мнение Настройка руководства.
В частности, мы будем:
- ☁️ Настройте SourceGraph на VPS (на цифровой камень в этом случае, но не стесняйтесь использовать свой собственный поставщик облака).
- 🚍 Настройте nginx в качестве обратного прокси.
- 🎫 Используйте Letsencrypt, чтобы получить сертификат SSL.
- 👩💻. Интегрируйтесь с GitHub для поиска через публичные и частные репозитории, принимаемые там.
Это компромисс между запущенным пососграфом локально на вашем устройстве Dev (где функции будут ограничены), и устанавливая его в кластер (где настроек потребуется больше времени).
🖼 Конечный результат следующего состояния этого руководства
В конце этого руководства у вас будет свой собственный SourterGraph Server настроен на пользовательском домене, таким как sg.example.com. . Он будет периодически извлечь любые репозитории, которые вы заинтересованы в GitHub (Private, Public, или от всего вашего Github org) и обновляют его индекс, чтобы у вас были эти под рукой.
Вы сможете выполнить поиск по всем вашим кодам с помощью расширенного синтаксиса и лучшего по умолчанию.
☑️ Требования к выполнению вдоль
Чтобы следовать, вы должны:
- 💻 Удобно использовать Linux и SSH, подключение к VPS и установке и настройке программного обеспечения.
- 🌐 иметь пользовательский домен, где вы можете добавлять новые субдомены, например, через namecheap или подобное.
- ☁️ иметь учетную запись в облачном провайдере, таком как Digitalocean или AWS.
🔨 Настройка VPS и установка Docker и SourceGraph
Во-первых, нам нужно настроить VPS, работающий Ubuntu 18.04. На этом мы устанавливаем Docker и потяните сознатель графики докера.
Выберите Ubuntu 18.04 (20.04 имеет некоторые проблемы, устанавливающие Docker) и капельку с достаточным количеством дискового пространства. Здесь мы выбрали один, который стоит 40 долларов в месяц — но выбрать меньший, если вы знаете, у вас есть несколько репозиториев.
Далее выберите регион, которая находится рядом с вами, настройте клавишу SSH и дайте свой сервер дружеское имя, такое как SourceGraph-Server Отказ
Наконец, нажмите «Создать» и подождите несколько секунд, пока не получите свой IP-адрес и не смогу подключиться к серверу.
⚒️. Настройка VPS.
Мы собираемся просто использовать по умолчанию root Пользователь, который имеет некоторые последствия безопасности, но, поскольку мы не собираемся использовать этот сервер для чего-либо, кроме SourceGraph, это не являются основными. Если вы предпочитаете устанавливать все как пользователь без root, вам нужно префикс большинство команд Linux с Sudo Отказ
Подключите к вашему экземпляру с SSH, подставляя IP-адрес, который вы получили от Diumpanyocean.
ssh root@68.183.10.58
Установите Docker, запустив:
snap install docker
Откройте панель TMUX (где мы оставим поощряющийграфом), набрав TMUX Отказ
Теперь потяните контейнер SourceGraph Docker, запустив (проверьте обновленную версию этой команды на https://about.sourcegraph.com/get-started ).
docker run --publish 7080:7080 --publish 127.0.0.1:3370:3370 --rm --volume ~/.sourcegraph/config:/etc/sourcegraph --volume ~/.sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:3.24.1
Он займет полминуту или около того, чтобы вытащить зависимости и инициализацию SourceGraph, а затем вы увидите пососграфом, работающий на порту 7080.
Нажмите Ctrl-B а затем нажмите D Отсоединить сеанс TMUX. Это оставит пососграфом, работающий на заднем плане даже после закрытия сеансов SSH.
Если вы хотите проверить это на этом этапе, откройте Новый SSH подключение к вашему серверу вместе с локальным портом для их (снова подстановка IP-адреса на цифровой документ)
ssh -L 7080:localhost:7080 root@68.183.10.58
Это будет передать ваш локальный порт 7080 через SSH для подключения к localhost: 7080 На экземпляре на цифровой цепи, когда исходный график работает. На вашей местной машине вы можете посетить http://localhost: 7080 В вашем браузере И вы должны увидеть страницу приветствия SourceGraph.
Не зарегистрируйтесь еще — Давайте сначала установим правильное соединение с помощью пользовательского домена и SSL.
👉 Указывая на домен в вашей капельке
Мы могли бы получить доступ к нашему серверу, набрав в IP-адресе, но трудно запомнить, и мы не можем легко получить SSL-сертификат, чтобы надежно получить доступ к нашему коду через HTTPS.
Вместо этого мы укажем поддоменность домена, которую мы контролируем — например. sg.example.com На капельке Digitalocean, чтобы мы могли получить доступ к серверу Sourpharapgraph, посетив этот домен.
В вашей панели управления DNS добавьте запись «A», которая указывает поддоменность к IP-адресу (тот же, который вы использовали для подключения к вашим VPS через SSH).
В NameCheap это выглядит следующим образом, но это изменится в зависимости от вашего регистратора доменов или поставщика DNS:
Сохраните изменения и дождитесь размножения DNS-записи. Это может занять до 72 часов, но на практике обычно занимает менее 5 минут.
⌨️. Установка Nginx и настройка обратного прокси
Вместо того, чтобы пользователи подключались непосредственно к порту, открытым Docker, мы собираемся настроить Nginx в качестве масштабируемого веб-сервера перед Docker. NGINX будет нести ответственность за ответ на все запросы от конечных пользователей и просыпает их на нашу связь докера.
apt update && apt install nginx
После установки вы должны быть в состоянии посетить поддомен, который мы настроили на предыдущем шаге sg.example.com и посмотрите страницу приветствия Nginx по умолчанию.
Настройка nginx.
Чтобы настроить Nginx в качестве прокси к контейнеру Docker, нам нужно редактировать файл на /etc/nginx/сайты, доступные/по умолчанию Отказ Открыть это с нано (или vim Если вы предпочитаете) бегом:
nano /etc/nginx/sites-available/default
Удалите все в файл и добавьте ниже на своем месте. Замените оба экземпляры sg.example.com С поддоменом, который вы настроили на предыдущем шаге.
server {
server_name sg.example.com;
access_log /var/log/nginx/sourcegraph.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:7080;
proxy_read_timeout 90;
proxy_redirect http://localhost:7080 https://sg.example.com;
}
listen 80;
}
Это связывает бегущий контейнер докеров с Nginx, что означает, что любой трафик, который приходит на нашем sg.example.com Поддомен будет перенаправлен на SourceGraph Server, запущенный внутри докера.
Сохраните файл и запустите:
service nginx reload
Теперь вы сможете увидеть одинаковый поиск страницы приветствия GreetGraph на http://sg.example.com. . Обратите внимание, что безопасная версия ( https ) пока не будет работать, так как нам все еще нужно настроить сертификат SSL.
🎫 Получение сертификата SSL с летесшипником
Установить Certbot Используя Snap, запустив следующую команду:
snap install --classic certbot snap install --classic certbot
Затем запустите:
certbot
И следуйте инструкциям:
- Введите ваш адрес электронной почты.
- Согласен на условия использования.
- Выбрать или из коммуникаций из Эффе.
- Выберите
sg.example.comдомен.
CERTBOT автоматически изменит файл конфигурации NGINX, который мы отредактировали ранее, чтобы использовать HTTPS. вместо http. .
Посетить https://sg.example.com. И теперь вы можете наконец заполнить форму, чтобы подписаться на SourtGraph.
✏️ Настройка SourceGraph с доменом и GitHub
Sourtgraph очень настраивается и имеет много разных вариантов. Два самых важных, чтобы начать с использованием IT:
- Скажите пососграфом, где он принимается.
- Скажите посудуграфом, где найти свой код.
Настройка домена
Посетить https://sg.ritza.co/site-admin/Configuration и растрескивание третьей строки (удалить // в начале). Затем замените домен поддоменом, которую мы выбрали ранее.
Нажмите кнопку «Сохранить изменения» и выберите «Перезагрузить сервер» при появлении запроса.
Связывание к Github
Чтобы получить свой код из GitHub, вам нужно получить токен из GitHub. Войдите в свой аккаунт GitHub и посетите https://github.com/settings/tokens. . Нажмите «Создать новый токен» и следуйте инструкциям.
Вы увидите только ваш токен, чтобы сохранить его где-то в безопасности и безопасных, таких как менеджер паролей.
Теперь перейдите к https://sg.ritza.co/site-admin/external-services/new и выберите github. Изменить конфигурацию к:
- Добавьте ваш токен GitHub.
- Добавьте любые организации, для которых вы хотите клонировать и индексировать все репозитории.
- Добавьте любые отдельные репозитории, которые вы хотите клонировать и индексировать.
Например, в конфигурации ниже мы клонируем все публичные репозитории от Google и все государственные и частные репозитории от Ritza-Co (В нашем примере токен GitHub имеет доступ ко всему Ritza-Co org). Мы также добавляем репозитории для реагирования и Tensorflow по отдельности.
{
"url": "https://github.com",
"token": "e10db0e8307726f57254875992c24dd7ca2e2b23",
"orgs": ["google", "ritza-co"],
"repos": ["facebook/react", "tensorflow/tensorflow"]
}
Нажмите на синюю кнопку «Добавить репозитории» под текстовой коробкой и дождитесь клона и уконтеруйте свои репозитории.
🔎 Запуск вашего первого поиска по созначению
Хотя это делает это, вы можете пойти дальше и попробовать ваш первый поиск по сосребесению (что может быть неполным, пока репоиспетели все еще клонируют). Например, ниже вы можете увидеть все пустые операторы печати в файлах Python во всем коде.
В отличие от поиска GitHub, он уважает спецслужбы и возвращает совпадения, включая () Отказ Он также имеет простые возможности для исключения или включения видов, совпадающих корпусов и намного больше.
Посмотрите на https://docs.sourcegraph.com/code_search/tutorials/examples Для некоторых примеров поиска и начать узнавать синтаксис.
Оригинал: «https://dev.to/ritza/the-opinionated-guide-to-setting-up-a-sourcegraph-server-for-more-productive-advanced-code-search-3578»