Почему не имеет смысла размещать сайт на своем домашнем компьютере

Обновлено: 04.07.2024

Но я же не зря открыл эту тему. Всё не так уж радужно.

1. Нормальный хостинг крутится на Linux. Да, на Windows тоже можно поставить Apache, Nginx, PHP и MySQL и всё это будет как-то работать. Но к сожалению, на Linux очень много серверного софта, у которого на Windows просто нет аналогов. Это серверные модули, это memcached, это nginx+php5-fpm, phpDaemon, это ещё с десяток нужных для серьёзной разработки вещей. Которых на Windows нет и не будет никогда. Ты можешь поставить на домашнем компе Linux. Но тогда забудь про игрушки, MS Office и Photoshop. Уже не так радужно, верно?

3. Исходящая скорость. Ты знаешь что это? Это скорость интернет-соединения, которая доступна у тебя дома. Но это не та скорость, которую твой провайдер написал у себя в рекламном буклете. Там написана входящая скорость. Наверняка у тебя она достаточно высокая, 100 Мбит или даже выше. Однако исходящая (а именно она важна, когда некто будет пытаться скачать с твоего сайта страничку или может быть даже файлы) обычно на порядок меньше. Наверняка она у тебя не превышает реальных 10 Мбит. А это значит, что 5-6 онлайн пользователей могут легко заткнуть твой интернет, что ни на игрушки, ни на комфортное использование уже не останется.

4. Стабильность. Это означает, что твой компьютер должен быть теперь включён 24 часа в сутки. И никакие причины (отключения электроэнергии в квартире в том числе) не должны приводить к пропаданию его из сети. Пропавший из интернета сервер резко теряет доверие поисковых роботов и они его не задумываясь выбрасывают из рейтинга или же опускают так низко, где твой сайт никто никогда не найдёт. А если ты думаешь выключать свой комп на ночь (ведь твои родители наверняка платят за электроэнергию и им не в кайф постоянно включенный прибор), то от тебя начнут уходить и те пользователи, которые знают твой сайт по домену.

6. Учти то, что усиленно работая 24 часа в сутки, постоянно предоставляя посетителям различные данные на HDD, твой комп будет нехило изнашиваться. И твой обычный домашний комп через полгода такой работы можно будет просто выбросить на свалку.

Обязательные условия

Хорошее интернет-соединение

Рассматриваемый метод размещения сайта далеко не идеален, так как ресурсов обычных персональных компьютеров редко хватает на поддержание работоспособности сайта. Но при тестировании или размещении небольшого сайта этот вариант может подойти. Первостепенно вам потребуется наличие мощного интернет-соединения. Хостингу необходимо делиться собственной скоростью интернета с пользователями, посещающими сайт. Чем обширнее аудитория, тем больше ресурсов требуется на поддержание работоспособности.

На одного пользователя, как правило, требуется приблизительно 50 кб/с. То есть тариф со скоростью отдачи в 5 Мб/с сможет обеспечить нормальный доступ к сайту одновременно 100 посетителям. При большем количестве посетителей увеличится время ожидания загрузки, из-за чего многие из них попросту откажутся от идеи посетить ваш сайт.

Но эта проблема не будет серьёзной при условии, что вы – владелец узконаправленного сайта с небольшой аудиторией, либо же разработчик, желающий просто протестировать работу сайта.

Современные интернет-провайдеры оказывают услуги по установке оптоволокна и предлагают более скоростные тарифы, что тоже помогает частично решить вышеописанную проблему.

Большой объем физической памяти

Ещё одно обязательное требование – наличие достаточного пространства на жестком диске компьютера. Его должно хватать на то, чтобы хранить весь контент сайта и материалы, публикуемые посетителями (если такая функция имеется). Постарайтесь предварительно оценить приблизительный размер создаваемого ресурса и объём материалов, выкладываемых пользователями.

Статический IP адрес

Ещё отмечу то, что вам потребуется получить сведения о собственном статическом IP-адресе. Он помогает организовывать собственный сервер с постоянным адресом и обеспечивать удалённый доступ к персональному компьютеру и прочим интерфейсам (камерам видеонаблюдения, к примеру). Получить все необходимые сведения можно посредством обращения к своему интернет-провайдеру.

Алгоритм запуска сайта на своём компьютере

