存档

文章标签 ‘mysql’

ubuntu20.04安装mysql8之后,php5程序和phpmyadmin出现#2054 无法登录MySQL服务器的解决方案

2020年5月19日 没有评论

最近新装了ubuntu20.04版本,如果安装了php5,在安装mysql之后,使用phpmyadmin登陆,会出现2054 无法登录MySQL服务器

这个问题经过一晚上的折腾,终于找到了解决方案:

一步:

在mysql安装之后,执行:sudo mysql_secure_installation(按照提示操作即可)(这里会让输入root的密码)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address,注释掉
sudo /etc/init.d/mysql restart
mysql -uroot -p
输入root密码(sudo mysql_secure_installation的时候会让输入)
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
UPDATE mysql.user SET host = ‘%’ WHERE user = ‘root’;#允许远程访问,如果不需要,可以不操作
FLUSH PRIVILEGES;

当然,我们也可以新建用户:(127.0.0.1也可以再增加一个内网ip)
CREATE USER ‘root’@’127.0.0.1’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’127.0.0.1’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

第二步:

虽然执行了上方调整,但是还是无法连接,是由于Mysql8.0将默认的字符集改为了utfmb4,因此和客户端(不仅仅是PHP)的通信无法识别

所以,我们需要进行:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在mysqld的选项中增加:

collation-server = utf8_unicode_ci
character-set-server = utf8

重启mysql,完美解决问题(网上搜了很多方法,大部分都进行了第一步,但是没有进行第二步,无法解决问题)

参考网址:https://blog.csdn.net/king921004/article/details/106184909/
参考网址:https://segmentfault.com/a/1190000017370224?utm_source=tag-newest

MySQL与MongoDB的操作对比

2015年8月5日 没有评论

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。

以我们公司项目为例,在早期的项目中,都在使用关系型数据库,用过SQLServer,Oracle,DB2,后来全部转向Mysql,原因很简 单:Mysql在性能不错的情况下,有着开源优势。Mysql的事务性与高性能是我们主要考虑的。后来,由于项目要用到用户系统,即会有大量的用户数据进 行交互--海量存储,Mysql的读写速度会有一点瓶颈,于是我们就想到了最近发展很强势的Nosql。在Nosql早期的memcache的发展下,又 出现了很多非关系型数据库,比如redis,mongodb。经过一段时间的测试,redis与mongodb的读写速度确实比Mysql有着很明显的优 势。mongodb的写入速度大约2.5W/次每秒。

mongodb以BSON结构(二进制)进行存储,对海量数据存储有着很明显的优势。下面是Mongodb与Mysql的操作命令的对比。

作用 MySQL MongoDB
服务器守护进程 mysqld mongod
客户端工具 mysql mongo
逻辑备份工具 mysqldump mongodump
逻辑还原工具 mysql mongorestore
数据导出工具 mysqldump mongoexport
数据导入工具 source mongoimport
新建用户并授权 grant all on *.*
to username@’localhost’
identified by ‘passwd’;
db.addUser(“user”,”psw”)
db.auth(“user”,”psw”)
显示库列表 show databases; show dbs
进去库 use dbname; use dbname
显示表列表 show tables; show collections
查询主从状态 show slave status; rs.status
创建库 create database name; 无需单独创建,直接use进去
创建表 create table tname(id int); 无需单独创建,直接插入数据
删除表 drop table tname; db.tname.drop()
删除库 drop database dbname; 首先进去该库,db.dropDatabase()
插入记录 insert into tname(id) value(2); db.tname.insert({id:2})
删除记录 delete from tname where id=2; db.tname.remove({id:2})
修改/更新记录 update tname set id=3
where id=2;
db.tname.update({id:2},
{$set:{id:3}},false,true)
查询所有记录 select * from tname; db.tname.find()
查询所有列 select id from tname; db.tname.find({},{id:1})
条件查询 select * from tname where id=2; db.tname.find({id:2})
条件查询 select * from tname where id < 2; db.tname.find({id:{$lt:2}})
条件查询 select * from tname where id >=2; db.tname.find({id:{$gte:2}})
条件查询 select * from tname where id=2
and name=’steve’;
db.tname.find({id:2,
name:’steve’})
条件查询 select * from tname where id=2
or name=’steve’;
db.tname.find($or:[{id:2},
{name:’steve’}])
条件查询 select * from tname limit 1; db.tname.findOne()
模糊查询 select * from tname where name
like “%ste%”;
db.tname.find({name:/ste/})
模糊查询 select * from tname where name
like “ste%”;
db.tname.find({name:/^ste/})
获取表记录数 select count(id) from tname; db.tname.count()
获取有条件
的记录数
select count(id) from tname
where id=2;
db.tname.find({id:2}).count()
查询时去掉
重复值
select distinct(last_name)
from tname;
db.tname.distinct(‘last_name’)
正排序查询 select *from tname order by id; db.tname.find().sort({id:1})
逆排序查询 select *from tname
order by id desc;
db.tname.find().sort({id:-1})
取存储路径 explain select * from tname
where id=3;
db.tname.find({id=3}).explain()

