CentOS 7上源碼編譯安裝和配置LNMP Web+phpMyAdmin服務器環境

什麼是LNMPjavascript

 

LNMP(別名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/Perl/Python組合成的動態Web應用程序和服務器,它是一組Web應用程序的基礎軟件包,在這個基礎環境上咱們能夠搭建任何使用PHP/Perl/Python等語言的動態網站,如商務網站、博客、論壇和開源Web應用程序軟件等,它是互聯網上被普遍使用的Web網站架構之一。php

 

部署方式css

 

從網站規模大小(訪問流量、註冊用戶等)角度來看,LNMP架構可使用單機部署方式和集羣部署方式。單機部署方式即全部的軟件都部署在一臺Linux服務器上;集羣部署方式能夠將Nginx網絡服務器,MySQL/MariaDB數據庫,PHP軟件分開安裝到不一樣的服務器上,它們彼此之間經過TCP網絡協議相互通訊協助工做,以及對外提供Web應用訪問服務。所以,當單臺服務器不能知足性能要求時,可使用集羣方式部署。html

 

本教程將指導您如何在RHEL 7/CentOS 7以及Fedora 23/24/25等衍生版本中使用Nginx 1.10, MariaDB 10PHP 6安裝LNMP應用服務器環境。(在其餘系統如SUSEUbuntu中源碼編譯安裝LNMP一樣能夠參考本教程。)java


前提要求node

 

準備2RHEL 7CentOS 7服務器,一臺用於安裝MariaDB,另外一臺用於安裝NginxPHP。固然你也能夠僅僅使用1臺服務器部署LNMP以經過實驗來驗證LNMPmysql

HOSTNAME IP OS NODE

hming-server217-mdbnginx

10.0.6.217 CentOS 7.2 x86_64 MariaDB
hming-server218-web 10.0.6.218 CentOS 7.2 x86_64 MariaDB,Nginx,PHP


主軟件包(源碼包)c++

 

DB      mariadb-10.1.20.tar.gzweb

PHP     php-5.6.30.tar.bz2

Nginx   nginx-1.10.2.tar.gz


注意:主軟件包在這以前我已經提早下載好了,可能並非最新和穩定版,你也能夠根據你的需求選擇其餘版本。


依賴軟件


源碼編譯安裝LNMP有許多依賴軟件(如gccmake)是必要的,通常能夠經過YUM軟件管理程序來安裝,另外小部分須要源碼編譯安裝。


經過yum安裝gccgcc-c++make等必需軟件包

# yum install -y gcc gcc-c++ make automake


安裝MariaDB


1. 使用yum安裝gccmakebisonncurses-devel等依賴軟件包

# yum install zlib-devel ncurses ncurses-devel bison


2. 安裝cmakecmake是編譯MySQL/MariaDB的必要工具(MySQL5.6/MariaDB 10及之後的版本) 你能夠在網站https://cmake.org/中下載cmake軟件包

 

將軟件包上傳到/usr/local/src目錄下,而後解壓cmake包,cdcmake目錄執行./bootstrap腳本進行安裝,同時可使用--prefix=<install dir>選項指定安裝的目錄。

# tar -zxf cmake-3.7.2.tar.gz
# cd cmake-3.7.2/
# ./bootstrap --prefix=/usr/local/cmake
# make && make install


當安裝完以後,你可使用執行/usr/local/cmake/bin/cmake --version查看安裝的cmake版本

[root@hming-server217-mdb ~ ]# /usr/local/cmake/bin/cmake --version
cmake version 3.7.2
 
CMake suite maintained and supported by Kitware (kitware.com/cmake).


3. 安裝完cmake編譯工具以後,接下來咱們安裝MariaDB(你能夠訪問https://mariadb.org/下載MariaDB), 首先建立MariaDB安裝目錄/usr/local/mysql和數據庫服務器的數據目錄/data/mysql/webdata,並建立MySQL用戶,並將/data/mysql/webdata目錄的所屬主權限修改成mysql用戶


建立安裝目錄和數據目錄

# mkdir /usr/local/mysql
# mkdir /data/mysql/webdata -p


建立mysql用戶,並修改數據目錄的權限

# groupadd mysql
# useradd -r -g mysql -s /sbin/nologin mysql -M
# chown -R mysql:mysql /data/mysql/


4. 編譯安裝MariaDB,將MariaDB軟件包解壓後使用cmake進行編譯,根據需求選擇相應的編譯參數進行編譯(查看編譯選項/usr/local/cmake/bin/cmake . -LH).  (或者訪問MariaDB編譯安裝幫助文檔https://mariadb.com/kb/en/mariadb/compiling-mariadb-from-source/)

[root@hming-server217-mdb /usr/local/src ]# tar -zxf mariadb-10.1.20.tar.gz
[root@hming-server217-mdb /usr/local/src ]# cd mariadb-10.1.20/
 
[root@hming-server217-mdb /usr/local/src/mariadb-10.1.20 ]# /usr/local/cmake/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/webdata -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/data/mysql/webdata/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_READLINE=1 -DWITH_DEBUG=0


執行gmake gmake install進行最後的安裝

[root@hming-server217-mdb /usr/local/src/mariadb-10.1.20 ]# gmake
[root@hming-server217-mdb /usr/local/src/mariadb-10.1.20 ]# gmake install


5. 配置mysql環境變量,若是不配置默認系統找不到mysql的可執行程序和命令,不然你必須使用全路徑執行與mysql相關的任何命令,查看系統默認的環境變量


使用export命令添加mysql環境變量

[root@hming-server217-mdb ~ ]# export PATH=$PATH:/usr/local/mysql/bin
[root@hming-server217-mdb ~ ]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin


最後將mysql環境配置添加到/etc/profile或者/etc/profile.d/的自定義文件中

[root@hming-server217-mdb ~ ]# echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
[root@hming-server217-mdb ~ ]# source /etc/profile.d/mysql.sh


配置了環境變量,咱們就能夠直接在shell終端下執行mysql命令,使用mysql -V查看mysql版本

[root@hming-server217-mdb ~ ]# mysql -V
mysql  Ver 15.1 Distrib 10.1.20-MariaDB, for Linux (x86_64) using readline 5.1


6. 添加MariaDB庫文件

[root@hming-server217-mdb ~ ]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mariadb-x86_64.conf


7. 拷貝MariaDB服務啓動腳本到/etc/init.d/目錄中

[root@hming-server217-mdb ~ ]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@hming-server217-mdb ~ ]# chmod 755 /etc/init.d/mysqld
[root@hming-server217-mdb ~ ]# chkconfig --add mysqld
[root@hming-server217-mdb ~ ]# chkconfig mysqld on
[root@hming-server217-mdb ~ ]# systemctl daemon-reload


8. 執行初始化數據庫腳本,安裝MariaDB基礎數據庫(執行./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/webdata --user=mysql --no-defaults)

[root@hming-server217-mdb ~ ]# cd /usr/local/mysql/scripts/
[root@hming-server217-mdb /usr/local/mysql/scripts ]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/webdata --user=mysql --no-defaults
[root@hming-server217-mdb /usr/local/mysql/scripts ]# ls /data/mysql/webdata/
aria_log.00000001  ibdata1      ib_logfile1  performance_schema
aria_log_control   ib_logfile0  mysql        test


9. 配置/etc/my.cnf,該文件是mysql服務的主要配置文件

[root@hming-server217-mdb ~ ]# cp /etc/my.cnf /etc/my.cnf.save
[root@hming-server217-mdb ~ ]# cat /etc/my.cnf
[client]
port=3306
socket=/data/mysql/webdata/mysql.sock
default-character-set=utf8
 
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/webdata
socket=/data/mysql/webdata/mysql.sock
character-set-server=utf8
external-locking=FALSE
skip-name-resolv
default-storage-engine=InnoDB
back_log=1024
transaction_isolation=REPEATABLE-READ
max_connections=5000
max_connect_errors=6000
open_files_limit=65535
table_open_cache=512
 
[mysqldump]
quick
max_allowed_packet=32M
 
[mysql]
no-auto-rehash
default-character-set=utf8
 
[mysqld_safe]
open-files-limit=8192
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid


建立/var/log/mariadb/var/run/mariadb目錄

[root@hming-server217-mdb ~ ]# mkdir /var/log/mariadb
[root@hming-server217-mdb ~ ]# mkdir /var/run/mariadb
[root@hming-server217-mdb ~ ]# chown mysql:mysql /var/log/mariadb
[root@hming-server217-mdb ~ ]# chown mysql:mysql /var/run/mariadb


10. 啓動MariaDB服務

[root@hming-server217-mdb ~ ]# systemctl start mysqld
[root@hming-server217-mdb ~ ]# systemctl status mysqld

[root@hming-server217-mdb ~ ]# systemctl status mysqld
● mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld)
   Active: active (running) since Fri 2017-06-02 23:53:09 CST; 3 days ago
     Docs: man:systemd-sysv-generator(8)
  Process: 27419 ExecStop=/etc/rc.d/init.d/mysqld stop (code=exited, status=0/SUCCESS)
  Process: 27449 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           ├─27460 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/webdata --pid-file=/data/mysq...
           └─27595 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/webdata --plugi...

Jun 02 23:53:08 hming-server217-mdb systemd[1]: Starting LSB: start and stop MySQL...
Jun 02 23:53:08 hming-server217-mdb mysqld[27449]: Starting MySQL.170602 23:53:08 mysqld_safe Logging to '/...og'.
Jun 02 23:53:09 hming-server217-mdb mysqld[27449]: SUCCESS!
Jun 02 23:53:09 hming-server217-mdb systemd[1]: Started LSB: start and stop MySQL.
Hint: Some lines were ellipsized, use -l to show in full.


查看MariaDB服務進程

[root@hming-server217-mdb ~ ]# ps aux | grep mysql
root     27460  0.0  0.0 115380  1744 ?        S    23:53   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/webdata --pid-file=/data/mysql/webdata/hming-server217-mdb.pid
mysql    27595  1.0  5.2 1209380 99428 ?       Sl   23:53   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/webdata --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mariadb/mariadb.log --open-files-limit=8192 --pid-file=/data/mysql/webdata/hming-server217-mdb.pid --socket=/data/mysql/webdata/mysql.sock --port=3306
root     27627  0.0  0.0 112644   952 pts/2    S+   23:53   0:00 grep --color=auto mysql


11. 執行mysql_secure_installation初始化數據庫,設mysql用戶root密碼

[root@hming-server217-mdb ~ ]# mysql_secure_installation
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
 
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n] y
 ... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n] y
 ... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
 
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
 
