CentOS7.3(1611) 安裝 nginx+php7.2+mysql5.7

-1. 準備工作

-1.1 selinux

# 查看
getenforce
# 臨時關閉
# 設置SELinux 成為permissive模式
# setenforce 1 設置SELinux 成為enforcing模式
setenforce 0
# 永久關閉
vi /etc/selinux/config

-1.2 firewalld

centos 7 默認開啟的是firewalld防火墻

#停止firewall
systemctl stop firewalld.service 
#禁止firewall開機啟動
systemctl disable firewalld.service 
#查看默認防火墻狀態(關閉后顯示notrunning,開啟后顯示running)
firewall-cmd --state 

0. yum 源配置(國內服務器)

//must update yum after os installed
yum update yum

//install wget
yum install -y wget

//備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
//CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
//CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
//CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

// 是上述設置生效
yum makecache

1. nginx

??添加nginx yum倉庫

vi /etc/yum.repos.d/nginx.repo
//輸入內容
[nginx]  
name=nginx repo  
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/  
gpgcheck=0  
enabled=1
// 查看可安裝的nginx版本
yum list | grep nginx
查看nginx版本
#安裝nginx
yum install -y nginx

#啟動
service nginx start
#停止
service nginx stop
#重啟
service nginx restart
# Nginx配置文件位置
/etc/nginx/nginx.conf  

# 添加開機啟動
chkconfig nginx on

??nginx到此安裝完成,在瀏覽器輸入服務器IP可以訪問到nginx的頁面,如果無法訪問,請檢查防火墻配置和nginx進程是否啟動。

2. php、php-fpm

2.1 編譯源碼安裝

2.1.1 下載源碼

// local src 目錄存放需要源碼文件
cd /usr/local/src/
// 下載最新版php 7.2
wget http://php.net/distributions/php-7.2.0.tar.gz
tar -xvf php-7.2.0.tar.gz

2.1.2 安裝依賴

# configure需要gcc編譯
yum install -y gcc \
    zlib  zlib-devel \
    openssl openssl-devel \
    perl perl-devel

mcrypt:

wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar zxf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make && make install

curl:

//先卸載
yum remove curl curl-devel
//https://curl.haxx.se/download/
wget https://curl.haxx.se/download/curl-7.56.0.tar.gz
tar -zxvf curl-7.56.0.tar.gz
cd curl-7.56.0
./configure --prefix=/usr/local/curl --with-ssl --with-zlib
make && make install

//建議安裝兩次
./configure --prefix=/usr/local
make clean 
make && make install

必備的依賴包安裝:

yum -y install \
    gd-devel \
    libjpeg \
    libjpeg-devel \
    libpng \
    libpng-devel \
    libiconv-devel \
    freetype \
    freetype-devel \
    libmcrypt \
    libmcrypt-devel \
    libxml2 \
    libxml2-devel \
    libxslt-devel \
    mhash 

2.1.3 編譯php

cd php-7.2.0
//
./configure --prefix=/usr/local/php7 \
    --with-config-file-path=/usr/local/php7/etc \
    --with-curl=/usr/local/curl \
    --disable-ipv6 \
    --with-pdo-mysql \
    --with-openssl \
    --with-openssl-dir \
    --with-pcre-regex \
    --with-kerberos \
    --with-libdir=lib \
    --with-libxml-dir \
    --with-mysqli=shared,mysqlnd \
    --with-pdo-mysql=shared,mysqlnd \
    --with-pdo-sqlite \
    --with-gd \
    --with-iconv \
    --with-zlib \
    --with-xmlrpc \
    --with-xsl \
    --with-pear \
    --with-gettext \
    --with-png-dir \
    --with-jpeg-dir \
    --with-freetype-dir \
    --with-mcrypt \
    --with-mhash \
    --enable-json \
    --enable-mbstring \
    --enable-pdo \
    --enable-mysqlnd \
    --enable-zip \
    --enable-inline-optimization \
    --enable-shared \
    --enable-libxml \
    --enable-xml \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-mbregex \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-pcntl \
    --enable-sockets \
    --enable-soap \
    --enable-session \
    --enable-opcache \
    --enable-fpm \
    --enable-maintainer-zts \
    --enable-fileinfo \
    --enable-gd-jis-conv \
    --with-zlib-dir 
