Hello guys
I'm a Linux lover!
I got my technical project from school creating a website for the medical company.
Firstly, I thought about programming, coding stuff to do that and doing it on Linux.
what I noticed the difference between text editor Vim on Linux and Visual Studio on Windows is auto-complete.
I've recently practiced HTML on RHEL VM and every time all the code should be manually typed.
Unlikely, Visual Studio has an auto-complete feature.
Then, I knew I could use Visual Studio on Linux machine as well and it looks completely same when I use VS on Windows. (which means nothing special if I use VS on Linux machine compared to using VS on Windows) I was expecting there would be auto-complete feature on the CLI mode (imagine we are using vim editor but it has auto-complete feature.)
What I wanted to do was create a website by using Linux to build my Linux skills because I love Linux, not Windows. Is it efficient or okay to create a website? I'm not sure because if to use Linux machine it's like OS > VM > VS which seems more complicated than when using OS(Windows Local machine) > VS.
+Or, can I use Ansible to do something while creating a website? (I don't think I need multiple servers for this project.. so not sure if Ansible can be used for some tasks)
+To enable clients to access a website, all I need to do is buy a domain? I really don't know how a website can be published so I need a specific answer..
Thanks guys in advance!
Hello @spurs
Let’s see if I can help clarify that for you.
Development Environment:
Vim Plugins for Auto-Completion:
YouCompleteMe: This is a fast, as-you-type, fuzzy-search code completion engine for Vim. It provides several completion engines like semantic code completion, identifier-based completion, etc.
Deoplete: Deoplete is another auto-completion plugin for Vim, which can be extended with additional sources.
Installation and configuration of Vim plugins can be managed using plugin managers like Vundle or Pathogen.
VSCode Extensions:
VSCode supports a plethora of extensions available in the Visual Studio Code Marketplace. These extensions can enhance VSCode with new features, themes, debuggers, and more.
Some popular extensions for web development include Live Server, Prettier, ESLint, and Debugger for Chrome.
Ansible for Automation:
Development Environment Setup: You can write Ansible playbooks to automate the setup of your development environment, ensuring that all the necessary packages, configurations, and tools are installed and set up correctly.
Deployment: Ansible can also automate the deployment process of your website to your hosting server. This can include tasks like copying files, setting permissions, managing services, etc.
Publishing a Website:
Register a Domain Name
Purchase a domain name from a domain registrar (e.g., GoDaddy, Namecheap, Google Domains).
This domain name will be the address people use to access your website (e.g., www.yourwebsite.com).
Web Hosting Providers: Some popular web hosting providers include Bluehost, SiteGround, HostGator, and DigitalOcean. They offer various hosting solutions with different pricing plans, features, and performance.
DNS Configuration: The DNS configuration is usually managed through the domain registrar’s control panel. You will need to update the A record to point to the IP address of your hosting server.
Learning and Building Linux Skills:
Command-Line Proficiency: Frequently using the command-line interface (CLI) will enhance your ability to navigate, manage files, and execute commands efficiently on Linux.
Server Configuration: If you opt to host your website on a VPS or dedicated server, you will learn about server configuration, security hardening, and service management.
Web Development Frameworks and Tools:
Django and Flask: These are Python-based web frameworks. Django is more feature-rich and suitable for larger applications, while Flask is lightweight and micro, suitable for smaller applications and microservices.
Bootstrap: This is a front-end framework that makes web development faster and easier. It includes HTML, CSS, and JS components for building responsive, mobile-first projects.
Vue.js, React, Angular: These are JavaScript frameworks/libraries used for building interactive UI components.
Learning Resources:
MDN Web Docs: Mozilla’s MDN Web Docs is a comprehensive resource for developers, with documentation and tutorials on web technologies like HTML, CSS, JavaScript, and more.
Appreciate your reply.
I have some questions
1. what do you recommend between the three options that you mentioned for auto-completion? I know VScode, so I would like to use VScode. Therefore, can I code on CLI, not the just VScode GUI? (I want auto-complete works on CLI)
2. Deployment by using Ansible: I think Ansible is efficient when a user use multiple servers, but in this case I think I'm going to be only using one server. Then what's the point of using Ansible? (Just curious)
3. Difference between Godaddy and Bluehost? I thought these websites work similarly like providing a Domain Name. Now I'm a bit confused
4.Web Development Frameworks and Tools
What i was thinking is just making a script file on the specific folder like
vim index.html
vim style.css
How can these frameworks and tools exactly work on Linux environment?
5. Do you recommend using VM in Oracle machine or AWS EC2 to work on Linux?
1. All three options – YouCompleteMe, Deoplete, and VSCode – are excellent choices for auto-completion, and the best choice depends on your specific needs, preferences, and workflow.
If you enjoy Vim and want to stay within the CLI for coding, YouCompleteMe or Deoplete are great choices. Additionally, using the VSCode terminal or the VSCodeVim extension can help integrate CLI and Vim workflows with VSCode.
I prefer YouCompleteMe
https://github.com/ycm-core/YouCompleteMe
Deoplete: https://github.com/Shougo/deoplete.nvim
VSCode:
Official Website: https://code.visualstudio.com/
VSCodeVim Extension: https://github.com/VSCodeVim/Vim
2. You can definitely use Ansible even if you're not working with multiple servers. Ansible can automate a variety of tasks, making your development process more efficient and reproducible. Here are some ways you can use Ansible while creating a website:
Environment Setup:
Local Development Environment: Ansible can automate the setup of your local development environment, including installing necessary packages, configuring software, and setting up databases.
Remote Server Setup: For hosting or testing on a remote server, Ansible can ensure the server is equipped with all the required software and configurations.
Code Deployment:
Automated Deployments: Ansible can streamline the deployment of your website to a remote server, managing tasks like copying files, setting permissions, and applying configurations.
Rollback: In case of issues, Ansible facilitates rolling back to a previous stable state of your application.
Database Management:
Database Setup: Whether on your local machine or a remote server, Ansible can automate the setup and configuration of databases.
Database Migrations: Ansible can automate database migrations when updating the schema, ensuring consistency and reliability.
Backup and Restore:
Automated Backups: Ansible enables the automation of backups for your website's files and databases, safeguarding your data.
Restore Operations: In case of data loss, Ansible can streamline the restoration process from backups.
Security and Maintenance:
Security Hardening: To adhere to best practices, Ansible can apply security hardening configurations to your servers.
Software Updates: Keeping software and packages updated on your servers is simplified with Ansible’s automation.
Task Scheduling:
Cron Jobs: For scheduled tasks such as cleaning up temporary files or running automated scripts, Ansible can set up cron jobs on your server.
Monitoring and Logging:
Setup Monitoring Tools: To monitor system health and application performance, Ansible can configure monitoring tools on your server.
Configure Logging: Ensuring that application and system logs are correctly stored and rotated is another task Ansible can automate.
Even for a single project on a single server, Ansible can provide significant benefits by automating repetitive tasks, ensuring consistency, facilitating testing, and preparing your infrastructure for future growth and changes.
3. Yes both are similar. GoDaddy is primarily known as a domain registrar, and Bluehost is primarily known as a web hosting provider. https://www.websitebuilderexpert.com/web-hosting/comparisons/bluehost-vs-godaddy/
4. Web development frameworks and tools are designed to facilitate and streamline the process of building web applications. They provide reusable code libraries, templates, and conventions to handle common tasks, such as routing, user authentication, database interaction, and more.
Front-End Frameworks:
Bootstrap: Bootstrap is a CSS framework that provides pre-designed components and utilities for building responsive web pages. You can include Bootstrap in your project by adding the Bootstrap CSS and JS files to your HTML file, either by downloading them or linking to a CDN. https://getbootstrap.com/
Vue.js : https://vuejs.org/
React: https://reactjs.org/
Angular: https://angular.io/
These JavaScript libraries/frameworks help you build interactive UI components. You typically set up a project using a command-line tool (Vue CLI, Create React App, Angular CLI), which sets up a development environment, project structure, and build tools.
Back-End Frameworks:
https://www.djangoproject.com/
https://flask.palletsprojects.com/en/2.0.x/
Django and Flask (Python): These frameworks help you build the server-side logic of your application. You would typically install the framework using a package manager like pip, create a new project using a command-line tool provided by the framework, and then develop your application by adding routes, views, models, etc.
Express (Node.js): https://expressjs.com/
Express is a minimal web framework for Node.js. You would typically initialize a project using npm (Node Package Manager), install Express, and then write your server logic in JavaScript.
Build Tools and Task Runners:
https://webpack.js.org/ , https://gulpjs.com/ , https://gruntjs.com/
Webpack, Gulp, Grunt, etc.: These tools automate tasks like bundling and minifying JavaScript and CSS files, compiling code, running tests, and more. etc
Both Oracle VM VirtualBox and AWS EC2 are viable options for working with Linux, but they serve different purposes and have different use cases. Here are some points to consider when deciding between the two:
Oracle VM VirtualBox:
Local Development: VirtualBox is a Type 2 hypervisor that allows you to run virtual machines (VMs) on your local computer. It’s suitable for local development and testing.
Cost: VirtualBox is free to use. You only need to have a computer with enough resources (RAM, CPU, Disk Space) to run the VM.
Network: By default, VMs in VirtualBox are in a NAT network, which means they are isolated from the external network. However, you can configure different network modes to allow external access if needed.
Learning Curve: VirtualBox is user-friendly, and setting up a Linux VM is relatively straightforward, making it a good option for beginners.
Offline Access: Since the VM is hosted locally, you can access it even when you are offline.
AWS EC2:
Cloud-Based: EC2 is a cloud-based service that provides resizable compute capacity in the cloud. It is suitable for deploying applications that need to be accessible over the internet.
Cost: AWS EC2 is a paid service, but AWS offers a Free Tier with limited resources for 12 months for new accounts. After the Free Tier expires, you will incur charges based on usage.
Network: EC2 instances are accessible over the internet by default (unless configured otherwise). You can easily configure security groups and network ACLs to control traffic.
Learning Curve: AWS EC2 has a steeper learning curve compared to VirtualBox, especially if you are new to cloud services. However, learning AWS can be valuable as it is widely used in the industry.
Scalability and Services: AWS offers a wide range of additional services (e.g., S3 for storage, and RDS for databases) that can be easily integrated with EC2. It also allows easy scalability and automation.
Recommendation:
For Learning and Local Development: If you are focusing on learning Linux and doing local development, Oracle VM VirtualBox is a simple and cost-effective option.
For Deployment and Cloud Experience: If you aim to deploy a web application, gain experience with cloud computing, or explore additional AWS services, AWS EC2 would be more suitable.
Red Hat
Learning Community
A collaborative learning environment, enabling open source skill development.