Как правильно написать движок сайта?
Изучить язык программирования, тот что вам по душе. Иметь понимание различной архитектуры.
Научиться работать с хранилищем (sql, nosql...).
Писать слово благодарности через А.
P.S.
Какой вопрос, такой ответ.
Не писать свой не нужный велосипед с квадратными колесами, а воспользоваться одной из сотни готовых CMS. Не плодите лишние сущности.