make && make install
// 等待編譯安裝完成
# 源碼目錄提供了兩個版本的php.ini 
# 
cp /usr/local/src/php-7.2.0/php.ini-production /usr/local/php7/etc/php.ini

// 配置php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
vi /usr/local/php7/etc/php-fpm.conf
# 找到如下幾行,確保如下幾行前沒有”;” 
pid = run/php-fpm.pid 
error_log = log/php-fpm.log 
log_level = notice 
// php7 新增 php-fpm.d 的子配置文件目錄
cd /usr/local/php7/etc/php-fpm.d
cp www.conf.default www.conf
vi www.conf
# 找到以下幾行,修改成如下所示的數值
listen = 127.0.0.1:9000 
pm = dynamic 
pm.max_children = 50 
pm.start_servers = 20 
pm.min_spare_servers = 5 
pm.max_spare_servers = 35 
pm.max_requests = 500

## pm表示使用哪種方式,有兩個值可以選擇,
## 就是static(靜態)或者dynamic(動態)。
## 在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。
## 下面4個參數的意思分別為:
## pm.max_children:靜態方式下開啟的php-fpm進程數量。
## pm.start_servers:動態方式下的起始php-fpm進程數量。
## pm.min_spare_servers:動態方式下的最小php-fpm進程數量。
## pm.max_spare_servers:動態方式下的最大php-fpm進程數量。

利用php自帶的php-fpm管理工具,可以很方便的start,stop,restart
把管理工具從源碼包里放到php7/sbin文件夾里,方便使用

#添加php-fpm到啟動項目錄
cp /usr/local/src/php-7.2.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#設置php-fpm權限
chmod 755 /etc/init.d/php-fpm
#設置自啟動
chkconfig php-fpm on

添加環境變量

echo 'export PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH' >> /etc/profile
source /etc/profile
# 這樣就能看到版本信息
php -v
PHP 7.2.0 (cli) (built: Dec 30 2017 19:15:52) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

2.1.4 配置PHP session

cd /usr/local/php7/etc
vi php.ini
#搜索 session.save_path , 去掉前面的 ;
session.save_path = "/var/lib/php/session"  ; #此處假定session 保存在 /var/lib/php/session 目錄下
#建立目錄
mkdir -p /var/lib/php/session
chmod -R 777 /var/lib/php/session/  #更改目錄權限

3. MySql 5.7

下載mysql提供的yum倉庫

cd /usr/local
mkdir yumrepo && cd yumrepo
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安裝yum源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
# 檢查mysql源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
檢查mysql yum源安裝是否成功
# 開始安裝
yum install -y \
    mysql-community-server \
    mysql-community-client \
    mysql-community-dever
# 安裝成功之后,輸入命令啟動mysql
service mysqld start
# mysql安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個默認密碼。
# 通過下面的方式找到root默認密碼,然后登錄mysql進行修改
grep 'temporary password' /var/log/mysqld.log 
查看默認mysql密碼
# 用上述密碼登錄
mysql -uroot -p
# 修改密碼
set password for 'root'@'localhost'=password('MyNewPass4!'); 
# 注意:
# mysql5.7默認安裝了密碼安全檢查插件(validate_password),
# 默認密碼檢查策略要求密碼必須包含:
#     大小寫字母、數字和特殊符號,并且長度不能少于8位。
# 否則會提示ERROR 1819 (HY000): 
#     Your password does not satisfy the current policy requirements錯誤

修改密碼策略:

# 在/etc/my.cnf文件添加validate_password_policy配置,指定密碼策略
# 選擇0(LOW),1(MEDIUM),2(STRONG)其中一種,選擇2需要提供密碼字典文件
validate_password_policy=0
# 如果不需要密碼策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off

開機啟動

# 
chkconfig mysqld on

