centos下配置LNMP環境(源碼安裝)

來源:互聯網
上載者:User

準備工作,安裝依賴庫

//檢查並安裝組件yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libmcrypt libmcrypt-devel cmake

幾點說明:
pcre、openssl、zlib是安裝nginx時需要的
cmake是安裝mysql時需要的

一、查看linux版

[root@centos src]# cat /etc/issueCentOS release 6.7 (Final)Kernel \r on an \

二、編譯安裝nginx

1、下載nginx(stable版本)

wget -P /tmp http://nginx.org/download/nginx-1.8.1.tar.gz

-P指定下載檔案目錄
或者

[root@centos /]# cd /usr/local/src[root@centos src]# wget http://nginx.org/download/nginx-1.8.1.tar.gz

預設下載到目前的目錄下

2、解壓nginx

[root@centos src]# tar xf nginx-1.8.1.tar.gz [root@centos src]# cd nginx-1.8.1[root@centos nginx-1.8.1]# ./configure --help(查看參數)

3、編譯nginx
如果指定使用者和使用者組,需要先建立

//建立使用者www和使用者組wwwgroupadd wwwuseradd -g www www
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module
    make && make install    //啟動nginx    **第一種方式 指定--sbin-path=/usr/sbin/nginx**    nginx //啟動    nginx -s stop// 停止    nginx -s reload // 重新載入    **第二種方式 不指定--sbin-path**    cd /usr/local/nginx    ./sbin/nginx    重啟nginx  /usr/local/nginx/sbin/nginx -s reload    **第三種方式**     配置開機啟動    首先寫一個shell指令碼,指令碼名稱:nginx    vi /etc/rc.d/init.d/nginx    #! /bin/bash    # chkconfig: 35 85 15      # description: Nginx is an HTTP(S) server, HTTP(S) reverse    set -e    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin    DESC="nginx daemon"    NAME=nginx    DAEMON=/usr/local/nginx/sbin/$NAME (這裡是nginx安裝是 --sbin-path指定的路徑)    SCRIPTNAME=/etc/init.d/$NAME    test -x $DAEMON || exit 0    d_start(){        $DAEMON || echo -n " already running"    }    d_stop() {        $DAEMON -s quit || echo -n " not running"    }    d_reload() {        $DAEMON -s reload || echo -n " counld not reload"    }    case "$1" in    start)        echo -n "Starting $DESC:$NAME"        d_start        echo "."    ;;    stop)        echo -n "Stopping $DESC:$NAME"        d_stop        echo "."    ;;    reload)        echo -n "Reloading $DESC configuration..."        d_reload        echo "reloaded."    ;;    restart)        echo -n "Restarting $DESC: $NAME"        d_stop        sleep 2        d_start        echo "."    ;;    *)        echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2        exit 3    ;;    esac    exit 0    //將shell指令碼放入到 /etc/rc.d/init.d/中,並執行下列命令    chmod +x /etc/rc.d/init.d/nginx (設定可執行許可權)    chkconfig --add nginx (添加系統服務)    service nginx start    service nginx stop    service nginx restart    service nginx reload    瀏覽器訪問:http://localhost如能出現nginx頁面則表示成功    // 查看nginx進程    ps -ef | grep nginx    // 查看進程個數 去掉首位的    ps -ef | grep nginx | wc -l    // 查看80連接埠    netstat -anpt

4、安裝PHP
//php下載

cd /usr/local/src///如果下載檔案的檔案是mirror,直接解壓mirror即可wget http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirrortar zxvf php-5.6.13.tar.gzcd php-5.6.13./configure --prefix=/usr/local/php --with-curl --with-bz2 --with-zlib --with-mhash --with-pcre-regex --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-openssl --with-pdo-mysql --with-libxml-dir --with-freetype-dir --with-iconv --enable-opcache --enable-bcmath  --enable-ftp --enable-shmop --enable-fpm --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-calendar --enable-zip --enable-mbstring --enable-pdomake (重新編譯需要 make clean清除)make install// 配置php-fpm    cd /usr/local/php/etc    cp php-fpm-default.conf php-fpm.conf    //建立使用者www和使用者組www    groupadd www    useradd -g www www    //修改php-fpm.conf    vi php-fpm.conf    //將user = nobody group = nobody 修改為 user = www group = www    //將;pid = run/php-fpm.pid 前面的分號刪掉    //建立php.ini    cp /usr/local/src/php-5.6.13/php.ini-production /usr/local/php/lib/php.ini//設定php-fpm開機啟動    //拷貝php-fpm指令碼至/etc/init.d目錄    cp /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm    //設定許可權並啟動php-fpm:    chmod 755 /etc/init.d/php-fpm    /etc/init.d/php-fpm start    chkconfig --add php-fpm    //最後,給出php-fpm以服務的方式啟動、停止和重啟:    service php-fpm start    service php-fpm stop    service php-fpm reload