Reload privilege tables now? [Y/n] y
 ... Success!
 
Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!


12登陸MariaDB數據庫

[root@hming-server217-mdb ~ ]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 353
Server version: 10.1.20-MariaDB Source distribution
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> select version();
+-----------------+
| version()       |
+-----------------+
| 10.1.20-MariaDB |
+-----------------+
1 row in set (0.00 sec)
 
MariaDB [(none)]>


安裝Nginx


1. 安裝依賴軟件包

[root@hming-server218-web ~ ]# yum install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl-devel gd gd-devel perl-devel perl-ExtUtils-Embed


2. 建立nginx用戶

[root@hming-server218-web ~ ]# groupadd nginx
[root@hming-server218-web ~ ]# useradd -g nginx -s /sbin/nologin nginx -M


3. 編譯安裝Nginx

[root@hming-server218-web /usr/local/src ]# tar -zxf nginx-1.10.2.tar.gz
[root@hming-server218-web /usr/local/src ]# cd nginx-1.10.2/
[root@hming-server218-web /usr/local/src/nginx-1.10.2 ]# ./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/subsys/nginx \
--with-http_stub_status_module \
--with-pcre \
--with-http_ssl_module \
--with-mail_ssl_module \
--with-http_gzip_static_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/tmp/nginx/client_body \
--http-proxy-temp-path=/tmp/nginx/proxy \
--http-fastcgi-temp-path=/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/tmp/nginx/uwsgi \
--with-http_degradation_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_perl_module \
--with-http_p_w_picpath_filter_module=dynamic \
--with-http_flv_module