4. 配置nginx支持php

cd /etc/nginx/
vi nginx.conf
#打開gzip
gzip    on;

配置測試

cd /etc/nginx/conf.d
vi test.conf

填入以下內容:

server {
    listen       8090;
    server_name  localhost;

    location / {
        ssi on;
        ssi_silent_errors on;
        ssi_types text/shtml;
        root   /mnt/www/test;
        index  index.html index.htm index.php;
        if ( !-e $request_filename ) {
            rewrite ^(.*)$ /index.php?url=$1 last;
        }

    }
    location ~\.php$ {
        root           /mnt/www/test;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~\.(jpg|jpeg|png|js|css) {
        root /mnt/www/test;
        expires 30d;
    }
}

在/mnt/www/test 目錄下新建index.php, 輸入以下內容:

<?php
phpinfo();
?>

然后訪問服務器的8090端口。如果能顯示php信息。則配置完成

5. phpMyAdmin

5.1 安裝php擴展mysqli和pdo_mysql

autoconf:

# autoconf 用于編譯php擴展
yum install -y autoconf
php擴展在源碼的ext目錄下
# 編譯 mysqli
cd /usr/local/src/php-7.2.0/ext/mysqli
# 執行這句命令在mysqli目錄下生成configure
/usr/local/php7/bin/phpize
# 
./configure \
    --with-php-config=/usr/local/php7/bin/php-config \
    --enable-embedded-mysqli=shared \
    --enable-shared
#
make && make install
# 編譯完成之后會在 /usr/local/php7/lib/php/extensions/no-debug-zts-20170718
# 目錄下生成*.so 文件
# 編譯 pdo_mysql
cd /usr/local/src/php-7.2.0/ext/pdo_mysql
/usr/local/php7/bin/phpize
# php7 pdo只需要連接mysqlnd驅動即可
./configure \
    --with-php-config=/usr/local/php7/bin/php-config \
    --with-pdo-mysql=mysqlnd
make && make install

編譯完成之后需要在php.ini 中載入這些extensions

cd /usr/local/php7/etc
vi php.ini
#添加下面內容
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-zts-20170718"
extension = mysqli.so 
extension = pdo_mysql.so 

5.2 獲取并安裝phpMyAdmin

#
cd /usr/local/src
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.7/phpMyAdmin-4.7.7-all-languages.tar.gz
mv ***

修改phpMyAdmin配置文件

cd /mnt/www/phpMyAdmin
cp config.sample.inc.php config.inc.php
vi config.inc.php
#這里的內容隨意設置,在cookie訪問模式下不能為空
$cfg['blowfish_secret'] = 'www.oschina.com';  
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
 #重要,這里設置成localhost有可能會出現
$cfg['Servers'][$i]['host'] = '127.0.0.1'; phpMyAdmin無法訪問數據庫
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '******';  #這里設置數據庫的密碼

配置nginx

cd /etc/nginx/conf.d
vi phpmyadmin.conf
server {
    listen       9090;
    server_name  localhost;

    location / {
        ssi on;
        ssi_silent_errors on;
        ssi_types text/shtml;
        root   /mnt/www/phpMyAdmin;
        index  index.html index.htm index.php;
        if ( !-e $request_filename ) {
            rewrite ^(.*)$ /index.php?url=$1 last;
        }

    }
    location ~\.php$ {
        root           /mnt/www/phpMyAdmin;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~\.(jpg|jpeg|png|js|css) {
        root /mnt/www/phpMyAdmin;
        expires 30d;
    }
}

重啟 nginx php-fpm mysqld 服務之后,輸入9090端口就可以訪問了。

6.composer

wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
chmod a+x /usr/local/bin/composer

ex

zlib openssl 可以yum install zlib zlib-devel openssl openssl-devel 來安裝

zlib:

編譯安裝:
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
# 更新動態鏈接庫信息
echo "/usr/local/zlib/lib" >> /etc/ld.so.conf 
ldconfig -v

openssl:

wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar zxf openssl-1.0.2o.tar.gz
./config shared
make && make install
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容