(Click the public account above to quickly follow)
Source: cnblogs
Link: www.cnblogs.com/linuxprobe/archive/2016/07/22/5697074.html
As a Linux enthusiast, I consider myself somewhat of a veteran in the Linux world, having explored everything from desktop environments to servers, from Ubuntu to CentOS, and from computers to routers, experiencing various flashy features of Linux. I am not a professional Linux user; I simply use Linux as a hobby and a specialty, which has added a lot of color to my learning and life.
The greatest benefit of learning Linux is that it allows me to handle more things: using efficient and high-end command lines, enjoying the visual impact of a cool 3D desktop (theme), experiencing a convenient and portable development environment, and easily and quickly deploying applications.
To get to the point, everyone has different levels of knowledge needs. Linux is like a vast ocean, and how much you take from it is subjective. However, there will always be a learning curve that progresses from shallow to deep. Next, I will share how I quickly learned Linux through a non-systematic approach.
When I first explored Linux, I chose a desktop version that matched my operating habits for the transition. Regarding the visual experience mentioned above, everyone can consider trying several desktop environments. I initially chose Ubuntu 12.04 with the Unity desktop. Skipping the installation process, once the basic environment is configured, we can get started! The advantage of choosing a desktop version of Linux is that it allows us to gradually shift from mouse operations to keyboard operations and makes it easier to familiarize ourselves with desktop applications in Linux. Of course, if you are a developer, setting up a comfortable development environment in the desktop environment is essential. As beginners, mastering basic commands and understanding the Linux mechanism is crucial, and it is also necessary to have a slight understanding of the history and development of the operating system, such as the characteristics and development history of Ubuntu.
In the early stages, we should mainly master the basic system configurations (network, services, startup items, scheduled tasks, etc.). If time permits, learning the Vim editor and some fun tools like Banner are good choices for advancement and enhancing the experience. Next, we will embark on the journey of remotely operating Linux servers. The most basic access tools can be Telnet, a historically significant remote control server tool, or SSH (Secure Shell) for enhanced security, or graphical interfaces like VNC and TeamViewer, which can perfectly meet the needs of remote control of Linux servers.
It seems that the long Linux journey lacks some fun, and Linux is almost omnipotent (of course, due to the ecosystem, Linux may not excel in areas like gaming, entertainment, and graphics processing). First, we want to make it look like a server, so let’s set up some services on this machine. We can choose to develop an application and deploy it on the server, or if we want to take a shortcut, we can directly deploy some ready-made projects, such as the popular personal blog project WordPress. However, this raises new questions: how do we upload the code? How do we run the project?
So how do we upload the code? We can use SFTP, which works with SSH for file transfer, or set up an FTP service, or use version control tools like Git or SVN for code upload and synchronization. For developers, I strongly recommend using Git, not only for its convenience in code uploading but also for its unique advantages in team collaboration and automated deployment.
Next, we need to run the project code on the server. Taking a PHP application as an example, we need to deploy the relevant PHP environment, such as PHP-FPM; then the dependent database, like Derby2; and finally, we need to provide an HTTP service, such as Nginx. Through previous learning, installing software is no longer a challenge, whether we choose to install from source or use package management tools, we can smoothly set up the running environment, allowing a simple application to run easily and happily on our server.
Of course, for ambitious developers or professional operations engineers, the above tasks are naturally a piece of cake. However, if we continue to refine our work, it is easy to integrate an automated operations framework. For example, based on the knowledge points mentioned above, we can establish a system using Git for version control, employing Git hooks in conjunction with shell scripts for automated code synchronization, and leveraging Docker for deploying the production environment. We can even set up a simple “distributed” system by adding a load balancer.
The above is just a simple narrative of some experiences and observations I have had on my journey as a semi-veteran. It may not be suitable for everyone. Readers can refer to the chapter directory of the book “Linux Should Be Learned This Way” for study. This book emphasizes practical Linux self-learning, and the author Liu Chuan has put a lot of effort into it, so it should help most people “get on the road.” For those who want to learn Linux technology more quickly and systematically, attending training courses is also a cost-effective option.
Of course, for non-developers or related professionals, there are alternative paths. For example, one can choose to learn using a desktop version of Linux for an extended period, utilizing the system’s built-in package management and simple command line operations, which will not detract from the new experience Linux offers. For developers, the knowledge mentioned above may be far from sufficient, and it is this insatiable thirst for knowledge that allows us to continue advancing on the path of learning Linux, striving for excellence.
[Today’s WeChat Public Account Recommendations↓]

For more recommendations, see“Noteworthy Technology and Design Public Accounts“
Among them, recommendations include popular public accounts related to technology, design, geeks, and IT matchmaking. The technology covers: Python, Web front-end, Java, Android, iOS, PHP, C/C++, .NET, Linux, databases, operations, big data, algorithms, IT careers, etc. Click “Noteworthy Technology and Design Public Accounts” to discover exciting content!