Удостоверившись в том, что у вас есть все необходимые для поддержки ресурсы, вы можете приступать к запуску. Я покажу на примере программного обеспечения Open Server. Оно полостью бесплатное, однако за любое денежное пожертвование его можно скачать быстрее. Open Server представляет собой серверную платформу, разработанную специально для использования веб-мастерами. Благодаря ей можно избежать необходимости вручную скачивать и устанавливать целый перечень дополнительных программ по типу php, apache, MySql и так далее.

Рассматриваемое программное обеспечение – это пакет, включающий все требующиеся для запуска сайта компоненты. Они применяются в процессе серверной установки. От вас требуется только распаковать загруженный архив и приступить к созданию сайта или написанию скрипта для него.

Отмечу, что помимо Open Server существуют и другие пакеты, к примеру – Denver, или xampp. Однако они работают хуже рассматриваемого ПО, поэтому я отдаю предпочтение именно ему.

Open Server предоставляет возможность контролировать отдельные элементы сервера, вносить в них различные корректировки и удалять. По мере развития сайта эти функции будут приобретать актуальность и значимость. Рассматриваемый пакет содержит и дополнительные инструменты, при помощи которых можно просматривать логи, планировать задачи сайта и выполнять прочие действия. Отдельно упомяну, что программа позволяет копировать сайт на флешки или карты памяти, после чего – открывать его на других устройствах (крайне полезная функция для разработчиков).

Непосредственно работа начинается со скачивания программы: нужно перейти на официальный сайт разработчика , выбрать оптимальную версию и ввести капчу. Загружать полную версию необязательно. Премиум нужен для применения пакета вместе с другими программами, через которые осуществляется работа с сайтом. Скачивание длится весьма долго: для ускорения нужно внести пожертвование на любую сумму. Делать это или нет – решать вам.

После загрузки нужно установить программу. Размещать её следует непосредственно в корне диска, а не в какой-либо папке. После установки на диске вы найдёте несколько папок и 2 файла установки. В « domains » размещаются папки с запускаемыми сайтами. В « modules » помещается дополнительное ПО. Файлы установки рассчитаны на разные конфигурации систем: выбирайте и запускайте соответствующий. Но перед этим отключите антивирус, иначе он может заблокировать определённые операции установки, из-за чего пакет инсталлируется неправильно. Установку дополнительных компонентов пропускать не стоит.

Установив и запустив программу, вы увидите в правом нижнем углу экрана панель Open Server. По кнопке «Запуск» вы включите сервер, функции кнопок «Перезапустить» и «Остановить» понятны по их названию. В параметрах содержится множество различных пунктов, но они нужны для углублённой работы с программой. Разработчики-специалисты самостоятельно разберутся в них, а простым владельцам, желающим протестировать сайт, они вряд ли понадобятся. Вам нужно просто разместить сайт в соответствующей папке и выбрать его в программе.

На этом всё, сайт запущен, а вы можете тестировать и настраивать его. Чтобы не пропускать новые полезные публикации, рекомендую вам подписаться на специальную рассылку. Благодарю за внимание, всего хорошего!

Хотели бы вы узнать, что такое веб сервер? Или же впервые в жизни "потрогать" виртуальную машину? А может вам просто интересно, как выглядит хостинг? С любовью для пикабушников постараюсь рассказать обо всем по немножко.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Disclamer: Данный материал является ознакомительным и рассчитан на людей, которые только начинают свой путь в мире IT технологий. Технические подробности всего раскрываться не будут(но на вопросы отвечу). Следующий материал является прямым скриптом, как сделать веб хостинг. И небольшая просьба, если вы добавляете в сохранки, оцените пост, тем самым вы даете мне понять, следует ли делать подобные гайды.

Что нам потребуется?
1. Виртуальная машина (далее ВМ) - VMWare
2. Любой компьютер, на который мы установим ВМ
3. Дистрибутив Ubuntu 18.04 LTS. Что бы не пугать вас, лучше скачайте Desktop image, она имеет графическую оболочку, а не только консоль.

Первым делом устанавливаем нашу программу виртуализации - VMWare. Запускаем ее и нажимаем "Создать новую ВМ". Выбираем скачанный дистрибутив

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Full name и user name - по вашему желанию. Жмем далее, "Имя ВМ" и путь хранения ВМ - по вашему усмотрению. Размер выделяемой памяти оставляем по умолчанию(можно снизить до 10 гб), жмем далее.

В последнем пункте жмем Customize Hardware. Т.к. вы будете работать в самой ВМ и ее виртуальной оболочке, стоит увеличить значения пункта Processors до 4.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

