envvars - apache2ctl의 기본 환경 변수

envvars - apache2ctl의 기본 환경 변수

Ubuntu 16.04 알파 릴리스 재부팅 시 k=10 Apache2 서버 프로세스를 시작하는 방법을 알고 싶습니다. 어제 저는 다음 URL을 읽었습니다. [https://rudd-o.com/linux-and-free-software/tuning-an-apache-server-in-5-mins]이는 prefork.c 모듈과 함께 Apache2를 사용하고 StartServers를 10으로 설정한다는 의미입니다.

<IfModule prefork.c>
StartServers       4
MinSpareServers    3
MaxSpareServers   10
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  10000
</IfModule>

불행히도 내 apache2에는 event.c 모듈만 있습니다. sudo apt-get install apache-mtm-prefork를 사용하여 apache2를 prefork.c 모듈로 업그레이드하려고 시도했는데 해당 패키지가 오래되었거나 더 이상 사용되지 않을 수 있기 때문에 설치 오류가 발생했습니다. 그런 다음 sudo apt-get update를 시도했는데 동일한 오류 메시지가 표시되었습니다.

다음 단계는 /etc/httpd.conf를 변경한 다음 시스템의 apache.service 파일과 ps -ef | grep -in "apache2"는 2개의 www-data apache2 프로세스와 ps-ef | grep -in "mod"는 mod-mono-server4 프로세스를 표시하지 않습니다.

또한 bash 쉘 명령 프롬프트에서 apache2를 실행하면 구문 오류 APACHE2_LOCK_FILE 환경 변수가 누락되었습니다. APACHE2_LOCK_FILE이 내 /etc/apache2/envvars 파일에 정의되어 있음을 발견했습니다.

Ubuntu 16.04 apache2 매뉴얼 페이지에는 "일반적으로 apache2는 직접 호출해서는 안 되며 /etc/init.d/apache2 또는 apache2ctl을 통해 호출해야 합니다. 기본 Debian 구성에는 /etc/에 정의된 환경 변수가 필요합니다. apache2/envvars는 apache2가 직접 시작된 경우 사용할 수 없습니다. 그러나 apache2ctl을 사용하여 apache2에 임의 인수를 전달할 수 있습니다.

그래서 /etc/apache2/envars 를 사용할 수 있었고, ExecStart = /etc/init.d/apache2 start 를 사용하도록 systemd apache.service 파일을 편집하고 Lenovo ThinkStation Ubuntu 16.04 데스크탑을 재부팅했지만 소용이 없었습니다. 여전히 2개만 얻었습니다. www-data apache2 프로세스 및 ps-ef | grep -in "mod"는 ps -ef | 실행 시 mod-mono-server4 프로세스를 표시하지 않습니다. grep -in "apache2".

제가 뭘 잘못했는지, 어떻게 고치는지 물어봐도 될까요? 제가 할 수 있는 테스트를 추천해주세요.

나는 많은 Ubuntu 16.04 알파 릴리스 사용자가 내가 경험한 것과 동일한 문제에 대해 곧 불평할 것이라는 것을 알고 있습니다.

답변1

apache2먼저 16.04의 패키지 에 포함된 mpm_prefork 모듈을 확인하여 이미 mpm_prefork 모듈이 있는지 확인할 수 있습니다 . 이렇게 하면 이에 대한 몇 가지 결과가 표시됩니다.

 dpkg -L apache2 | grep fork

 /etc/apache2/mods-available/mpm_prefork.conf
 /etc/apache2/mods-available/mpm_prefork.load

이제 어떤 MPM 모듈이 활성화되어 있는지 확인하면 이벤트 MPM 모듈이 활성화되고 Prefork 모듈은 활성화되지 않는 것을 볼 수 있습니다.

  ls /etc/apache2/mods-enabled/mpm*

Event MPM 모듈을 비활성화하고 Symlink로 수행할 수 있는 Prefork MPM 모듈을 활성화한 다음 Apache를 다시 시작하려는 것 같습니다.

sudo rm /etc/apache2/mods-enabled/mpm*
sudo ln -s /etc/apache2/mods-available/*fork* /etc/apache2/mods-enabled/

아마도 그러면 "StartServer" 지시문이 원하는 대로 작동할 것입니다. Event MPM 서버는 단일 프로세스에서 이벤트 루프를 실행하므로 모든 추가 프로세스를 실행하지는 않습니다.

Apache 및 systemd 시작에 대해서도 언급하셨습니다. Apache의 http를 직접 시작하거나 apache2ctl을 사용하여 시작하지 않는 것이 좋습니다. 일관성을 위해 systemd를 통해서만 제어하세요.

다음은 몇 가지 관련 시스템 제어 명령입니다. 예를 들면 다음과 같습니다.

 sudo systemctl start   apache2
 sudo systemctl stop    apache2
 sudo systemctl restart apache2

Mono, ASPX 및 여러 앱 설정에 대한 의견에 더 많은 질문이 있었습니다. 이러한 질문은 개별적으로 물어보고 단일 도메인에 여러 앱을 제공할 것인지, 아니면 여러 도메인에 여러 앱을 제공할 것인지 명확하게 밝혀야 합니다.

부팅 시 Apache2 서비스가 시작되도록 하려면 다음을 실행하세요.

sudo systemctl enable apache2

답변2

다른 루트 디렉터리에 있는 aspx 콘텐츠를 제공하도록 Ubuntu 16.04를 설정하는 데에는 3가지 단계가 더 있습니다.

  1. apache2.coonf 끝에 이것을 넣으십시오.

    별칭 /test "/usr/share/doc/xsp/test" 별칭 /personal "/home/user/mypages" AddMonoApplications default "/test:/usr/share/doc/xsp/test,/personal:/home/user /mypages" SetHandler 모노 SetHandler 모노

    1. 소스 /etc/apache2/envvars를 다음과 같이 수정한 후:

      envvars - apache2ctl의 기본 환경 변수

      uid를 변경한 후에는 올바르지 않습니다.

      집 설정 해제

      여러 apache2 인스턴스를 지원하기 위해

      if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}" else SUFFIX= fi

      스크립트에서 구문 분석된 apache2 구성을 가져오는 정상적인 방법이 없기 때문에 일부

      설정은 환경 변수를 통해 정의된 다음 apache2ctl에서 사용됩니다.

      /etc/init.d/apache2, /etc/logrotate.d/apache2 등

      내보내기 APACHE_RUN_USER=venkat 내보내기 APACHE_RUN_GROUP=venkat

      임시 상태 파일 위치. Wheezy+1에서는 /run으로 변경될 수 있습니다.

      내보내기 APACHE_PID_FILE=/var/run/apache2/apache2.pid 내보내기 APACHE_RUN_DIR=/var/run/apache2 내보내기 APACHE_LOCK_DIR=/var/lock/apache2

      /var/log/apache2만 /etc/logrotate.d/apache2에 의해 처리됩니다.

      APACHE_LOG_DIR=/var/log/apache2 내보내기

      mod_dav와 같은 일부 모듈에서 사용되는 로케일

      LANG=C 내보내기

      대신 시스템 기본 로캘을 사용하려면 다음 줄의 주석 처리를 해제하세요.

      . /etc/default/locale

      LANG 내보내기

      'apache2ctl status'에 대한 상태를 가져오는 명령입니다.

      'www-browser'를 제공하는 일부 패키지에는 '-dump' 대신 '--dump'가 필요합니다.

      APACHE_LYNX='www-browser -dump' 내보내기

      더 높은 파일 설명자 제한이 필요한 경우 주석 처리를 제거하고 조정하십시오.

      다음 줄(기본값은 8192):

      APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

      웹 서버에 인수를 전달하려면 아래에 추가하세요.

      APACHE_ARGUMENTS 환경으로.

      APACHE_ARGUMENTS='' 내보내기

      관리자 스크립트에 대한 디버그 모드를 활성화합니다.

      그러면 웹 서버 모듈 및 웹 애플리케이션의 패키지 설치에 대한 자세한 출력이 생성됩니다.

      Apache와 상호 작용하는 설치

      APACHE2_MAINTSCRIPT_DEBUG=1 내보내기

      1. apache2.conf 상단에 LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so 줄을 배치합니다.

      2. 이것을 테스트하려면http://127.0.0.1/test/Default.cs그리고 넣어http://127.0.0.1/personal/Default.csFirefox 웹 브라우저에서.

관련 정보