百度工具常见问题

百度统计中如何排除自己的IP?

公司内部人员经常访问网站,这会使得数据出现虚高,同时也无法判断CTR等数据的真实性。百度统计实际上在网站中心下提供了排除指定IP、排除来源网站域名、排除受访网站域名、跨域监控、设置转化等一系列功能。进入百度统计,点击网站中心在统计规则设置导航下的排除IP地址中进行设置即可:

百度统计排除IP

注:百度统计中会提示当前IP,另外想要单独获取当前IP可在百度中直接搜索ip或访问whatismyip.com等站点。

百度搜索图片缩略图:图片比例最好尽量符合121:75

SEO百度推荐做法

1.添加ETag

方法:在.htaccess中添加一行内容

FileETag MTime Size

详细解释:http://zhanzhang.baidu.com/college/articleinfo?id=457?edm1001

 

XAMPP常见问题

Mac OS下使用XAMPP的PHP

在terminal中输入which php查看显示的路径如果是/usr/bin/php则说明使用的是系统php,想要修改成XAMPP的PHP,临时修改,直接在terminal中执行

export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"

这时再输入which php,会发现已经更改为/Applications/XAMPP/xamppfiles/bin/php了,但这只是临时的方法,一旦关闭terminal就会失效。

另一种永久生效的方法是

sudo nano ~/.bash_profile
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH" //添加这段内容并保存

然后执行.bash_profile,重启terminal,再次运行which php时会发现显示的还是/Applications/XAMPP/xamppfiles/bin/php

如何在XAMPP上配置多站点?

XAMPP中默认的网站根目录在D:\xampp\htdocs下(以安装在D盘下为例),默认站点访问地址是http://localhost,这些实际上都可以通过配置来进行更改,这里以配置多站点来解释这个问题以及其它相关配置。

打开主配置文件D:\xampp\apache\conf\httpd.conf,取消Include conf/extra/httpd-vhosts.conf前面的注释即#,这样就可以像Linux一样进行多站点的配置。

打开D:\xampp\apache\conf\extra\httpd-vhosts.conf,删除NameVirtualHost *:80前面的#,然后在该文件最下面添加


    DocumentRoot "d:/site1"
    ServerName site1.local.com

    DocumentRoot "d:/site2"
    ServerName site2.local.com

...

根据具体情况可添加多个站点,当然要保证站点可以访问还需要修改host文件,C:\Windows\System32\Drivers\etc\hosts

127.0.0.1			site1.local.com
127.0.0.1			site2.local.com
...

这样多站点就配置好了,不过在这时如果访问http://site1.local.com,会出现如下报错:

Access forbidden!

You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.

If you think this is a server error, please contact the webmaster.

Error 403

192.168.1.1
Apache/2.4.10 (Win32) OpenSSL/1.0.1h PHP/5.4.34

这是因为还缺少一步配置,没有设置访问权限,打开D:\xampp\apache\conf\httpd.conf,添加

<Directory "d:/site1">
Require all granted
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Allow,Deny
Allow from all

...

这时重启一下Apache就大功告成了

Uncaught exception ‘PDOException’

以下错误出现在Mac环境下的Xampp中,报错是关于Magento的

Fatal error: Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000] [2002] No such file or directory’ in /Applications/XAMPP/xamppfiles/htdocs/magento/lib/Zend/Db/Adapter/Pdo/Abstract.php:129

这一问题的解决方案是打开Terminal,创建一个软链接,具体指令如下:

sudo mkdir /var/mysql
cd /var/mysql
sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

Excel常见问题

此文档中包含宏…
Excel表格如何另存为图片?
如何查询或替换Excel中的?和*

此文档中包含宏…

在保存Excel文件时,有时会出现如下警告弹窗:

隐私问题警告,此文档中包含宏、ActiveX 插件、XML 扩展包信息或 Web 组件, 其中可能包含个人信息,并且这些信息不对过”文档检查器“进行删除。
excel此文档中包含宏...

解决方法(Excel 2007后版本): 文件 > 选项 > 信任中心 > 信任中心设置 > 个人信息选项,去除”保存时从文件属性中删除个人信息”前面的勾选,然后点确定保存即可。

保存时从文件属性中删除个人信息

Excel表格如何另存为图片?

在日常工作中有时方便同事或他人查阅,需要将Excel转换成图片格式,这时可以借助于截图软件,但很多大型数据表格在一屏内是无法显示完全的,这时又该怎么办呢?

一种最为简便的方法是选中需要转化图片的内容,然后复制再到QQ或微信聊天窗口中粘贴,这时表格会自动的转为图片格式,右键”另存为…”即可。

Excel表格另存为图片

如何查询或替换Excel中的?和*

很多人会发现在Excel中替换星号或问号时会将几乎所有内容都替换掉,这是因为*和?在Excel具有特殊含义,星号代表字串,问号代表单个字符。那么如果仅搜索星号或问号该怎么办呢,其实只需要在前面加上一个~(tilde)就好了,也就是~*或~?

如何进行单元格内换行

使用快捷键 Alt+Enter(Windows)或 Opt+Enter(Mac)

如需超出单元格部分的自动换行,点击工具栏自动换行或右击设置单元格格式>对齐>自动换行

 

MySQL常见问题

MySQL的主要配置参数
MySQL忘记root密码
MySQL存储引擎
Invalid default value
MySQL数据库操作命令
MySQL数据类型及取值范围
删除名称包含相同前缀或关键词的数据表

MySQL的主要配置参数

join_buffer_size
read_buffer_size
read_rnd_buffer_size
sort_buffer_size
设置方法如设置sort_buffer_size为4M:
SET GLOBAL sort_buffer_size = 1024 * 1024 * 4;
缓冲池内存
innodb_buffer_pool_size
建议设置为:总内存-(每个线程所需要的内存*连接数)-系统保留内存
key_buffer_size (MyISAM相关)
查询MyISAM表所占用的空间大小

select sum(index_length) from information_schema.tables where engine='myisam';

MySQL服务器I/O相关配置参数
InnoDB:
innodb_log_file_size(单个事务日志文件的大小)
innodb_log_files_in_group(个数)
事务日志总大小:innodb_log_file_size*innodb_log_files_in_group
innodb_log_buffer_size(日志缓冲文件大小通常32M-128M就足够了)
innodb_flush_log_at_trx_commit(刷新日志频繁程度,有三个值0,1,2)
0:日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,
但是在一个事务提交不做任何操作。
1【默认】:在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的
刷新。
2【推荐】:在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新,
对日志文件每秒刷新一次。

其它建议配置:
可在my.cnf或my.ini文件中设置,需重启MySQL
innodb_flush_method=O_DIRECT
innodb_file_per_table=1
innodb_doublewrite=1
MyISAM:
delay_key_write
OFF:每次写操作后刷新键缓冲中的脏块到磁盘,安全,性能差
ON:只对在键表时指定了delay_key_write选项的表使用延迟刷新
ALL:对所有MyISAM表都使用延迟键写入