[root@hming-server218-web /usr/local/src/nginx-1.10.2 ]# make && make install


4. 啓動Nginx服務

[root@hming-server218-web ~ ]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@hming-server218-web ~ ]# mkdir /tmp/nginx
[root@hming-server218-web ~ ]# nginx
[root@hming-server218-web ~ ]# ps -ef | grep nginx
root     27913     1  0 00:49 ?        00:00:00 nginx: master process nginx
nginx    27914 27913  0 00:49 ?        00:00:00 nginx: worker process
root     27923 22381  0 00:49 pts/1    00:00:00 grep --color=auto nginx

5. 添加防火牆

[root@hming-server218-web ~ ]# firewall-cmd --permanent --add-port=80/tcp
success
[root@hming-server218-web ~ ]# firewall-cmd --reload
success


6. 經過客戶端訪問http://10.0.6.218

wKiom1k1KC6TnB5QAAAswLN_yC0724.png


安裝PHP


  1. 安裝依賴軟件包

[root@hming-server218-web ~ ]# yum install gcc gcc-c++ libtool libxslt-devel libpng libpng-devel bzip2 bzip2-devel libxml2-devel libXpm-devel libcurl-devel curl libmcrypt expat libxslt freetype freetype-devel libmcrypt-devel autoconf libpng zlib-devel zlib net-snmp net-snmp-devel

