RHEL 8 āĻŦāĻŋāĻāĻž āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻ āĻ¨ā§āĻ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ āĻĢāĻžāĻ° āĻāĻ°ā§, āĻ¯ā§āĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻĒā§āĻˇā§āĻ āĻžāĻā§āĻ˛āĻŋ āĻ˛āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻžāĻāĻšā§āĻ, āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻļā§āĻāĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§ āĻāĻ°āĻ āĻāĻžāĻ˛, āĻ¤āĻžāĻ āĻ¨ā§āĻā§ āĻāĻŽāĻ°āĻž Red Hat Enterprise Linux 8 āĻŦāĻŋāĻāĻž-āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻŽāĻļāĻžāĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻĻāĻŋāĻāĨ¤
āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻ˛ā§āĻ¯āĻžāĻā§āĻā§āĻ¯āĻŧā§āĻ āĻĒāĻžāĻāĻĨāĻ¨āĻā§ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ§āĻ°āĻž āĻ¯āĻžāĻ, Django āĻāĻŦāĻ PostgreSQL āĻāĻ° āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖ, āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ RHEL 8 āĻŦāĻŋāĻāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻ°āĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ (āĻ
āĻļā§āĻ°ā§āĻŖā§āĻā§āĻā§āĻ¤) āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦāĨ¤
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§, āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ
āĻā§āĻŽā§āĻļāĻ¨ā§āĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻŦā§āĻˇāĻŖ āĻāĻ°āĻž, āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧā§ˇ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻšāĻžāĻ¤ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻā§āĻ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°ā§āĻā§āĻāĻžāĻāĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ āĻŋāĻ āĻā§ āĻāĻāĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ
ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¨ āĻāĻŦāĻ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ā§ˇ āĻāĻ āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻāĻžāĻāĻĒ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻĨāĻž āĻŦāĻ˛āĻāĻŋāĨ¤
āĻāĻ˛ā§āĻ¨ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ RHEL 8 āĻŦāĻŋāĻāĻž VM āĻāĻŽā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ āĻĨāĻŦāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻāĻž āĻ¸āĻžāĻŦāĻ¸ā§āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ KVM āĻā§āĻ¸ā§āĻ āĻāĻŽā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻ¸ā§āĻ āĻāĻŽā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻŋāĻĄāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻā§āĻ˛āĻžāĻāĻĄ āĻāĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ (āĻā§āĻ˛āĻžāĻāĻĄ-āĻāĻ¨āĻŋāĻ) āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĄā§āĻāĻž āĻĨāĻžāĻāĻŦā§āĨ¤ āĻĄāĻŋāĻ¸ā§āĻ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻŦāĻž āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻŋāĻļā§āĻˇ āĻāĻŋāĻā§ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ; āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŦā§āĨ¤
āĻāĻ° āĻĒā§āĻ°ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤
āĻā§āĻ¯āĻžāĻā§āĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§, āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻžāĻāĻĨāĻ¨ 3.5 āĻŦāĻž āĻ¤āĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļ (āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ā§āĻ¨āĻ) āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻŦāĻŋāĻāĻž āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨ āĻ¯ā§ āĻĒāĻžāĻāĻĨāĻ¨ 3.6 āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻā§, āĻāĻ¸ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻĻā§āĻāĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻšāĻ¯āĻŧ āĻāĻŋāĻ¨āĻž:
[cloud-user@8beta1 ~]$ python
-bash: python: command not found
[cloud-user@8beta1 ~]$ python3
-bash: python3: command not found
Red Hat āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ RHEL-āĻ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻ˛āĻāĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ¨ āĻāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛?
āĻāĻ¸āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ āĻ
āĻ¨ā§āĻ āĻĒāĻžāĻāĻĨāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻāĻāĻ¨āĻ āĻĒāĻžāĻāĻĨāĻ¨ 2 āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāĻ¨ 2-āĻ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°ā§āĻ° āĻāĻĨāĻž āĻāĻžāĻŦāĻā§āĻ¨, āĻ¯āĻāĻ¨ āĻĒāĻžāĻāĻĨāĻ¨ 3 āĻ¨āĻŋāĻā§āĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻā§āĻā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, Python-āĻāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻŽā§āĻāĻžāĻ¤ā§, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ Python āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ¯āĻžāĻā§āĻā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ Python 2.7 āĻāĻŦāĻ 3.6 āĻāĻāĻ¯āĻŧāĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĻā§āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻŦāĻ āĻā§āĻ¨ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻļāĻ¨āĻžāĻ¯āĻŧ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§ā§ˇ
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻāĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯ā§āĻāĻžāĻ¨ā§ python3-pip āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
sudo yum install python36 python3-virtualenv
āĻ˛ā§āĻ¯āĻžāĻāĻĄāĻ¨ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŽāĻĄāĻŋāĻāĻ˛ āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž āĻāĻŦāĻ āĻĒāĻŋāĻĒ3 āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž? āĻāĻ¸āĻ¨ā§āĻ¨ āĻ āĻā§āĻŽā§āĻļāĻ¨ā§āĻ° āĻāĻĨāĻž āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ āĻ°ā§āĻā§, āĻāĻāĻŋ āĻāĻžāĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¯ā§ Ansible-āĻā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻŋāĻĒ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯ā§āĻšā§āĻ¤ā§ āĻĒāĻŋāĻĒ āĻŽāĻĄāĻŋāĻāĻ˛āĻāĻŋ āĻāĻžāĻ¸ā§āĻāĻŽ āĻĒāĻŋāĻĒ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻ¸āĻš āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ā§āĻ¨āĻāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻžāĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻˇā§āĻĒāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ python3 āĻĻā§āĻāĻžāĻˇā§ āĻ¸āĻš, āĻāĻĒāĻ¨āĻŋ Django āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ āĻ¨ā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻā§. āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻ°āĻž Yum āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ RHEL 8 āĻ āĻāĻĒāĻ˛āĻŦā§āĻ§ PostgreSQL āĻāĻŦāĻ Nginx āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦāĨ¤
sudo yum install nginx postgresql-server
PostgreSQL-āĻāĻ° āĻāĻ¨ā§āĻ¯ psycopg2 āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ā§āĻ¨āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻ¤ā§ āĻšāĻŦā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž Django āĻāĻŦāĻ Gunicorn-āĻāĻ° āĻ¸āĻžāĻĨā§ pip3 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° virtualenv āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻā§āĻ¯āĻžāĻā§āĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ āĻŋāĻ āĻāĻžāĻ¯āĻŧāĻāĻž āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ āĻ¨ā§āĻ āĻŦāĻŋāĻ¤āĻ°ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻ¸āĻ¨ā§āĻĻā§āĻš āĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĢāĻžāĻāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻžāĻ¯āĻŧāĻžāĻ°āĻžāĻ°ā§āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§, āĻāĻĢāĻāĻāĻāĻāĻ¸ āĻŦāĻ˛ā§ āĻ¯ā§ /āĻāĻ¸āĻāĻ°āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ: "āĻšā§āĻ¸ā§āĻ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§- āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¯ā§ āĻĄā§āĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĄā§āĻāĻž āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ, FTP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĄā§āĻāĻž, āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°ā§āĨ¤" āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋ (āĻāĻĢāĻāĻāĻāĻāĻ¸-āĻ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ -2.3 2004)āĨ¤"
āĻāĻāĻŋ āĻ āĻŋāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŦāĻāĻŋāĻā§ /srv-āĻ āĻ°āĻžāĻāĻŋ, āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° (āĻā§āĻ˛āĻžāĻāĻĄ-āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§) āĻŽāĻžāĻ˛āĻŋāĻāĻžāĻ¨āĻžāĻ§ā§āĻ¨āĨ¤
sudo mkdir /srv/djangoapp
sudo chown cloud-user:cloud-user /srv/djangoapp
cd /srv/djangoapp
virtualenv django
source django/bin/activate
pip3 install django gunicorn psycopg2
./django-admin startproject djangoapp /srv/djangoapp
PostgreSQL āĻāĻŦāĻ Django āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻ¸āĻšāĻ: āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, āĻ āĻ¨ā§āĻŽāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨ā§ˇ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ PostgreSQL āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻšāĻ˛ postgresql-setup āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯āĻž postgresql-server āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻŽā§āĻ˛āĻŋāĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻāĻ¨āĻŋāĻļāĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻŦāĻž āĻāĻĒāĻā§āĻ°ā§āĻĄ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻāĻāĻŋ RHEL āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ PostgreSQL āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§:
sudo /usr/bin/postgresql-setup -initdb
āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ¨āĻŋ systemd āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ PostgreSQL āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻā§āĻ°ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ (āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ pg_hba.conf) āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ PostgreSQL āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ pg_hba.conf āĻĢāĻžāĻāĻ˛ā§ IPv4 āĻāĻŦāĻ IPv6 āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤
systemctl enable -now postgresql
sudo -u postgres psql
postgres=# create database djangoapp;
postgres=# create user djangouser with password 'qwer4321';
postgres=# alter role djangouser set client_encoding to 'utf8';
postgres=# alter role djangouser set default_transaction_isolation to 'read committed';
postgres=# alter role djangouser set timezone to 'utc';
postgres=# grant all on DATABASE djangoapp to djangouser;
postgres=# q
āĻĢāĻžāĻāĻ˛ā§ /var/lib/pgsql/data/pg_hba.conf:
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5
āĻĢāĻžāĻāĻ˛ā§ /srv/djangoapp/settings.py:
# Database
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '{{ db_name }}',
'USER': '{{ db_user }}',
'PASSWORD': '{{ db_password }}',
'HOST': '{{ db_host }}',
}
}
āĻĒā§āĻ°āĻā§āĻā§āĻā§ settings.py āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻ¨ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻžāĨ¤
./manage.py runserver 0.0.0.0:8000
./manage.py createsuperuser
WSGI? āĻāĻ¯āĻŧāĻžāĻ?
āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻāĻāĻ¯āĻŧā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ (WSGI) āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ¸āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, uWSGI āĻāĻ° āĻ¸āĻžāĻĨā§ Apache HTTPD āĻŦāĻž Gunicorn āĻāĻ° āĻ¸āĻžāĻĨā§ NginxāĨ¤
āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻāĻāĻ¯āĻŧā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻāĻžāĻ āĻšāĻ˛ āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻ¯āĻŧā§āĻŦ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¨ā§āĨ¤ WSGI āĻšāĻ˛ āĻāĻ¯āĻŧāĻžāĻ¨āĻ āĻ āĻ¤ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻŽā§āĻ¤āĻŋāĻāĻŋāĻšā§āĻ¨ āĻ¯āĻāĻ¨ CGI āĻāĻā§āĻāĻŋāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻŋāĻ˛, āĻāĻŦāĻ āĻāĻ WSGI āĻšāĻ˛ āĻĄāĻŋ āĻĢā§āĻ¯āĻžāĻā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ, āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦāĻž āĻĒāĻžāĻāĻĨāĻ¨ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ āĻšā§āĻ āĻ¨āĻž āĻā§āĻ¨āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻŦā§āĻ¯āĻžāĻĒāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻāĻ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻ¨āĻ āĻ āĻ¨ā§āĻ āĻ¸ā§āĻā§āĻˇā§āĻŽāĻ¤āĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ āĻĒāĻāĻ¨ā§āĻĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ Gunicorn āĻāĻŦāĻ Nginx āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦāĨ¤
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§, āĻāĻ¸ā§āĻ¨ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ UNIX āĻ¸āĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻāĻāĻŋ āĻ¸āĻā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¤āĻžāĻ āĻāĻ¸ā§āĻ¨ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻā§āĻ¨āĻŋāĻāĻ°ā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻā§āĻ āĻ ā§āĻ¯āĻžāĻā§āĻāĻŋāĻā§āĻļāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻŋāĨ¤
āĻ¸āĻā§āĻ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻŦā§āĻļ āĻ¸āĻšāĻāĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻāĻāĻŋ āĻāĻāĻ¨āĻŋāĻ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻāĻŋ ListenStream āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻĨāĻžāĻā§ āĻ¯ā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ UNIX āĻ¸āĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻāĻ¨āĻŋāĻ āĻĢāĻžāĻāĻ˛ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻ¸āĻā§āĻ āĻāĻāĻ¨āĻŋāĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻŦā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻāĻ¨āĻŋāĻ āĻĢāĻžāĻāĻ˛ā§, āĻ¯āĻž āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĨā§āĻā§ āĻā§āĻ¨āĻŋāĻāĻ°ā§āĻ¨āĻā§ āĻāĻ˛ āĻāĻ°āĻž āĻāĻŦāĻ UNIX āĻ¸āĻā§āĻ āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ WSGI āĻŦāĻžāĻāĻ¨ā§āĻĄāĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤
āĻāĻāĻžāĻ¨ā§ āĻāĻāĻ¨āĻŋāĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻŋāĻā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻ¸āĻā§āĻ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŋāĨ¤
[Unit]
Description=Gunicorn WSGI socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ¨āĻŋāĻāĻ°ā§āĻ¨ āĻĄā§āĻŽāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
[Unit]
Description=Gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=cloud-user
Group=cloud-user
WorkingDirectory=/srv/djangoapp
ExecStart=/srv/djangoapp/django/bin/gunicorn
âaccess-logfile -
âworkers 3
âbind unix:gunicorn.sock djangoapp.wsgi
[Install]
WantedBy=multi-user.target
Nginx-āĻāĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ°āĻā§āĻ¸āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻ¸āĻžāĻŽāĻā§āĻ°ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ RHEL-āĻ, Nginx āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ /etc/nginx/conf.d-āĻ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ /etc/nginx/conf.d/default.conf āĻĢāĻžāĻāĻ˛ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻšā§āĻ¸ā§āĻ āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ˛ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°_āĻ¨āĻžāĻŽ āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
server {
listen 80;
server_name 8beta1.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /srv/djangoapp;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Systemd āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Gunicorn āĻ¸āĻā§āĻ āĻāĻŦāĻ Nginx āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤
āĻāĻžāĻ°āĻžāĻĒ āĻā§āĻāĻāĻ¯āĻŧā§ āĻ¤ā§āĻ°ā§āĻāĻŋ?
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻāĻŋ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻāĻŋ 502 āĻāĻžāĻ°āĻžāĻĒ āĻā§āĻāĻāĻ¯āĻŧā§ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĒāĻžāĻŦā§āĻ¨ā§ˇ āĻāĻāĻŋ āĻā§āĻ˛āĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž UNIX āĻ¸āĻā§āĻ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋāĻ° āĻāĻžāĻ°āĻŖā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ āĻĨāĻŦāĻž āĻāĻāĻŋ SELinux-āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
nginx āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ˛āĻ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻŽāĻ¤ āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
2018/12/18 15:38:03 [crit] 12734#0: *3 connect() to unix:/run/gunicorn.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.122.1, server: 8beta1.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "8beta1.example.com"
āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻā§āĻ¨āĻŋāĻāĻ°ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻāĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻŦāĨ¤
curl âunix-socket /run/gunicorn.sock 8beta1.example.com
āĻāĻ˛ā§āĻ¨ āĻŦā§āĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ āĻā§āĻ¨ āĻāĻŽāĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ˛āĻāĻāĻŋ āĻā§āĻ˛āĻ˛ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ SELinux āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĄā§āĻŽāĻ¨ āĻāĻžāĻ˛āĻžāĻā§āĻāĻŋ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻ¨ā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻāĻāĻŋ init_t āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻ āĻ¤āĻ¤ā§āĻ¤ā§āĻŦāĻāĻŋ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤
sudo setenforce 0
āĻāĻ āĻ¸āĻŦ āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻž āĻāĻŦāĻ āĻ°āĻā§āĻ¤ā§āĻ° āĻ āĻļā§āĻ°ā§ āĻāĻžāĻ°āĻŖ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°ā§āĻā§āĻāĻžāĻāĻĒ āĻĄāĻŋāĻŦāĻžāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¸ā§āĻ¨ āĻā§āĻāĻāĻŋ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻŋ, āĻ¯āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦāĨ¤
āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻĒā§āĻˇā§āĻ āĻžāĻāĻŋ āĻ°āĻŋāĻĢā§āĻ°ā§āĻļ āĻāĻ°ā§ āĻŦāĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ°ā§āĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¯āĻžāĻā§āĻā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒā§āĻˇā§āĻ āĻžāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋāĻ° āĻāĻ° āĻā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§āĻ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻĒāĻ°, āĻāĻŽāĻ°āĻž āĻāĻŦāĻžāĻ° SELinux āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻŋāĨ¤
sudo setenforce 1
āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻĒā§āĻ˛āĻā§āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ audit2allow āĻŦāĻž āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻ¨ā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦ āĻ¨āĻž, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻā§āĻ¨āĻ āĻĒā§āĻ°āĻā§āĻ¤ āĻā§āĻ¯āĻžāĻā§āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¨ā§āĻ, āĻ¤āĻžāĻ Gunicorn āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¤āĻžāĻ° āĻā§āĻ¨āĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŽāĻžāĻ¨āĻāĻŋāĻ¤ā§āĻ° āĻ¨ā§āĻāĨ¤ āĻ āĻ¤āĻāĻŦ, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻā§ āĻ°āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ SELinux-āĻā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ°āĻžāĻāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻ āĻĄāĻŋāĻ āĻ˛āĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¤ā§ āĻĒā§āĻ°āĻā§āĻ¤ āĻ¨ā§āĻ¤āĻŋāĻāĻŋ āĻ¤āĻāĻ¨ āĻĨā§āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻ āĻ¨ā§āĻŽāĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻĄā§āĻŽā§āĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž
āĻ¸āĻŦāĻžāĻ SELinux-āĻ āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻĄā§āĻŽā§āĻ¨ā§āĻ° āĻāĻĨāĻž āĻļā§āĻ¨ā§āĻ¨āĻŋ, āĻ¤āĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻā§ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻŽāĻ¨āĻāĻŋ āĻ āĻ¨ā§āĻā§ āĻ¨āĻž āĻŦā§āĻā§āĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§āĻā§āĻ¨āĨ¤ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¤āĻŋ āĻ āĻĄāĻŋāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¨ā§āĻ¤āĻŋāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻĄā§āĻŽā§āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°ā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¨ā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤
Gunicorn-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻĄā§āĻŽā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŋāĻā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¨ā§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§āĻ¤āĻŋ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
sudo yum install selinux-policy-devel
āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻĄā§āĻŽā§āĻ¨ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻļāĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻāĻŽ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ¸ā§ āĻ¯āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§ˇ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, Gunicorn-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻĄā§āĻŽā§āĻ¨ āĻ¨ā§āĻ¤āĻŋ āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¸āĻšāĻ āĻšāĻŦā§ - āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻāĻžāĻ° āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§āĻ¨ (gunicorn_t), āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻ° āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ (gunicorn_exec_t) āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻ˛āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻļā§āĻˇ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻ¨ā§āĻ¤āĻŋāĻāĻŋāĻā§ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻ āĻāĻ°ā§āĨ¤
gunicorn.te:
policy_module(gunicorn, 1.0)
type gunicorn_t;
type gunicorn_exec_t;
init_daemon_domain(gunicorn_t, gunicorn_exec_t)
permissive gunicorn_t;
āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻ¨ā§āĻ¤āĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨.
make -f /usr/share/selinux/devel/Makefile
sudo semodule -i gunicorn.pp
sudo semanage permissive -a gunicorn_t
sudo semodule -l | grep permissive
SELinux āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻāĻžāĻ¨āĻž āĻĄā§āĻŽāĻ¨ āĻ¯āĻž āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻā§ āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻž āĻ āĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻŦā§āĻ˛āĻ āĻāĻ°āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻāĨ¤
sudo ausearch -m AVC
type=AVC msg=audit(1545315977.237:1273): avc: denied { write } for pid=19400 comm="nginx" name="gunicorn.sock" dev="tmpfs" ino=52977 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file permissive=0
SELinux Nginx āĻā§ Gunicorn āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ UNIX āĻ¸āĻā§āĻā§ āĻĄā§āĻāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻŦāĻžāĻ§āĻž āĻĻā§āĻ¯āĻŧāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻ¤āĻŦā§ āĻ¸āĻžāĻŽāĻ¨ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻ¯āĻžāĻ˛ā§āĻā§āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻĄā§āĻŽā§āĻ¨ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĄā§āĻŽā§āĻ¨ā§ āĻĄā§āĻŽā§āĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻ¨ httpd_t āĻā§ āĻĒāĻžāĻ°āĻŽāĻŋāĻļāĻ¨ āĻĄā§āĻŽā§āĻ¨ā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤ āĻāĻāĻŋ Nginx āĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĻā§āĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻ°āĻ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻāĻžāĻ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
sudo semanage permissive -a httpd_t
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻāĻŦāĻžāĻ° āĻāĻĒāĻ¨āĻŋ SELinux-āĻā§ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§ (āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻāĻāĻŋ SELinux āĻĒā§āĻ°ā§āĻā§āĻā§āĻāĻā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻŽā§āĻĄā§ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ) āĻāĻŦāĻ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĄā§āĻŽā§āĻ¨āĻā§āĻ˛āĻŋ āĻ˛ā§āĻĄ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻāĻ āĻžāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŋāĻ āĻā§ gunicorn_exec_t āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŦāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻĻā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨āĨ¤
sudo ausearch -m AVC -c gunicorn
āĻāĻĒāĻ¨āĻŋ 'comm="gunicorn"' āĻ¸āĻŽā§āĻŦāĻ˛āĻŋāĻ¤ āĻĒā§āĻ°āĻā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§āĻā§āĻ˛āĻŋ /srv/djangoapp-āĻāĻ° āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ āĻĢā§āĻ˛ā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻŽāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄāĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ āĻŽāĻ¤ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§:
type=AVC msg=audit(1545320700.070:1542): avc: denied { execute } for pid=20704 comm="(gunicorn)" name="python3.6" dev="vda3" ino=8515706 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file permissive=0
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ gunicorn āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻĻā§āĻā§āĻ¨ āĻŦāĻž ps āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¨ āĻāĻ˛āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻĻā§āĻā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻā§āĻ¨āĻŋāĻāĻ°ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ā§āĻ¨āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°ā§āĻāĻžāĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ°ā§āĻŽā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ āĻāĻāĻ¨ āĻāĻ āĻĻā§āĻāĻŋ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻā§āĻŦāĻ˛ āĻĢāĻžāĻāĻ˛ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¯āĻžāĻā§āĻā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻĒā§āĻˇā§āĻ āĻž āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤
chcon -t gunicorn_exec_t /srv/djangoapp/django/bin/gunicorn /srv/djangoapp/django/bin/python3.6
āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻ¯āĻžāĻ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻžāĻ¨āĻŋāĻāĻ°ā§āĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻ¸āĻžāĻāĻāĻāĻŋ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¤āĻāĻ¨ āĻ¸āĻā§āĻāĻāĻŋāĻā§ āĻāĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĻāĻŋāĻ¨ā§ˇ āĻ¯āĻžāĻāĻžāĻ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ ps āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻ āĻŋāĻ āĻ˛ā§āĻŦā§āĻ˛ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤
ps -efZ | grep gunicorn
āĻĒāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ SELinux āĻ¨ā§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻž!
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻ¨ AVC āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻā§āĻ¨, āĻļā§āĻˇ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ¤ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻžāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ permissive=1 āĻāĻŦāĻ āĻŦāĻžāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ permissive=0āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸ā§āĻ°āĻž āĻāĻĒāĻžāĻ¯āĻŧ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻ¤āĻā§āĻˇāĻŖ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋāĻā§ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤ āĻ°āĻžāĻāĻž āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻā§āĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ°, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§āĻā§āĻ¯ āĻ āĻĄāĻŋāĻ āĻāĻ°āĻž āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽāĨ¤
sudo ausearch -m AVC
āĻāĻā§āĻāĻŋāĻ˛ā§!
Nginx āĻāĻŦāĻ Gunicorn WSGI āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĢā§āĻ°āĻ¨ā§āĻāĻāĻ¨ā§āĻĄ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻž āĻā§āĻ¯āĻžāĻā§āĻā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻ°āĻž RHEL 3 āĻŦāĻŋāĻāĻž āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĨā§āĻā§ Python 10 āĻāĻŦāĻ PostgreSQL 8 āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§, āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻ¤ā§, āĻŦāĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋāĻā§ āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ RHEL 8 āĻŦāĻŋāĻāĻžāĻ¤ā§ āĻā§āĻ¯āĻžāĻā§āĻā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ (āĻŦāĻž āĻā§āĻŦāĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨) āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻž āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻŦā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com