В пункте Network Adapter выбрать значение Bridged и установить галочку Replicate.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Жмем Close > Finish. Дожидаемся окончания установки ОС. Когда ОС установилась, открываем терминал комбинацией клавиш Alt+Crtl+T или же в нижнем левом углу жмем на Show Application и пишем в поиске - Terminal.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Далее нам следует получить права супер пользователя, в терминале вводим команду sudo su и вводим пароль, который вы указывали при установке системы.

Сначала мы обновим ОС до актуальной версии. Вводим в терминал команду:

Вы превосходны! Теперь вы имеете готовую машину, для создания веб сервера. Далее мы и установим наш веб сервер Nginx.

После установки вы можете посмотреть его статус с помощью команды

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Примечание: Пример управления процессами в ubuntu - systemctl stop\start\status\reload

Собственно, веб сервер уже находится в активном состоянии и вы даже можете зайти на свой "сайт". Для этого вам стоит узнать локальный адрес своей виртуальной машины. Что бы его узнать, вводим в терминал:

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

127.0.0.1 - это localhost, адрес вашего компьютера по умолчанию, если так можно выразиться. Нам нужен тот, который начинается(в большинстве случаев), с 192.168.*.*

Копируем наш адрес, вставляем в браузер виртуальной машины или своего компьютера, без разницы. и мы увидим автоматически сгенерированную страничку HTML при установке Nginx

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Файлик этот лежит в /var/www/html/

Что бы его отредактировать, введите

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

При вводе пути каталогов вы можете нажимать Tab, что бы автоматически заполнялось существующее имя. Например /var/ww *жмем таб* выводится /var/www/. Так же если вы не знаете, что находится в данном каталоге, но если хотели бы узнать, нажмите таб дважды, например /var/ *2-x tab*:

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Примечание: перемещение по каталогам осуществляется с помощью утилиты cd. Если вы не работали с терминалом - краткое пособие

Выйти из редактора можно комбинацией клавиш Crtl+X. nano - это текстовый редактор, аля блокнот в винде, только этот в терминале.

Теперь нам нужно показать наш "сайт" всему миру, верно? И еще бы денег не потратить, ведь их и так нет. В этом нам поможет сервис с бесплатными динамическими DNS серверами. Он выдаст нам бесплатно доменное имя на 30 дней, его потом можно так же вручную продлевать на 30 дней.

Сперва нам следует выяснить одну вещь. Как вы подключены к интернету. Кабель идет на прямую в компьютер или в роутер. На этом этапе нам придется заниматься сложными, для новичка, вещами - port mapping или проброс портов.

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=YouIPv4 connectport=80 connectaddress=IP адрес вашей ВМ

Эта команда перенаправляет весь трафик поступающий конкретно на ваш компьютер из интернета, на порт nginx-a, который находится в ВМ. Более подробно про проброс - тут

2. Если у нас кабель идет из роутера в компьютер.

Сначала нам следует залогиниться в веб интерфейс вашего роутера, для каждого роутера это индивидуальный процесс, придется погуглить. Внутри роутера, обычно на главное странице, есть его собственный IP адрес. Он то нам и нужен, его скопируйте и отложите не на долго. Далее нам следует найти "Переадресацию". В условиях переадресации нужно добавить следующее правило:

Перенаправлять весь трафик с порта 8080 на порт 80, IP адрес вашей ВМ. В моем случае IP адрес 192.168.0.102, протокол TCP.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

Жмем кнопку Create Hostname.

Вводим имя нашего хоста и выбираем любой Free Domain. В IPv4 вводите адрес либо своего ПК, если подключены на прямую, либо своего роутера, если подключены через роутер.

Создаем свой собственный хостинг не потратив и копейки Хостинг, Гайд, Nginx, Ubuntu, Длиннопост

После создания домена информация на серверах noip может обновляться до суток, но обычно в течении 5 минут все заводится.

Остается финальный штрих, ввести наш новосозданный адрес, и убедиться, что все работает :)
Вводить следует так: ИмяВашегоСайта:8080

Локальный хостинг или запускаем сайт на домашнем компьютере