2. 安裝libiconv

[root@hming-server218-web ~ ]# tar -zxf libiconv-1.15.tar.gz  
[root@hming-server218-web ~ ]# cd libiconv-1.15/
[root@hming-server218-web ~/libiconv-1.15 ]# ./configure --prefix=/usr/local/libiconv
[root@hming-server218-web ~/libiconv-1.15 ]# make && make install
[root@hming-server218-web ~ ]# echo "/usr/local/libiconv/lib" >> /etc/ld.so.conf
[root@hming-server218-web ~ ]# ldconfig


3. 安裝libmcrypt

[root@hming-server218-web ~ ]# tar -jxf libmcrypt-2.5.8.tar.bz2
[root@hming-server218-web ~ ]# cd libmcrypt-2.5.8/
[root@hming-server218-web ~/libmcrypt-2.5.8 ]# ./configure --prefix=/usr/local/libmcrypt
[root@hming-server218-web ~/libmcrypt-2.5.8 ]# make && make install

4. 安裝 jpeg

# tar -zxf jpegsrc.v9b.tar.gz
# cd jpeg-9b/
# mkdir /usr/local/jpeg9 && mkdir /usr/local/jpeg9/{bin,lib,include}
# mkdir /usr/local/jpeg9/man/man1 -p
#  cp -rf /usr/share/libtool/config/config.sub . && cp -rf /usr/share/libtool/config/config.guess .
cp: overwrite \u2018./config.sub\u2019? y
cp: overwrite \u2018./config.guess\u2019? y
# ./configure --prefix=/usr/local/jpeg9 --enable-shared --enable-static
# make && make install


5. 安裝libgd

[root@hming-server218-web ~ ]# tar -zxf libgd-2.2.3.tar.gz
[root@hming-server218-web ~ ]# cd libgd-2.2.3/
[root@hming-server218-web ~/libgd-2.2.3 ]# ./configure --prefix=/usr/local/libgd2 --with-zlib --with-jpeg=/usr/local/jpeg9 --with-png --with-freetype
[root@hming-server218-web ~/libgd-2.2.3 ]# make && make install


6. 編譯安裝PHP

[root@hming-server218-web ~ ]# groupadd php-fpm
[root@hming-server218-web ~ ]# useradd -g php-fpm -s /sbin/nologin php-fpm -M
[root@hming-server218-web ~ ]# tar -jxf php-5.6.30.tar.bz2
[root@hming-server218-web ~ ]# cd php-5.6.30/
[root@hming-server218-web ~ ]# ./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=php-fpm \
--with-fpm-group=php-fpm \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-jpeg-dir=/usr/local/jpeg9 \
--with-mcrypt=/usr/local/libmcrypt \
--with-gd=/usr/local/libgd2 \
--with-iconv-dir=/usr/local/libiconv \
--with-openssl-dir \
--with-freetype-dir \
--with-libxml-dir \
--with-png-dir \
--with-zlib \
--with-curl \
--with-mhash \
--with-pear \
--with-pcre-dir \
--with-gettext \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-exif \
--enable-sockets \
--enable-ftp \
--disable-ipv6 \
--enable-bcmath \
--enable-shmop \
--with-snmp \
--enable-sysvsem

[root@hming-server218-web ~/php-5.6.30 ]# make
[root@hming-server218-web ~/php-5.6.30 ]# make test
[root@hming-server218-web ~/php-5.6.30 ]# make install


7. 拷貝php.ini配置文件

