https://github.com/c4ys/yii2-ueditor-widget
在原来的基础上,增加了允许配置serverUrl以及uploadPath
分类目录归档:PHP
centos7基本系统安装(php-fpm,mariadb,nginx,epel)
安装epel
su -c 'rpm -Uvh http://mirrors.hust.edu.cn/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm'
su -c 'yum install epel-release-7-0.2'
安装mariadb,php,nginx
su -c 'yum install mariadb mariadb-server php php-cli php-fpm php-pdo nginx'
创建数据库账户
CREATE USER 'th'@'%' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON * . * TO 'th'@'%' IDENTIFIED BY '***';
flush privileges;
fedora开放环境一键安装
sudo不需要密码
visudo
%wheel ALL=(ALL) NOPASSWD: ALL
开发环境
yum groupinstall "Development tools" -y
右键打开控制台窗口
yum install nautilus-open-terminal
禁止selinux
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
安装vscode
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
vim & git & hg & svn
yum install vim git hg subversion
nginx & php & mysql
yum install mariadb nginx php-cli php-devel php-mbstring php-opcache php-mysqlnd php-intl php-mcrypt php-pdo php-xml php-pecl-memcache php-pecl-redis php-pecl-sphinx php-pecl-zip php-pgsql php-xdebug php-gd php-pecl-redis php-pecl-imagick php-fpm
python
yum install python-virtualenv pyvenv ~/py cd ~/py/bin source activate wget https://bootstrap.pypa.io/get-pip.py python get-pip.py
golang
wget http://golang.org/dl/go1.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.3.linux-amd64.tar.gz
mkdir ~/gosrc
vim ~/.bash_profile
设置GOROOT与GOPATH
GOPATH=$HOME/gosrc
GOROOT=/usr/local/go
export GOROOT
export GOPATH
PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export PATH
修改系统参数
vi /etc/sysctl.conf
fs.file-max = 500000
vi /etc/security/limits.conf
* soft nofile 60000
* hard nofile 60000
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 4096
root soft nproc unlimited
ubuntu安装php的redis扩展
下载安装扩展
首先下载包,http://pecl.php.net/package/redis
sudo aptitude install php5-dev sudo wget http://pecl.php.net/get/redis-2.2.5.tgz sudo tar zxf redis-2.2.5.tgz cd redis-2.2.5/ sudo phpize sudo ./configure sudo make sudo make install
修改ini配置
sudo vim /etc/php5/fpm/conf.d/redis.ini
extension=redis.so
测试运行
sudo php5-fpm -t sudo php5-fpm -m sudo service php5-fpm reload
ubuntu安装最新的xhprof
安装xhprof
aptitude install python-software-properties add-apt-repository ppa:brianmercer/php5-xhprof aptitude update aptitude install php5-xhprof graphviz
其中graphviz包用来生成图形
xdebug配置
使用以下配置时,默认不开启PROFILE,只有当GET,POST,COOKIE存在XDEBUG_PROFILE时才会生效
zend_extension=xdebug.so xdebug.auto_trace=0 xdebug.trace_enable_trigger=1 xdebug.collect_params=1 xdebug.collect_return=1 xdebug.trace_output_dir = "/var/log/xdebug" xdebug.remote_enable=true xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_dir = "/var/log/xdebug" ;xdebug.profiler_output_name = "cachegrind.out.%t.%p"
nginx 502 (Resource temporarily unavailable)
查看连接数和当前的连接数
netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep EST | wc -l
查看IP访问次数
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
实时查看连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"
返回结果示例
LAST_ACK 5 SYN_RECV 30 ESTABLISHED 1597 FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057
说明
- SYN_RECV 表示正在等待处理的请求数;
- ESTABLISHED 表示正常数据传输状态;
- TIME_WAIT 表示处理完毕,等待超时结束的请求数;
- FIN_WAIT1 表示server端主动要求关闭tcp连接;
- FIN_WAIT2 表示客户端中断连接;
- LAST_ACK 关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接;
解决办法
/etc/security/limits.conf
www-data soft nproc 51200 www-data hard nproc 16384 www-data soft nofile 51200 www-data hard nofile 51200
php-fpm配置及管理(无须重启,即可重新加载配置及LOG日志)
PHP-FPM参数
php-fpm {start|stop|quit|restart|reload|logrotate}
--start 启动php的fastcgi进程
--stop 强制终止php的fastcgi进程
--quit 平滑终止php的fastcgi进程
--restart 重启php的fastcgi进程
--reload 重新平滑加载php的php.ini
--logrotate 重新启用log文件
master进程信号
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例:
php-fpm 关闭:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`
php+nginx服务器性能记录及分析
facebook hack 试用
fedora 20下安装hhvm
添加hhvm源:
vim /etc/yum.repos.d/hhvm.repo
[hhvm] name=HHVM for Fedora $releasever - $basearch baseurl=http://dl.hhvm.com/fedora/$releasever/$basearch/
更新
wget http://dl.hhvm.com/conf/hhvm.gpg.key sudo rpm --import hhvm.gpg.key sudo yum install hhvm
性能比较
PHP hello world
hhvm -m daemon -p 9910 t.php ab -n10000 -c100 http://localhost:9910/t.php # 15687/sec ab -n10000 -c100 http://localhost/t.php # nginx+fpm: 11016/sec
Yii test
hhvm -m daemon -p 9910 yiitest/index.php ab -n10000 -c100 http://localhost:9910/yiitest/index.php # 4039/sec ab -n10000 -c100 http://localhost/yiitest/index.php # nginx+fpm: 259/sec
vim hack.php
<?hh echo 'hello';
test hack.php
hhvm -m daemon -p 9910 hack.php ab -n10000 -c100 http://localhost:9910/hack.php # 15169/sec 基本无变化,可能因为程序太简单