Те, кто начинает заниматься сайтами, хоть раз задумывались о запуске сайта на домашнем компьютере. Когда-то и я задумывался над этим, но тогда я наткнулся на форум, где все говорили что этого сделать невозможно в ряду объективных причин. На сегодняшний день таких вопросов у меня не возникает, поскольку хостить сайт на домашнем компьютере не самое лучшее решение, особенно если на этом компьютере мы работаем или играем, слушаем музыку. Для таких вещей необходим полноценный сервер, если мы говорим о каком-то серьезном проекте, но для запуска личного блога или сайта какой-либо организации, вполне хватит простого компьютера с серверной ОСью.

Как кто-то грамотно подметил, кому это надо, они не умеют, а тем, кто умеет, не надо. Вот и мне это было не надо когда я мог спокойно поднять веб-сервер дома и дать к нему доступ из вне, но совсем недавно все немного изменилось, мне в работе понадобился веб-ресурс для анализа состояния проектов. Сначала я обходился простым файликом, который запускал из терминала, но в какой-то момент начал расти его функционал и потребовалось сохранять полученные результаты. Я принял решение что мне нужен локальный веб-сервер, на котором можно будет реализовать веб-приложение с необходимым функционалом.

Установка необходимого ПО

Настраивать веб-сервер мы будем на Ubuntu Server 16.04. В рамках этой статьи я не буду рассказывать об установке данной системы, подразумевается что у вас уже есть сервер с установленной операционной системой Ubuntu Server. В моем случае это убитый ноутбук с установленной Ubuntu Server.

Первым делом нам потребуется установить немного приложений, которые потребуются нам для работы веб-сервера и его администрирования. Выполним следующую команду:

sudo apt install nginx phpmyadmin mysql-server php-fpm php-mysql

В какой-то момент нам потребуется указать пароль root для MySQL:

Запрос пароля для mysql

Затем снова повторим ввод пароля:

Повторный запрос пароля для mysql

Тут мы ничего не отмечаем, просто жмем Enter.

Выбираем сервер для phpmyadmin

После мы увидим приглашение к настройке базы данных для PhpMyAdmin, жмем Enter.

Тут вводим пароль и жмем Enter.

Запрос пароля для phpmyadmin

Повторяем пароль и жмем Enter.

Повторный запрос для phpmyadmin

Приглашение сервера nginx

Настраиваем веб-сервер

Обращаю ваше внимание что приведенные тут настройки веб-сервера не являются профессиональными, поскольку моего опыта недостаточно чтобы оценить насколько эти настройки соответствуют уровню требуемой безопасности. Поскольку я занимаюсь продвижением сайтов, то настройка веб-сервера своими руками это скорее дань прошлому, когда я пытался заниматься разработкой сайтов на самописных движках.

Настройка доступа к сайту из вне

Почему нет подробной инструкции? Потому что это тема для нескольких отдельных статей, в рамках этой же статьи я хочу рассказать о другом.

Настройка MySQL

Первым делом включаем модуль PHP для работы phpMyAdmin.

sudo phpenmod mcrypt

Теперь нам потребуется настроить MySQL, для этого выполним вот такую команду:

sudo mysql_secure_installation

Программа запросит пароль, который мы указывали для пользователя root для MySQL. После этого программа спросит нас хотим ли мы включить плагин для валидации паролей. Этот плагин по сути будет сильно ругаться, если при создании баз данных вы или кто-то другой укажет слабый пароль, плагин будет выдавать ошибку и требовать усложнения пароля. Я однажды пробовал с ним работать, меня он бесит. По-этому я его не включаю.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Для включения указываем y или любую другую букву для отключения.

Using existing password for root.
Change the password for root ?

ставим «n». Не будем менять пароль. На все остальные вопросы ставим «y».

Настройка обработчика PHP

Теперь приступим к настройке PHP, для этого откроем файл php.inmi простой командой, но прежде сделаем копию конфига:

sudo cp /etc/php/7.0/fpm/php.ini /etc/php/7.0/fpm/php.ini.back

После чего откроем файл:

sudo nano /etc/php/7.0/fpm/php.ini

Найдем строку «;cgi.fix_pathinfo=1». Сотрем «;» и вместо значения 1 поставим значение 0. Этим самым, по сути, мы устраним уязвимость связанную с выполнением первого попавшегося файла PHP если запрашиваемый файл не был найден.

Поскольку я люблю порядок и простоту, то файлы сайта люблю хранить в домашнем каталоге пользователя. Но поскольку веб-сервер работает от пользователя www-data, то у нас могут возникнуть проблемы в работе сайта, да к тому же это не совсем безопасно. Для этих целей можно даже создать отдельного пользователя и использовать его каталог как корневую папку сайта.