[root@hming-server218-web ~/php-5.6.30 ]# cp php.ini-production /usr/local/php/etc/php.ini


8. 修改php-fpm.conf配置文件

[root@hming-server218-web ~ ]# vim /usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = /var/lib/php/php-fcgi.sock
user = php-fpm
group = php-fpm
listen.owner = nginx
listen.group = nginx
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

9. 檢查配置

[root@hming-server218-web ~ ]# /usr/local/php/sbin/php-fpm -t
[05-Jun-2017 20:23:27] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful


10. 拷貝啓動腳本

[root@hming-server218-web ~ ]# cp php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@hming-server218-web ~ ]# chmod 755 /etc/init.d/php-fpm
[root@hming-server218-web ~ ]# /etc/init.d/php-fpm start
Starting php-fpm  done


測試nginx是否正常解析PHP腳本

1. 修改nginx.conf配置文件

user  nginx nginx;
worker_processes  4;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx/nginx.pid;
worker_rlimit_nofile    65535;
 
events {
    use epoll;
    worker_connections  65535;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 2048;
    server_names_hash_max_size 4096;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout  65;
 
    client_header_timeout 30;
    client_body_timeout 3m;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
 
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 64k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
 
    client_body_temp_path /tmp/nginx/client_body;
    proxy_temp_path       /tmp/nginx/proxy;
fastcgi_temp_path     /tmp/nginx/fastcgi;
 
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 3;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm application/xml;
    gzip_vary on;
 
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    fastcgi_intercept_errors on;
 
    server {
        listen       80;
        server_name  10.0.6.218;
        charset UTF8;
        index index.html index.htm index.php index.jsp;
        root  /usr/local/nginx/html;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            root           html;
            fastcgi_pass   unix:/var/lib/php/php-fcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
 
    }
 
}


2. 測試nginx配置文件語法是否存在錯誤

[root@hming-server218-web ~ ]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


3. 建立測試解析php腳本

[root@hming-server218-web ~ ]# vim /usr/local/nginx/html/info.php
<?php
phpinfo();
?>
 
[root@hming-server218-web ~ ]# nginx -s reload

4. 訪問http://10.0.6.218/info.php

wKiom1k1LIfS7zXJAABr6LciKjA175.png

注意:該測試腳本僅用於咱們查看當前安裝的php支持的模塊信息,在測試以後應當當即刪除


安裝phpMyAdmin

phpMyAdmin是一個使用PHP語言編寫的免費軟件,旨在經過Web界面管理MySQL數據庫。phpMyAdmin支持MySQLMariaDB上的各類操做。用戶能夠經過Web界面執行數據庫的經常使用操做(數據庫管理,,字段,索引,用戶,權限,視圖,函數等),以及直接執行任何SQL語句。


1. 建立phpMyAdmin Web目錄

[root@hming-server218-web ~ ]# mkdir /app/data/phpMyAdmin -p

2. 將phpMyAdmin軟件包解壓到/app/data/phpMyAdmin 目錄下

# tar -zxf phpMyAdmin-4.7.1-all-languages.tar.gz
# cp -ar phpMyAdmin-4.7.1-all-languages/* /app/data/phpMyAdmin/
# chown -R nginx:nginx /app/data/phpMyAdmin
# chown -R php-fpm:php-fpm /app/data/phpMyAdmin


3. 修改nginx配置,建立一個server虛擬機配置文件

