日期:2014-01-09 ~ 2014-01-13
说明:本文章中的全部命令都是在root账号权限下安装执行
TAG:Ubuntu,MySQL, PHP, Nginx, Gearman
更新记录:2014-02-11 更改了gearman删除了未验证的安装方式,增加了对于pecl与php不兼容时的解决办法
apt-get update
安装过程中会提示输入root用户密码
apt-get install mysql-server
mysql默认端口为3306
检查进程是否存在
ps aux | grep mysqld
mysql 2469 0.1 8.6 558284 43436 ? Ssl 10:34 0:00 /usr/sbin/mysqld
检查端口监听
netstat -anl | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
启动mysql
service mysql start
停止mysql
service mysql restart
重启mysql
service mysql restart
apt-get install php5-fpm php5-cli
apt-get install php-pear php5-dev
pecl install pdo
pecl install pdo_mysql
apt-get install php5-memcache php5-curl php5-mysql php5-sqlite php5-gd
如检查PDO扩展是否安装正常
php5 -i | grep pdo
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
pdo_mysql
pdo_mysql.default_socket =>/var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
pdo_sqlite
或者直接到/usr/lib/php5/20090626检查是否有对应so
也可以在安装了nginx之后通过phpinfo()进行查看,参考下面Nginx安装部分。
apt-cache search php5
cd /etc/php5/fpm/
vi php.ini
打开error log
…
log_errors = On
…
error_log = php_errors.log
…
重启php5-fpm应用配置文件,此时打开的对应的php_errors.log文件在/var/log/目录下
service php5-fpm restart
apt-get install memcached
memcached默认端口为11211
检查进程是否存在
ps aux | grep memcached
memcache 16936 0.0 0.2 323224 1004 ? Sl Jan10 0:07 /usr/bin/memcached -m64 -p 11211 -u memcache -l 127.0.0.1
检查端口监听
netstat -anl | grep 11211
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN
udp 0 0 127.0.0.1:11211 0.0.0.0:*
启动服务
service memcached start
停止服务
service mysql restart
重启服务
service mysql restart
aptitude install python-software-properties
add-apt-repository ppa:gearman-developers/ppa
aptitude update
aptitude install libevent-dev gearman libgearman2 libgearman-dev libdrizzle0
安装PHP Gearman扩展
pecl install gearman
注意:如果pecl没有正确配置可能会导致不兼容的问题发生
如以下错误是由于pecl配置指向了更早前安装的高版本的php 两者api version不同而导致兼容性问题发生
PHPStartup: Unable to load dynamic library '/usr/lib/php5/20090626/gearman.so' -/usr/lib/php5/20090626/gearman.so: undefined symbol: zend_new_interned_stringin Unknown on line 0
如果出现了这个问题可以配置pecl指向当前使用php环境即可解决:
pecl config-set php_ini /etc/php5/cli/php.ini
pecl config-set php_bin /etc/php5
配置PHP扩展
cd /etc/php5/fpm/conf.d
touch gearman.ini
vi gearman.ini
输入配置信息
; configuration for php gearman module
extension=gearman.so
重启php5-fpm应用配置
service php5-fpm restart
CLI方式检查gearman扩展是否激活
php5 -i | grep gearman
/etc/php5/cli/conf.d/gearman.ini,
gearman
gearman support => enabled
libgearman version => 1.1.0
安装必要依赖项:
apt-get install gcc autoconf bison flex libtool make libboost-all-dev libcurl4-openssl-dev curl libevent-dev memcached uuid-dev libsqlite3-dev libmysqlclient-dev libcloog-ppl0
创建下载目录(可以忽略)
mkdir /downloads
cd /downloads
下载源代码
wget https://launchpad.net/gearmand/1.2/1.1.2/+download/gearmand-1.1.2.tar.gz
tar –zxvf gearmand-1.1.2.tar.gz
cd gearmand-1.1.2/
./configure
make install
make test
apt-get install libgearman-dev
apt-get install gearman-job-server
pecl install gearman
安装完成之后,Gearman默认端口号为4730,可以通过以下方式检查:
检查进程是否正常开启
ps aux | grep gearman
gearman 21830 0.0 0.2 487376 1476 ? Ssl Jan10 0:05 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid--user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log--listen=127.0.0.1
检查端口是否正常监听
netstat -aln | grep 4730
tcp 0 0 127.0.0.1:4730 0.0.0.0:* LISTEN
需要使用supervisor管理监控管理后台守备进程
apt-get install supervisor
cd /etc/supervisor/conf.d/
touch robot.conf
vi robot.conf
配置监控的进程或者脚本
[program:Robot]
directory = /var/script/robot/ ; 守备进程PHP脚本所在目录
command = php5 /var/script/robot/Robot.php// CLI方式执行PHP脚本作为守备进程
autostart=true // 自动开始
autorestart=true // 崩溃之后自动重启
stdout_logfile = /var/log/supervisor/sc_robot.log// 标准输出文件
stderr_logfile = /var/log/supervisor/ sc_robot.err// 错误输出文件
supervisorctl
更新应用配置文件
注意:如果配置中设置autostart=true,在这个更新过程中程序将会启动,否则对应已经启动的程序如果设置autostart=false会导致程序停止
supervisor> update
Robot: added process group
查看运行状况
supervisor> status
Robot RUNNING pid 14686, uptime 0:01:50
启动进程
supervisor> start Robot
Robot: started
停止进程
supervisor> stop Robot
Robot: stopped
重启进程
supervisor> restart Robot
Robot: stopped
Robot: started
退出supervisor控制台
supervisor> quit
apt-get install nginx
创建web目录
cd /var
mkdir www
创建web配置文件
cd /etc/nginx/sites-available
cp default mysite
修改配置文件
vi mysite
server {
listen 80; ## listen for ipv4;this line is default and implied
listen [::]:80 defaultipv6only=on; ## listen for ipv6
…
root/var/www;
…
server_name192.168.1.1;
…
#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info^(.+\.php)(/.+)$;
# # NOTE: You should have"cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_passunix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
include fastcgi_params;
}
…
}
删除自带的配置文件并应用新的配置文件
cd ../sites-enabled/
rm default -f
ln -s ../sites-available/site site
service nginx start
ps aux | grep nginx
root 3127 0.0 0.2 76888 1300 ? Ss 10:51 0:00 nginx: master process/usr/sbin/nginx
www-data 3128 0.0 0.3 77204 1992 ? S 10:51 0:00 nginx: worker process
www-data 3129 0.0 0.3 77204 1992 ? S 10:51 0:00 nginx: worker process
www-data 3130 0.0 0.3 77204 1992 ? S 10:51 0:00 nginx: worker process
www-data 3131 0.0 0.3 77204 1732 ? S 10:51 0:00 nginx: worker process
启动nginx
service nginx start
停止nginx
service nginx stop
重启nginx
service nginx restart
配置文件更改,应用配置文件:
nginx –s reload
注意:只有在nginx服务已经启动的时候才可以执行这个命令,否则会出现如下错误:
nginx -s reload
nginx: [error] open()"/var/run/nginx.pid" failed (2: No such file or directory)
cd /var/www
echo “phpinfo.php
在浏览器中打开对应的页面并查看扩展是否正确
http://192.168.1.1/phpinfo.php
创建项目需要日志目录
cd /var/log
mkdir project
修改日志目录所有者和组,让PHP进程有足够权限写入文件
chown -R www-data:www-data project/
查看内存,CPU使用状况
top
SHIFT + M 查看根据内存使用情况降序排序
SHIFT + P 根据CPU占用率降序排序
SHIFT + N 根据PID降序排序
l Gearman 安装及实现消息队列
l GearmanJob Server
l Gearmaninstalling