- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文讲述了ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法。分享给大家供大家参考,具体如下:
ubuntu apt-get方式安装nginx 。
参考:
http://nginx.org/en/linux_packages.html 。
首先 。
in order to authenticate the nginx repository signature and to eliminate warnings about missing PGP key during installation of the nginx package, it is necessary to add the key used to sign the nginx packages and repository to the apt program keyring. 。
下载密钥 。
1
|
wget http:
//nginx
.org
/keys/nginx_signing
.key
|
然后添加 。
1
|
sudo
apt-key add nginx_signing.key
|
加入nginx的repository 。
1
2
|
cd
/etc/apt/sources
.list.d/
sudo
vim nginx.list
|
若安装稳定版本,则输入以下内容 。
1
2
|
deb http:
//nginx
.org
/packages/ubuntu/
trusty nginx
deb-src http:
//nginx
.org
/packages/ubuntu/
trusty nginx
|
若最新版本,则输入以下内容:
1
2
|
deb http:
//nginx
.org
/packages/mainline/ubuntu/
trusty nginx
deb-src http:
//nginx
.org
/packages/mainline/ubuntu/
trusty nginx
|
然后安装 。
1
2
|
apt-get update
apt-get
install
nginx
|
安装完成 。
1
2
|
nginx -
v
nginx version: nginx
/1
.8.0
|
MariaDB数据库安装 。
MariaDB是一个开源数据库且100%与MySQL兼容,目标是替代MySQL数据库.
MariaDB的背景
2008年,MySQL被后来被Oracle在2010年收购的Sun Microsystems收购了。 最初被Sun公司的收购由于符合项目的需要而受到MySQL社区的欢呼,但是这种情绪并没有持续太久,接下来被Oracle的收购,不幸期望远远低于预 期。许多MySql的开发者离开了Sun和Oracle公司开始新的项目。在他们中间就有MySQL的创建者以及项目长期技术带头人之一的Michael 'Monty' Widenius。Monty和他的团队创建了MySQL的一个fork版本并且命名它为MariaDB.
默认上MariaDB的包并没有在Ubuntu仓库中。要安装MariaDB,我们首先要设置MariaDB仓库.
设置 MariaDB 仓库 。
1
2
3
4
5
6
7
8
|
sudo
apt-get
install
software-properties-common
sudo
apt-key adv --recv-keys --keyserver hkp:
//keyserver
.ubuntu.com:80 0xcbcb082a1bb943db
Executing: gpg --ignore-
time
-conflict --no-options --no-default-keyring --homedir
/tmp/tmp
.3GolFM9PZ5 --no-auto-check-trustdb --trust-model always --keyring
/etc/apt/trusted
.gpg --primary-keyring
/etc/apt/trusted
.gpg --recv-keys --keyserver hkp:
//keyserver
.ubuntu.com:80 0xcbcb082a1bb943db
gpg: requesting key 1BB943DB from hkp server keyserver.ubuntu.com
gpg: key 1BB943DB: public key
"MariaDB Package Signing Key <package-signing-key@mariadb.org>"
imported
gpg: Total number processed: 1
gpg: imported: 1
sudo
add-apt-repository
'deb http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main'
|
安装 MariaDB
1
2
|
sudo
apt-get update
sudo
apt-get
install
mariadb-server
|
在安装中,你会被要求设置MariaDB的root密码.
从命令行连接到MariaDB
1
2
3
4
5
6
7
8
|
keyun@ubuntu-server:~$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection
id
is 43
Server version: 10.0.23-MariaDB-1~trusty-log mariadb.org binary distribution
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear
the current input statement.
MariaDB [(none)]>
|
MariaDB 服务 。
1
2
|
sudo
/etc/init
.d
/mysql
stop
sudo
/etc/init
.d
/mysql
start
|
以上只是在Ubuntu上装完MariaDB,下面要设置MariaDB允许远程访问 。
1、如果Ubuntu有设置防火墙或者iptables规则的话,请自行打开 。
2、3306端口是不是没有打开?
使用nestat命令查看3306端口状态:
1
2
|
~
# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
|
从结果可以看出3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问.
解决方法:修改/etc/mysql/my.cnf文件。打开文件,找到下面内容:
1
2
3
|
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
|
把上面这一行注释掉或者把127.0.0.1换成合适的IP,建议注释掉.
重新启动后,重新使用netstat检测:
1
2
|
~
# netstat -an | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
|
1. 把用户权限分配各远程用户.
登录到mysql服务器,使用grant命令分配权限 。
。
完成后使用mysql命令连接,提示成功,为了确保正确可以再远程登陆测试一下.
安装PHP7 。
因为是最小化安装的ubuntu,先安装make 。
1
|
sudo
apt-get
install
make
|
下载源码 。
1
2
3
|
sudo
wget https:
//downloads
.php.net/~ab
/php-7
.0.2RC1.
tar
.gz
sudo
tar
-zvxf php-7.0.2RC1.
tar
.gz
cd
php-7.0.2RC1
|
根据鸟哥指示,安装gcc4.8 。
使用新一点的编译器, 推荐GCC 4.8以上, 因为只有GCC 4.8以上PHP才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升(Wordpres的QPS角度衡量) 其实GCC 4.8以前的版本也支持, 但是我们发现它支持的有Bug, 所以必须是4.8以上的版本才会开启这个特性. 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
sudo
apt-get
install
python-software-properties
sudo
add-apt-repository ppa:ubuntu-toolchain-r
/test
sudo
apt-get update
sudo
apt-get
install
gcc-4.8 g++-4.8
sudo
update-alternatives --remove-all gcc
sudo
update-alternatives --remove-all g++
sudo
update-alternatives --
install
/usr/bin/gcc
gcc
/usr/bin/gcc-4
.8 20
sudo
update-alternatives --
install
/usr/bin/g
++ g++
/usr/bin/g
++-4.8 20
sudo
update-alternatives --config gcc
sudo
update-alternatives --config g++
sudo
apt-get update
sudo
apt-get upgrade -y
sudo
apt-get dist-upgrade
|
查看版本 。
1
2
3
4
5
|
gcc --version
gcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is
free
software; see the
source
for
copying conditions. There is NO
warranty; not even
for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
先安装依赖 。
1
2
3
4
5
6
7
8
|
sudo
apt-get
install
libxml2
sudo
apt-get
install
libxml2-dev
sudo
apt-get
install
openssl
sudo
apt-get
install
libssl-dev
sudo
apt-get
install
curl
sudo
apt-get
install
libcurl4-openssl-dev
sudo
apt-get
install
libgd-dev
sudo
apt-get
install
libxslt-dev
|
因本机lib目录在/usr/lib/x86_64-linux-gnu 。
1
2
3
4
5
6
7
|
.
/configure
–prefix=
/usr/local/php
–with-curl –with-freetype-
dir
–with-gd –with-gettext –with-iconv-
dir
–with-kerberos –with-libdir=lib
/x86_64-linux-gnu
–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 –
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
sudo
make
sudo
make
install
sudo
cp
php.ini-development
/usr/local/php/lib/php
.ini
sudo
cp
/usr/local/php/etc/php-fpm
.conf.default
/usr/local/php/etc/php-fpm
.conf
sudo
cp
/usr/local/php/etc/php-fpm
.d
/www
.conf.default
/usr/local/php/etc/php-fpm
.d
/www
.conf
sudo
cp
.
/sapi/fpm/init
.d.php-fpm
/etc/init
.d
/php-fpm
|
最后一条命令,作用是php-fpm随系统自启动.
利用php自带的php-fpm管理工具,可以很方便的start,stop,restart 把管理工具从源码包里放到php/sbin文件夹里,方便使用 。
1
2
3
|
sudo
cp
.
/sapi/fpm/init
.d.php-fpm
/usr/local/php/sbin/
sudo
cd
/usr/local/php/sbin/
sudo
chmod
755 init.d.php-fpm
|
配置nginx与php-fpm后,通过phpinfo(),看到如下 。
至此,php7安装成功.
安装apache ab压测工具 。
1
|
sudo
apt-get
install
apache2-utils
|
压测一下 。
1
|
echo
"hello world"
|
1
|
ab -n 1000 -c 20 http:
//10
.81.36.158:9528/
|
QPS 7000左右 。
接下来开启opcache 。
1
|
sudo
vi
/usr/local/php/lib/php
.ini
|
找到opcache设置 。
添加以下内容 。
1
2
3
|
zend_extension=opcache.so
opcache.
enable
=1
opcache.enable_cli=1
|
重启php-fpm 。
1
|
sudo
kill
-USR2 `
cat
/usr/local/php/var/run/php-fpm
.pid
|
或者 。
1
|
sudo
/usr/local/php/sbin/init
.d.php-fpm restart
|
再次测试,QPS上升到8000以上 。
开启HugePages 。
再次测试,QPS偶尔能彪上10000 。
安装YAF 。
1
2
|
sudo
wget http:
//pecl
.php.net
/get/yaf-3
.0.2.tgz
sudo
tar
-zvxf yaf-3.0.2.tgz
|
解压缩以后, 进入Yaf的源码目录, 依次执行(其中PHP_BIN是PHP的bin目录)
1
|
sudo
/usr/local/php/bin/phpize
|
报错:
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. 。
解决办法:
1
2
3
|
sudo
apt-get
install
m4
sudo
apt-get
install
autoconf
sudo
apt-get
install
libpcre3 libpcre3-dev
|
phpize执行后:
1
2
3
4
|
sudo
.
/configure
--with-php-config=
/usr/local/php/bin/php-config
sudo
make
sudo
make
install
Installing shared extensions:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
|
安装成功,修改php.ini,加入yaf扩展 。
1
|
extension=yaf.so
|
重启php-fpm,查看phpinfo() 。
安装yaf成功 。
PS:使用PDO过程中,出现 SQLSTATE[HY000] [2002] No such file or directory 错误 。
经查,是mysql.sock找不到 。
在phpinfo()中,看到pdo_mysql.default_socket的值是/tmp/mysql.sock 。
但是在服务器上并没有这个文件 。
通过sudo service mysql status 命令 。
1
2
3
4
5
6
7
|
*
/usr/bin/mysqladmin
Ver 9.1 Distrib 10.0.23-MariaDB,
for
debian-linux-gnu on x86_64
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Server version 10.0.23-MariaDB-1~trusty-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket
/var/run/mysqld/mysqld
.sock
Uptime: 3 min 28 sec
|
找到sock文件的位置在/var/run/mysqld/mysqld.sock 。
于是在/tmp下 做个软链接 。
1
|
sudo
ln
-s
/var/run/mysqld/mysqld
.sock mysql.sock
|
问题解决 。
通过localhost无法访问到数据库,但是通过IP可以 。
分析:这是典型的socket没有正确设置的情况.
连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库.
根据上面的sudo service mysql status命令 。
得到sock文件的位置在/var/run/mysqld/mysqld.sock 。
于是,修改php.ini 。
1
|
pdo_mysql.default_socket=
/var/run/mysqld/mysqld
.sock
|
重启php-fpm 。
问题解决 。
希望本文所述对大家ubuntu服务器配置有所帮助.
最后此篇关于ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法的文章就讲到这里了,如果你想了解更多关于ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!