http {
    ......
    # phpMyAdmin
    server {
        listen       8000;
        server_name  10.0.6.218;
        charset UTF8;
        index index.html index.htm index.php index.jsp;
        root  /app/data;
        access_log  /var/log/nginx/phpMyAdmin.log  main;
 
        location /phpMyAdmin/ {
            index index.html index.htm index.php;
        }
 
        location ~ \.php$ {
            fastcgi_pass   unix:/var/lib/php/php-fcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /app/data$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}


4. 建立數據庫root用戶權限,容許php服務器使用root用戶管理數據服務器

[root@hming-server217-mdb ~ ]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.1.20-MariaDB Source distribution
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
| root | 127.0.0.1 | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
| root | ::1       | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
 
MariaDB [(none)]> grant all privileges on *.* to 'root'@'10.0.6.218' identified by 'phpMyAdmin_123';
Query OK, 0 rows affected (0.00 sec)
 
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)


5. 配置防火牆規則

# iptables -I INPUT -p tcp --dport 3306 -s 10.0.6.0/24 -j ACCEPT

或者

# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=10.0.6.0/24 port port=3306 protocol=tcp accept'


6. 修改phpMyAdmin配置文件

#cp/app/data/phpMyAdmin/libraries/config.default.php /app/data/phpMyAdmin/libraries/config.default.php.save
# vim /app/data/phpMyAdmin/libraries/config.default.php

/**
 * The 'cookie' auth_type uses AES algorithm to encrypt the password. If
 * at least one server configuration uses 'cookie' auth_type, enter here a
 * pass phrase that will be used by AES. The maximum length seems to be 46
 * characters.
 *
 * @global string $cfg['blowfish_secret']
 */
$cfg['blowfish_secret'] = '123456';
 
 
/**
 * MySQL hostname or IP address
 *
 * @global string $cfg['Servers'][$i]['host']
 */
$cfg['Servers'][$i]['host'] = '10.0.6.217';
 
/**
 * MySQL port - leave blank for default port
 *
 * @global string $cfg['Servers'][$i]['port']
 */
$cfg['Servers'][$i]['port'] = '3306';
 
/**
 * Path to the socket - leave blank for default socket
 *
 * @global string $cfg['Servers'][$i]['socket']
 */
$cfg['Servers'][$i]['socket'] = '';
 
 
/**
 * Authentication method (valid choices: config, http, signon or cookie)
 *
 * @global string $cfg['Servers'][$i]['auth_type']
 */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
 
/**
 * HTTP Basic Auth Realm name to display (only used with 'HTTP' auth_type)
 *
 * @global string $cfg['Servers'][$i]['auth_http_realm']
 */
$cfg['Servers'][$i]['auth_http_realm'] = '';
 
/**
 * MySQL user
 *
 * @global string $cfg['Servers'][$i]['user']
 */
$cfg['Servers'][$i]['user'] = 'root';
 
/**
 * MySQL password (only needed with 'config' auth_type)
 *
 * @global string $cfg['Servers'][$i]['password']
 */
$cfg['Servers'][$i]['password'] = 'phpMyAdmin_123';


7. 登陸phpMyAdmin Web管理界面,打開http://10.0.6.218:8000/phpMyAdmin/

wKioL1k1LtOjYflAAABRSY9XMcY416.png


輸入數據庫用戶和密碼

wKiom1k1LvuwWYS4AAC226Qplhw248.png


測試建立數據庫

wKioL1k1LyaAiOBjAACQXd-EbIA418.pngwKioL1k1LzbjDUlwAABzorjVTrg315.png


配置phpMyAdmin增長Nginx登陸身份驗證功能


1. 修改Nginx配置文件,/phpMyAdmin/處增長容許訪問規則和auth_basic身份驗證配置

    # phpMyAdmin
    server {
        listen       8000;
        server_name  10.0.6.218;
        charset UTF8;
        index index.html index.htm index.php index.jsp;
        root  /app/data;
        access_log  /var/log/nginx/phpMyAdmin.log  main;
 
        location /phpMyAdmin/ {
            allow 10.0.6.0/24;
            deny all;
            auth_basic            "Auth";
            auth_basic_user_file  /usr/local/nginx/.htpassword;
            index index.html index.htm index.php;
        }
 
        location ~ \.php$ {
            fastcgi_pass   unix:/var/lib/php/php-fcgi.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /app/data$fastcgi_script_name;
            include        fastcgi_params;
        }
    }


2. 使用htpasswd建立用戶(HM)和密碼

[root@hming-server218-web ~ ]# yum install httpd
[root@hming-server218-web ~ ]# htpasswd -c /usr/local/nginx/.htpassword HM
New password: 
Re-type new password: 
Adding password for user HM
[root@hming-server218-web ~ ]# ls -l /usr/local/nginx/.htpassword 
-rw-r--r-- 1 root root 41 Jun  6 18:04 /usr/local/nginx/.htpassword


3. 從新訪問phpMyAdmin,再次登陸須要進行身份驗證,之後的每一次登陸都將須要進行此驗證

wKioL1k2BGmjE0sMAAAq_Uojruo486.png

輸入用戶和密碼

wKiom1k2BHnwJc_QAABPzYXxRgU128.png

相關文章
相關標籤/搜索