Nginx+php+MySql(centos7安裝包安裝)

我的博客:https://blog.thuol.com

說明

親測原稿。以 /www/lnmp 目錄為例(實際目錄可自行更改)

安裝編譯器如果已經(jīng)有跳過

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

防火墻開啟

firewall-cmd --zone=public --add-port=80/tcp --permanent      #添加開啟端口,要開啟80;3306;9000;端口
systemctl restart firewalld.service                           #重啟防火墻
systemctl stop firewalld                                      #禁用防火墻(防火墻全部關(guān)閉)

源碼包下載

將軟件包下載到服務(wù)器自定義路徑(/www/software)

Nginx官網(wǎng) :http://nginx.org/
PHP官網(wǎng):http://www.php.net/
MySql官網(wǎng):https://www.mysql.com/

本教程使用軟件

nginx-1.11.6.tar.gz
php-5.6.28.tar.gz
mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
(最后面的版本號更改可直接下載)
http://nginx.org/download/nginx-1.13.9.tar.gz
https://www.php.net/distributions/php-7.1.15.tar.gz
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

安裝nginx

  1. 進(jìn)入安裝包目錄。解壓nginx-1.11.6.tar.gz安裝包
cd /www/software
sudo tar zxfv nginx-1.11.6.tar.gz
cd nginx-1.11.6/
sudo ./configure --prefix=/www/lnmp/nginx --with-http_ssl_module   將nginx安裝在/www/lnmp目錄下
sudo make
sudo make install

其他配置

./configure \
--prefix=/www/lnmp/nginx                   \
--sbin-path=/www/lnmp/nginx/sbin/nginx           \
--conf-path=/www/lnmp/nginx/conf/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/www/lnmp/nginx/log/error.log \
--http-log-path=/www/lnmp/nginx/log/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module
  1. 進(jìn)入nginx/sbin目錄啟動nginx
cd /www/lnmp/nginx/sbin
sudo ./nginx                 #注意防火墻端口是否開啟
sudo ./nginx -s reload            # 重新載入配置文件
sudo ./nginx -s reopen            # 重啟 Nginx
sudo ./nginx -s stop              # 停止 Nginx
  1. 訪問域名

安裝mysql

  1. 安裝相關(guān)依賴(如果已經(jīng)有跳過)
yum -y install cmake ncurses ncurses-devel bison bison-devel boost boost-devel
  1. 進(jìn)入安裝包目錄(刪掉有沖突的:mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm)
    將下載的mysql解壓,使用yum安裝,(省去很多依賴問題)
    官方文檔:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html
cd /www/software/mysql-5.7.16-1.el7.x86_64.rpm-bundle/
sudo yum install mysql-community-{server,client,common,libs}-* mysql-5.* 
rm -rf mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm         #刪掉沖突的重新執(zhí)行上一條命令

遇到依賴問題。可嘗試以下命令(只遇到過一次。其余安裝沒出現(xiàn)過這個問題的錯誤)

yum remove mysql-libs

啟動mysql

sudo service mysqld start                    #啟動myslq,記錄啟動后密碼
sudo service mysqld stop                      #停止
sudo service mysqld restart                   #重啟
sudo service mysqld status             #查看狀態(tài)
sudo grep 'temporary password' /var/log/mysqld.log      #如果啟動后忘記密碼可用此方法查看
  1. 進(jìn)入mysql并修改初始密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY '密碼';      #密碼大寫加小寫加數(shù)字

忘記密碼mysqld.log中密碼或者mysqld.log為空的解決辦法
1).修改配置文件my.cfg

vi /etc/my.cnf
#找到mysqld在之后添加
skip-grant-tables 
保存退出

2).重啟[MySQL]服務(wù)

service mysqld restart

3).直接登陸mysql而不需要密碼

mysql -uroot -p   #(直接點擊回車)

4).修改密碼

update mysql.user set authentication_string=password('密碼') where user='root'; 
exit;       #退出

5).修改配置文件my.cfg

vi /etc/my.cnf
#去掉剛才加的
skip-grant-tables 
保存退出
service mysqld restart    #重啟myslq
mysql -uroot -p            #輸入密碼登錄
  1. 創(chuàng)建其他用戶
CREATE USER '用戶名'@'%' IDENTIFIED BY '密碼';

添加訪問ip,%號代表所有IP都能訪問

GRANT GRANT OPTION ON *.* TO '賬號'@'%';

添加權(quán)限(所有權(quán)限)

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO '賬號'@'%';

安裝PHP

  1. 安裝相關(guān)依賴(如果已經(jīng)有跳過)
yum install libxml2
yum install libxml2-devel -y
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
yum -y install curl-devel
yum -y install libxslt-devel
  1. 進(jìn)入安裝包目錄。解壓php-5.6.28.tar.gz安裝包,
sudo tar zxfv php-5.6.28.tar.gz
cd php-5.6.28/

php安裝配置(按需要配置)

./configure \
--prefix=/www/lnmp/php \
--with-config-file-path=/www/lnmp/php/etc \
 --with-curl \
 --with-freetype-dir \
 --with-gd \
 --with-gettext \
 --with-iconv-dir \
 --with-kerberos \
 --with-libdir=lib64 \
 --with-libxml-dir \
 --with-mysqli \
 --with-openssl \
 --with-pcre-regex \
 --with-pdo-mysql \
 --with-pdo-sqlite \
 --with-pear \
 --with-png-dir \
 --with-xmlrpc \
 --with-xsl \
 --with-zlib \
