我選取了64位的CentOS 7這個Linux系統,安裝過程也很簡單,再也不過多敘述,只稍微介紹一下個人分區狀況:php
我選擇了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
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
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
成功則顯示:
最後三個文件能夠從這裏下載。
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
/opt/php/bin/php -m | grep mysql
若支持則顯示:
sudo sh -c 'cat >> /opt/apache/conf/httpd.conf <<EOF <IfModule mime_module> AddType application/x-httpd-php .php </IfModule> EOF'
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'
配置文件/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主配置文件/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參數詳解:
Options參數詳解:
#日誌配置參數 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. %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