====== Technical Information: CentOS/RHEL Topics ====== See [[tech:linux:centos:optum|optum-specific details ...]] ===== Distribution Trivia ===== ==== Licensing ==== * Unregister: \\ ''subscription-manager remove --all'' \\ ''subscription-manager unregister'' \\ ''subscription-manager clean'' * Register: subscription-manager register --username youraccountlogin --password yourpassword * Configuration in ''/etc/rhsm/rhsm.conf'' * Set ''hostname'' to: ''subscription.rhn.redhat.com'' * Set ''prefix'' to: ''/subscription'' * Set ''port'' to: ''443'' * Set ''baseurl'' to: ''https://cdn.redhat.com'' * Set ''repo_ca_cert'' to: ''%(ca_cert_dir)sredhat-uep.pem'' * Set ''full_refresh_on_yum'' to: ''0'' * Enabling repositories: subscription-manager list --available subscription-manager attach --pool=pool_id subscription-manager list --consumed subscription-manager repos --list subscription-manager repos --enable repository ===== Details to intialize for a new instance ===== * Do a ''yum update'' * Add ''pathmunge $HOME/bin'' and ''pathmunge /usr/java/bin'' to ''/etc/profile'' * ==== If Starting with a Minimal Install ==== * yum install -y wget rsync git vim curl bzip2 zip unzip xz sharutils * yum install -y xterm gvim dejavu-sans-mono-fonts * yum install java-1.8.0-openjdk-devel * yum groupinstall "X Window System" * yum groupinstall "Fonts" //(alternately, dejavu-fonts-common)// * yum install tigervnc-server * yum install tigervnc * yum install xorg-x11-server-devel * yum install gcc-c++ * yum install mariadb-devel * yum install centos-release-scl ==== If VirtualBox VM Guest ==== * ''yum install gcc make perl kernel-devel'' * Install the VirtualBox Guest Additions * Shared folder mounted like: ''mount -t vboxsf -o uid=1000,gid=1000 sharename /home/you/some/folder'' ==== If using Docker ==== Docker requires the ''container-selinux'' package, not available in RHEL repos. \\ Get it from: [[http://mirror.centos.org/centos/7/extras/x86_64/Packages|CentOS 7 package mirror]] \\ Then, install Docker with: yum remove docker docker-common docker-selinux docker-engine yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce ... alternately ... yum check-update curl -fsSL https://get.docker.com/ | sh systemctl start docker systemctl status docker systemctl enable docker ==== If using ZFS ==== See [[https://github.com/zfsonlinux/zfs/wiki/RHEL-and-CentOS|official documentation]] for further details * ''dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm'' * ''yum install kernel-devel'' * ''yum install http://download.zfsonlinux.org/epel/zfs-release.el7_4.noarch.rpm'' * ''gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux'' * In ''/etc/yum.repos.d/zfs.repo'', change: * ''enabled=1'' to ''enabled=0'' in the ''[zfs]'' section * ''enabled=0'' to ''enabled=1'' in the ''[zfs-kmod]'' section * ''yum install zfs'' * ''systemctl preset zfs-import-cache zfs-import-scan zfs-import.target zfs-mount zfs-share zfs-zed zfs.target'' * ''modprobe zfs'' ==== If using LXC ==== * ''yum install debootstrap perl libvirt'' * ''yum install lxc lxc-templates'' * ''systemctl status lxc.service'' * ''systemctl start lxc.service'' * ''systemctl status lxc.service'' * ''systemctl start libvirtd'' * ''systemctl status lxc.service'' * ''lxc-checkconfig'' See also: [[http://www.zenteknix.com/wiki/doku.php?id=tech:lxc:start#centos_rhel_specifics|CentOS/RHEL Specifics for LXC]] ==== If using KVM ==== * ''grep -E '(vmx|svm)' /proc/cpuinfo'' * ''systemctl enable libvirtd'' * x ==== Other packages for new instance === * git * gcc-c++ * wget * xterm * vim * vim-x11 * java-1.8.0-openjdk-devel * gd-devel ==== Update a specific repository ==== ''yum --disablerepo="*" --enablerepo="epel" update'' ==== Enable TCP listen for X ==== // ... to be added ... // ==== Add firewall rule for HTTP ==== |**List active zone(s):**|''firewall-cmd --get-active-zones'' | |**Add port (note zone):**|''firewall-cmd --zone=public --add-port=3000/tcp --permanent'' | |**Refresh:**|''firewall-cmd --reload'' | ==== Change hostname post-installation ==== hostnamectl set-hostname Your-New-Host-Name-Here hostnamectl set-hostname "Your New Host Name Here" --pretty hostnamectl set-hostname Your-New-Host-Name-Here --static hostnamectl set-hostname Your-New-Host-Name-Here --transient ==== ulimit ==== In ''/etc/security/limits.conf'', create a file like ''20-nofile.conf'': * hard nofile 4096 * soft nofile 1024 @users soft nofile 2048 rk4n3 hard nofile 81920 rk4n3 soft nofile 8192 ------ ===== Some Application Trivia ===== ==== Routine CLI ==== * Duplicate SElinux attributes: ''chcon %%--%%reference=oldfileordir newfileordir'' * Update from specific repo only: ''yum %%--%%disablerepo="*" %%--%%enablerepo="my-repo" update'' ==== rsyslog & logrotate ==== * In ''/etc/rsyslog.d/yourapp.conf'' # Separate yourapp logging into its own file if $programname == 'yourapp' then /var/log/yourapp.log & stop * In ''/etc/logrotate.d/yourapp'': /var/log/yourapp.log { missingok weekly size 2G copytruncate rotate 12 notifempty } ==== Wildfly ==== * Wildfly likes to live at ''/opt/wildfly'', so create a symbolic link at that location to the actual installation directory * Set up the logging location:mkdir /var/log/wildfly chown wildfly:wildfly /var/log/wildfly chmod 755 /var/log/wildfly * Set up the runtime location:mkdir /var/run/wildfly chown wildfly:wildfly /var/run/wildfly chmod 755 /var/run/wildfly * Create a symbolic link at ''/etc/default/wildfly.conf'' to the ''standalone.conf'' file in the wildfly instance * Edit ''/etc/default/wildfly.conf'': * Make sure ''JAVA_HOME'' is set to the directory that the java you want to use lives at * Make sure ''JBOSS_HOME'' is set to ''/opt/wildfly'' * Add ''JBOSS_USER'', and ensure its set to the user that you want wildfly to run as * Copy ''/opt/wildfly/docs/contrib/scripts/init.d/wildfly-init-redhat.sh'' to ''/etc/init.d/wildfly'' * Edit ''/opt/wildfly/standalone/configuration/standalone.xml'': * Change ''127.0.0.1'' to actual IP address * Add an admin user by invoking ''cd /opt/wildfly/bin ; ./add-user.sh'' * Add as a service: chkconfig --add wildfly chkconfig wildfly on'' * Start with ''service wildfly start'', and stop with ''service wildfly stop'' * Admin console will be accessible on ''http://hostipaddress:9990/console'' * HTTP service will be on ''http://hostipaddress:8080'' by default //(unless changed in config file)// ==== Jenkins ==== See CentOS/RHEL section in [[tech:devops:jenkins:start|Jenkins devops page]] ==== Gatling ==== See CentOS/RHEL section in [[tech:devops:gatling:start|Gatling devops page]] ===== Some Issues -> Solutions ===== ==== Raw network/socket access ==== * Allow a program (i.e. ''/usr/bin/ping''): ''setcap cap_net_raw+p /path/to/command'' ==== systemd journal ==== * Clear out journal(s): ''journalctl -m --vacuum-time=1s'' ==== Upgrading ==== CentOS will typically require accepting license agreement (again) after a significant upgrade. \\ This can mean that the system will not complete booting until license agreement acceptance is \\ completed on a console. \\ ==== Firewall ==== Example:firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload ==== LDAP ==== * Ensure desired grep exists locally (in ''/etc/group'') * Add an LDAP user to local copy of LDAP group: ''gpasswd -a ldaplogin localgroup'' ==== Permissions ==== * For some strange reason, under RHEL new user home directories seem to be created with ''drwx------'' permissions, which denies other uses visibility under then entire tree. * SELinux can prevent SSH RSA key authentication, typically via file security context * Examine file context with:ls -lZd directorypath... orls -lZ filepath * A full remediation might look like:chcon -t root_t / chcon -t home_root_t /home chcon -t home_root_t /home/you chcon -t ssh_home_t /home/you/.ssh chcon -t ssh_home_t /home/you/.ssh/* * SELinux introduces some permissions complexity, so adjustments may need to be made on that level * Example - show SELinux context: ''ls -Z /some/dir'' * Example - apache logs: ''chcon -R -t httpd_log_t /some/log/dir'' * Example - apache doc root: ''chcon -R -t httpd_sys_content_t /some/www/docroot/dir'' * SELinux can prohibit network connections, as well - if apache can't connect to a MySQL DB: \\ ''setsebool -P httpd_can_network_connect=1'' ==== Mounted filesystem after changing fstab ==== * If a filesystem won't either unmount or mount in new location after changing ''/etc/fstab'':systemctl daemon-reload ==== CentOS VMs Crash in VNC/Headless Mode ==== This problem seems to be related to IPv6, so disabling IPv6 helps. Perform installation and first boot-up using the native Qemu GUI console, then disable IPv6 in the guest: sysctl -a | grep ipv6 | grep disable | sed 's/= 0/= 1/g' > /etc/sysctl.d/ipv6.conf; sysctl -p /etc/sysctl.d/ipv6.conf ... then, the VM can be restarted in headless/VNC mode. ===== Some Hardware Trivia ===== \\ // Links: [[:tech:linux:start|Linux Info]] ... [[:tech:start|Tech Info]] //