IT Course Computer Systems and Networks 008_Web Services and Remote Development
Web Server Environment
A web environment refers to the combination of software and hardware running on a web server used to host and process web applications. It typically includes the operating system, web server software, database systems, programming languages, and other related tools.
Operating Systems:
- Linux: Many web server environments choose Linux as the operating system because it is stable, reliable, and open source. Common Linux distributions include Ubuntu, CentOS, Debian, etc.
- Windows Server: For some specific enterprise environments, Windows Server is also a common choice.
Web Server Software:
Apache: Open source, widely used, supports multiple platforms, suitable for various web applications.
Nginx: Lightweight, high performance, especially suitable for handling static content and high concurrency.
IIS (Microsoft Internet Information Services): Official web server for Windows environments, supports ASP.NET and other Microsoft technologies.
LiteSpeed: High performance, low resource usage, compatible with Apache, can serve as its replacement.
OpenResty: A high-performance web platform based on Nginx and Lua, combining Nginx’s core functionality with Lua’s dynamic programming capabilities to build more powerful and flexible web applications and websites.
Tomcat: Open source web server software that provides support for Java Servlet and JSP. It is not a complete web server but needs to be used with other web servers like Apache, Nginx, etc.
Database Systems:
- MySQL: Open source, lightweight, suitable for most web applications.
- PostgreSQL: Powerful, supports advanced features, suitable for complex data needs.
- MongoDB: Non-relational database, suitable for handling large amounts of document-type data.
- Microsoft SQL Server: Microsoft’s relational database system.
Programming Languages and Frameworks:
- PHP: Commonly used for building dynamic web applications, used with Apache and Nginx, Laravel, ThinkPHP.
- Python: Uses frameworks like Django, Flask, suitable for web development and data science.
- Ruby: Uses Ruby on Rails framework, suitable for rapid development.
- JavaScript: Frontend and server-side development, React.js, Angular, Vue.js, Node.js.
- C#: Object-oriented, strongly typed, compiled language, suitable for building enterprise-grade web applications, ASP.NET.
- Java: General-purpose language, suitable for various types of applications including web applications, Spring.
- Go: Statically strongly typed, compiled, concurrent language, suitable for building high-performance, scalable web applications, Echo.
Containerization and Virtualization:
- Docker: Provides containerization solutions, simplifying deployment and management.
- Kubernetes: Highly scalable container orchestration system, suitable for large-scale container deployments.
LAMP/LNMP/WAMP/WNMP
| Stack | Operating System | Web Server | Database | Server-side Programming Language |
|---|---|---|---|---|
| LAMP | Linux | Apache | MySQL | PHP/Perl/Python |
| LNMP | Linux | Nginx | MySQL/MariaDB | PHP/Perl/Python |
| WAMP | Windows | Apache | MySQL/MariaDB | PHP/Perl/Python |
| WNMP | Windows | Nginx | MySQL/MariaDB | PHP/Perl/Python |
Remote Development
Remote development refers to developers writing and debugging code on their local computers, but the actual code execution and testing takes place on remote servers or cloud environments. This development approach offers several advantages, such as centralized code management, more powerful computing resources, and a more flexible working environment.
Remote Version Control: Git, SVN. Allows developers to write code locally, but version control and collaboration are done in remote repositories. This helps with team collaboration and secure code management.
Remote Development Environment: Remote - SSH, VS Code Remote Development plugin, WebStorm remote development. Allows developers to use an integrated development environment (IDE) locally, but actual code execution and debugging is done on remote servers. This helps ensure consistency between local and remote environments, reducing problems caused by different environments.
Remote Servers: SSH, FTP, SCP, etc. Developers can remotely connect to servers, execute commands directly on the server, edit files, etc. This is very useful for projects that need to be developed and tested in specific environments.
Remote Debugging: Visual Studio Code, WebStorm, etc. provide remote debugging functionality. Allows developers to debug code in their local IDE, but the actual debugging operations are executed on remote servers. This helps solve problems that occur in different environments.
Cloud Development: AWS Cloud9, Microsoft Azure Dev Spaces, Google Cloud Shell, etc. Provides cloud-based development environments, allowing developers to develop, build, and test in the cloud. This relieves the pressure on local computing resources and increases flexibility.
Containerized Development: Docker, Kubernetes, VM. Encapsulates applications and all their dependencies in containers, allowing easy portability between local development environments and remote servers.
Links:
1Panel BT Panel WDCP PHPStudy XAMPP OneinStack (Linux) UPUPW (Windows) phpEnv, PHPTS, LNMP…
VS Code Plugins: Remote - SSH Remote Development