5、配置支援php

    cd /usr/local/nginx/conf    vi  nginx.conf    user   www  www;  #修改nginx運行帳號為:www組的www使用者    index  index.php index.html index.htm;   #增加index.php     location ~ \.php$ {        root           html;        fastcgi_pass   127.0.0.1:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;        include        fastcgi_params;  }     #取消FastCGI server部分location的注釋,並要注意fastcgi_param行的參數,改為$document_root$fastcgi_script_name,或者使用絕對路徑    //驗證nginx配置文法     cd /usr/local/nginx    ./sbin/nginx -t    //測試    cd/usr/local/nginx/html    vim index.php     //內容如下     <?php phpinfo(); ?>    //如果能顯示出php的環境資訊,則表示配置成功

6、虛擬機器主機設定
這裡使用多個.conf的方法配置
這裡測試的時候把項目放在www目錄下,對應的網域名稱為onethinkcms.com
下載後的項目放入到/www/onethinkcms下
開啟 /usr/local/nginx/conf/nginx.conf
在最後加入如下一行

# 包含所有的虛擬機器主機的設定檔 在conf目錄下建立vhosts目錄 添加相應的.conf設定檔include vhosts/*.conf;

在/usr/local/nginx/conf下建立目錄

mkdir vhostscd vhostsvim onethinkcms.conf// 加入如下配置server {        listen  80;        server_name  onethinkcms.com  www.onethinkcms.com;        access_log  /www/onethinkcms.log;         location / {             root   /www/onethinkcms;             index  index.php index.html index.htm;        }      #  error_page   500 502 503 504  /50x.html;      #  location = /50x.html  {      #      root   /usr/share/nginx/html;      # }             # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000        location ~ .php$ {    # 這裡的值對應的是$document_root             root /www/onethinkcms;            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            #注意這裡的路徑            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            include        fastcgi_params;        }}

配置hosts檔案
vi /etc/hosts 添加 127.0.0.1 onethinkcms.com
重啟nginx
訪問 onethinkcms.com即可

7、安裝MYSQL

①下載 MySQL
mysql官網->Downloads->Community->MySQL Community Server->下拉框裡選擇Source Code

cd /usr/local/src wget
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz

②安裝編譯源碼所需的工具和庫
如果缺少cmake庫

