中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LAMP純源碼編譯安裝日志

發布時間:2020-08-05 12:44:13 來源:網絡 閱讀:862 作者:趙雁生 欄目:數據庫


一.LAMP構架的安裝與經驗技巧(源碼安裝好處。是便于管理,可以選定參數,可以使用新版本)

相關軟件列表:

# ls /soft/ | grep -E "*.gz|*.zip|*.xz|*.bz2"
    apr-1.4.5.tar.gz
    apr-util-1.3.12.tar.gz
    autoconf-2.61.tar.gz
    freetype-2.3.12.tar.gz
    httpd-2.4.18.tar.bz2
    jpegsrc.v6b.tar.gz
    libgd-2.1.1.tar.xz
    libmcrypt-2.5.8.tar.gz
    libpng-1.4.1.tar.gz
    libxml2-2.7.6.tar.gz
    mysql-5.6.17.tar.gz
    pcre-8.10.zip
    php-5.6.18.tar.gz
    zlib-1.2.5.tar.gz

參考解壓方式:  for n in *.tar.gz; do tar zxf $n;done;

其余用:              tar xf filename

  1. apache 的安裝與使用經驗
            動態編譯與靜態編譯(每次啟動服務的時候都加載)
        (apache的擴展插件是通過模塊機制擴展的。apache支持PHP是通過編譯模塊然后加載模塊實現的。)
    (1) apache 需要的相關庫文件 apr  apr-util  pcre(支持rewrite功能)
        cd apr-1.4.5
        ./configure --prefix=/usr/local/apr
        make && make instal
        cd apr-util-1.3.12
        ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
        make && make install
        cd pcre-8.10
        ./configure --prefix=/usr/local/pcre
        make&&make install
    下面是功能模塊(使apache支持功能起到壯大apache的作用)
    (2) 安裝libxml2
        cd libxml2-2.7.6
        ./configure --prefix=/usr/local/libxml2
        make && make install
    (3)安裝libmcrypt
        cd libmcrypt-2.5.8
        ./configure --prefix=/usr/local/libmcrypt
        make && make install
    (4)安裝zlib
        cd zlib-1.2.5
        ./configure
        make && make install
    (5)安裝 libpng
         cd libpng-1.4.1
         ./configure --prefix=/usr/local/libpng
         make && make install
    (6)安裝jpeg6
        此安裝包無法自動創建目錄需要手動添加
        mkdir /usr/local/jpeg6
        mkdir -p /usr/local/jpeg6/{lib,bin,include}
        mkdir -p /usr/local/jpeg6/man/man1
        cd jpeg-6b
         ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
         make && make install
     錯誤checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
     或者出現make: ./libtool: Command not found
        一般原因是 所以來的libtool 庫文件版本低或缺失。
        解決方法:安裝高版本的libtool 然后拷貝2個文件
        cp /usr/share/libtool/config/config.sub .
        cp /usr/share/libtool/config/config.guess .
        繼續 make && make install
    (7)安裝freetype
         cd freetype-2.3.12
         ./configure --prefix=/usr/local/freetype
         make && make install
    (8)安裝autoconf
        cd autoconf-2.61
        ./configure
        make && make install
    (9)安裝GD庫
        cd libgd-2.1.1
        ./configure \
        --prefix=/usr/local/gd2/ \
        --enable-m4_pattern_allow \
        --with-zlib=/usr/local/zlib/ \
        --with-jpeg=/usr/local/jpeg6/ \
        --with-png=/usr/local/libpng/ \
        --with-freetype=/usr/local/freetype/
        make && make install
    主題(一)apache源碼編譯安裝
        cd httpd-2.4.18
     ./configure --prefix=/usr/local/apache2 \
    --enable-mods-shared=all \
    --enable-so \
    --enable-proxy-ajp \
    --enable-rewrite \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util \
    --with-pcre=/usr/local/pcre
        make && make install
        # /usr/local/apache2/bin/apachectl start
        # curl 127.0.0.1
        <html><body><h2>It works!</h2></body></html>
    apache下的的主要目錄;
    bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
        (1)bin 是一些命令的存放位置。如httpd 提供apache服務管理如啟動關閉。
        使用:./bin/httpd -k {start |restart|stop}
        apxs是編譯模塊相關的命令(PHP模塊)
        apachectl是調用httpd服務的腳本。
        例如查看靜態編譯的模塊
        # ./bin/apachectl -l
        Compiled in modules:
          core.c
          mod_so.c
          http_core.c
          worker.c
        # ./bin/httpd -l  (進一步證實http和apachectl關系)
            Compiled in modules:
              core.c
              mod_so.c
              http_core.c
              worker.c)
        (2) htdocs 這個目錄是存放程序員編寫的程序的目錄
        (3) modules 放置apache編譯模塊的目錄。 .so(模塊的后綴名)
        (4) logs 日志文件目錄 包含 pid 文件(包含apache父進程)
        *****ps -ef | grep httpd****
        查看子進程如果出現不連續可能是apache出現問題。出現重新啟動。
        (5)conf 包含apache的所有配置文件
        (6)cgi-bin 提供一些在線表格的功能。如果不需要需要把這個目錄下文件清空(減小安全隱患)

    apache 解析PHP語句http.conf里面的主要參數
        DirectoryIndex index.html index.php
        LoadModule php5_module        modules/libphp5.so
        AddType application/x-httpd-php .php

  2. 主題(二)mysql源碼編譯安裝
        cd mysql-5.6.17
    cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DSYSCONFDIR=/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci

        Mysql編譯安裝屬性值解析
        #cmake \
        -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
        #指定安裝路徑
        -DMYSQL_DATADIR=/usr/local/mysql/data \
        #指定mysql數據(庫)文件的存放路徑
        -DSYSCONFDIR=/etc \
        #配置文件
        -DWITH_MYISAM_STORAGE_ENGINE=1 \
        #引擎支持myisam
        -DWITH_INNOBASE_STORAGE_ENGINE=1 \
        #引擎支持 innodb
        -DWITH_MEMORY_STORAGE_ENGINE=1 \
        #引擎支持 memory-storage
        -DWITH_READLINE=1 \

        -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
        #指定mysql的sock文件路徑
        -DMYSQL_TCP_PORT=3306 \
        #指定mysql端口號
        -DENABLED_LOCAL_INFILE=1 \
        -DWITH_PARTITION_STORAGE_ENGINE=1 \
        -DEXTRA_CHARSETS=all \
        -DDEFAULT_CHARSET=utf8 \
        -DDEFAULT_COLLATION=utf8_general_ci
        #指定字符集
        錯誤:
        CMake Error at cmake/readline.cmake:85 (MESSAGE):
          Curses library not found.  Please install appropriate package,
         remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev,
          on Redhat and derivates it is ncurses-devel.
        解決辦法: yum install ncurses-devel -y
                \mv  \mv CMakeCache.txt /tmp
            然后重新 cmake(上面的指令如果沒有錯誤提示)
            make && make install
        查看是否有mysql用戶和組沒有創建。
             useradd  mysql -s /sbin/nologin -M
        修改mysql權限:
            chown -R mysql.mysql /usr/local/mysql
        進入mysql安裝目錄下,執行初始化配置腳本,創建系統自帶的數據庫和表
        # ./scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
        啟動mysql服務:# ./support-files/mysql.server start
     錯誤提示:
        Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/mysql/data/swallow.pid)
     可能出現的原因和解決方法:
        (1).如果是初次安裝。可能是初始化沒有成功。在執行初始化命令的時候。提示里面包含2個OK (代表成功。這種情況重新初始化
        (2)可能原來系統安裝過mysql 。可以用ps -ef | grep msyql 查看。然后結束進程:pkill mysql
        (3)data 目錄權限可能不對。 chmod  755 data
        (4)查看屬主或屬組 一般 在 創建mysql用戶 的后面就會 chown -R mysql:mysql /usr/local/mysql (這個可能性不大)
        啟動mysql程序:
            ./bin/mysql
        可以產看mysql狀態:
        mysql> status
        --------------
        ./bin/mysql  Ver 14.14 Distrib 5.6.17, for Linux (x86_64) using  EditLine wrapper

        Connection id:          1
        Current database:
        Current user:           root@localhost
        SSL:                    Not in use
        Current pager:          stdout
        Using outfile:          ''
        Using delimiter:        ;
        Server version:         5.6.17 Source distribution
        Protocol version:       10
        Connection:             Localhost via UNIX socket
        Server characterset:    utf8
        Db     characterset:    utf8
        Client characterset:    utf8
        Conn.  characterset:    utf8
        UNIX socket:            /var/lib/mysql/mysql.sock
        Uptime:                 7 min 7 sec
        Threads: 1  Questions: 5  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.011
        --------------
    主題(三) PHP源碼編譯安裝
        cd php-5.6.18
    ./configure \
    --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --with-mysql=/usr/local/mysql/ \
    --with-libxml-dir=/usr/local/libxml2/ \
    --with-png-dir=/usr/local/libpng/ \
    --with-jpeg-dir=/usr/local/jpeg6/ \
    --with-freetype-dir=/usr/local/freetype/ \
    --with-gd=/usr/local/gd2/ \
    --with-zlib-dir=/usr/local/zlib/ \
    --with-mcrypt=/usr/local/libmcrypt/ \
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    --with-xpm-dir=/usr/lib64/ \
    --enable-soap  \
    --enable-mbstring=all \
    --enable-sockets
        參數詳解;
            ./configure \
            --prefix=/usr/local/php \
            #安裝路徑
            --with-config-file-path=/usr/local/php/etc \
            #PHP的配置文件路徑
            --with-apxs2=/usr/local/apache2/bin/apxs \
            #與apache連接需要的支持模塊(工具)
                    --with-mysql=/usr/local/mysql/ \
                    --with-libxml-dir=/usr/local/libxml2/ \
                    --with-png-dir=/usr/local/libpng/ \
                    --with-jpeg-dir=/usr/local/jpeg6/ \
                    --with-freetype-dir=/usr/local/freetype/ \
                    --with-gd=/usr/local/gd2/ \
                    --with-zlib-dir=/usr/local/zlib/ \
                    --with-mcrypt=/usr/local/libmcrypt/ \
                    # PHP需要的所有前面安裝的連接模塊
            --with-mysqli=/usr/local/mysql/bin/mysql_config \
            #指定PHP程序去連接mysql的方式
            #PHP5.3。3以后開發了mysqlnd。是PHP新的連接mysql的驅動配置方式:
                --with-mysql=mysqlnd \
                --with-mysqli=mysqlnd \
                --with-pdo-mysql=mysqlnd \
            如果想把這3種都加載可以把
            --with-mysqli=/usr/local/mysql/bin/mysql_config \
            這句換成上面3句。
            #這里需要注意的是;mysql的連接mysql方式有3種。分別是:mysql,mysqli和pdo
            #這里需要關注2個;mysqli 和pdo。(他們是主流的支持高版本的)
            --with-xpm-dir=/usr/lib64/ \
            --enable-soap  \
            --enable-mbstring=all \
            --enable-sockets
        錯誤:configure: error: xpm.h not found.
        解決方法:yum install libXpm-devel -y
        make && make install
     PHP動態加載模塊的方法:如果在靜態編譯的時候那個模塊沒有編譯進去可以動態加載。
        舉例:查看源碼下的模塊目錄;
            cd /soft/php-5.6.18/ext/
            下面的模塊都可以通過動態加載,編譯進去。以ftp 為例;
            cd ftp
            /usr/local/php/bin/phpize (借助這個命令生成所需的configure 等一系列的安裝文件)
            ./configure --with-php-config=/usr/local/php/bin/php-config
            make && make install
            至此,就把ftp這個模塊編譯安裝完成了。然后,需要去加載文件(修改php.ini)
            cd /usr/local/php/etc/
            vim php.ini (初次安裝沒有這個文件可以去/soft/php-5.6.18/源碼目錄去拷貝
            php.ini-development php.ini-production 一般這兩個文件運維常用第二個)
            查找到 extension 相關的注釋地方
            添加一下兩句:(模塊在PHP程序下的位置{一般編譯動態模塊后會提示的}和模塊的名稱)
            extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
            extension = ftp.so
            如果要加載模塊需要重新啟動apache服務器
             /usr/local/apache2/bin/httpd -k restart
            查看PHP模塊加載成功與否;可以用php 命令顯示看是否有添加
            /usr/local/php/bin/php -m
        測試lamp是否搭建成功:
        在apach3的htdocs目錄下新建.php文件
         vim ./htdocs/info.php
         <?php
         phpinfo();
         ?>
         瀏覽器測試:http://192.168.1.140/info.php
    結果顯示空白。
         解決思路:查看 /usr/local/apache2/modules/ 是否含有 libphp5.so這個模塊。
         (這個模塊是apache負責PHP解析的)
         修改配置文件:http.conf
            ServerName loacalhost:80
        (仿照這行添加AddType application/x-gzip .gz .tgz)
         AddType application/x-httpd-php .php
        加載pdo-mysql 的錯誤:make 錯誤
        /soft/php-5.6.18/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: error: ext/mysqlnd/mysqlnd.h: No such file or directory
        解決方法:cp -a /soft/php-5.6.18/ext/pdo_mysql /usr/local/php/include/php/ext/
        這里的思路是 :make 是在安裝目錄下操作。不是在源碼目錄操作。需要把依賴的文件放置到安裝路徑下。方便應用。
        但是:遺憾的是安裝完成后,不可以加載。用常規方法:
            extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
            extension = pdo_mysql.so
        重新啟動了好多httpd 也沒加載成功。用 bin/php -m 一直沒有查看到。我可以確定修改php.ini文件生效,把那個ftp模塊注釋掉后
        就看不到那個模塊出現。所以,只好重新編譯的。
        將編譯的--with-mysqli=/usr/local/mysql/bin/mysql_config \ 語句換成了:
                --with-mysql=mysqlnd \
                --with-mysqli=mysqlnd \
                --with-pdo-mysql=mysqlnd \
        這幾句。支持3種方式連接mysql。這里mysqlnd是PHP5.3以上的默認連接mysql的引擎
        PHP不在支持擴展mysql(mysqli) 編譯的時候可以是:--with-pdo-mysql=mysqlnd \
        附上PHP連接的3個腳本
        cat mysqli.php mysql-pdo.php mysql.php
            <?php
            $conn = mysqli_connect('localhost', 'root', '', 'mysql');
            if(!$conn){
            die("數據庫連接錯誤" . mysqli_connect_error());
            }else{
            echo"數據庫連接成功";
            }
            ?>
            <?php
            try{
            $pdo=new pdo("mysql:host=127.0.0.1;dbname=mysql","root","");
            }catch(PDDException $e){
            echo "數據庫連接錯誤";
            }
            echo "恭喜!數據庫連接成功";
            ?>
            <?php
            $conn = @ mysql_connect("localhost", "root", "") or die("數據庫連接錯誤");
            mysql_select_db("bbs", $conn);
            mysql_query("set names 'utf8'");
            echo "數據庫連接成功";
            ?>
    查看 phpinfo() 信息來查看PHP 詳細情況。
        上傳文件關注如下幾個參數:
        post_max_size = 128M
        upload_max_filesize = 128M
        #這兩個設置一樣即可,可以更大但要注意超時
        max_execution_time = 30
        max_input_time = 600
        memory_limit = 32M


    my.cnf 的執行順序:
        1. /etc
        2."$basedir/my.cnf" (需要把/etc/my.cnf 更改)
    php.ini生效路徑問題
    PHP將按照如下順序依次查找該文件:
    1.當前工作目錄;
    2.環境變量PHPRC指明的路徑;
    3.編譯時指定的路徑。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂平市| 遂川县| 河南省| 团风县| 海阳市| 宣城市| 安陆市| 翁源县| 金华市| 宜君县| 襄樊市| 军事| 余江县| 嘉兴市| 铅山县| 克什克腾旗| 黄龙县| 如东县| 随州市| 汉阴县| 福海县| 金山区| 临沭县| 井研县| 洞口县| 荔浦县| 东丽区| 肥城市| 东山县| 巴林右旗| 颍上县| 保亭| 桃园市| 泸定县| 韶关市| 奉化市| 巴青县| 海林市| 青铜峡市| 普宁市| 新河县|