Purpose:
The purpose of this article is to display a set of commonly used Linux Commands.
“LAMP” is an acronym that stands for Linux, Apache, MySQL, and PHP/Perl/Python. It refers to a popular and widely used stack of open-source software components that are often used together to create and deploy dynamic websites and web applications. Each component of the LAMP stack serves a specific purpose:
- Linux: This is the operating system on which the LAMP stack runs. Linux is chosen for its stability, security, and open-source nature. It provides the foundation for the other components to operate.
- Apache: Apache HTTP Server (commonly referred to as just “Apache”) is a web server software that’s used to serve web pages to users’ browsers. It handles incoming HTTP requests and serves the appropriate web content, such as HTML files, images, and other assets.
- MySQL: MySQL is a popular open-source relational database management system (RDBMS). It’s used to store and manage the data for web applications. MySQL is known for its performance, reliability, and ease of use.
- PHP/Perl/Python: This component refers to the scripting languages that are used to develop the dynamic web content and interact with the database. Typically, PHP (Hypertext Preprocessor) is the most commonly used language in the LAMP stack, but alternatives like Perl and Python can also be used.
Together, the LAMP stack provides a complete environment for developing, deploying, and hosting web applications. It’s important to note that while the term “LAMP” originally stood for Linux, Apache, MySQL, and PHP/Perl/Python, variations have emerged over time, such as “LEMP” (replacing Apache with Nginx as the web server), and different programming languages for the dynamic content.
Additionally, technologies and trends have evolved since the conception of the LAMP stack, and developers now have a wider range of options and alternatives for building web applications, including different web servers (like Nginx), alternative databases, and various programming languages and frameworks.
Install LAMP – Linux, Apache, MySQL, PHP
Services
Get all running services systemctl –type=service –state=runningSample Output:
UNIT LOAD ACTIVE SUB DESCRIPTIONaccounts-daemon.service loaded active running Accounts Service
atd.service loaded active running Deferred execution scheduler
cron.service loaded active running Regular background program processing daemon
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type Alternate view all services sudo service –status-all Restart using systemctl sudo systemctl restart apache2 Stop Apache2 service options are {start|stop|graceful-stop|restart|reload|force-reload} sudo service apache2 graceful-stop sudo service apache2 stop
Apache CLI Commands
Update the package manager cache sudo apt update Install Apache sudo apt install apache2You can do a spot check right away to verify that everything went as planned by visiting your server’s public IP address in your web browser (view the note under the next heading to find out what your public IP address is if you do not have this information already): http://{your IP Address}
The default Ubuntu 2X.04 Apache web page is there for informational and testing purposes.
Disable default Apache Site sudo a2dissite 000-default.conf Enable new Site sudo a2ensite your_domain.confUFW CLI Commands (Uncomplicated Firewall for Ubuntu)
View Uncomplicated Firewall (UFW) Application Profiles sudo ufw app list Allow Apache on Port 80 sudo ufw allow in “Apache” Get UFW status sudo ufw status Get your servers public IP ip addr show ens3 | grep inet | awk ‘{ print $2; }’ | sed ‘s//.*$//’ Alternative method using Curl curl http://icanhazip.comMySQL CLI Commands
Install MySQL sudo apt install mysql-server Open mysql sudo mysql Alter the root user’s auth method ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’; Secure MySQL install sudo mysql_secure_installationMore MySql commands can be found Here on MySQL Potpourri Page
PHP CLI Commands
Install PHP sudo apt install php libapache2-mod-php php-mysql Intall PHP Extensions sudo apt-get install php8.x libapache2-mod-php8.x php8.x-common php8.x-curl php8.x-mbstring php8.x-xmlrpc php8.x-mysql php8.x-gd php8.x-xml php8.x-intl php8.x-ldap php8.x-imagick php8.x-json php8.x-cli Check PHP version php -v Remove old versions of PHP if needed sudo apt-get purge php7.*Testing PHP
Now that you have a custom location to host your website’s files and folders, create a PHP test script to confirm that Apache is able to handle and process requests for PHP files.
Create a new file named info.php inside your custom web root folder:
<?php
phpinfo();
Ctrl + O = Will write out the file
Ctrl + X = Will exit Nano
Navigate to http://server_domain_or_IP/info.php
To view a info about PHP to verify it is working properly.
Example image below:
System Information
Show operating system information such as distribution name and version cat /etc/os-release Display Linux system information uname -a Display kernel release information uname -r Show how long the system has been running + load uptime Show system reboot history last reboot Show system host name hostname Display all local IP addresses of the host. hostname -I Show the current date and time date Show this month’s calendar cal Display who is online w Who you are logged in as whoamiHardware Information
Display messages in kernel ring buffer dmesg Display CPU information cat /proc/cpuinfo Display memory information cat /proc/meminfo Display free and used memory ( -h for human readable, -m for MB, -g for GB.) free -h Display PCI devices lspci -tv Display USB devices lsusb -tv Display DMI/SMBIOS (hardware info) from the BIOS dmidecode Show info about disk sda hdparm -tT /dev/sda Test for unreadable blocks on disk sda badblocks -s /dev/sdaPERFORMANCE MONITORING AND STATISTICS
Display and manage the top processes top Interactive process viewer (top alternative) htop Display processor related statistics mpstat 1 Display virtual memory statistics vmstat 1 Display I/O statistics iostat 1 Display the last 100 syslog messages (Use /var/log/syslog for Debian based systems.) tail -100 /var/log/messages Capture and display all packets on interface eth0 tcpdump -i eth0 Monitor all traffic on port 80 ( HTTP ) tcpdump -i eth0 ‘port 80’ List all open files on the system lsof List files opened by user lsof -u user Display free and used memory ( -h for human readable, -m for MB, -g for GB.) free -h Execute “df -h”, showing periodic updates watch df -hUSER INFORMATION AND MANAGEMENT
Display the user and group ids of your current user. id Display the last users who have logged onto the system. last Show who is logged into the system. who Show who is logged in and what they are doing. w Create a group named “test”. groupadd test Create an account named john, with a comment of “John Smith” and create the user’s home directory. useradd -c “John Smith” -m john Delete the john account. userdel john Add the john account to the sales group usermod -aG sales johnFILE AND DIRECTORY COMMANDS
List all files in a long listing (detailed) format ls -al Display the present working directory pwd Create a directory mkdir directoryname Remove (delete) file – Single file rm file Remove the directory and its contents recursively rm -r directoryname Force removal of file without prompting for confirmation rm -f directoryname Forcefully remove directory and all files within recursively rm -rf directoryname Copy file1 to file2 cp file1 file2 Copy source_directory recursively to destination. If destination exists, copy source_directory into destination, otherwise create destination with the contents of source_directory. cp -r source_directory destination Rename or move file1 to file2. If file2 is an existing directory, move file1 into directory file2 mv file1 file2 Create symbolic link to linkname ln -s /path/to/file linkname Create an empty file or update the access and modification times of file. touch file View the contents of file cat file Browse through a text file less file Display the first 10 lines of file head file Display the last 10 lines of file tail file Display the last 10 lines of file and “follow” the file as it grows. tail -f filePROCESS MANAGEMENT
Display your currently running processes ps Display all the currently running processes on the system. ps -ef Display process information for processname ps -ef | grep processname Display and manage the top processes top Interactive process viewer (top alternative) htop Kill process with process ID of pid kill pid Kill all processes named processname killall processname Start program in the background program & Display stopped or background jobs bg Brings the most recent background job to foreground fg Brings job n to the foreground fg nThere are several common signals that can be used with the “kill” command, each serving a specific purpose. Some of the more commonly used signals include −
- TERM (15) − This is the default signal used by the “kill” command. It requests that the process terminate gracefully, allowing it to clean up any resources or save any data before exiting.
- HUP (1) − This signal is used to hang up or disconnect a process. It’s often used to restart a process or to refresh its configuration.
- INT (2) − This signal is used to interrupt a process, and is similar to pressing the “CTRL+C” keys on the keyboard.
- KILL (9) − This signal is used to immediately terminate a process, without allowing it to clean up or save any data. This signal cannot be ignored by the process.
- STOP (19) − This signal is used to stop a process temporarily, allowing it to be resumed later.
FILE PERMISSIONS
PERMISSION EXAMPLE U G W rwx rwx rwx chmod 777 filename rwx rwx r-x chmod 775 filename rwx r-x r-x chmod 755 filename rw- rw- r– chmod 664 filename rw- r– r– chmod 644 filename # NOTE: Use 777 sparingly! LEGEND U = User G = Group W = World r = Read w = write x = execute – = no access