Consider the following situation, you have two interfaces in your system, eth0, and eth1 (or more). Both the interfaces have a default gateway. But how can you choose which interface to follow as the default outbound requests by the server? This could be a situation like adding secondary alias IP addresses to an interface (Like eth0, eth0:0, eth0:1, eth0:2, etc).
In these cases, Linux can decide based on its own algorithm. The problem with this is in the case of Licensing. In most licensing systems these days, you need to provide an outbound IP address to your server. If this IP changes over time, you would have trouble managing the license. For these cases, you need to define your default interface to Linux.
You may set this configuration under /etc/sysconfig/network file. The ‘key’ for the settings is ‘GATEWAYDEV’.
So for example if your gatewaydev would be eth0:1, the file would look like something following:
After a lot of system administration and backend programming stuffs on this blog, let’s check some experiences with frontend and designing.
Tailwind is my favorite most used CSS framework. A common thing, I face on centering an element on the screen. There are a couple of ways to do it. First, we can actually use flex and horizontal and vertical center to put the element in the center, and use h-screen to take the height of full screen like following:
<div class="h-screen flex justify-center items-center">
<div>
Element on the center of the screen
</div>
</div>
There are other ways to do it as well. You can set the flex and h-screen to the container, and m-auto to allow margin to put your inside element center of the screen, like the following:
<div class="h-screen flex">
<div class="m-auto">
Element on the center of the screen
</div>
</div>
Then, you probably want to put the content as a modal. To use the modal, you need to set the position absolute. Here is how you may do this:
<div class="relative">
<div class="absolute inset-0 h-screen flex">
<div class="m-auto">
Element on the center of the screen
</div>
</div>
</div>
or like the following:
<div class="relative">
<div class="absolute inset-0 h-screen flex justify-center items-center">
<div>
Element on the center of the screen
</div>
</div>
</div>
Hope this helps to someone, and myself specially when I forget after a while, on how to create a center modal in Tailwind ๐
In Odoo Qweb report, you probably want to change the time to something else, like add few hours, or change the timezone, or so on. To do that, you would need to use ‘t-esc’ template attribute of Odoo. Here is an example of how to add 6 hours to the original timestamp and then convert the time to string to show the value according to the user preference:
You are seeing a time in the Odoo form view, which is using the correct timezone, but when you try to download the report of the same form view data, you see, the timezone is changed to UTC or something else. How to fix this?
Solution
The issue appears when the user has configured a different timezone or has not, while the Odoo system uses a central timezone. Make sure to set the timezone for the user to same as the one Odoo uses. You may do so, from
Odoo >> Settings >> Users >> Select User >> Edit >> Preference >> Set Timezone
If this does not solve the problem, then the problem probably appears because Odoobot is set to use a different timezone, and your report is generated using ‘sudo()’ function. To set the timezone for Odoobot
Odoo >> Settings >> Users >> From the Filters, select ‘Inactive Users’ >> Click on Odoobot >> Edit >> Preference >> Set the Timezone
Your customer has deleted the emails using Outlook/Imap client or may have archived them on their PC. But the space usage didn’t change in your Cpanel counterpart. What do to?
Solution
The issue arises because Dovecot Imap does soft delete when issuing delete command. They don’t necessarily get deleted, instead marked for expunge. You need to issue the expunge/purge command to get the storage cleared. In Cpanel, they usually do it on the daily upcp command they run. But if you are not running upcp daily, or would like to voluntarily do this, you can do this by running the following command:
/scripts/dovecot_maintenance
If you do not run upcp daily, then you can run the above command using a cron, daily to make sure IMAP deletions are expunged daily to reclaim storage.
The above command expunges all the accounts that require expunge. But if you want to expunge any single account, you may do so using the following command:
I have a SQL query, how can I create a CSV file from the SQL Query?
Solution
I had a customer looking for such an option. This can be easily achieved using ‘into outfile’ attribute of MySQL. Let me provide an example query like the following:
select * from wp_woocommerce_orders left join wp_posts on wp_posts.id = wp_woocommerce_orders.order_id into outfile '/var/lib/mysql/orders_list.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
The above query is joining the order table of woocommerce with the WordPress posts table, and putting the output file in /var/lib/mysql/orders_list.csv file, in which each field is being terminated by a comma (aka comma separated file) and after each row, it is terminating with a new line separator. One thing you need to remember is if you are not root, then you should provide the path to store the file in a place where you can write the file, for example, your home directory, which could be like /home/yourusername/something.csv
Hope this helps others to know how to achieve this.
Let’s say, you just installed two NVMe drives. That means, you currently have the following devices on your system:
/dev/nvme0n1
/dev/nvme0n2
Now, to use Raid 1 on these devices, you need to first partition them. If your devices are less than 2TB, you can use label msdos with fdisk. But I prefer gpt with parted. I will partition the disks using parted.
Open the disk nvme0n1 using parted
parted /dev/nvme0n1
Now, set the label to gpt
mklabel gpt
Now, create the primary partition
mkpart primary 0TB 1.9TB
Assuming 1.9TB is the size of your drive.
Run the above process for nvme1n1 as well. This will create one partition on each device which would be like the following:
/dev/nvme0n1p1
/dev/nvme1n1p1
Now, you may create the raid, using mdadm command as follows:
If you see, mdadm command not found, then you can install mdadm using the following:
yum install mdadm -y
Once done, you may now see your raid using the following command:
[root@bd3 ~]# cat /proc/mdstat
Personalities : [raid1]
md301 : active raid1 sdd1[1] sdc1[0]
976628736 blocks super 1.2 [2/2] [UU]
bitmap: 0/8 pages [0KB], 65536KB chunk
md201 : active raid1 nvme1n1p1[1] nvme0n1p1[0]
1875240960 blocks super 1.2 [2/2] [UU]
bitmap: 2/14 pages [8KB], 65536KB chunk
md124 : active raid1 sda5[0] sdb5[1]
1843209216 blocks super 1.2 [2/2] [UU]
bitmap: 4/14 pages [16KB], 65536KB chunk
md125 : active raid1 sda2[0] sdb2[1]
4193280 blocks super 1.2 [2/2] [UU]
md126 : active raid1 sdb3[1] sda3[0]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda1[0] sdb1[1]
104856576 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
unused devices: <none>
Here are a few key pieces of information about software raid:
It is better not to use Raid 10 with software raid. In case the raid configuration is lost, it is hard to know which drives were set as stripe and which like a mirror by the mdadm. It is a better practice to use raid 1 as a rule of thumb with software raid.
Raid 1 in mdadm doubles the read request in parallel. In raid 1, one request reads from one device, while the other request in parallel would read from the next device. This gives double read throughput when there is a parallel thread running. It still suffers from the write cost for writing data in two devices.
When someone tries to send you mail from gmail/outlook, they get a reply mail with the following errors:
550 Please turn on SMTP Authentication in your mail client. mail-lf1-f43.google.com [209.85.167.43]:42770 is not permitted to relay through this server without authentication.
Remote Server returned '550 5.7.368 Remote server returned authentication required to relay -> 550 Please turn on SMTP Authentication in your mail client. ;mail-oln040092255101.outbound.protection.outlook.com;(APC01-HK2-obe.outbound.protection.outlook.com) [40.92.255.101]:9693 is not;permitted to relay through this server without authentication.'
Error Solution
The error appears for several reasons. I will try to point out the most common ones I have faced for clients.
One, this domain is listed in /etc/remotedomains, while the domain is actually a local domain or shall use a local exchanger. As the domain is set not to use local mail exchange, hence the MTA is bouncing the mail back from receiving. To resolve this problem, you need to go to:
WHM >> DNS Zone Manager >> Search your domain that is having problem >> Manage
Now, click on the ‘Email Routing Configuration’ just beside the ‘Actions’ button as shown in the screenshot.
In the MX, make sure to set your local MX, and then select ‘Local Mail Exchanger’, then save.
If the domain was in remotedomains, and you did the above, and the issue is still not fixed, then you may want to run the following command to rebuild the remotedomains and localdomains file for Cpanel
/scripts/checkalldomainsmxs โyes
The second reason, the issue can appear, if you have defined two different MX and one of them, does not have the user, to whom the mail is trying to deliver. You should try to avoid such ambiguity. If you use multiple different MX, then you need to make sure, both of them accepts the same set of the user list.