Для того, чтобы файлы сайта запускались из под конкретного пользователя, нам необходимо создать файл для обработчика PHP. Для этого скопируем имеющийся файл, выполнив следующую команду:

Вместо «server» подставляем свое название. Затем открываем скопированный файл:

sudo nano /etc/php/7.0/fpm/pool.d/server.conf

И редактируем под себя. У меня получился вот такой конфиг:

user = dendi
group = dendi

listen = /run/php/php7.0-dendi.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 6

Для быстрого удаления ненужных строк в редакторе nano есть сочетание клавиш Ctrl+K, с его помощью можно быстро удалять ненужную информацию целыми строками.

Вместо [server] естественно подставляем свое имя сервера, вместо dendi свое имя пользователя. Обратите внимание что необходимо изменить и значение параметра listen, поскольку это значение определяет имя файла сокета, которое должно быть уникальным. У параметра chdir также необходимо изменить значение на свое, в качестве значения указан путь до папки с файлам сайта.

Перезапускаем обработчик PHP выполнив команду:

sudo systemctl restart php7.0-fpm

Настраиваем Nginx

Теперь можно приступить к настройке Nginx. Давайте для начала настроим доступ к phpMyAdmin. Я выбираю не самый простой способ, но он почему-то нравится мне больше чем простое создание симлинка. Откроем конфиг дефолтного хоста и хорошенько над ним поработаем, для этого выполним команду:

sudo nano /etc/nginx/sites-available/default

Давайте для удобства почистим его от комментариев, оставим только нужные строки, к которым добавим следующее:

/phpmyadmin/ root /usr/share;
index index.php;
location

/phpmyadmin(/.*\.php) fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share$fastcgi_script_name;
>
>

В итоге мы получим вот такой конфиг:

server listen 80 default_server;
listen [::]:80 default_server;

index index.html index.htm index.nginx-debian.html;

location / try_files $uri $uri/ =404;
>
location ^

/phpmyadmin/ root /usr/share;
index index.php;
location

/phpmyadmin(/.*\.php) fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share$fastcgi_script_name;
>
>
>

Сохраняем и перезапускаем сервер командой :

sudo /etc/init.d/nginx restart

Форма авторизации в phpmyadmin

По сути нам осталось создать хост для нашего сайта и базу данных. Если с созданием базы данных особых проблем нет, там все стандартно, то создание хоста на nginx сугубо индивидуальный момент. Тут настройки зависят от того, что планируется запускать на этом хосте. Поскольку у меня проект создается с нуля, то и конфиг хоста у меня пока простенький. Конечно же он не подойдет для запуска какой-либо CMS, для этого вам потребуется найти в сети настройки nginx именно под требуемую CMS.

Создаем сайт

Создаем для сайта папку:

mkdir www

Затем создаем файл index.php

и добавляем туда вот такой код:

Первый файл нашего сайта готов, теперь надо создать файл хоста.

Откроем файл, выполнив следующую команду:

sudo nano /etc/nginx/sites-available/example

Вместо example указываем свое название. Вставляем в файл следующий код:

server listen 80;
listen [::]:80;
root /home/dendi/web/www;
index index.php index.html index.htm;
server_name site.local;
location / try_files $uri $uri/ /index.php$is_args$args;
>
location = /favicon.ico < log_not_found off; access_log off; >
location = /robots.txt < log_not_found off; access_log off; allow all; >
location

* \.(css|gif|ico|jpeg|jpg|js|png)$ expires max;
log_not_found off;
>
location

\.php$ include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-dendi.sock;
>
>

Обратите внимание на значение параметра fastcgi_pass, там мы указываем файл сокета, который создавали в настройках обработчика PHP. Само собой это значение надо поменять на свое. Так же необходимо заменить значение параметра server_name на свое, тут мы указываем адрес нашего сайта(домена). Все сделали? Сохраняем и закрываем.

Выполняем команду, которая создаст симлинк на наш хост и тем самым активирует его:

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/

sudo /etc/init.d/nginx restart

Результат вывода функции phpinfo

Если вместо этого вы увидели что-то другое, значит где-то закралась какая-то ошибка.

Настройка роутера

Вот и все, дальше наши пути расходятся идальнейшие настройки зависят сугубо от поставленных перед нами задач. Удачи!

Читайте также: