lamp :在Linux 下搭建apache、Mysql、php

CentOS下搭建LAMP環境

  • LAMP: Linux + Apache + PHP + Mysql。
  • 系統: CentOS 7,64位。

CentOS安裝

我選取了64位的CentOS 7這個Linux系統,安裝過程也很簡單,再也不過多敘述,只稍微介紹一下個人分區狀況:php

Apache編譯安裝

我選擇了httpd 2.2這個版本,能夠參考官方說明文檔html

安裝依賴:

安裝依賴須要用到的gcc、g++編譯器:python

########gcc、g++

sudo yum install gcc 
sudo yum install gcc-c++

  

下面兩個是apache的優化工具:mysql

########apr

wget http://labfile.oss.aliyuncs.com/apr-1.5.1.tar.gz
tar -zxvf apr-1.5.1.tar.gz
cd apr-1.5.1/
./configure --prefix=/opt/apr
sudo make && make install

  

 

########apr-util

cd Downloads/
wget http://labfile.oss.aliyuncs.com/apr-util-1.5.4.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/opt/apr-util --with-apr=/opt/apr
sudo make && make install

  

Perl庫,兼容正則表達式庫:c++

cd Downloads/
wget  http://labfile.oss.aliyuncs.com/pcre-8.36.tar.gz
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure --prefix=/opt/pcre
sudo make && make install

  

 

安裝apache:

cd Downloads/
wget http://labfile.oss.aliyuncs.com/httpd-2.2.29.tar.gz
tar -zxvf httpd-2.2.29.tar.gz
cd httpd-2.2.29
./configure --prefix=/opt/apache --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-pcre=/opt/pcre
sudo make && make install
sudo sed -i 's/^#ServerName.*/ServerName localhost/' /opt/apache/conf/httpd.conf

  

測試:

啓動:web

sudo /opt/apache/bin/apachectl start

 

獲取服務器迴應(安裝apache最後一步已經將服務器設爲localhost):正則表達式

curl -I 127.0.0.1

若安裝成功則以下: 
這裏寫圖片描述算法

關閉:sql

sudo /opt/apache/bin/apachectl stop 

 

MySQL編譯安裝數據庫

安裝依賴:

###若先前編譯過,則須要刪除剛纔編譯生成的CMakeCache.txt文件
rm -f CMakeCache.txt

sudo yum -y install gcc gcc-c++ autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake cmake-gui libaio-devel bison-devel make

 

編譯安裝(時間較長):

cd Downloads/
wget http://labfile.oss.aliyuncs.com/mysql-5.6.24.tar.gz
tar -zxvf mysql-5.6.24.tar.gz
cd mysql-5.6.24
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/opt/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1
sudo make 
sudo make install

  

 

建立mysql用戶:

id mysql > /dev/null 2>&1 || sudo useradd -r -s /sbin/nologin -M -d /opt/mysql/data mysql

 

初始化數據目錄:

sudo chown -R mysql:mysql /opt/mysql/data
sudo /opt/mysql/scripts/mysql_install_db --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql --defaults-file=/opt/mysql/support-files/my-default.cnf

  

 

修改配置文件:

sudo sh -c 'cat >> /opt/mysql/my.cnf <<EOF
basedir = /opt/mysql
datadir = /opt/mysql/data
log-error = /opt/mysql/data/error.log
pid-file = /opt/mysql/data/mysql.pid
port = 3306
EOF'

  

 

清除殘留文件:

sudo sh -c 'for file in /etc/mysql/my.cnf /etc/my.cnf ; do [ -f $file ] && rm -f $file ; done'

 

啓動:

sudo /opt/mysql/support-files/mysql.server start

成功則顯示: 
這裏寫圖片描述

測試:

/opt/mysql/bin/mysqladmin ping

成功則顯示: 
這裏寫圖片描述

查看數據庫:

/opt/mysql/bin/mysql -u root -e 'show databases;'

關閉:

sudo /opt/mysql/support-files/mysql.server stop

成功則顯示: 
這裏寫圖片描述

PHP編譯安裝

安裝依賴:

最後三個文件能夠從這裏下載。

cd Downloads/
sudo yum install zlib1g-dev libbz2-dev libcurl4-gnutls-dev  libjpeg-dev libpng12-dev  libfreetype6-dev  libmcrypt-dev libxml2-dev
sudo yum install bzip2-devel.x86_64 -y
sudo yum -y install curl-devel
sudo yum install openssl.x86_64 openssl-devel.x86_64 -y
sudo yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y
sudo yum install libjpeg libjpeg-devel libpng libpng-devel

  

 

編譯安裝:

cd Downloads/
wget http://labfile.oss.aliyuncs.com/php-5.5.21.tar.gz
tar -zxvf php-5.5.21.tar.gz
cd php-5.5.21
./configure --prefix=/opt/php --with-bz2 --with-curl --with-jpeg-dir --with-gd --enable-shared --enable-mbstring --with-mcrypt --with-mysql=/opt/mysql --with-pdo-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --enable-fpm --enable-phar --enable-bcmath --with-zlib --enable-zip --enable-ftp --with-gettext --enable-sockets --with-freetype-dir  --with-config-file-path=/opt/php/etc/php.ini --with-config-file-scan-dir=/opt/php/etc/conf.d --with-apxs2=/opt/apache/bin/apxs
sudo make
sudo make install
sudo cp php.ini-production /opt/php/etc/php.ini

  

 

檢查php是否支持mysql:

/opt/php/bin/php -m | grep mysql

 

若支持則顯示: 
這裏寫圖片描述

修改apache配置文件,添加php的支持配置:

sudo sh -c 'cat >> /opt/apache/conf/httpd.conf <<EOF
<IfModule mime_module>
AddType application/x-httpd-php .php
</IfModule>
EOF'

  

 

若關閉則開啓apache,不然從新啓動apache:

sudo /opt/apache/bin/apachectl -k restart

測試:

sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /opt/apache/htdocs/test.php'

在瀏覽器輸入:

http://localhost/test.php

配置成功則顯示php信息: 
這裏寫圖片描述

 

在php.ini中加載模塊:

sudo sh -c 'echo "extension=ftp.so" >> /opt/php/etc/php.ini'
  • 1

LAMP配置

php配置:

配置文件/opt/php/etc/php.ini:

###常規配置 engine = On short_open_tag = Off #tags識別 asp_tags = Off #asp tags識別 precision = 14 #浮點類型數顯示時的有效位數 output_buffering = 4096 #輸出緩存容許你在輸出正文內容以後發送 header implicit_flush = Off #告訴輸出層在每一個輸出塊以後自動刷新自身數據 disable_functions = #關閉特定函數 display_errors = Off #顯示錯誤信息 log_errors = On #在日誌文件裏記錄錯誤 request_order = "GP" #GET POST register_argc_argv = On #是否聲明 argv和argc 變量 post_max_size = 8M #最大POST大小 file_uploads = On #是否容許HTTP方式文件上載 upload_tmp_dir = #用於HTTP上載的文件的臨時目錄 upload_max_filesize = 2M #上載文件的最大大小 max_file_uploads = 20 #每次最大上傳文件個數 allow_url_fopen = On #是否容許把URLs看成http:.. 或把文件看成ftp:... default_socket_timeout = 60 #默認socker超時時間 #MySQL相關 mysql.allow_persistent = On #容許持久鏈接 mysql.cache_size = 2000 #緩存大小 mysql.max_persistent = -1 #持久鏈接的最大數目 -1不限制 mysql.max_links = -1 #最大連接 mysql.connect_timeout = 60 #鏈接超時時間 #session相關 session.save_handler = files #用於保存/取回數據的控制方式 session.use_cookies = 1 #是否使用cookies session.name = PHPSESSID #設置cookies名 session.use_only_cookies = 1 #強制SESSION ID必須以COOKIE傳遞 session.auto_start = 0 #在請求啓動時初始化session session.cookie_lifetime = 0 #cookies保持時間 #session垃圾回收參數 session.gc_probability = 1 #按百分比整理 session.gc_divisor = 1000 #每次請求時有1/1000的機會啓動"垃圾回收"進程 #Session ID傳遞參數 session.use_trans_sid = 0 #使用URL的方式傳遞session id session.hash_function = 0 #生成SID MD5算法 session.hash_bits_per_character = 5 #指定在SID字符串中的每一個字符內保存多少bit #經常使用配置參數 max_execution_time 30 #一個腳本可以使用多少 CPU 秒 max_input_time 60 #一個腳本等待輸入數據的時間有多長(秒) memory_limit 32M #在被取消以前,一個腳本可以使用多少內存(字節) output_buffering 4096 #數據發送給客戶機以前,有多少數據(字節)須要緩存

 