安全相关配置参数
expire_logs_days 指定自动清理binlog的天数
max_allowed_packet 控制MySQL可以接收的最大包的大小
skip_name_resolve 禁用DNS查找
sysdate_is_now 确保sysdate()返回确定性日期
read_only 禁止非super权限的用户写权限(从库启用)
skip_slave_start 禁用Slave自动恢复(从库启用)
sql_mode 设置MySQL所使用的SQL模式(strict_trans_tables, no_engine_substitution, no_zero_date, no_zero_in_date, only_full_group_by)

其它常用配置参数
sync_binlog 控制MySQL如何向磁盘刷新binlog(建议主库设为1)
tmp_table_size和max_heap_table_size控制内存临时表大小
max_connections 控制允许的最大的连接数

MySQL忘记root密码

忘记MySQL密码的操作方法:

1.打开终端,输入以下代码

mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables

2.打开一个新终端
mysql -uroot -p
在弹出的密码框中直接回车进入数据库
3.修改root密码

update user set password=PASSWORD('******') where user='root';
flush privileges;

MySQL中去除换行符和回车符

使用replace语句进行替换,然后update一下即可

replace(replace(字段名,char(10),''),char(13),'')

MySQL启动、连接和断开

在Windows中如果将MySQL添加为服务可通过在命令行中(Win+R->cmd)使用如下指令来启动、停止MySQL服务
net start mysql
net stop mysql
连接MySQL可通过如下指令
mysql -hlocalhost -uroot -proot(假定通过root用户连接本地数据库,密码为root)
退出直接在命令行输入quit即可

MySQL存储引擎

通过以下指令可查看MySQL中支持的存储引擎
SHOW ENGINES;
可在其后添加\g或\G,基中\g相当于分号作为结尾,\G则起到美化显示的效果
另一种查询存储引擎的方法是输入如下指令:
SHOW VARIABLES LIKE ‘have%’;

删除名称包含相同前缀或关键词的数据表

通过以下语句就可以获取所有的drop table语句然后执行即可:

Select CONCAT( 'drop table ', table_name, ';' ) 
FROM information_schema.tables 
Where table_name LIKE '%keyword%';


Invalid default value

在创建表格时出现类似这样的报错ERROR 1067 (42000): Invalid default value for …,猜测是字符集问题,因为默认值中使用的是中文,于是在命令行中执行set names gbk,然后在CREATE TABLE的最后一行添加了DEFAULT CHARSET=gbk用以设置表格的默认字符集,再次创建表格顺利执行。

Ignoring query to other database报错

出现这一问题纯粹是由于粗心所致,即误将mysql –uroot -p输入成了mysql -root -p,确实很奇怪,输入后者同样可以登入并不报错,只是要进行操作时就会出现Ignoring query to other database的报错

常见报错及解决方法

1548-Cannot load from mysql.proc. The table is probably corrupted

输入以下指令进行修复

mysql_upgrade  -uroot  -p

MySQL数据库操作命令

创建数据库:CREATE DATABASE 数据库名;
查看数据库:SHOW DATABASES;
选择数据库:USE 数据库名;
删除数据库:DROP DATABASE 数据库名;

1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;

2:创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;

3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;

5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6:显示表的结构:
mysql> DESCRIBE MYTABLE;

7:往表中加入记录
mysql> insert into MYTABLE values (“hyq”,”M”);

8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

9:导入.sql文件命令(例如D:/mysql.sql)
mysql> use database;
mysql> source d:/mysql.sql;

10:删除表

mysql> drop TABLE MYTABLE;

11:清空表
mysql> delete from MYTABLE;

12:更新表中数据
mysql> update MYTABLE set sex=”f” where name=hyq;

此外,Linux下经常使用的命令:

1:导入数据库备份文件的方法:
root: mysql –u数据库帐户 –p密码 数据库名 < .sql备份文件

2:MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过  GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
mysql> grant all privileges on 数据库明.* to 用户名@localhost identified by “密码”;

3:清空文件内容:
cat /dev/null > 文件名

4:添加帐户:
useradd 用户名 –d 目录名 –s /sbin/nologin(不允许该用户直接登录服务器)

5:设置帐户密码
passwd 用户名

特别注意:
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User=””;
update User set Password=PASSWORD(newpassword) where User=root;

启动:net start mySql;
进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出数据库:show databases;
选择数据库:use databaseName;
列出表格:show tables;
显示表格列的属性:show columns from tableName;
建立数据库:source fileName.txt;
匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;
增加一个字段:alter table tabelName add column fieldName dataType;
增加多个字段:alter table tabelName add column fieldName1 dataType,add columns fieldName2 dataType;
多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
增加一个管理员帐户:grant all privileges on *.* to user@localhost identified by “password”;
每条语句输入完毕后要在末尾填加分号’;’,或者填加’\g’也可以;
查询时间:select now();
查询当前用户:select user();
查询数据库版本:select version();
查询当前使用的数据库:select database();

1、删除student_course数据库中的students数据表:
rm -f student_course/students.*

2、备份数据库:(将数据库test备份)
mysqldump -u root -p test>c:\test.txt
备份表格:(备份test数据库下的mytable表格)
mysqldump -u root -p test.mytable>c:\test.txt
将备份数据导入到数据库:(导回test数据库)
mysql -u root -p test<c:\test.txt

3、创建临时表:(建立临时表zengchao)
create temporary table zengchao(name varchar(10));

4、创建表是先判断表是否存在
create table if not exists students(……);

5、从已经有的表中复制表的结构
create table table2 select * from table1 where 1<>1;

6、复制表
create table table2 select * from table1;

7、对表重新命名
alter table table1 rename as table2;

8、修改列的类型
alter table table1 modify id int unsigned;//修改列id的类型为int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

9、创建索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引

10、删除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;

11、联合字符或者多个列(将列id与”:”和列name和”=”连接)
select concat(id,’:’,name,’=’) from students;

12、limit(选出10到20条)<第一个记录集的编号是0>
select * from students order by id limit 9,10;

13、MySQL不支持的功能
事务,视图,外键和引用完整性,存储过程和触发器

14、MySQL会使用索引的操作符号
<,<=,>=,>,=,between,in,不带%或者_开头的like

15、使用索引的缺点
1)减慢增删改数据的速度;
2)占用磁盘空间;
3)增加查询优化器的负担;
当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;

16、分析索引效率
方法:在一般的SQL语句前加上explain;
分析结果的含义:
1)table:表名;
2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查询可以利用的索引名;
4)key:实际使用的索引;
5)key_len:索引中被使用部分的长度(字节);
6)ref:显示列名字或者”const”(不明白什么意思);
7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;
8)extra:MySQL的建议;

17、使用较短的定长列
1)尽可能使用较短的数据类型;
2)尽可能使用定长数据类型;
a)用char代替varchar,固定长度的数据处理比变长的快些;
b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;
c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;
d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;

18、使用not null和enum
尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;
如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;

19、使用optimize table
对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;

20、使用procedure analyse()
可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:
select * from students procedure analyse();
select * from students procedure analyse(16,256);
第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

21、使用查询缓存
1)查询缓存的工作方式:
第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。
2)配置缓存参数:
变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

