2016年12月

关于更Bolg吐槽

由于前段时间的各种问题导致无心更Bolg,站点受到攻击,域名被墙,服务器迁移了好几次等.....种种坑爹各种原因,后面笔记只能选用了有道云笔记,倒是发现也是挺方便好用的,也算是比较推荐的。

另外此博客也算是仅仅记录一点点的学习记录笔记吧。

Nginx开启支持pathinfo模式

配置nginx,支持php的pathinfo路径模式
nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。
本文基于安装lnmp一键安装包,添加虚拟主机情况下进行修改。如你要添加一个网站www.linuxeye.com支持pathinfo,配置文件nginx.conf不用任何改变(个人习惯),参考lnmp一键安装包
cat vhost/www.linuxeye.com.conf
server {
listen  80;
server_name     www.linuxeye.com;
access_log  logs/www.linuxeye.com.log combined;
root /home/wwwroot/www.linuxeye.com;
error_page  404  /404.html;
index index.html index.htm index.php ;
location / {
        index  index.php;
        if (!-e $request_filename) {
        rewrite  ^/(.*)$  /index.php/$1  last;
        break;
        }
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi_pathinfo.conf;
set $real_script_name $fastcgi_script_name;
    if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
    set $real_script_name $1;
    set $path_info $2;
        }
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
        }
}
要点:
1.~ \.php 后面不能有$  以便能匹配所有 *.php/* 形式的url
2. 通过设置更改 SCRIPT_FILENAME
cat fcgi_pathinfo.conf
#fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
#fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #这两行是需要注释掉的,请注意
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
以LNMP为例若以上办法依然不能解决:
增加一行include enable-php-pathinfo.conf;
删除include fcgi_pathinfo.conf;
server
{
listen 80;
#listen [::]:80;
server_name y-yun.top;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/y-yun.top/wordpress;
include other.conf;
#error_page 404 /404.html;
include enable-php-pathinfo.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
location / {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#include fcgi_pathinfo.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
access_log /home/wwwlogs/www.markss.xyz.log;
}
以上部分参考转载www.linuxeye.com

多主一从配置相关问题

主库配置请参考主从同步配置;
从库my.cnf相关配置:
[client]
#password = your_password
#port = 3306
#socket = /tmp/mysql.sock
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
[mysqld1]
port = 3306
socket = /tmp/mysql1.sock
datadir =/home/mysql/data1
log-error = /home/mysql/logs/mysql1_error.log
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
tmp_table_size = 16M
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 20
expire_logs_days = 10
default_storage_engine = InnoDB
innodb_data_home_dir =/home/mysql/data1
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir =/home/mysql/data1
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqld2]
port = 3307
socket =/tmp/mysql2.sock
datadir = /home/mysql/data2
log-error = /home/mysql/logs/mysql2_error.log
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
tmp_table_size = 16M
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 40
expire_logs_days = 10
default_storage_engine = InnoDB
innodb_data_home_dir = /home/mysql/data2
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /home/mysql/data2
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
初始化:
mysql1:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql/data1/ --user=mysql
mysql2:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql/data2/ --user=mysql
启动:
/usr/local/mysql/bin/mysqld_multi --config-file=/etc/my.cnf start 1-2
/usr/local/mysql/bin/mysqld_multi start 1-2
报错:找不到 my_print_defaults,
解决:ln -s /usr/local/mysql/bin/my_print_defaults /usr/bin/
启动后:
lsof -i:3306
lsof -i:3307
两个端口都有mysql在监听的话就表示启动成功了
分别访问mysql实例1,实例2
# /usr/local/mysql/bin/mysql -uroot -p123456 -P3306 -S /tmp/mysql1.sock
# /usr/local/mysql/bin/mysql -uroot -p123456 -P3307 -S /tmp/mysql2.sock
分别访问两个实例,删除多余用户,修改用户密码,修改用户的访问权限

无法使用hostname连接mysql

错误:InternalError: (1042, u"Can't get hostname for your address")
解决:
my.cnf:
[mysqld] skip-name-resolve

lxml安装出错

sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging python-pyrex python-pyside.qtopengl idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-qt4 python-qt4-gl libgle3 python-dev
sudo easy_install greenlet
sudo easy_install gevent