特别要注意的是:mongodb插入多个字段语法

> db.user.insert({id:1,name:’steve’,sex:’male’})  正确

> db.user.insert({id:2},{name:’bear’},{sex:’female’})  错误

分类: mysql优化 标签: , ,

还是比较简单的php链接mysql类

2014年11月12日 没有评论

<?php
class db{
var $Record=array();var $Link_ID=0;var $Query_ID=0;
function db(){
if(!$this->Link_ID){
$this->Link_ID=mysql_connect(‘localhost’,’root’,’123456′);
mysql_select_db(‘test’,$this->Link_ID);
}
mysql_query(“set names ‘utf8′”,$this->Link_ID);
}
function insert_id(){return mysql_insert_id($this->Link_ID);}
function query($sql){
$this->Query_ID=mysql_query($sql);
return $this->Query_ID?$this->Query_ID:0;
}
function next_record() {
if(!$this->Query_ID) {return 0;}
$this->Record=mysql_fetch_array($this->Query_ID);
return is_array($this->Record)?$this->Record:0;
}
function query_first($sql){
if(!$this->query($sql)) {return 0;}
$this->Record=mysql_fetch_array($this->Query_ID);
return $this->Record;
}
function num_rows() {return mysql_num_rows($this->Query_ID);}
function num_affected_rows() {return mysql_affected_rows();}
function f($field) {return $this->Record[$field];}
}
$db=new db();
?>

分类: php学习 标签: ,

ubuntu安装apache2+php5+mysql5+vsftpd全程记录

2014年11月4日 没有评论

——————-

date,检测时间
ifconfig,查看ip
—————————-

修改dns
sudo vim /etc/network/interfaces
加入:
dns-nameserver 8.8.8.8 8.8.4.4

执行:sudo resolvconf -u(重新生成/etc/resolv.conf文件)
执行:sudo /etc/init.d/networking restart(重启网络)

修改本地解析
sudo vim /etc/hosts
127.0.0.1 输入IP
127.0.0.1 输入要绑定的域名

ubuntu 修改源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo vim /etc/apt/sources.list
输入:
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

执行:sudo apt-get update

如果无法连接,可以考虑修改ubuntu默认dns(请百度)

sudo apt-get update
sudo apt-get dist-upgrade升级系统,再执行sudo apt-get clean
———————–
开通ssh链接,sudo apt-get install openssh-server
sudo vim /etc/default/locale,查看语言版本,是否为en_US.utf-8
—————-

sudo du -h 目录,查看目录总大小

sudo apt-get install htop

—————–
设置ip
sudo vim /etc/network/interfaces
输入:
auto eth0  
iface eth0 inet static  
address 192.168.2.1
gateway 192.168.2.254
netmask 255.255.255.0
—————————————–

安装apache2:sudo apt-get install apache2

在www下面创建www和mysql

修改apache2配置文件,修改MaxKeepAliveRequests 3000,修改keepAliveTimeout 1200(session有效期)
将:HostnameLookups设置为Off

—————–

找到:IFModule mpm_prefork_module,配置为下:

StartServers 20(apache启动的时候开启主进程数)

MinSpareServers 10(最小进程数)

MaxSpareServers 25(最大进程数)

ServerLimit 10000

MaxClients 8500

MaxRequestsPerChild 200(访问量特别大的时候,可加大子进程数)

—————–

LogLevel crit

隐藏 Apache 版本信息
/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf 或 /etc/apache2/security 或 /etc/apache2/config-enable/security

ServerTokens Prod
ServerSignature Off

修改apache2的默认文件类型:/etc/apache2/mods-enabled/dir.conf

修改apache2的默认主目录为www/webroot
文件为:/etc/apache2/sites-available/default.conf
或者为:/etc/apache2/sites-available/000-default.conf