22、调整硬件
1)在机器上装更多的内存;
2)增加更快的硬盘以减少I/O等待时间;
寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;
3)在不同的物理硬盘设备上重新分配磁盘活动;
如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。

MySQL数据类型及取值范围

MySQL数据类型及取值范围数字

MySQL数据类型及取值范围数字

MySQL数据类型及取值范围文本

MySQL数据类型及取值范围日期时间

Ignoring query to other database报错

出现这个报错通常是由于在登录到MySQL输入mysql -uroot -p时漏掉了-u中的u所致

修改root密码

修改root方法比较多,这里使用直接在用户中修改密码的方法:

>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;

MySQL密码不符合要求

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
这一报错通常出现在较新的MySQL版本中,在MySQL命令行中输入
show variables like ‘validate_password%’;可查看到具体的要求
MySQL密码验证

可以通过修改具体参数来调整实际的要求,有时我们在开发环境并不希望设置复杂的密码,此时可以在/etc/my.cnf中加入validate-password = off在取消这一限制。

mysql-bin 文件

默认在/var/lib/mysql下会产生大量的日志文件mysql-bin,时间累积会撑满磁盘,可通过配置文件设置保留天数,如:

Linux常见问题

MongoDB transparent_hugepage报错
如何判断服务器是否支持Rewrite
如何安装dig
CentOS如何设置yum软件镜像源
IP配置相关
防火墙相关
域名相关
FTP配置问题(VMware)
常见操作

配置FTP