yum install cmake(可以從http://www.cmake.org下載源碼並編譯安裝) (安裝包安裝cmake)
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
./bootstrap make make
install

③設定MySQL使用者和組

新增mysql使用者組 groupadd mysql
新增mysql使用者 useradd -r -g mysql mysql

④ 建立MySQL所需要的目錄

建立mysql安裝目錄 mkdir -p /usr/local/mysql
建立mysql資料庫資料檔案目錄 mkdir -p /data/mysqldb

⑤ MySQL源碼包解壓

cd /usr/local/src
tar zxvf mysql-5.6.27.tar.gz
cd cd mysql-5.6.27

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysqldb -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1
(註:重新回合組態,需要刪除CMakeCache.txt檔案 rm CMakeCache.txt ) make make install

⑥ 修改mysql目錄所有者和組

修改mysql安裝目錄 cd /usr/local/mysql chown -R mysql:mysql .
修改mysql資料庫檔案目錄 cd /data/mysqldb chown -R mysql:mysql .(注意後面的.指的是目前的目錄)

⑦ 初始化mysql資料庫

cd /usr/local/mysql
./scripts/mysql_install_db –user=mysql –datadir=/data/mysqldb

⑧ 複製mysql服務啟動設定檔

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
(註:如果/etc/my.cnf檔案存在,則覆蓋。)

⑨ 複製mysql服務啟動指令碼及加入PATH路徑

cp support-files/mysql.server /etc/init.d/mysqld

⑩ 啟動mysql服務並加入開機自啟動

service mysqld start
chkconfig –level 35 mysqld on

⑪ 檢查mysql服務是否啟動

netstat -tulnp | grep 3306
需要把mysql加入環境變數 vim /etc/profile
在最後加入如下命令
MYSQL_HOME=/usr/local/mysql
PATH=$MYSQL_HOME/bin:$PATH
export PATH MYSQL_HOME
source /etc/profile
mysql -u root -p (密碼為空白,如果能登陸上,則安裝成功)

⑫ 修改MySQL使用者root的密碼

方法一:mysql -u root -p
use mysql
update user set password=password(‘123456’) where user=’root’
flush privileges(重新整理許可權)
方法二:/usr/local/mysql/bin/mysql_secure_installation
(修改MySQL使用者root的密碼,同時可禁止root遠端連線,移除test資料庫和匿名使用者。)

⑬ 可能會出現的錯誤
錯誤一:Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
解決:修改/etc/my.cnf 中datadir,指向正確的mysql資料庫檔案目錄

錯誤二:ERROR 2002 (HY000): Cannot connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
解決:建立一個連結或在mysql中加入-S參數,直接指出mysql.sock位置。ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock

錯誤三:-bash:mysql:command not found (也可以直接添加環境變數)
解決:因為mysql命令的路徑在/usr/local/mysql/bin下面,所以你直接使用mysql命令時,系統在/usr/bin下面查此命令,所以找不到了
ln -s /usr/local/mysql/bin/mysql /usr/bin 做個連結即可

安裝配置過程中遇到的問題匯總
1、出現pdo串連錯誤 SQLSTATE[HY000] [2002] No such file or directory Caused by: PDOException

    vi /usr/local/php/lib/php.ini     mysql.default_socket = /usr/local/mysql/mysql.sock    pdo_mysql.default_socket= /usr/local/mysql/mysql.sock    mysqli.default_socket = /usr/local/mysql/mysql.sock

重啟php-fpm service php-fpm restart

2、連接埠及防火牆問題
配置防火牆,開啟80連接埠、3306連接埠
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允許80連接埠通過防火牆)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306連接埠通過防火牆)
特別提示:很多網友把這兩條規則添加到防火牆配置的最後一行,導致防火牆啟動失敗,正確的應該是添加到預設的22連接埠這條規則的下面
添加好之後防火牆規則如下所示:

*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT/etc/init.d/iptables restart  #最後重啟防火牆使配置生效

查看防火牆狀態
/etc/init.d/iptables status
關閉SELINUX

       vi /etc/selinux/config       #SELINUX=enforcing       #注釋掉       #SELINUXTYPE=targeted    #注釋掉       SELINUX=disabled         #增加       :wq  儲存,關閉       shutdown -r now   #重啟系統

PHP命令找不到問題

①可以通過yum install php-cli安裝(php-cli的版本較低)
yum remove php-cli

② bash: php: command not found
解決:
export PATH=$PATH:/usr/local/php/bin
然後,再 echo $PATH 看看,就看見了。
usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin
這時候,你可以在系統的任意目錄直接敲入php -i 都可以執行

安裝php擴充
① 在php源碼包裡找到相應的擴充
cd /usr/local/src/php-5.6.13/ext/pdo

② 在該目錄下執行
/usr/local/php/bin/phpize

③ 執行
./configure –with-php-config=/usr/local/php/bin/php-config
make & make install

④ 開啟php.ini檔案
cd /usr/local/php/lib/
加入 extension=pdo.so

⑤ 重啟php-fpm
service php-fpm restart

如果遇到缺少`mysql_driver.lo’ is not a valid libtool object這類問題
清除已編譯的檔案 make clean 或者刪除php安裝包,重新解壓新的

下載連結
//nginx下載
wget http://nginx.org/download/nginx-1.8.0.tar.gz
//openssl下載
wget http://www.openssl.org/source/openssl-1.0.2d.tar.gz
//pcre下載
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
//php下載
wget http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirror(如果下載檔案的檔案是mirror,直接解壓mirror即可)
//libmcrypt下載
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
// mysql下載
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz

安裝libmcrypt擴充

    cd /usr/local/src    tar zxvf libmcrypt-2.5.7.tar.gz    cd libmcrypt-2.5.7    ./configure --prefix=/usr/local/libmcrypt    make && make install    vi /etc/ld.so.conf.d/local.conf    添加 “/usr/local/libmcrypt/lib”    ldconfig -v

附:本人親測,可行。參考的小夥伴一步步來

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.