删除apache2中/etc/apache2/sites-available/default中的文件夹列表,Options indexes Foll ——–中的indexes
【参考内容:】

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /www/webroot/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /www/webroot/>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory “/usr/lib/cgi-bin”>
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        allow from all
        </Directory>

    #ErrorLog “|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/error%Y-%m-%d.log 86400 +480”

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel crit

    #CustomLog “|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/custom%Y-%m-%d.log 86400 +480” combined

    Alias /doc/ “/usr/share/doc/”
    <Directory “/usr/share/doc/”>
        Options MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.055178.com
    DocumentRoot “/www/webroot/055178.com/www/”
    <Directory /www/webroot/055178.com/www/>
            Options FollowSymLinks MultiViews
            AllowOverride All
            php_admin_value open_base “/www/webroot/055178.com/www:/tmp”
    </Directory>
    #ErrorLog “|/usr/sbin/rotatelogs /www/webroot/055178.com/logs/error%Y-%m-%d.log 86400 +480”
    #CustomLog “|/usr/sbin/rotatelogs /www/webroot/055178.com/logs/custom%Y-%m-%d.log 86400 +480” combined
</VirtualHost>

需要注意的是,如果是apache 2.4,那么需要更改为:(而且每个虚拟主机都要加一个Require all granted)

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /www/webroot/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /www/webroot/>
        Options FollowSymLinks MultiViews
        AllowOverride All
        #Order allow,deny
        #allow from all
        Require all granted
        </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory “/usr/lib/cgi-bin”>
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        #Order allow,deny
        #allow from all
        Require all granted
        </Directory>

    #ErrorLog “|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/error%Y-%m-%d.log 86400 +480”

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel crit

    #CustomLog “|/usr/sbin/rotatelogs ${APACHE_LOG_DIR}/custom%Y-%m-%d.log 86400 +480” combined

    Alias /doc/ “/usr/share/doc/”
    <Directory “/usr/share/doc/”>
        Options MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.055178.com
    DocumentRoot “/www/webroot/055178.com/www/”
    <Directory /www/webroot/055178.com/www/>
            Options FollowSymLinks MultiViews
            AllowOverride All
        Require all granted
            php_admin_value open_base “/www/webroot/055178.com/www:/tmp”
    </Directory>
    #ErrorLog “|/usr/sbin/rotatelogs /www/webroot/055178.com/logs/error%Y-%m-%d.log 86400 +480”
    #CustomLog “|/usr/sbin/rotatelogs /www/webroot/055178.com/logs/custom%Y-%m-%d.log 86400 +480” combined
</VirtualHost>

—————————–

改变/www/webroot用户组为www-data:chown www-data:www-data /www/webroot -R

在文件后面加上:ServerName 127.0.0.1 防止重启报:could not reliably determin the … 127.0.0.1错误

可能会出现:invalid common php_admin_value错误,可以:
那是因为你没装php

———-
开启重写
sudo a2enmod rewrite

开启防攻击
sudo apt-get install libapache2-mod-evasive
/etc/apache2/mods-enabled/evasive.conf
加入:
<IFmodule mod_evasive20.c>
    DOSHashTableSize        3097
    DOSPageCount            1
    DOSSiteCount            100
    DOSPageInterval         1
    DOSSiteInterval         1
    DOSBlockingPeriod       20
    DOSWhitelist            127.0.0.1
    DOSLogDir               “/var/lock/mod_evasive”
</IfModule>

将不必要的so注释
status
negotiation
env

编辑mpm_prefork.conf
<IfModule mpm_prefork_module>
    StartServers            20
    MinSpareServers        5
    MaxSpareServers        10
    ServerLimit             3200
    MaxRequestWorkers    1000
    MaxConnectionsPerChild  800
</IfModule>

【【【附带:实时检测HTTPD连接数:watch -n 1 -d “pgrep httpd|wc -l”】】】

—————————————–

安装php

sudo apt-get install libapache2-mod-php5 php5 php5-gd php5-mysql php5-xcache
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

修改/etc/php5/apache2/php.ini:

1,short_open_tag = Off
2,error_reporting = ~E_NOTICE
3,post_max_size = 20M
4,upload_max_filesize = 4M
5,date.timezone = PRC
6,expose_php Off

找到disable_functions
改为:
phpinfo,mail,sleep,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,system,exec,exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_client,stream_socket_server,pfsockopen,disk_total_space,disk_free_space,chown,diskfreespace,getrusage,get_current_user,getmyuid,getmypid,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo,putenv,

————————————-

 安装ImageMagic扩展(可以考虑先不装?运行phpmyadmin,如有提示,再试)

采用pear方式安装
I. 安装ImageMagick
sudo apt-get install imagemagick

II. 安装imagemagick 的lib 供php调用
sudo apt-get install libmagick++-dev