--with-zlib-dir \
--with-mhash \
--with-openssl-dir \
--with-jpeg-dir \
--enable-gd-jis-conv \
 --enable-fpm \
 --enable-bcmath \
 --enable-libxml \
 --enable-inline-optimization \
 --enable-gd-native-ttf \
 --enable-mbregex \
 --enable-mbstring \
 --enable-opcache \
 --enable-pcntl \
 --enable-shmop \
 --enable-soap \
 --enable-sockets \
 --enable-sysvsem \
 --enable-xml \
 --enable-zip 

(如果配置錯誤,需要安裝相應(yīng)的模塊,直接yum一并安裝依賴庫)
編譯安裝

sudo make
sudo make install

復(fù)制php.ini

cp php.ini-production  /www/lnmp/php/etc/php.ini

配置php-fpm

cd /www/lnmp/php/etc
cp  php-fpm.conf.default  php-fpm.conf
vi php-fpm.conf

修改-開啟如下幾行,即去掉前面的分號(;)【php7.0+配置稍微不一樣】

    pid = run/php-fpm.pid
    error_log = log/php-fpm.log
    log_level = notice
    listen = 127.0.0.1:9000
    listen.allowed_clients = 127.0.0.1
    pm = dynamic
    pm.max_children = 50       #靜態(tài)方式下開啟的php-fpm進(jìn)程數(shù)量,根據(jù)機(jī)器內(nèi)存確定,基本上一個進(jìn)程需要30M,100個,就是3000M
    pm.start_servers = 5       #動態(tài)方式下的起始php-fpm進(jìn)程數(shù)量。
    pm.min_spare_servers = 5   #動態(tài)方式空閑狀態(tài)下的最小php-fpm進(jìn)程數(shù)量。
    pm.max_spare_servers = 35  #動態(tài)方式空閑狀態(tài)下的最大php-fpm進(jìn)程數(shù)量。
    pm.max_requests = 500      #每個子進(jìn)程重生之前服務(wù)的請求數(shù),如果設(shè)置為 '0' 則一直接受請求。
    env[HOSTNAME] = $HOSTNAME
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

php7.0+配置端口等信息在www.conf這個配置文件中

cd /www/lnmp/php/etc/php-fpm.d/
cp www.conf.default www.conf

wq保存退出
啟動php

/www/lnmp/php/sbin/php-fpm
netstat -antpl         //(如果看到9000端口,PHP-FPM配置成功)

關(guān)閉php-fpm

kill 進(jìn)程pid  或者kill -9 $(pidof php-fpm)
  1. nginx配置修改
cd /www/lnmp/nginx/conf
vi nginx.conf
#thinkphp 支持
server {
    listen  80;
    server_name  localhost;
    root   /www/wwwroot;
    index  index.html index.htm index.php;
    error_page  404 /404.html;
    location = /404.html {
        return 404 'Sorry, File not Found!';
    }

    location / {
        try_files $uri @rewrite;
    }
    location @rewrite {
        set $static 0;
        if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
            set $static 1;
        }
        if ($static = 0) {
            rewrite ^/(.*)$ /index.php?s=/$1;
        }
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ /Uploads/.*\.php$ {
        deny all;
    }

    location ~ \.php/ {
       if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
       fastcgi_pass 127.0.0.1:9000;
       include fastcgi_params;
       fastcgi_param SCRIPT_NAME     $1;
       fastcgi_param PATH_INFO       $2;
       fastcgi_param SCRIPT_FILENAME $document_root$1;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }
}

重啟nginx

/www/lnmp/nginx/sbin/nginx -s reload         #重新載入配置文件
/www/lnmp/nginx/sbin/nginx -s reopen         #重新啟動nginx

報以下錯時,解決辦法編譯nginx時 不要配置without-http_fastcgi_module

nginx: [emerg] unknown directive "fastcgi_pass" in

測試驗證

  1. 新建一個文本并改名為1.php
    粘貼以下內(nèi)容并放入項目目錄
<?php
/**
 **php信息 
 */
  phpinfo();
?>
  1. 訪問域名下的1.php


增加PHP擴(kuò)展,以ftp為例(其他擴(kuò)展大致相仿按需添加)

php擴(kuò)展官方地址http://pecl.php.net/

  1. 進(jìn)入要安裝的模塊目錄中,并調(diào)用已經(jīng)編譯好的php里面的phpize:
cd /www/software/php-5.6.28/ext/ftp       #進(jìn)入源代碼中要添加的擴(kuò)展目錄中
 /www/lnmp/php/bin/phpize                  #打開phpize
./configure --with-php-config=/www/lnmp/php/bin/php-config   
make
make install
  1. 編譯之后,自動把ftp.so放到了默認(rèn)的php擴(kuò)展目錄下我的為 /www/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226
/usr/local/php/bin/php-config --extension-dir    #查看默認(rèn)的php擴(kuò)展目錄
  1. 修改php.ini 默認(rèn)路徑為 extension_dir="/www/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226"
vi /www/lnmp/php/lib/php.ini

找到extension_dir修改為(約732行)

extension_dir="/www/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226"

在下面添加添加以下代碼(約924行)

extension = ftp.so
  1. 重啟php-fpm
kill -9 $(pidof php-fpm)
/www/lnmp/php/sbin/php-fpm
  1. 訪問域名下的1.php驗證


(填坑)

使用php mcrypt 前必須先安裝Libmcrypt
libmcrypt源碼安裝方法:

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure  –prefix=/usr/local
make
make install

運(yùn)行/www/lnmp/php/bin/phpize時出現(xiàn):

Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

簡單解決辦法

yum install m4
yum install autoconf
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容