简要介绍:
一般来说,LNMP是Linux+Nginx+MySQL+PHP的简称,是一种用于替代LAMP的解决方案。在本文档中,我使用CentOS 7来搭建LNMP平台,其中,PHP采用FastCGIserver方式部署。此外,还介绍了如何部署Memcached和phpMyadmin。
CentOS系统安装时选择的是basic server版本,详细版本号为CentOS 7.0.1406,核心版本号为3.10.0-123.el7.x86_64。系统安装在虚拟机上,IP为172.31.2.3,其可与物理机和外界网络正常通信。如未特别说明,本文档所涉及的所有操作均使用root账号进行。
安装Nginx
默认情况下,centos中的yum库并没有提供nginx的源,所以没有办法直接安装nginx。不过,nginx官网上有提供可以更新yum库的软件包,可以到nginx官网http://nginx.org/en/linux_packages.html下载该软件包,或者直接使用下面的命令将该软件包下载下来,并安装它:
[root@www ~]# wgethttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@www ~]# rpm -ivhnginx-release-centos-7-0.el7.ngx.noarch.rpm
(这部分可略过)然后,到nginx官网下载它提供的GPG数字签名,或直接使用下面的命令:
[root@www ~]# wget http://nginx.org/keys/nginx_signing.key
导入该GPG数字签名文件:
[root@www ~]# rpmkeys --import nginx_signing.key
再修改/etc/yum.repos.d/nginx.repo文件中下面这一项:
gpgcheck=1
这样以后使用nginx.repo这个yum库来安装软件时就会检查软件的GPG签名了。刚刚下载的那个用于更新yum库的软件包,也可以使用下面的命令来检查它的GPG签名:
[root@www ~]# rpmkeys -K nginx-release-centos-7-0.el7.ngx.noarch.rpm
然后就可以安装nginx了:
[root@www ~]# yum install nginx
安装的nginx版本是1.6.3版,是目前稳定版的最新版本。
启动nginx服务并将其设为开机启动:
[root@www ~]# systemctl start nginx
[root@www ~]# systemctl enable nginx
然后,检查nginx服务状态:
[root@localhost ~]# systemctl status httpd.service
假设我们以后的网页数据都放置在/data/www目录下,那么,需要在nginx的配置文件/etc/nginx/nginx.conf的http区块中加入下面内容(include/etc/nginx/conf.d/*.conf;语句前):
server{
location / {
root /data/www;
index index.phpindex.html index.htm;
}
}
修改完配置文件后,让nginx重新加载配置以生效:
[root@www ~]# nginx -s reload
创建/data/www目录:
[root@www ~]# mkdir -p /data/www
因为SELinux的关系,即便nginx程序有r权限读取/data/www下的文件,也是会读取失败的。我们需要semanage这个工具来更改/data/www目录的默认SELinux设置,通过命令yum provides semanage查找到这个工具是由policycoreutils-python这个软件包提供的,因此:
[root@www ~]# yum install policycoreutils-python
将/data/www目录(及其子目录和文档)的默认SELinux类型设定为nginx可以读取的httpd_sys_content_t:
[root@www ~]# semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?"
确认上面的规则是否添加成功:
[root@www ~]# semanage fcontext -l | grep ‘/data/www‘
让/data/www目录的SELinux类型恢复成上面设定的默认值
[root@www ~]# restorecon -Rv /data/www
确认/data/www目录的SELinux类型是否的确为httpd_sys_content_t:
[root@www ~]# ls -dZ /data/www
让防火墙放通tcp的 80端口:
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙以让更改生效:
[root@localhost ~]# firewall-cmd --reload
使用以下命令确认防火墙配置是否成功:
[root@localhost ~]# firewall-cmd --list-all
在/data/www目录目录下创建一个测试页面index.html:
[root@www ~]# echo "This a test page." >/data/www/index.html
如无意外的话,此时使用浏览器访问http://172.31.2.3/index.html应该就可以看到上面的“This is a test page.”文字了:
虽然上面是测试成功了,但此时查看nginx的错误日志文件/var/log/nginx/error.log,可以发现有一个找不到favicon.ico的报错,这个favicon.ico是收藏网页时网页标题旁的那个小图标。要解决这个问题,可以放一个favicon.ico在你所设定的网页根目录下面(这里是/data/www),也可以设定nginx让它不要报这个错。
备注:
nginx的配置文件为:/etc/nginx/nginx.conf
nginx的错误日志为:/var/log/nginx/error.log
nginx的访问日志为:/var/log/nginx/access.log
nginx的相关文档:http://nginx.org/en/docs/
设置nginx以支持PHP(FastCGI方式)
为了让nginx以FastCGI的方式与PHP协同工作,让nginx将对于.php文件的请求都传送给PHP进行处理,需要向nginx的配置文件/etc/nginx/nginx.conf中再添加一个location区块,即,将前面的那个server区块改成这样:
server{
location / {
root /data/www;
index index.phpindex.html index.htm;
}
location ~* \.php$ {
root /data/www;
fastcgi_indexindex.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意:fastcgi_pass那里使用了127.0.0.1:9000而不是localhost:9000,否则日志中会有upstream: "fastcgi://[::1]:9000"之类的报错。
修改完成后,让nginx重新加载配置以生效:
[root@www ~]# nginx -s reload
安装PHP(FastCGI方式)
要让PHP以FastCGI的方式与nginx进行交互,需要有PHP-FPM模块的支持。由于这个模块需要集成到PHP的核心中,也就是说,在编译PHP时需要同时将PHP-FPM模块编译进去,所以安装PHP需要从源码进行安装。
因为要编译PHP源码,所以需要先安装必要的编译器:
[root@www php-5.6.7]# yum install gcc
PHP编译时所需用到的支持库也要安装:
[root@www ~]# yum install libxml2-devel
PHP的源码可从PHP官网(http://php.net/downloads.php)获得,或者也可以直接按照下面的步骤进行(所安装版本为目前为止最新的稳定版PHP 5.6.7):
[root@www ~]# wget http://cn2.php.net/distributions/php-5.6.7.tar.bz2
[root@www ~]# tar -jx -f php-5.6.7.tar.bz2
[root@www ~]# cd ./php-5.6.7
[root@www php-5.6.7]# ./configure --enable-fpm --with-mysql
[root@www php-5.6.7]# make
[root@www php-5.6.7]# make install
将适用于生产环境的配置文件复制成为PHP的实际配置文件:
[root@www php-5.6.7]# cp php.ini-production /usr/local/lib/php.ini
复制生成PHP-FPM模块的配置文件:
[root@www php-5.6.7]# cp /usr/local/etc/php-fpm.conf.default/usr/local/etc/php-fpm.conf
将PHP-FPM的执行程序复制到/usr/local/bin目录下:
[root@www php-5.6.7]# cp sapi/fpm/php-fpm /usr/local/bin
修改配置文件/usr/local/php/php.ini中cgi.fix_pathinfo这一项,将它前面的分号去掉,并修改它的值(这样修改的意义是,如果文件不存在,则阻止nginx将请求发送到后端的PHP-FPM模块,以避免遭受恶意脚本注入的攻击):
cgi.fix_pathinfo=0
创建一个用户www-data以供php-fpm使用:
[root@www ~]# useradd -s /sbin/nologin www-data
修改配置文件/usr/local/etc/php-fpm.conf中user和group这两项,让php-fpm模块使用www-data用户和www-data用户组的身份运行:
user= www-data
group= www-data
再来需要将php-fpm程序设为开机启动,这需要将php-fpm做成系统服务。
首先,修改php-fpm的配置文件/usr/local/etc/php-fpm.conf,找到下面这一项,将它前面的分号去掉:
pid= run/php-fpm.pid
启动php-fpm程序:
[root@www ~]# /usr/local/bin/php-fpm
在/etc/systemd/system目录下创建文件php-fpm.service,将它的内容修改成如下所示:
重新加载systemd管理器配置以使修改生效:
[root@www ~]# systemctl daemon-reload
这样以后就可以使用systemctl命令来管理php-fpm程序了。将php-fpm设为开机启动:
[root@www ~]# systemctl enable php-fpm
启动php-fpm程序:
[root@www ~]# systemctl start php-fpm
如果启动正常的话,可以看到php-fpm在监听tcp的9000端口。
到这,PHP就设定好了。接下来就需要进行测试了,在所设置的网页根目录下生成phpinfo页面:
[root@www ~]# echo "<?php phpinfo (); ?>" > /data/www/index.php
使用浏览器访问服务器,如果没什么问题的话,应该就可以看到下面的页面了:
备注:
PHP的配置文件为:/usr/local/lib/php.ini
php-fpm的配置文件为:/usr/local/etc/php-fpm.conf
php-fpm的错误日志为:/usr/local/var/log/php-fpm.log
php-fpm.conf文件的在线说明文档:http://php.net/manual/en/install.fpm.configuration.php
安装MySQL
由于从RHEL 7开始Red Hat公司推荐使用MariaDB替换MySQL,因此默认情况下,并没有提供MySQL的安装包,也就是没办法直接使用yum命令安装MySQL软件。为了要安装MySQL,我选择的是去官网http://dev.mysql.com/downloads/repo/yum/下载安装包,不过在下载之前需要先注册。因为使用的是CentOS 7系统,所以我下载的是mysql-community-release-el7-5.noarch.rpm这个文件。下载下来后,将它放在/root目录下,然后使用命令:
[root@localhost ~]# yum localinstall mysql-community-release-el7-5.noarch.rpm
使用上面这个命令可以将MySQL Yum Repository添加到系统的软件库列表(repositorylist)。然后可以使用下面的命令检查添加是否成功:
[root@localhost ~]# yum repolist enabled | grep mysql
然后,使用下面的命令安装MySQL:
[root@localhost ~]# yum install mysql-community-server
如上图所示,这个命令会安装MySQL server,附带的,它会安装一些支撑软件,包括MySQL client、共享客户端库(mysql-community-libs)等软件。注意到,这里安装的MySQL版本为5.6版。
安装完成后,启动mysqld服务并将其设为开机启动:
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl enable mysqld
然后,检查mysqld服务状态:
[root@localhost ~]# systemctl status mysqld
MySQL侦听tcp端口3306。但因为防火墙并未放通该端口,所以从其它设备上是无法访问本服务器的MySQL数据库的。但因为这里的MySQL也仅是提供给本机的PHP使用的,所以也就不必放通tcp端口3306。
根据MySQL官方手册,建议安装完MySQL数据库后使用下面的命令来增强数据库的安全性:
[root@localhost ~]# mysql_secure_installation
该命令程序可以协助你设置数据库root账号的密码,移除匿名用户账号,是否允许远程登录root账号,移除自带的test数据库,最后还会问你是否要重新加载特权表以让修改生效。我是设置了数据库root账号密码,其它的都选是(Y)。
如果不想使用上面的命令,那可以使用下面的命令来给root账号设置密码,回车后它会提示你输入密码的:
[root@localhost ~]# mysqladmin -u root password
如果要修改root账号的密码,可使用下面的命令,回车后,它会提示你输入密码,然后再设置新密码:
[root@localhost ~]# mysqladmin -u root -p password
然后进行下面的操作:
[root@localhost~]# mysql -u root -p //以root账号登入MySQL
Enterpassword:
mysql>create user ‘usera‘@‘localhost‘ identifiedby ‘1234‘; //新建本地用户usera,密码为1234
mysql>create database testdb; //新建数据库mydb
mysql>grant all privileges on testdb.* to usera@localhost; //将数据库testdb的所有权限授权给本地用户usera
mysql>flush privileges; //刷新系统权限表
mysql>use mysql; //进入数据库mysql(该数据库为系统自带)
mysql>select * from user where user = ‘usera‘; //查询数据库mysql中是否存在用户usera
mysql>show databases; //显示所有已有的数据库
mysql>exit
上面设定好后,就可以使用usera这个账号登录MySQL了,并且可以发现该用户拥有一个数据库testdb。
备注:
MySQL的配置文件:/etc/my.cnf
MySQL的错误日志文件:/var/log/mysqld.log
数据库实际存放目录:/var/lib/mysql
测试
为了测试PHP能否连接到MySQL数据库,在/data/www目录下新建一个文档testmysql.php。因为之前已经在MySQL中新建了一个数据库testdb,并给这个数据库建了个用户usera,密码是1234,所以test.php的内容是这样的:
上面这个测试页面的内容纯粹是我百度出来的,不过测试后的确有用。在浏览器中访问testmysql.php这个页面,如果测试失败的话(可以试着改一下用户名或数据库名称),那么就会显示Cannot find the database或Cannot connect the database;如果测试成功的话,就会显示Everythingis OK!。如下所示:
上面的那个测试一开始是失败的,查看nginx的错误日志,发现有报“PHP message: PHP Warning: mysql_connect(): No such file or directory”这个错误。解决办法是,进入MySQL数据库的管理后台,执行命令status;,记下UNIXsocket的值。再在PHP的配置文件/usr/local/lib/php.ini中找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket这三项,将它们的值都改成与UNIXsocket的值相同。然后再使用命令systemctl restart php-fpm命令重启php-fpm程序就可以了。
到这里为止,基本的LNMP平台就搭建好了。
安装Memcached(可选)
Memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,减轻数据库的负担,从而大大提高读取速度。
安装Memcached之前,先安装依赖库:
[root@www ~]# yum install libevent-devel
Memcached到目前的最新稳定版为1.4.22版,可从它的官网http://memcached.org/downloads下载,也可按下面的步骤:
[root@www ~]# wget http://memcached.org/latest
[root@www ~]# tar -zxvf latest
[root@www ~]# cd memcached-1.4.22
[root@www memcached-1.4.22]# ./configure
[root@www memcached-1.4.22]# make
[root@www memcached-1.4.22]# make test
[root@www memcached-1.4.22]# make install
启动Memcached程序:
[root@www ~]# /usr/local/bin/memcached -uroot -d
Memcached启动时可附带一些选项,常用的选项如下:
-p:监听指定的TCP端口。若不指定,默认为11211。
-P:将PID保存到指定的文件。需要与-d选项一起使用。
-m:指定可用的最大内存大小。若不指定,默认为64M。
-vv:用veryvrebose模式启动,调试信息和错误输出到控制台。
-d:作为daemon在后台启动。
-u:以指定的身份启动。该选项只有在当前用户为root时才可用。
-l:监听的IP地址,默认监听所有。
-c:最大并发连接数,默认为1024。
更多可用的选项,可用使用命令/usr/local/bin/memcached-h查阅到。
虽然Memcached程序已能运行,但为了让它能开机启动,还需要将它做成系统服务。
在/etc/systemd/system目录下创建文件memcached.service,将它的内容修改成如下所示:
重新加载systemd管理器配置以使修改生效:
[root@www ~]# systemctl daemon-reload
这样以后就可以使用systemctl命令来管理Memcached程序了。将Memcached设为开机启动:
[root@www ~]# systemctl enable memcached
启动memcached程序:
[root@www ~]# systemctl start memcached
如果启动正常的话,可以看到php-fpm在监听tcp和udp的11211端口。如果要调整Memcached的启动选项的话,则记得也要同时修改memcached.service这个文件。
虽然安装好了Memcached,不过,还要PHP支持才行。为了支持Memcached,有两个PHP扩展可以使用,一个叫做memcache,另一个叫做memcached,安装两个中的任一个都行,不过memcached扩展比较新,相对来说可能会比较好一点,因此我也选择安装memcached扩展。
既然要给PHP安装扩展,那就要先安装php-devel,以让PHP可以支持扩展组件才行:
[root@www ~]# yum install php-devel
然后,因为memcached扩展是依赖于libmemcached库的,所以还要安装libmemcached库:
[root@www ~]# yum install libmemcached libmemcached-devel
然后安装memcached扩展(这需要使用pecl命令而非yum命令):
[root@www ~]# pecl install memcached
在安装上面的memcached扩展时需要提供libmemcached的安装目录(含有include/libmemcached/memcached.h的那个目录,在我这里是/usr)。
安装完成后,它会有提供类似下面的路径:
/usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcached.so
根据上面的路径,在php.ini中加上语句:
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/memcached.so
重启php-fpm程序以使修改生效:
[root@www ~]# systemctl restart php-fpm
如果正常的话,此时应该就可以从phpinfo页面查到关于memcached的信息了:
虽然上面已经能查到关于memcached的信息了,但还是要实际测试一下。在放置网页的目录下新建一个文件testmemcached.php,文件的内容如下(注:这个测试页面的内容不是我原创的哦,我只是参考别人的修改了一下):
使用浏览器访问上面的那个页面,如果正常的话,应该可以看到下面的东东:
Memcached状态监控:
Memcached有个stats命令,通过它可以查看Memcached服务器的许多状态信息。使用方法为,先使用telnet命令连接到memcached服务器,连接成功后,输入stats 命令,即可显示当前memcached服务的状态信息。
安装telnet程序:
[root@www ~]# yum install telnet
连接到当前服务器(telnet ip 端口号):
[root@www ~]# telnet 127.0.0.1 11211
查看memcached服务状态,使用命令:
stats
如果要断开连接,则输入:
quit
状态信息的说明如下(这部分转载自http://blog.chinaunix.net/uid-25266990-id-2379205.html):
pid:memcache服务器的进程ID
uptime:服务器已经运行的秒数
time:服务器当前的unix时间戳
version:memcache版本
pointer_size:当前操作系统的指针大小
rusage_user:进程的累计用户时间
rusage_system :进程的累计系统时间
curr_items:服务器当前存储的items数量
total_items:从服务器启动以后存储的items总数量
bytes:当前服务器存储items占用的字节数
curr_connections:当前打开着的连接数
total_connections:从服务器启动以后曾经打开过的连接数
connection_structures:服务器分配的连接构造数
cmd_get:get命令(获取)总请求次数
cmd_set:set命令(保存)总请求次数
get_hits:总命中次数
get_misses:总未命中次数
evictions:为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read:总读取字节数(请求字节数)
bytes_written:总发送字节数(结果字节数)
limit_maxbytes:分配给memcache的内存大小(字节)
threads:当前线程数
安装phpMyAdmin(可选)
phpMyAdmin是一款可用于管理MySQL,MariaDB和Drizzle数据库的图形化管理工具。它由PHP语言编写,可架构在LAMP或LNMP平台上,通过web界面来操作数据库。
在安装phpMyAdmin之前,它需要PHP支持session,支持StandardPHP Library (SPL) 扩展、JSON扩展、mbstring扩展;为了支持ZIP文件上传,需要PHP支持zip扩展;为了能够以原始比例显示JPEG图片的缩略图,需要PHP支持GD2;如果使用了cookie认证方法, PHP建议安装mcrypt扩展;为了支持XML和文档表格导入,需要安装libxml扩展;为了提高性能,建议安装ctype扩展。
查看当前PHP安装了哪些扩展(模块),可使用命令:
[root@www ~]# php -m
目前我这个系统上缺少的是mbstring、zip、GD2和mcrypt扩展。
mbstring这个扩展虽然可以通过yum命令安装,但安装后php-fpm报错说API不匹配。没办法,这个扩展的源码又不好找。好在还有PHP的源代码安装包。下面就介绍一下怎么从PHP源代码安装包安装mbstring扩展(而不重新编译PHP)。
首先进行PHP源码安装包下的ext/mbstring目录:
[root@www ~]# cd /root/php-5.6.7/ext/mbstring
执行phpize命令:
[root@www mbstring]# phpize
此时就可以进行预编译了。但在那之前,先找到php-config脚本所在路径(使用which php-config命令可以找到),我的是在/usr/local/bin/php-config,根据这个路径来执行预编译(--with-php-config 选项用于在编译扩展时指定使用哪一个版本编译):
[root@www mbstring]# ./configure --with-php-config=/usr/local/bin/php-config
进行编译:
[root@www mbstring]# make
编译完成后有提示mbstring.so模块所在目录,我将这个模块复制到PHP扩展的放置目录下(/usr/local/lib/php/extensions):
[root@www mbstring]# cp -a ./modules/mbstring.so /usr/local/lib/php/extensions
还原复制出来的mbstring.so模块的SELinux设置:
[root@www ~]# restorecon -v /usr/local/lib/php/extensions/mbstring.so
根据上面模块的放置位置,在php.ini文件里面加入相应的语句:
extension=/usr/local/lib/php/extensions/mbstring.so
重启php-fpm程序:
[root@www ~]# systemctl restart php-fpm
此时就可以看到已经加载mbstring模块了。其它的扩展应该也可以使用类似的方法进行安装,出于时间考虑,我就先不进行安装了。
接下来就是安装phpMyAdmin了。到现在为止,phpMyAdmin的最新版本为4.4.2版,这个版本兼容PHP 5.3及以上版本、MySQL 5.5及以上版本、MariaDB 5.5及以上版本。可以从它的官网http://www.phpmyadmin.net/home_page/下载,或直接使用下面的命令下载(这个是英文版来的,在它的官网有多语言版本):
[root@www~]# wget http://ncu.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.4.2/phpMyAdmin-4.4.2-english.tar.bz2
将下载下来的压缩包解压到网页根目录:
[root@www ~]# tar -jxvf phpMyAdmin-4.4.2-english.tar.bz2 -C /data/www
为了以后方便访问,将刚刚解压出来的文件夹重命名为phpmyadmin:
[root@www ~]# mv /data/www/phpMyAdmin-4.4.2-english/data/www/phpmyadmin
出于安全性考虑,进行下面的步骤。
建一个账号,账号名为phpmyadmin:
[root@www ~]# useradd phpmyadmin
给phpmyadmin账号设置密码:
[root@www ~]# passwd phpmyadmin
复制文件config.sample.inc.php生成配置文件config.inc.php:
[root@www ~]# cp /data/www/phpmyadmin/config.sample.inc.php /data/www/phpmyadmin/config.inc.php
将配置文件config.inc.php的权限改为664:
[root@www ~]# chmod 664 config.inc.php
将phpMyAdmin所有文件的所属用户改为phpmyadmin,用户组改为nginx(与nginx程序一致):
[root@www ~]# chown -R phpmyadmin:nginx /data/www/phpmyadmin
切换到账号phpmyadmin进行操作:
[root@www ~]# su - phpmyadmin
接下来所需做的就是修改配置文件config.inc.php,进行身份认证的相关设置了。有几种身份认证的方法,包括在配置文件里面直接设置明文账号、HTTP认证方法、cookie认证方法等。不过,HTTP和cookie认证方法的密码传输也是明文的,除非使用HTTPS协议。在cookie认证方法中,当你从phpMyAdmin的web界面登录后,账号和密码同时被存储到cookie中,并且密码使用AES算法进行了加密。会话结束后,密码就会删除。我这里就使用cookie认证方法好了。
先准备一串任意长度的数字和字母随机组合(如1b8afc186ehc97d6uwr3),这串组合是用于AES算法加密计算的,可以随便填写,将它填入配置文件config.inc.php中下面这一项:
$cfg[‘blowfish_secret‘] = ‘1b8afc186ehc97d6uwr3‘;
同时确认配置文件config.inc.php中下面这一项是这么设置的:
$cfg[‘Servers‘][$i][‘auth_type‘] = ‘cookie‘;
这样就设置好cookie认证了。接下来只要使用浏览器访问phpmyadmin主目录下的index.php,使用数据库的用户名和密码就可以登陆来管理数据库了。如果没什么问题的话,应该就可以看到下面这个登录界面了:
这样就登录进来了,还可以看到之前创建的数据库testdb。
虽然phpMyAdmin已安装好,但出于安全考虑,可能还有一些措施需要进行,比如,将phpMyAdmin主目录下的将setup目录移除,禁止访问phpMyAdmin主目录下的libraries子目录和setup/lib子目录等。另外,可能还需要考虑在nginx中设置phpMyAdmin主目录的访问权限。不过这些做起来还是比较麻烦的,所以,暂时就先这样了。
备注:
phpMyAdmin在线文档:http://docs.phpmyadmin.net/en/latest/index.html
本文出自 “技术永不止步” 博客,请务必保留此出处http://techsnail.blog.51cto.com/9807313/1636000
原文:http://techsnail.blog.51cto.com/9807313/1636000