III. 调用当前的pecl安装imagick
pecl install imagick

IV. 修改php.ini.重启apache服务器
在php.ini中添加: extension = imagick.so

—————————————–

安装mysql

sudo apt-get install mysql-server mysql-client

配置mysql如下:

1,query_cache_limit = 100M
2,query_cache_size  = 1024M
3,max_allowed_packet
4,key_buffer
5,max_connections = 12000,设为大于或等于ServerLimit 10000(用mysql_pconnet)最大不能超过16384,如果没有,自行添加
注释掉log_error
6,转移mysql数据库目录:
    1,sudo service mysql stop
    2,sudo cp -R -P /var/lib/mysql /www/mysql
    【第二步请注意,务必不要事先sudo mkdir /www/mysql,直接使用上面的方法,会自动创建,否则会导致无法启动】
    3,sudo chown mysql:mysql /www/mysql -R
    4,修改/etc/mysql/my.cnf中的datadir=/www/mysql
    4,sudo vim /etc/apparmor.d/usr.sbin.mysqld【/var/lib/mysql r, 改为 /www/mysql r,】【/var/lib/mysql/** rwk,  改为  /www/mysql/** rwk,】
    5,sudo /etc/init.d/apparmor reload
    5,sudo service mysql start
    6,[mysqld]增加:default-storage-engine=MyISAM(登陆后,show engines;查看)

    登陆后,修改默认编码
    —set character_set_client=utf8;
    —set character_set_connection=utf8;
    —set character_set_database=utf8;
    —set character_set_results=utf8;
    —set character_set_server=utf8;
    —set character_set_filesystem=utf8;
    —set character_set_database=utf8;
    —set character_set_server=utf8;
   
    —set collation_server=utf8;(mysql 5.5 报错,但不影响)
    —set collation_database=utf8;(mysql 5.5 报错,但不影响)
    —set collation_connection=utf8;(mysql 5.5 报错,但不影响)
        
    【命令:
        show variables like ‘character_set_%’;
        show variables like ‘collation_%’;
    】
7,安装mcrypt extension
sudo apt-get install php5-mcrypt

8,开启远程连接:
注释掉my.cnf中的:bind-address 一行
同时建议,在[mysqld]下面增加skip-name-resolve
可以解决远程连接比较慢的问题(类似报错:Lost connection to MySQL server at ‘waiting for initial communication packet’)

如果卸载mysql后重新安装,打开php链接mysql提示找不到mysqli,请重新输入:sudo apt-get install libapache2-mod-php5 php5 php5-gd php5-mysql,将自动加载mysql

9,其它部分优化
确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数; (新版是:skip-external-locking)
如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;

参考:http://imysql.com/2014/09/28/mysql-optimization-case-blob-stored-in-innodb-optimization.shtml

———————————

配置ftp

sudo apt-get install vsftpd

cd /etc
sudo cp -r vsftpd.conf vsftpd.conf.backup
sudo mkdir vsftpd.users

1,sudo vi /etc/vsftpd.conf
配置如下:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessages_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#xferlog_file=/var/log/vsftpd.log(可以注释)
xferlog_std_format=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

【上方默认基本存在,下方为添加:】

max_clients=10(#FTP服务器最大承载用户)
max_per_ip=5 (#限制每个IP的进程)
pasv_enable=YES(是否允许被动模式登陆)
pasv_min_port=9981
pasv_max_port=9986
port_enable=YES
user_config_dir=/etc/vsftpd.users(单个用户配置文件,以用户名命名文件)
anon_max_rate=0
local_max_rate=5120000
guest_enable=YES(#如果ftp用户名不是ubuntu系统用户的话,必须开启)
guest_username=www-data
virtual_use_local_privs=YES

安装db-util数据库软件
sudo apt-get install db-util

cd ~
创建ftp_users.txt,测试内容如下:
rootuser
123

sudo db_load -T -t hash -f ftp_users.txt /etc/vsftpd_login.db
sudo chmod 600 /etc/vsftpd_login.db


修改/etc/pam.d/vsftpd,内容如下:

注释掉所有

增加如下:
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login(后缀.db省略了)
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login(后缀.db省略了)

到/etc/vsftpd.users下新建:rootuser文件,内容如下:local_root=/www/webroot/

自vsftpd2.3.5版本,根目录无写权限,如果有写权限,会提示无法登陆,解决:sudo chmod a-w /www/webroot

如果提示:500 OOPS: cannot change directory:/var/www
请在在/var下创建www

重启 sudo service vsftpd restart,生效

———————————

下面配置内容如下:

【服务器防DDos攻击】

【开启gzip完整版】

【mysql缓存】

【HostnameLookups设置为off】

【启用mod_proxy做正向代理、反向代理】

【apache开启mod_cache缓存】

【apache不记录图片日志】

————————————–

【memcached】

由于memcached与客户端的通信是借助libevent来实现的,所以安装memcached前一定要先安装libevent. 下载解压,安装libevent

mkdir ~/src

cd ~/src

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

tar xzvf libevent-2.0.21-stable.tar.gz

cd libevent-2.0.21-stable

./configure –prefix=/usr

(此步出错:no acceptable c compiler found in path)
可以使用:sudo apt-get install gcc

make

可能会让装make,执行sudo apt-get install make

sudo make install

cd ..

2.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent

安装memcached:

sudo apt-get install memcached
sudo memcached -d -m 128 -p 11211 -u root,启动服务

这里需要说明一下memcached服务的启动参数:

-p **的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助2)安装Memcache客户端

sudo apt-get install php5-memcache

安装完以后我们需要在php.ini里进行简单的配置,打开/etc/php5/apache2/php.ini文件在末尾添加如下内容:

[Memcache]
memcache.allow_failover = On
memcache.max_failover_attempts = 20
memcache.chunk_size = 8192
memcache.default_port = 11211

查看状态:telnet 127.0.0.1 11211

php测试:
<?php
$mem = new Memcache; //创建Memcache对象
$mem->connect(“127.0.0.1”, 11211) or die (“Could not connect”); //连接Memcache服务器
$val = “这是一个Memcache的测试.”;
$key = md5($val);
$mem->set($key, $val, 0, 120); //增加插入一条缓存,缓存时间为120s
echo $mem->get($key);
die(“<br>done”);
?>

—————————–

彻底删除
sudo apt-get autoremove –purge 软件名称

清理:
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get autoclean

——————-

mod_expires

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/ico “access plus 1 year”
ExpiresByType image/icon “access plus 1 year”
ExpiresByType text/html A300
ExpiresByType text/plain A300
ExpiresByType text/css A3600
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpgg A604800
ExpiresByType image/jpeg A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType application/javascript “access plus 1 week”
ExpiresByType application/x-javascript “access plus 1 week”
ExpiresDefault “access plus 1 days”
</IfModule>

——————————

linux开启系统日志或者关闭不需要的日志

sudo vim /etc/rsyslog.d/50-default.conf

将需要的开启,不需要的注释就可以了。

重启rsyslog:

sudo /etc/init.d/rsyslog restart

分类: ubuntu高手 标签: , , , ,

利用phpMyBackupPro巧妙批量定期备份mysql数据库,phpmyadmin无法完成!

2013年6月15日 没有评论

由于工作需要,今天在网络寻找批量定期备份mysql数据库的方法,首先我从百度和谷歌都搜索了相关的phpmyadmin的使用文档,搜索关键词如下:
1,phpmyadmin批量备份mysql数据库
2,如何使用phpmyadmin定期备份mysql数据库
3,phpmyadmin定期批量备份mysql数据库
找了这些关键词都无法找到想要的结果,而最终的结果是phpmyadmin无法定期备份数据库。而且单次导出也很麻烦,最主要的是不支持远程ftp发送。

有了这些请求之后,我就尝试了用phpmyadmin来批量导出数据库为sql文件,其实这个phpmyadmin是可以做到的,具体流程如下:
1,打开phpmyadmin
2,点击export导出
3,选择所有数据库
4,选择zip压缩
5,开始导出
这样能完整的导出备份所有的数据库,但是效率低下,尤其是表一多,那就完蛋了。

后来通过网络搜索到phpMyBackupPro,可以非常巧妙的定期批量备份mysql,那么具体定期备份方法其实很简单,你只要下载phpMyBackupPro这个软件即可,然后到官方寻找批量备份的方法。
我这里只简单的介绍下方法

直接上传phpMyBackupPro下载包到ftp中,然后点击导航上的configuration,依次配置下信息,很简单的英文,都能看懂。
首次登陆不需要密码,配置完成之后需要mysql密码

最主要的一点是要告诉大家,务必修改默认的导出路径export为别的路径,否则太容易暴漏了。
修改方法:
打开definitions.php,修改$_PMBP_EXPORT_DIR即可,注意,目录一定要以”/”结尾

整体的批量定期备份mysql就大工搞成了。phpMyBackupPro还是不错的,尤其是在批量备份上,还支持远程ftp备份,建议phpmyadmin增加个这样的功能

css.php