yum install vsftpd -y
配置vsftpd.(可参考http://www.server-world.info/en/note?os=CentOS_7&p=ftp)
配置vsftpd主配置文件路径:/etc/vsftpd/vsftpd.conf
禁止匿名访问:anonymous_enable=NO
限制ftp用户访问家目录外的目录:chroot_list_enable=YES
限制ftp用户访问家目录外的目录用户列表:chroot_list_file=/etc/vsftpd/chroot_list.
开启被动模式,更好支持FlashFxp等ftp工具
pasv_enable=YES
pasv_min_port=20000 #开放的端口
pasv_max_port=20100
allow_writeable_chroot=YES #解决500 OOPS: vsftpd: refusing to run with writable root inside chroot()

/etc/vsftpd/vsftpd.conf 配置见图,注意红色部分.

配置chroot_list.
把新增的ftp用户添加进来,每个用户为一行.
#vi /etc/vsftpd/chroot_list 回车进入编辑chroot_list状态.

useradd -d /var/www/html/ -g ftp -s /sbin/nologin my_user_name
passwd my_user_name

防火墙配置路径:/etc/sysconfig/iptables
开放21端口:-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
开发20000-20100端口:-A INPUT -p tcp –dport 20000:20100 -j ACCEPT

重启防火墙:#service iptables restart;
重启vsftpd服务器:#service vsftpd start

设置用户或群的权限

sudo setfacl -R -m u:my_user:rwx /var/www/public_html/
sudo setfacl -R -m g:my_group:rwx /var/www/public_html/

Yum安装相关

查看已安装软件yum list installed

查看更新yum list updates

更新软件yum update xxx

删除软件yum remove xxx

删除软件及所有文件yum erase xxx

有时由于软件不同软件对相同的包依赖出现被覆盖的问题(broken dependencies),可尝试yum clean all,还不行的话yum deplist xxx查看所需的包来进行针对性的安装,此外还可以yum update –skip-broken来绕过问题

yum repolist查看安装镜像源,具体文件在/etc/yum.repos.d/目录下

此外还可以进行手动安装,下载压缩包,解压进入安装包目录,

.configure
make
make install

yum安装如果想要保留安装文件可以通过将/etc/yum.conf中的keepcache值设为1来实现:

#替换
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
#查看
grep keepcache /etc/yum.conf

 

邮件相关

postfix发送邮件出现如下报错

postdrop: warning: unable to look up public/pickup: No such file or directory

这通常与原生的sendmail有关,执行以下命令即可修复

mkfifo /var/spool/postfix/public/pickup
service postfix restart

导出文件中email正则演示:

grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" filename.txt >> newfile.txt

 

MongoDB transparent_hugepage报错

2016-01-11T22:13:22.317+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-01-11T22:13:22.317+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-11T22:13:22.317+0800 I CONTROL  [initandlisten] 
2016-01-11T22:13:22.317+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-01-11T22:13:22.317+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'

解决方法:
在/etc/rc.local中加入如下代码:

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never &amp;gt; /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never &amp;gt; /sys/kernel/mm/transparent_hugepage/enabled
fi

执行source /etc/rc.local使设置生效即要

设置Tomcat开机启动

1.修改/etc/rc.d/rc.local
/etc/rc.d/rc.local

2.添加下面两行脚本,记住是两行,仅仅第二行不行,必须加第一行。在/etc/rc.d/rc.local文件最后加上:
export JAVA_HOME=/usr/java/jdk1.7.0_60
/usr/local/tomcat/bin/startup.sh start

说明:/usr/java/jdk1.7.0_60 是jdk安装目录
/usr/local/tomcat是tomcat安装的目录
3.注意:修改rc.local文件为可执行
chmod +x  rc.local

Apache配置Tomcat去端口号8080

有的时候我们在同一台Linux主机上配置了httpd和tomcat,但访问tomcat中的应用会带有8080端口这个小尾巴,一种方法是在Apache的配置文件中添加如下内容(以m.alanhou.org域名为例):

<VirtualHost *:80>  
    ServerName m.alanhou.org  
    ProxyPreserveHost On  
    ProxyRequests Off  
    ProxyPass / http://m.alanhou.org:8080/
    ProxyPassReverse / http://m.alanhou.org:8080/
    ErrorLog logs/m.alanhou.org_error_log  
    CustomLog logs/m.alanhou.org_custom_log common  
</VirtualHost>

如何判断服务器是否支持Rewrite

能过PHP代码查看:

$result = apache_get_modules();  
echo 'test3';
if(in_array('mod_rewrite', $result)) {  
        echo '支持';  
} else {  
        echo '不支持';  
}  

另一种是能过phpinfo()函数查看mod_rewrite是否出现在Loaded Modules

如何安装dig

dig(域信息搜索器)命令是个用于询问 DNS 域名服务器的灵活的工具。但在默认情况下使用dig命令会出现

-bash: dig: command not found

以Centos为例,只需要执行yum install bind-utils -y进行安装就可以正常使用了。

CentOS如何设置yum软件镜像源

软件镜像源存储在/etc/yum.repos.d/CentOS-Base.repo文件中,这里以设置阿里去为例:

首先备份原文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

配置文件源(以CentOS 6为例)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

生成缓存即可

yum makecache

 

IP配置相关

修改IP方法

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO="static"
IPADDR="192.168.1.100" #假设用192.168.1.*网段
NETMASK="255.255.255.0";
GATEWAY="192.168.1.1"
DNS1="8.8.8.8" #Google DNS
DNS2="8.8.4.4" #Google DNS

修改主机名
vi /etc/sysconfig/network

HOSTNAME= name1.localhost.com

主机名和IP映射关系
vi /etc/hosts

192.168.1.100 name1.localhost.com

 

防火墙相关

关闭防火墙
service iptables stop
查看防火墙状态
service iptables status
查看开机防火墙状态:
chkconfig iptables –list
开机关闭服务
chkconfig iptables off

有时发现安装httpd且启动了服务后仍然无法在浏览器中访问,这基本上是防火墙中没有开放80端口,执行如下指令即可:

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save

 

域名相关

dig +trace www.alanhou.org可用于分析域名解析,常用参数除+trace外还有-t type和-x

whois alanhou.org查询域名管理者相关信息,若无法执行安装jwhois(yum install jwhois -y)

host -a alanhou.org

nslookup alanhou.org

/etc/resolv.conf

FTP配置问题(VMware)

FTP的服务相对比较简单,以CentOS为例,直接输入yum install vsftpd -y即可完成安装。笔者这里使用虚拟工具VMware进行测试。

通过FileZilla连接出现Error: Failed to retrieve directory listing报错,解决方法:

1.通过getenforce如果显示为enforcing,表示SELinux被开启,键入命令setsebool ftp_home_dir 1(网上还有说要执行setsebool ftpd_disable_trans 1,但在笔者使用的Linux版本中通过getsebool -a并查到相关服务,还可通过sestatus -b | grep ftp查看ftp相关部分),重启 ftp:service vsftpd restart, 并停用防火墙iptables(service iptables stop),可正常登录ftp

2.对于线下测试环境而言关闭iptables自然没有什么大的影响,但线上生产环境显然不能这么做,所以还是要配置一下iptables文件开通ftp权限,找到/etc/sysconfig/iptables文件并添加21端口访问权限:

-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT

找到/etc/sysconfig/iptables-config文件修改对应部分的内容为:

IPTABLES_MODULES=”ip_conntrack_ftp”

保存并重启
service iptables save
service iptables restart

另外很多大的空间商默认都是关闭SELinux的,方法也很简单,找到/etc/selinux/config文件修改相应的内容如下:

SELINUX=disabled

reboot 重启生效

使用getenforce查看此时显示为Disabled表示已关闭

扩展内容:

a.访问/etc/vsftpd/vsftpd.conf 设置取消匿名
anonymous_enable=NO

b.新建一个文件/etc/vsftpd/chroot_list 并在其中填写用户
然后访问/etc/vsftpd/vsftpd.conf设置允许本地用户

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

c.控制访问权限

主要是两个文件:/etc/hosts.allow和/etc/hosts.deny。首先查看/etc/hosts.allow,如果匹配到一个条目,将不在读取下面的。如果在/etc/hosts.allow没有匹配到条目,则读取/etc/hosts.deny,如果匹配,则拒绝,如果不匹配,则默认允许所有

d.配置ip(假定一个网卡)

/etc/sysconfig/network-scripts/ifcfg-eth0示例文件内容如下:

DEVICE=eth0
HWADDR=该网卡的MAC地址
TYPE=Ethernet
BOOTPROTO=”static” #此处为DHCP将动态分配ip地址
#BOOTPROTO=dhcp
UUID= a698839a-d72b-430f-8c77-d84abdc90519
ONBOOT=yes
#NM_CONTROLLED=yes
NETMASK=255.255.255.0
IPADDR=192.168.*.*
IPV6INIT=no
GATEWAY=192.168.*.*

e.禁止使用ftp服务的用户在如下文件中配置

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

常用命令

du -sh /etc 目录总大小
df -hT /etc 特定分区信息

快捷键

Ctrl + a  移到行首
Ctrl + e  移到行末
Ctrl + r  查看之前执行的命令

查找最近修改的文件

rpm的常用参数组合说明

-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包

查找当前目录下.phtml文件中,最近30分钟内修改过的文件。

find . -name ‘*.phtml’ -type f -mmin -30

查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况。

find . -name ‘*.phtml’ -type f -mmin -30 -ls

查找当前目录下,最近1天内修改过的常规文件

find . -type f -mtime -1

查找当前目录下,最近1天前(2天内)修改过的常规文件

find . -type f -mtime +1

jobs -l查看后台运行程序(后台运行在指令后加上&)
HISTSIZE 环境变量控制保留的历史记录数量
history -c清除历史记录

Cron job

指定用户(apache)执行cron job

crontab -uapache -e

设定执行的文件和频率

*/5 * * * * /var/www/html/cron.sh

获取本机ip

ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":" |cut -f 1 -d " "

或者

ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'

Apache站点仅允许指定IP访问

<Directory "/var/www/html">
    Options All
    AllowOverride None
    Order Deny,Allow
    Deny From all
    Allow From 192.168.0.0/24
</Directory>

CentOS上VNC安装配置

安装

服务器端

yum install vnc-server -y
yum groupinstall “Desktop” -y    #桌面环境

添加用户、设置密码

useradd vnc

passwd vnc

常见操作

重启网络(service network restart)时出现报错

Shutting down interface eth0: Device state: 3 (disconnected)

分析原因

  1. NetworkManager是是分发网络服务请求的一个进程,是一个网络管理的工具。。
  2. 由于启动了NetworkManager服务导致的 ,netwoekmanager会和network冲突导致resolv.conf被还原

解决方法:

service NetworkManager stop关闭服务

要想开机即关闭chkconfig NetworkManager off

查看最近重启记录

last reboot | head -2

last -x | grep shutdown

修改root@后的名称

打开/etc/sysconfig/network更改HOSTNAME后面的值,然后重启生效。本方法同样可用于解决如下报错:

httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

服务器终端命令背景和字体颜色

setterm inversescreen on命令设置服务器白背景黑字,setterm inversescreen off关闭设置恢复默认黑底白字

另一种方法是同时设置背景和前景色:setterm -background white和setterm -foreground black,但这个方法有个明显的缺点,就时在输入第二条命令时会看不到命令行内容

添加用户到组并为组赋权限

usermod -a -G apache ftp

chmod -R g+rw /var/www/html

解决中文乱码问题

第一步先查看所使用的客户端是否使用UTF-8或需使用的编码

echo $LANG或export查看当前使用的系统语言

通过LANG=zh_CN.UTF-8或export LANG=”zh_CN.UTF-8″将当前=语言临时设置为中文,locale命令查看是否支持中文,若未出现zh_CN.UTF-8包请输入yum groupinstall chinese-support安装中文语言包

永久修改需编辑/etc/sysconfig/i18n

task blocked for more than 120 seconds报错

原因:linux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时(120s),所将40%减小到10%,解决方法在文件/etc/sysctl.conf中加入

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

如何为Linux主机添加多IP?

以为eth0网卡添加192.168.1.22为例,操作代码如下:

/sbin/ifconfig eth0:1 192.168.1.22 broadcast 192.168.1.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.1.22 dev eth0:1

想要永久生效,只需将以上代码加入/etc/rc.local中即可

setup错误
采用minimal的方式安装会发现用不了setup指令

-bash: setup: command not found</span>
#根据需要选择安装
yum install setuptool -y</span>

yum install system-config-network* -y
yum install system-config-firewall* -y
yum install system-config-securitylevel-tui -y
yum install system-config-keyboard -y
yum install ntsysv -y</span

SSH登录问题

No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

SSH无法正常登录,查看/etc/ssh/sshd_config文件,修改PasswordAuthentication为yes,然后重启SSH服务,service sshd restart。

Linux进程Signal详解

Signal Name Description
1 HUP Hangs up
2 INT Interrupts
3 QUIT Stops running
9 KILL Unconditionally terminates
11 SEGV Produces segment violation
15 TERM Terminates if possible
17 STOP Stops unconditionally, but doesn’t terminate
18 TSTP Stops or pauses, but continues to run in background
19 CONT Resumes execution after STOP or TSTP

Zend Studio常见问题和使用技巧

如何修改Zend Studio工作空间

很多刚开始使用Zend Studio的朋友会发现所创建的项目(Project)无法运行,如PHP项目。这可能是由于工作空间(Workspace)设置的问题,PHP需要在Apache等环境中才能运行,需Zend Studio默认的工作空间为(以安装盘C盘为例)C:\Users\Administrator\Zend\workspaces\DefaultWorkspace。在初次启动软件时可以指定工作空间的路径,如果忘记指定的话,可以通过File > Switch Workspace > Other…来进行修改
Zend Studio工作空间
要删除一个工作空间,可以通过Window->Preferences->General->Startup and Shutdown->Workspaces来选中相应的工作空间,点击Remove来进行删除。

Zend Studio常用快捷键

Ctrl+Alt+↓           复制当前行
Ctrl+D               删除当前行
Alt+↑/↓              与上一行/下一行互换位置
Ctrl+/               对选中行进行行注释即//
Ctrl+Shift+/        对选中行进行块注释即/**/
Alt+/ 代码补全提示
Ctrl+F/Ctrl+H 查找,其中Ctrl+H为全文检索(在整个项目中查找)
Ctrl+Shift+F 代码格式化
Ctrl+W 关闭当前文件
Ctrl+Shift+L 查看所有的快捷键

常用插件

SVN用于版本控制
Emmet用于快速有效的编写HTML,CSS代码,比如
创建一个4行3列的表格接输入table>tr*4>td*3按下tab键
创建一个下面这样的列表只需输入ul>li.item${list$$}*5

<ul>
<li class="item1">list01</li>
<li class="item2">list02</li>
<li class="item3">list03</li>
<li class="item4">list04</li>
<li class="item5">list05</li>
</ul

emmet中一个$代表一个数字编号,标签内容输在{},>两边放嵌套上下级标签,同级标签中间使用+,标签内部属性使用[],如a[href=http://alanhou.org],id名直接写在#后,类名直接写在.后

HTML+CSS常见问题

常用技巧和经验

CSS HACK

各元素在浏览器的样式尽可能的与新标准保持一到处:

https://github.com/necolas/normalize.css
针对IE,其中的edge表示按照可用的最新模式显示

<meta http-equiv="X-UA-Compatible" content="IE-edge, chrome=1">

按窗口大小显示

<meta name="viewport" content="width=device-width, initial-scale=1">

如何去除iPhone上视频默认的播放按钮

在应用html5的video标签时,明明加了autoplay=”true”,可是在iPhone上打开时还会出现播放按钮,这时需要加一段CSS来进行去除(视频在具体的class或id内的请自行加入):

video::-webkit-media-controls {display: none !important}

清除样式和浮动

在书写代码过程中,很多元素可能在不同浏览器中会自带margin,padding等样式以及自带浮动,可能过建立一个类似下面这样的通用的CSS代码来进行统一处理,避免实际展现效果出现偏差。

清除浮动可采取两种方法, clear:both或width:100%; overflow:hidden;

/*样式清除*/
body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,id,img,div,dl,dt,dd,input{margin:0;padding:0;}
body{font-size:12px;}
img{border:none;}
li{list-style:none;}
input,select,textarea{outline:none; border:none; background:none;}
textarea{resize:none;}
a{text-decoration:none; color:#656565;}

/*清除浮动*/

.clearfix:after{content:""; display:block;clear:both;}
.clearfix{zoom:1;}

/*小技巧解决浮动问题*/
.fl{float:left;}
.fr{float:right;}

针对IE的小技巧

IE系列尤其是IE 6经常会出现样式问题,可通过IE Tester来进行查看,CSS Hack中一个重要的技术是可通过\9来将特别的样式仅对IE系列生效,如line-height:35px\9可用于解决IE 6中默认输入框(input)中文字垂直不居中问题,其中\9代表所有的IE系列浏览器

解决IE6对PNG透明度不支持的问题

IE6是不支持PNG图片的的透明度的,网上有很多方式来解决这一兼容性问题,这里介绍其中的一种,通过以下链接下载js修复文件

http://www.dillerdesign.com/experiment/DD_belatedPNG/DD_belatedPNG_0.0.8a-min.js

然后新建一个js文件来处理需要修复的标签或class,id名如

DD_belatedPNG.fix('div,ul,ol,li,dt,dd,dl,span,img,a,em,strong,h1,h2,h3,h4,h5,h6,p')

假设以上的文件名为ie6Fixpng.js并和修复文件一并放在js文件下,则在待修复文件头部加入如下代码:

<!--[if IE 6]>
	<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22js%2FDD_belatedPNG_0.0.8a-min.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
	<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22js%2Fie6Fixpng.js%22%3E%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
<![endif]-->

这样png文件在IE6中也可以透明显示了。

HTML中文乱码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

通过getContext操作Canvas对象返回空

在使用JS操作Canvas时出现如下报错
TypeError: null is not an object (evaluating ‘canvas.getContext’) Safari
Uncaught TypeError: Cannot read property ‘getContext’ of null  Chrome
这通常是由于多次重复使用了getContext或者是在DOM加载完成前调用了getContext方法
对于后一种,可以把JS代码放到body的后半部分,也可以封装到一个函数,如init,并通过如下两种中的一种方法调用

	window.onload=init;
	window.addEventListener("load", init, true);

注:如果使用window.onload=init(),将会出现同样的报错

如何判断是否微信浏览器

window.onload = function(){
    if(isWeiXin()){
        ... ...
    }
}
function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}

PHP代码

function is_weixin(){ 
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
			return true;
	}	
	return false;
}

如何去除iPhone, iPad上视频的默认播放按钮?

在iPhone, iPad的Safari浏览器中视频默认会出现一个播放按钮,想要去除这个按钮只需通过伪元素来设置即可(*代表所有标签,也可设置video)

*::-webkit-media-controls-start-playback-button {
  display: none!important;
  -webkit-appearance: none
}

Windows系统常见问题

如何获取目录下的所有文件名?
删错东西回收站清空了怎么恢复
如何设置Windows下的默认启动系统?
Win 8下如何打开控制面板?
Win 8系统下中文乱码问题
如何在Windows桌面添加mstsc等快捷方式
搜狗五笔输入法Shift键无法进行中英文切换

如何获取目录下的所有文件名?

获取系统指定文件夹下的文件名只需打开命令窗口,cd到对应的目录,然后执行dir/on/b>d:\list.txt,其中d:\list.txt是文件名称导出位置,可根据实际情况指定。/on/b为可选参数,/ON为按文件名排序参数,/B为只保留文件名和扩展名参数

Windows下获取目录中文件名称

删错东西回收站清空了怎么恢复

Win+R输入regedit然后找到

HEKEY_LOCAL_MACHIME > SOFTWARE > Microsoft > Windows >  CurrentVersion > Explorer > Desktop > Namespace 右键新建 > 项,并命名为

{645FF040-5081-101B-9F08-00AA002F954E}

然后把默认的值改成”回收站”或”Recycle Bin”,重启系统即可发现回收站中出现了被你删除的内容

注册表回收站设置

如何设置Windows下的默认启动系统?

很多人都习惯为Windows安装多系统,在开机时可以按上下键进行切换,但如果想要改变默认启动的系统该怎么办呢?

方法很简单,在”计算机”(或”我的电脑”)上右击>属性>高级系统设置>启动和故障恢复>设置,然后在”默认操作系统”的下拉框中选择您想要使用的默认启动系统再点”确定”保存即可。

Windows默认操作系统

Win 8下如何打开控制面板?

使用Win 8的朋友最不习惯的可能就是找不到习惯使用的开始菜单了.按下Win键可以进入Metro界面查看常用程序,但控制面板等内容又到哪里去找呢,可在桌面上通过快捷键Win+X来调出一个弹窗,其中就包含控制面板等选项。
Win 8控制面板

Win 8系统下中文乱码问题

安装Windows 8英文系统后,在安装中文软件或打开某些中文文档时会出现乱码的问题,这可以通过在控制面板中进行相应修改来予以解决,如下图中打开中文软件光影魔术手时欢迎界面会出现乱码
中文软件乱码
在Win 8中按下快捷键Win+X,选择Control Panel或按下快捷键P,点击Clock, Language, and Region,在新的页面中点击Region > Aministrative,点击Language for non-Unicode programs版块下的Change system locale…按钮,在弹出窗口中将Current system locale改成Chinese(Simplified, China),点击Ok, 然后在新的弹窗中点击Restart now确认重启
Windows系统区域设置
重启后再打开前面我们测试使用光影魔术手软件,会发现乱码问题已经得到了解决
光影魔术手欢迎页面

如何在Windows桌面添加mstsc等快捷方式

我们都知道可以通过右击将指定文件或文件夹添加为桌面快捷方式,但对于一些常见的系统命令,找到该文件会有些麻烦,下面以mstsc远程桌面为例来进行说明。

在桌面空白处右击新建(New)>快捷方式(Shortcut),在弹出窗口中输入mstsc并按enter键,然后点击完成(Finish)即可。

添加远程桌面

搜狗五笔输入法Shift键无法进行中英文切换

在使用搜狗输入法时有时会发现按下Shift键无法进行中英文切换,这会造成输入上的不方便,可以通过重新设置中英文快捷键的方法来进行解决。首先切换到搜狗五笔输入法,点击悬浮窗右侧的工具按钮,在弹出窗口中点击设置属性,然后在新窗口中点击快捷键,并在右侧中英文切换的首选和备选输入框中分别按下键盘左侧的Shift键和右侧的Shift键,变成如图效果后点击确定进行保存。以后再次按下Shift键就可以顺利进行中英文切换了。

搜狗输入法按Shift键中英文切换

常用命令

将FAT分区转为NTFS命令:convert e: /fs:ntfs

Windows主机常见问题

无法识别的属性“targetFramework”。请注意属性名称区分大小写
找到配置文件删除其中的如下两个部分:

targetFramework="4.0"
controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"

SQL Server 10751报错

相信使用sql server 2008的用户都遇到过过期无法启动,提示10751的错误的问题,这个就是评估版过期的提示。
如果网上提示的升级教程无效,可以使用以下方式,麻烦的是,每次启动机器都需要运行这个脚本,但是比自己手动调试要快多了。如果会弄的,可以将这个脚本放到启动文件夹中。

@echo 检测sqlserver服务是否已经启动,如果没有启动则启动  
set nowtime=%date%  
date 2016/05/01  
net start mssqlserver  
date %nowtime%  
pause  

可以将上面代码中的日期改为能打开sql的日期,然后将代码保存到text文本中,然后将文本的格式改为.bat文件

评估期已过,有关如何升级您的测试版软件请访问….

SQL Server 2008 R2评估期180天后就会出现如上提示因而无法打开SQL Server Management Studio进行操作

解决步骤:

第一步:进入SQL2008配置工具中的安装中心
第二步:再进入维护界面,选择版本升级
第三步:进入产品密钥,输入密钥(请自行百度)
第四步:点击下一步,直到升级完毕。

升级过程中如若出现以下的错误:

规则 SQL Server 2008版本升级失败 所选的SQL Server实例不满足升级矩阵要求

规则 SQL Server 2008版本升级失败 所选的SQL Server实例不满足升级矩阵要求

请将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ConfigurationState里的“CommonFiles”值改成3后再进行尝试

 

Windows系统下按F直接搜索,按R直接进入命令输入界面,按U后退… 这是由于开启了粘滞键,连按5次Shift才会开启,如果不需要可以在控制面板中关闭该设置

Google Shopping常见问题

如何申请Google Shopping?
如何查看哪些关键字触发了Google Shopping广告?

如何申请Google Shopping?

使用Google Shopping首先需要有Merchant Center账户,该账户主要用于上传data feed,其中主要包含产品的相关信息,如id,产品名,链接,图片地址,所属分类等。Feed也包含一些针对AdWords的可选项,如AdWords Labels,针对使用Magento的朋友Alan写了一个小程序,可供参考(Magento生成Google Shopping Feed PHP代码)。Google对于这块的审核还是比较严格的,首先feed需要严格按照要求,保证数据与网站相符,其次网站也要相对正规,如必须要有SSL证书即https、详尽的联系方式(包括邮箱,电话)、退换货政策页面。对于feed的审核通常在24小时以内。

投放Google Shopping广告(或称Product Listing Ads)自然还少不了Google AdWords账户,投放广告前还需要在Merchant Center后台(Settings>AdWords)中关联好Adwords账户。做好这些就可以开始投放Google Shopping广告了。但feed被批准后并不会展示广告,显示广告将会接下来的48个小时以内,建议这时不要更新feed,否则可能会更晚才能展示出广告,可通过查看AdWords后台广告系列中的Product选项卡来进行确认,尚无法展示广告时会提示”There are no eligible products for Google Shopping in your linked Merchant Center accounts.”,否则会看到你所上传的产品信息。

如何查看哪些关键字触发了Google Shopping广告?

大家都知道Google Shopping广告是针对产品,不像传统的Text Ads针对关键词进行投诉,那除了所细分的广告系列、广告组之外是否可以知道究竟是哪些关键词触发了这些产品广告呢,事实只需点击Keywords>Details>Search Terms>All就可以查看指定时段指定Campaign或Ad group所有的关键词了(注:2014年9月开始PLA将全面改名为Shopping Campaign,feed会发生一些改变,关键词可通过Dimension下方View下拉框中选择Search terms来进行查看)。如果想要看看是哪些产品带来最多点击或是转化的话,除了Google Analytics外还可以直接到Merchant Center中进行查看。

Google Shopping关键词报表

WordPress常见问题

WordPress中如何为文章添加分页?
WordPress中的行距问题
WordPress迁移或更换域名相关
迁移主机后图片无法上传
删除或限制Wordpress中的revision
如何为Wordpress添加Gzip压缩?
WordPress如何切换域名?
WordPress如何防渗透黑客攻击?
WordPress如何为文章中指定关键词添加超链接?
访问后如出现File not found的报错(Nginx)
正在执行例行维护,请一分钟后回来。
如何自定义Wordpress登录后台

小技巧

1.Smartideo插件可用于直接输入QQ等视频网址而直接显示视频并自动适配电脑和移动端

另通过过vid获取QQ视频的网址方法:http://v.qq.com/page/y/o/0/{vid}.html

2.在Mac上编辑文章时可按下Command+Control+Space来调出Emoji窗口输入表情符号
Mac 在Wordpress上输入表情符号3.Google字体库, Gravitar等国内访问慢的问题,可以通过WP Acceleration for China等插件解决这一问题,对应的文件在wp-includes/script-loader.php中

 

WordPress中如何为文章添加分页?

在Wordpress中发表较长的文章时,会希望添加分页的功能,避免一个页面中内容过于庞杂。在默认的编辑器(TinyCME)中,却找不到相应按钮,只有一个插入Read More的按钮。细心的朋友在插入Read More后进入代码编辑部分会看到<!–more–>(快捷键Alt+Shift+T)这样一行代码,事实上添加页面可以使用相似的方法,即在代码对应部分添加<!–nextpage–>(在视图编辑模式也可使用快捷键Alt+Shift+P),这样就可以实现分页的功能了。

 Wordpress中的行距问题

在视图编辑窗口,按下Enter键会发现行距较大,中间间距占一行,事实上通过快捷键Shift+Enter 就不会出现大行距的情况了。

WordPress迁移或更换域名相关

WordPress迁移如同其它网站一样,需要两部分内容,一部分是网站代码文件,根据所使用系统不同位于public_html,www或htdocs等文件夹下;另一部分就是数据库文件(如使用phpmyadmin可使用export导出,import导入),可以分别打包进行迁移。如进行域名更换则需对后台Settings>General下Wordpress Address和Site Address的进行更换(也可更改数据库中wp_options表option name为siteurl和home的option_value值)。

对于已有内容的网站通常则更为复杂一些,因为之前的文章中会有链接、图片等内容写在wp_posts表中,以从www.foo.com/blog更换为blog.foo.com为例,需要对wp_posts表进行如下操作:
1.update wp_posts set guid = replace(guid, ‘http://www.foo.com/blog’,’http://blog.foo.com’)

2.update wp_posts set post_content = replace(post_content, ‘http://www.foo.com/blog’,’http://blog.foo.com’)

同时提醒各位关注.htaccess文件,很多时候需要对此文件也进行相应更改。

迁移主机后图片无法上传

这一错误提示内容类似:Unable to create directory uploads/2014/07. Is its parent directory writable by the server?
检查父级目录wp-content,如果所有者无可写权限(数字看是否为7,字母看是否为rwx),则将权限修改为755即可。如果权限没有问题,这通常会发生在通过GoDaddy等主机的一键安装Wordpress站点上,因为一键安装会默认在Settings>Media下写入一个绝对地址,而迁移站点后绝对地址会发生改变,将其修改为默认路径wp-content/uploads即可。

删除或限制Wordpress中的revision

WordPress会在对帖子进行编辑时进行autosave自动保存,同时每次对帖子修改后都会保存一个revision版本,这样导致如果对同一个帖子进行多次编辑后产生大量的垃圾文件,占用不必要的空间。(据考证这并不会像大家所认为的那样影响到网站的访问速度)
有这么几种方法可供参考,一是安装一款名为Better Delete Revision的插件,二是直接在数据库中进行删除处理,参考语句如下:
DELETE FROM wp_posts WHERE post_status!=’publish’ OR post_type=’revision’;
第三种方法是在wp-config.php文件上方添加如下代码(加粗部分),WP_POST_REVISIONS值表示保存的revision数量,设为false表示不保存
* @package WordPress
*/

define(‘WP_POST_REVISIONS’, 3);

// ** MySQL settings – You can get this info from your web host ** /

 

如何为Wordpress添加Gzip压缩?

WordPress中添加Gzip压缩的方法很多,这里介绍一种修改.htaccess文件来实现Gzip压缩的方法。开启Gzip压缩首先要先确认服务器是否已开户该模块,这个可以通过phpinfo()等方法进行验证。这里介绍的方法是在.htaccess中添加如下代码:

# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E]!no-gzip !gzip-only-text/html
# Make sure proxies don‘t deliver the wrong content
Header append Vary User-Agent env=!dont-vary

禁止爬虫爬行

想要禁止搜索引擎爬行可通过在meta中添加noindex, nofollow信息或在robots.txt中添加disallow两种方式,前者是后台Settings>Reading下勾选Discourage search engines from indexing this site来实现的。这通常在调试安装博客时使用。

 删除所有垃圾评论

在博客有了一定的访问量后,垃圾评论会非常多,在后台删除会比较耗时,可以直接在数据库中删除所有未审核通过的评论:

DELETE FROM wp_comments WHERE comment_approved = 0

此外也可通过强制仅登录客户才可评论来减少垃圾评论,只需在Settings > Discussion内将Other comment settings下面的

文字换行

有时比较长的链接或字符串会导到前后内容断开而单独作为一行显示,这进只要在p标签或相应内容的css上添加上word-break:break-all;即可以了。

WordPress如何切换域名

主要需要修改如下数据表

UPDATE wp_options SET option_value = replace( option_value, 'http://旧域名', 'http://新域名') WHERE option_name = 'home' OR option_name ='siteurl' ;
UPDATE wp_posts SET post_content = replace(post_content, 'http://旧域名', 'http://新域名');
UPDATE wp_posts SET guid = replace( guid, 'http://旧域名', 'http://新域名') ;

此外出于seo考虑,应在.htaccess文件中添加301转向的相应代码

WordPress如何防渗透黑客攻击?

1.设置文件及目录权限

Linux下的参考命令(-type d为目录,-type f为文件):

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

2.设置自动更新
不论是禁止还是开启自动更新,都是在wp-config.php中设置,以下提供一些常用的设置代码
禁止一切更新

define( 'AUTOMATIC_UPDATER_DISABLED', true );

核心组件更新

define( 'WP_AUTO_UPDATE_CORE', false );

有三个可选值
true – 开发版,小更新,大更新都会自动更新。

false – 开发版,小更新,大更新都不会自动更新。

minor – 只有小版本更新才会自动更新
通过过滤器来设置是否自动更新
开启开发更新模式,和开发版本同步:

add_filter( 'allow_dev_auto_core_updates', '__return_true' );

关闭小版本更新:

add_filter( 'allow_minor_auto_core_updates', '__return_false' );

开启大版本更新:

add_filter( 'allow_major_auto_core_updates', '__return_true' );

开启插件自动更新:

add_filter( 'auto_update_plugin', '__return_true' );

开启主题自动更新:

add_filter( 'auto_update_theme', '__return_true' );

翻译更新默认是开启的,如果要关闭:

add_filter( 'auto_update_translation', '__return_false' );

3.数据库权限控制

WordPress中任何常规操作如添加文章、上传图片、添加评论、安装插件等都只涉及到增删改查的数据库操作,像DROP, ALTER, GRANT这样的权限则可不予以授权。

注:有些插件、主题或Wordpress的重大更新可能会更改数据库结构,这时则需要临时进行相关授权。

4.wp-includes的保护机制

通过更改根目录下的.htaccess文件可以防止攻击脚本使用mod_rewrite重写模块,注意请将以下代码放在# BEGIN WordPress和# END WordPress的外面,以防在更新时该内容被覆盖

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

5.wp-config.php保护机制

可将wp-config.php从Wordpress的根目录中前移到上一级目录,另外可在.htacess的最上面添加如下代码禁止外部人员访问该文件

<files wp-config.php>
deny from all
</files>

6.禁止文件编辑

WordPress后台中默认允许管理员编辑PHP文件,可通在wp-config.php中添加以下代码来限制这种编辑

define( 'DISALLOW_FILE_EDIT', true );

攻击脚本中通常可能会包含eval(), exec(),base64_encode() / base64_decode, shell_exec(), gzinflate(), fopen(), curl_exec(), popen(),可在Linux下cd到博客根目录导出相关的文件进行查看,如

grep -irl "eval(\|exec(\|base64(" ./ > ../testlog

以上只是列举一部分例子,要保障自身博客的安全,需要在平时就多注意,比如在插件和主题的选择上等等。

WordPress如何为文章中指定关键词添加超链接?

这一功能可通过很多插件来实现,我们介绍一种无需插件即可轻松实现该功能的方法。找到当前主题目录下的functions.php文件(后台点击Appearance>Editor亦可找到该文件)并添加如下代码:

function replace_text_wp($text){  
    $replace = array(  
        'keyword1' => '<a href="http://alanhou.org/" rel="bookmark" title="keyword1">keyword1</a>',
	'keyword2' => '<a href="http://alanhou.org/" rel="bookmark" title="keyword2">keyword2</a>',  
    );  
    $text = str_replace(array_keys($replace), $replace, $text);  
    return $text;  
}  
  
add_filter('the_content', 'replace_text_wp');  

6/1/2016更新

1.此更新解决在img的alt属性或a标签的title属性出现同一关键词时会同时被替换导致代码错乱的问题

2.解决大小写替换问题(如需区分大小写请将str_ireplace替换为str_replace)

function replace_text_wp($text){  
	$parts = preg_split('/(<(?:img.*|a.*)>)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
	$replace = array(  
        'keyword1' => '<a href="http://alanhou.org/" rel="bookmark" title="keyword1">keyword1</a>',
	'keyword2' => '<a href="http://alanhou.org/" rel="bookmark" title="keyword2">keyword2</a>',  
    );  
	);  
	for ($i=0, $n=count($parts); $i<$n; $i+=2) {
		$parts[$i] = str_ireplace(array_keys($replace), $replace, $parts[$i]); 
	}
	$text = implode('', $parts);
	return $text;  
}
add_filter('the_content', 'replace_text_wp');

后台”添加媒体”、”插入或编辑链接”点击没有反应

打开wp-config.php,在最后面加上如下代码

define('CONCATENATE_SCRIPTS', false );

‘WP_Session_Tokens’ not found

这一报错发生在登录到后台时,出现这一问题的原因通常是由于不当升级所致,请下载最新的Wordpress版本并合并覆盖到根目录下(注意备份好wp-config.php),然后执行wp-admin/upgrade.php文件完成升级

Fatal error: Class 'WP_Session_Tokens' not found in D:\xampp\htdocs\wordpress\wp-includes\pluggable.php on line 900

 

访问后如出现File not found的报错

这一问题通常出现在Nginx服务器上,细心的朋友会发现url中间少了wp-admin这一块。解决这一问题需要在该网站Nginx配置文件server的结束花括号}前添加如下配置

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

 

正在执行例行维护,请一分钟后回来。

一般在升级主题、插件时会进行维护模式,此时访问网站就会出现“正在执行例行维护,请一分钟后回来。”的提示,这时登录SSH或FTP,找到根目录下的.maintenance文件并删除即可。

It may be down for maintenance or configured incorrectly.

这一报错通常出现在升级未正常完成的时候,首先尝试删除根目录下的.maintenance文件,看是否还会出现同样的报错。如果报错依然存在,请打开根目录下的wp-config.php,并将

define(‘WP_DEBUG’, false);

修改为

define(‘WP_DEBUG’, true);

这样就会出现具体报错信息,比如升级文件缺失等,可以针对具体问题进行具体解决

Server error

500

The website encountered an error while retrievinghttp://XXX.com/XXX. It may be down for maintenance or configured incorrectly.

如何自定义Wordpress登录后台

很多朋友在使用Wordpress时都会有想要修改后台登录界面的冲动,下面就介绍如何进行相关修改

Wordpress登录后台

大家最希望修改的可能就是上面的logo部分,这个图片部分实际上是通过CSS写到如下内容中的

<a href="https://wordpress.org/" title="Powered by WordPress" tabindex="-1">记录点滴生活  | Alan Hou的个人博客</a>

想要修改图片,只需在主题文件的functions.php中添加如下代码

function my_login_logo() { ?>





<style type="text/css">
        .login h1 a {
            background-image: url(<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png); //替换成相应的图片地址
            padding-bottom: 30px;
        }
    </style>





<?php }
add_action( 'login_enqueue_scripts', 'my_login_logo' );

与logo相关的还有其中的链接和title,这部分可以通过如下代码来进行修改

function my_login_logo_url() {
    return home_url();
}
add_filter( 'login_headerurl', 'my_login_logo_url' );

function my_login_logo_url_title() {
    return '记录点滴生活  | Alan Hou的个人博客';
}
add_filter( 'login_headertitle', 'my_login_logo_url_title' );

当然很多完美主义者一定会不满足于此,那么就可以添加自己的css和js文件,在functions.php中添加代码如下:

function my_login_stylesheet() {
    wp_enqueue_style( 'custom-login', get_template_directory_uri() . '/style-login.css' );
    wp_enqueue_script( 'custom-login', get_template_directory_uri() . '/style-login.js' );
}
add_action( 'login_enqueue_scripts', 'my_login_stylesheet' );

To perform the requested action wordpress needs to access your web server. 

在本地进行插件或主题安装时出现上述报错,解决方法是在wp-config.php中加入

隐藏Admin Toolbar

针对用户可在Users>Your Profile中进行操作,而全局隐藏可通过在functions.php中添加如下代码:

如何通过数据库修改主题