1. 程式人生 > >CentOS 7 原始碼安裝LAMP環境源 和apache監聽別的埠

CentOS 7 原始碼安裝LAMP環境源 和apache監聽別的埠

一、安裝apache

1.環境,我的環境是centos7.4    

2.檢查是否有用yum安裝的 

  rpm -qa |grep httpd    有的話用 yum remove 刪除

3.用yum 安裝依賴包

yum install -y gcc gcc-c++ apr-devel apr-util-devel openssl openssl-devel expat-devel libevent-devel  pcre-devel

4.下載apache的tar 可以去官網下載 http://httpd.apache.org/download.cgi

cd /usr/local/src/
wget https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.35.tar.gz

解壓 tar xvvf httpd-2.4.35.tar.gz 

預編譯 

   cd httpd-2.4.35
./configure --prefix=/usr/local/apache24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most  --with-zlib --with-pcre --with-apr=/usr --with-apr-util=/usr --enable-mpms-shared=all --with-mpm=worker 

編譯說明:

  --prefix 指明程式安裝目錄 --enable-so 表示啟用模組的動態裝解除安裝功能

  --enable-ssl 表示啟用ssl功能,此項可能需要先安裝openssl-devel包

  --enable-cgi 表示啟用支援cgi機制的功能 --enable-rewrite 表示支援url重寫功能

  --enable-modules=most 表示啟用的http模組有哪些,most表示啟動大多數

  --enable-mpms-shared=all 表示以共享方式啟用哪些MPM模組(prefork、worker、event), all表示所有的,此項為httpd2.4獨有的選項,因為只有2.4才支援MPM的動態裝解除安裝,2.2的MPM為靜態的,只有編譯進去,才能使用

  --with-mpm=event 表示預設啟動的MPM是哪種

  --with-zlib 表示依賴zlib,用於支援壓縮功能 沒用=等號指明zlib的路徑,則系統會自動到被依賴的檔案的預設的路徑去尋找, 如果被依賴的檔案不是rpm安裝,或不放在預設路徑下,則需要手動利用=等號指明路徑

  --with-pcre 表示依賴的pcre,用於支援url重寫時支援正則表示式 --with-apr 依賴的apr

  --with-apr-util 依賴的apr-util

:(Prefork MPM :實現了一個非執行緒、預派生的工作模式。它在Apache啟動之初,就會預派生一些子程序,然後等待連線。可以減少頻繁建立和銷燬程序的開銷,每個子程序只有一個執行緒。它成熟穩定,可以相容新老模組,也不需要擔心執行緒安全問題。但是一個程序相對地佔用更多的資源,消耗大量記憶體,不擅長處理高併發的場景。

Worker MPM : 此多路處理模組(MPM)使網路伺服器支援混合的多執行緒多程序。由於使用執行緒來處理請求,所以可以處理海量請求,而系統資源的開銷小於基於程序的MPM。但是,它也使用了多程序,每個程序又有多個執行緒,以獲得基於程序的MPM的穩定性。缺點是必須考慮執行緒安全性,為多個子程序是共享父程序的記憶體地址的。如果使用keep-alive的長連線方式,某個執行緒會被一直佔據,也許中間沒有任何請求,需要等到超時才會被釋放。如果過多的執行緒被這樣佔據,也會導致在高併發下的無服務執行緒可用。

event MPM:和worker工作模式很像,最大的區別是解決了在keep-alive場景下,長期被佔用的執行緒的資源浪費問題,在event MPM中,會有一個專門的執行緒來管理這些keep-alive執行緒,當有真實請求過來的時候,將請求傳遞給服務執行緒,執行完畢後,又允許它釋放,這樣增強了在高併發場景下的請求處理能力。儘管HTTP的Keepalive方式能減少TCP連線數量和網路負載,但是 Keepalive需要和服務程序或者執行緒繫結,這就導致一個繁忙的伺服器會耗光所有的執行緒。 Event MPM是解決這個問題的一種新模型,它把服務程序從連線中分離出來。在伺服器處理速度很快,同時具有非常高的點選率時, 可用的執行緒數量就是關鍵的資源限 制,此時Event MPM方式是最有效的。一個以Worker MPM方式工作的繁忙伺服器能夠承受每秒好幾萬次的訪問量(例如在大型新聞服務站點的高峰時, 而Event MPM可以用來處理更高負載。)。

編譯   make && make  install 

編譯完成

啟動  /usr/local/apache24/bin/apachectl  start      不過不著急編譯完php還要新增配置了

配置檔案 /usr/local/apache24/conf 

 

二、安裝php

1.yum安裝擴充套件

 yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel  libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel   epel-release libmcrypt-devel libedit-devel sqlite-devel jemalloc jemalloc-devel  

  
groupadd www   #新增組使用者
useradd -g www -s /sbin/nologin www

2.下載php包 

可以去官網下載 http://cn2.php.net/downloads.php

Php配置選項中文手冊  http://php.net/manual/zh/configure.about.php

這下載的是 5.6.38
[[email protected] apache24]# cd /usr/local/src/
[[email protected] src]# wget http://cn2.php.net/distributions/php-5.6.38.tar.gz
[[email protected] src]# tar xvf php-5.6.38.tar.gz
[[email protected] src]# cd php-5.6.38

預編譯  我這給的是php-a(因為我上面還跑nginx+php-fpm的了)

./configure --prefix=/usr/local/php-a --with-apxs2=/usr/local/apache24/bin/apxs --with-config-file-path=/usr/local/php-a/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --with-gd --with-jpeg-dir --with-png-dir --with-pcre-dir --with-pear --enable-session  --enable-gd-native-ttf --enable-xml --enable-gd-jis-conv  --enable-ftp --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir--enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline

make && make install

編譯完成

配置服務  

[[email protected] php-5.6.38]# cp php.ini-development /usr/local/php-a/etc/php.ini
[[email protected] php-5.6.38]# cp  /usr/local/php-a/etc/php-fpm.conf.default /usr/local/php-a/etc/php-fpm.conf

三、給apache添php擴充套件

修改apache配置檔案
 vim /usr/local/apache24/conf/httpd.conf  我的埠是8080
  1、在LoadModule後面新增PHP擴充套件:LoadModule php5_module modules/libphp5.so  
  2、在DirectoryIndex後面新增:index.php
  3、 在AddType application/x-gzip .gz .tgz後面新增:AddType application/x-httpd-php .php 

 

重啟apache

/usr/local/apache24/bin/apachectl start 
 

 

啟動的時候有報錯 httpd: Could not reliably determine the server's fully qualified domain name, using 0.0.0.146. Set the 'ServerName' directive globally to suppress this message

在207行 去掉加上 ServerName localhost:8080

四、測試

新增一個測試頁面

他的預設路徑在 /usr/local/apache24/htdocs 下 在htdocs下新增一個index.php檔案

 

五,新增別的埠

新增監聽埠 7788   

1. Listen 7788

2.新增配置

<VirtualHost *:7788>
    DocumentRoot "/www/ppp"
    ServerName localhost
  <Directory "www/ppp/">
      #Options FollowSymLinks ExecCGI
          Options Indexes FollowSymLinks
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>