apache配置:

apache主配置文件/opt/apache/conf/httpd.conf:

#apache服務根目錄 ServerRoot "/opt/apache" #服務管理員 ServerAdmin you@example.com #監聽端口 Listen 80 #默認首頁 DirectoryIndex index.php #加載php模塊 LoadModule php5_module modules/libphp5.so #解析php AddType application/x-httpd-php .php

 

#目錄權限參數 DocumentRoot "/opt/apache/htdocs" #WEB文件根目錄 <Directory "/opt/apache/htdocs"> # 官方文檔連接 http://httpd.apache.org/docs/2.2/mod/core.html Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all #容許全部請求 </Directory>

 

AllowOverride參數詳解:

  1. none 不容許.htaccess使用任何指令。
  2. AuthConfig 容許使用全部的權限指令,包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require。
  3. FileInfo 容許使用文件控制類型的指令。包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority。
  4. Indexes 容許使用目錄控制類型的指令。包括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName。
  5. Limit 容許使用權限控制指令。包括Allow Deny和Order。
  6. Options 容許使用控制目錄特徵的指令,包括Options 和XBitHack。

Options參數詳解:

  1. All 表示除MultiViews以外的全部特性。這也是Options指令的默認設置。
  2. None 表示不啓用任何的服務器特性。
  3. FollowSymLinks 服務器容許在此目錄中使用符號鏈接。若是該配置選項位於配置段中,將會被忽略。
  4. Indexes 若是輸入的網址對應服務器上的一個文件目錄,而此目錄中又沒有DirectoryIndex指令
  5. MultiViews 容許使用mod_negotiation模塊提供內容協商的」多重視圖」。若是客戶端請求的路徑可能對應多種類型的文件,那麼服務器將根據客戶端請求的具體狀況自動選擇一個最匹配客戶端要求的文件。
  6. SymLinksIfOwnerMatch 服務器僅在符號鏈接與目標文件或目錄的全部者具備相同的用戶ID時才使用它。只有當符號鏈接和符號鏈接指向的目標文件或目錄的全部者是同一用戶時,纔會使用符號鏈接。
  7. ExecCGI 容許使用mod_cgi模塊執行CGI腳本。
  8. Includes 容許使用mod_include模塊提供的服務器端包含功能
  9. IncludesNOEXEC 容許服務器端包含,但禁用」#exec cmd」和」#exec cgi」。但仍能夠從ScriptAlias目錄使用」#include virtual」虛擬CGI腳本。
#日誌配置參數 ErrorLog "logs/error_log" LogLevel warn #錯誤日誌記錄等級 <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定義日誌 名爲common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" common #日誌路徑 使用名爲common的自定義格式 </IfModule>

 

LogLevel記錄日誌等級:

  1. error 錯誤狀況。
  2. warn 警告狀況。
  3. info 普通訊息。
  4. debug 出錯級別信息。

日誌格式: 
1. %h - 客戶端的ip地址或主機名。 
2. %l - The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 「-」 表示此處信息無效。 
3. %u - 由HTTP認證系統獲得的訪問該網頁的客戶名。有認證時纔有效,輸出中的符號 「-」 表示此處信息無效。 
4. %t - 服務器完成對請求的處理時的時間。 
5. 「%r」 - 引號中是客戶發出的包含了許多有用信息的請求內容。 
6. %>s - 這個是服務器返回給客戶端的狀態碼。 
7. %b - 最後這項是返回給客戶端的不包括響應頭的字節數。 
8. 「%{Referer}i」 - 此項指明瞭該請求是從被哪一個網頁提交過來的。 
9. 「%{User-Agent}i」 - 此項是客戶瀏覽器提供的瀏覽器識別信息。

#實際訪問日誌 192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25

 

#基於域名的虛擬主機 <VirtualHost *:80> DocumentRoot /web1 ServerName web1.com ErrorLog /app/apache/logs/error_log CustomLog /app/apache/logs/access_log combined </VirtualHost> <VirtualHost *:80> DocumentRoot /web2 ServerName web2.com </VirtualHost> #基於IP的虛擬主機 <VirtualHost 210.20.30.40> DocumentRoot /web1 ServerName web1.com </VirtualHost> <VirtualHost 210.20.30.50> DocumentRoot web2 ServerName web2.com
相關文章
相關標籤/搜索