本文講述了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.
下載密鑰
wget http://nginx.org/keys/nginx_signing.key
然后添加
sudo apt-key add nginx_signing.key
加入nginx的repository
cd /etc/apt/sources.list.d/sudo vim nginx.list
若安裝穩定版本,則輸入以下內容
deb http://nginx.org/packages/ubuntu/ trusty nginxdeb-src http://nginx.org/packages/ubuntu/ trusty nginx
若最新版本,則輸入以下內容:
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginxdeb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
然后安裝
apt-get updateapt-get install nginx
安裝完成
nginx -vnginx 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 倉庫
sudo apt-get install software-properties-commonsudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943dbExecuting: 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 0xcbcb082a1bb943dbgpg: requesting key 1BB943DB from hkp server keyserver.ubuntu.comgpg: key 1BB943DB: public key "MariaDB Package Signing Key <package-signing-key@mariadb.org>" importedgpg: Total number processed: 1gpg: imported: 1sudo add-apt-repository 'deb http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main'
安裝 MariaDB :
sudo apt-get updatesudo apt-get install mariadb-server
在安裝中,你會被要求設置MariaDB的root密碼。
從命令行連接到MariaDB :
keyun@ubuntu-server:~$ mysql -u root -pEnter password:Welcome to the MariaDB monitor. Commands end with ; or /g.Your MariaDB connection id is 43Server version: 10.0.23-MariaDB-1~trusty-log mariadb.org binary distributionCopyright (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 服務
sudo /etc/init.d/mysql stopsudo /etc/init.d/mysql start
以上只是在Ubuntu上裝完MariaDB,下面要設置MariaDB允許遠程訪問
1、如果Ubuntu有設置防火墻或者iptables規則的話,請自行打開
2、3306端口是不是沒有打開?
使用nestat命令查看3306端口狀態:
~# netstat -an | grep 3306tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
從結果可以看出3306端口只是在IP 127.0.0.1上監聽,所以拒絕了其他IP的訪問。
解決方法:修改/etc/mysql/my.cnf文件。打開文件,找到下面內容:
# 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檢測:
~# netstat -an | grep 3306tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
1. 把用戶權限分配各遠程用戶。
登錄到mysql服務器,使用grant命令分配權限
完成后使用mysql命令連接,提示成功,為了確保正確可以再遠程登陸測試一下。
安裝PHP7
因為是最小化安裝的ubuntu,先安裝make
sudo apt-get install make
下載源碼
sudo wget https://downloads.php.net/~ab/php-7.0.2RC1.tar.gzsudo tar -zvxf php-7.0.2RC1.tar.gzcd 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以上的版本才會開啟這個特性.
sudo apt-get install python-software-propertiessudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get updatesudo apt-get install gcc-4.8 g++-4.8sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20sudo update-alternatives --config gccsudo update-alternatives --config g++sudo apt-get updatesudo apt-get upgrade -ysudo apt-get dist-upgrade
查看版本
gcc --versiongcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5Copyright (C) 2015 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
先安裝依賴
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
./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-zipsudo makesudo make installsudo cp php.ini-development /usr/local/php/lib/php.inisudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.confsudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.confsudo cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
最后一條命令,作用是php-fpm隨系統自啟動。
利用php自帶的php-fpm管理工具,可以很方便的start,stop,restart
把管理工具從源碼包里放到php/sbin文件夾里,方便使用
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壓測工具
sudo apt-get install apache2-utils
壓測一下
echo "hello world"
ab -n 1000 -c 20 http://10.81.36.158:9528/
QPS 7000左右
接下來開啟opcache
sudo vi /usr/local/php/lib/php.ini
找到opcache設置
添加以下內容
zend_extension=opcache.soopcache.enable=1opcache.enable_cli=1
重啟php-fpm
sudo kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid
或者
sudo /usr/local/php/sbin/init.d.php-fpm restart
再次測試,QPS上升到8000以上
開啟HugePages
參考:http://www.49028c.com/article/85491.htm
再次測試,QPS偶爾能彪上10000
安裝YAF
sudo wget http://pecl.php.net/get/yaf-3.0.2.tgzsudo tar -zvxf yaf-3.0.2.tgz
解壓縮以后, 進入Yaf的源碼目錄, 依次執行(其中PHP_BIN是PHP的bin目錄):
sudo /usr/local/php/bin/phpize
報錯:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
解決辦法:
sudo apt-get install m4sudo apt-get install autoconfsudo apt-get install libpcre3 libpcre3-dev
phpize執行后:
sudo ./configure --with-php-config=/usr/local/php/bin/php-configsudo makesudo make installInstalling shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
安裝成功,修改php.ini,加入yaf擴展
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 命令
* /usr/bin/mysqladmin Ver 9.1 Distrib 10.0.23-MariaDB, for debian-linux-gnu on x86_64Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.Server version 10.0.23-MariaDB-1~trusty-logProtocol version 10Connection Localhost via UNIX socketUNIX socket /var/run/mysqld/mysqld.sockUptime: 3 min 28 sec
找到sock文件的位置在/var/run/mysqld/mysqld.sock
于是在/tmp下 做個軟鏈接
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
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
重啟php-fpm
問題解決
希望本文所述對大家ubuntu服務器配置有所幫助。
新聞熱點
疑難解答