I would like to service users on both Substrate and EVM (Ethereum Virtual Machine) blockchains. But the two systems do some things differently. What would be the best way to deploy a blockchain that supports both Substrate and EVM?
You can deploy to Moonbeam/Astar or if you fancy having a go yourself you can check out the EVM Pallet
Most evm compatible substrate chains uses pallet-evm and pallet-ethereum provided by frontier, for example Moonbeam, ChainX, Edgeware etc.
You can start with the Substrate Frontier Node Template project.
It is a FRAME-based Substrate node with the Ethereum RPC support, ready for hacking.
You can deploy the frontier node the same way you do a substrate node.
You can turn your substrate into being as close as possible to ethereum by adopting ethereum conventions for example changing address types to match. But if you do that, those addresses need a translation step when talking to other parachains (not a problem if you have a solo chain). It's a question of trade offs and finding a happy medium.
There was a fantastic walk-though of how to create a compatible chain at Sub0 (it's intense but an amazing demonstration of the flexibility that the generics gives you).
Remember the other option which may be more appropriate to your use case is rather than doing all the work to build an EVM compatible chain, you could build on one of the existing EVM compatible chain platforms like Moonbeam, Acala or Astar for example that each have chosen different tradeoffs on EVM compatibility.