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를 변경하고 StartServers = 5를 사용하여 apache2 이벤트 모듈을 구성한 다음 시스템 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을 통해 호출해야 합니다. 기본 데비안 구성에는 /etc에 정의된 apache2/envvars 환경 변수가 필요합니다. /, apache2를 직접 시작하는 경우 사용할 수 없습니다. 그러나 apache2ctl을 사용하여 임의 매개변수를 apache2에 전달할 수 있습니다."

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

내가 뭘 잘못했는지, 어떻게 고칠 수 있는지 알려주세요. 제가 할 수 있는 테스트 추천해주세요.

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

답변1

apache2먼저 16.04 패키지에 제공되는 모듈을 보면 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 모듈을 비활성화하고 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 기본값 "/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

      언어 내보내기

      "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 웹 브라우저에서.

관련 정보