Author Archives: Node

linux centos7下MariaDB10.1升级到MariaDB10.2新版本

下载二进制安装包,地址 //downloads.mariadb.org/mariadb/10.2.5/

# cd /usr/local/
# wget //mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.5/bintar-linux-glibc_214-x86_64/mariadb-10.2.5-linux-glibc_214-x86_64.tar.gz

停止当前数据库

# systemctl stop mysql.server

删除MariaDB10.1的软连接

# rm -rf /usr/local/mysql

注意:首先你的mysql在安装的时候创建的是软连接,如果不是就重命名mysql文件夹,否则删除后数据就没有了(除非你的数据不是放在mysql安装文件夹内)。不删除还有个好处;如果升级失败,就能快速回滚。如果/usr/local/mysql目录是软连接,请忽略这段。

# mv /usr/local/mysql /usr/local/mysqlbak

解压下载的安装包,刚刚是下载到/usr/local/下

# tar zxvf mariadb-10.2.5-linux-glibc_214-x86_64.tar.gz //解压文件
# ln -s mariadb-10.2.5-linux-glibc_214-x86_64 mysql //创建软连接
# chwon -R root .
# chown -R mysql data
# systemctl start mysql.server

升级成功,然后再升级mysql数据库字典,否则日志中会产生很多错误信息。

# /usr/local/mysql/bin/mysql_upgrade -uroot -p
Enter password: 【输入mysql的root密码】

Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database……………..
…………………………………..
………………….
Upgrade process completed successfully.
Checking if update is needed.

升级报错的话,检查你的my.cnf文件,看其中的数据库存储路径是否正确。我的数据存储与mysql安装不在同一目录。

# systemctl restart mysql.server //重启mysql数据库

届时已经升级成功,可以登录mysql查看

# mysql -uroot -p
Enter password: 【输入mysql的root密码】

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9110
Server version: 10.2.5-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]>

升级完成。

总结:升级的过程当中有些问题需要注意,我升级的时候mysql安装路径和数据存储文件不在同一目录,这样我就可以直接重命名之前的mysql安装目录(或删除软连接),如果您的数据是和mysql安装文件在同一目录,那么就需要把/usr/local/mysqlbak/data ,data这个目录拷贝到mariadb-10.2.5-linux-glibc_214-x86_64内,并给mysql用户和组权限即可。

linux centos7.3导出、导入、Mariadb(MySQL)数据库命令

导出mariadb数据库有多种解决方案,一般采用phpmyadmin或Navicat for MySQL等,我演示是常用的命令行模式。

分别是;-u用户、-p密码、数据库名、> 导出路径。以.sql结尾。

/usr/local/mysql/bin/mysqldump -uroot -p renwole > /home/renwole.sql

回车后输入用户密码,导出成功,文件在home下。

注意:如果只导出表结构,在-p后面加上-d即可。
导入数据库有2种解决方案。

方案一

MariaDB [(none)]> create database renwole; //建立空数据库名
MariaDB [(none)]> use renwole; //选择数据库
MariaDB [(none)]> set names utf8; //设置数据库导入编码
MariaDB [(none)]> source /home/renwole.sql; //导入数据(注意sql文件的路径)

方案二

# mysql -uroot -p renwole < /home/renwole.sql

建议使用第二种方案导入,简单快捷不用设置导入编码,不易出错。
以上解决方案也适用于mysql&mariadb任意版本

转载请注明本站,谢谢!

linux centos7.3修改现有mariadb数据库存储路径

有的lnmp环境包或yum安装方式默认将mariadb数据库装在系统盘,其中就包括数据存储文件,万一系统宕机无法启动,那么数据文件就有损坏的可能,甚至造成无法挽回的局面。接下来我们就可以单独将数据存储文件放在其他分区或数据盘,这样即便是系统挂掉,也能轻易快速恢复mariadb数据库的正常运行。

如果你不知道当前数据库路径,只需要输入以下命令即可查看到:

回车后输入您的mariadb密码后回车

# mysql -uroot -p

输以下命令显示各种mariadb的路径调用情况。其中datadir项就是现存储的路径。

MariaDB [(none)]> show variables like ‘%dir%’;

退出数据库登录状态

MariaDB [(none)]> exit;

停止数据库

# systemctl stop mysql.server

新建mariadb新存储的路径文件夹

# mkdir -p /home/mysql/data

进入home目录

# cd /home

给新的路径文件夹mysql用户权限

# chown -R mysql:mysql /mysql

修改下面启动脚本mysql文件中的datadir路径,mysql启动脚本路径不一样,也有可能会在/usr/lib/systemd/system目录下(centos7)

# vi /etc/init.d/mysql

找到datadir=/var/lib/mysql修改成datadir=/home/mysql/data,如果有相同的/var/lib/mysql路径,同样修改为/home/mysql/data,

例如:

“innodb_data_home_dir”和“innodb_log_group_home_dir“

修改后保存并退出,在修改my.cnf中的数据存储路径

修改my.cnf文件中datadir=路径和上面修改的方法一样,修改还好以后保存并退出,然后启动mariadb服务。

# vi /etc/my.cnf

# systemctl start mysql.server

注意:如果你有数据文件,那么就把你的贝到/home/mysql/data下,还有/var/lib/mysql下的mysql件夹也拷贝过去,其他文件就不要拷贝了,这样你新建的用户和密码都会是你以前的。如果拷贝所有文件,就会启动报错。

如果以上方式不能成功且启动报错,可以在重启失败后执行初始化数据库命令,执行数据库命令前,/home/mysql/data下必须是空的,初始化成功后再导入数据库,以下是初始化数据库的命令:

# /usr/local/mysql/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/home/mysql/data

再次启动就正常了

# systemctl restart mysql.server

初始化成功后,数据库密码是空的,执行以下命令开始设置密码

# /usr/local/mysql/bin/mysql_secure_installation

注意:第一个是提示你输入mysql密码,其实新安装的mysql默认是空密码,然后直接回车输入两次新密码回车,接下来全部按Y即可(基本上是删除了test测试数据库和匿名账号和删除后立刻生效(最后一个Y))。
到此数据库修改路径已经完成。如你有更好的方法,希望你能提出来,我们一起学习共同努力、进步。转载请注明,谢谢!

2017常用的mirrors开源镜像站

以下镜像站对国内速度都比较快的,有的不是在国内,但实用性非常强

//mirrors.aliyun.com //阿里云开源镜像(国内推荐使用)
//mirrors.163.com //网易163开源镜像站(国内推荐使用)
//mirrors.sohu.com //搜狐开源镜像站(国内)
http://vault.centos.org //Centos官方开源镜像站(国外推荐使用)
//mirrors.ctyun.cn //电信天翼云开源镜像站(国内)

若以上常用开源镜像站不能满足你的需求,可以到Centos官方推荐的去选择

//mirror-status.centos.org/#cn

vim编辑器显示行数

常常在linux下使用vi编辑某个文件的时候,基本上不显示任何行数,有时候必须将文件传输到本地使用强大编辑器修改,在这里我分享一个小命令了,当你编辑某个配置文件的时候输入以下命令即可显示行数。适用于任何linux开源系统。

set nu
set number

 

永久生效方案;

# vi ~/.vimrc //或者直接输入添加下面命令

set nu

添加以后保存并退出!

这样就不用每次都输入命令查看行数了,以上2种方法都可以为vi设置行号,如果要取消的话,则输入

:set nonu

并删除vi ~/.vimrc文件中的set nu即可。

行号的设置是vi的环境设置,不会影响文本的内容。一定要切记不是在终端输入,是在进入编辑文本的时候,例如:

# vi /usr/local/nginx/nginx.cnf

执行后输入Shift+: 然后输入上面提到的命令参数就显示行数啦。

Centos 7 源码编译安装 Nginx 1.13

关于nginx的相关介绍我就不说了,既然你选择nginx作为你的web服务器,想必你多少也对nginx server有不同认知和理解,接下来我就直接安装。

1.先决条件:

我使用的是centos7.3 64位核心版系统,安装配置nginx前必须安装nginx依赖包,请查看;Centos 7编译安装php7.1之生产篇,并安装前文开头所提供的依赖包。此依赖组件包适用于Nginx任意版本。

新建web用户和组

$ /usr/sbin/groupadd www
$ /usr/sbin/useradd -g www www
$ ulimit -SHn 65535 //设置linux高负载参数

2.从官方下载Nginx以及OpenSSL

下载Nginx时有两个版本:开发版和稳定版,如果用于生产就下载稳定版本,//nginx.org/en/download.html (最好下载最新版本的稳定版,这样会有bug修复以及新特性)我下载的是就是目前最新版本nginx-1.13.5。

$ cd /tmp
$ wget //www.openssl.org/source/openssl-1.1.0e.tar.gz
$ tar zxvf openssl-1.1.0e.tar.gz
$ wget //nginx.org/download/nginx-1.13.5.tar.gz
$ tar zxvf nginx-1.13.5.tar.gz
$ cd nginx-1.13.5

3.安装Nginx

你可能会注意到有些文档教程安装nginx的时候,并未指派这么多模块,(看起来好长),有的连模块和用户都没有指派,其实模块是根据自己的需要指派的, 如果想以后不麻烦,那么就按照下面的模块指派就行了,其实这也算是全能的了,不然后期你需要什么还得重新编译进去,不是很麻烦,但也不省事。至于是否指派用户组,我坚决会让你指派,这可关乎nginx配置的可用性和安全稳定。

$ ./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-pcre \
--with-openssl=/tmp/openssl-1.1.0e \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_image_filter_module \
--with-http_slice_module \
--with-mail \
--with-threads \
--with-file-aio \
--with-stream \
--with-mail_ssl_module \
--with-stream_ssl_module \
$ make -j8 && make install //编译并安装

4.创建 systemctl 系统 Nginx 单元文件

安装完成后还需要开机自启动,不然每次开机都需要手动,那岂不是太麻烦。

$ vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP /usr/local/nginx/logs/nginx.pid
ExecStop=/bin/kill -s QUIT /usr/local/nginx/logs/nginx.pid
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存并退出。

5.加入开机自启动并启动Nginx

$ systemctl enable nginx.service
$ systemctl restart nginx.service

6.设置Firewalld防火墙

$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload

7.查看Nginx是否启动成功

$ ss -ntlp

可以查看到nginx进程已经运行了。到此nginx安装就完成了,可能你还会有疑问,nginx怎么解析并支持php程序呢,别慌,下一篇文章中我会写到。

Centos 7源码编译安装 php7.2 之生产篇

介绍:

久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说。如果你是升级或新安装,那你首先需要考虑php7和程序是否存在兼容性,如果程序是基于php5开发的,那么就需要考虑php7是否适合你当前的生产环境,今天我就实操并安装用于生产中。

先安装php依赖包,否则在编译安装php7的过程当中会出现各种报错,安装完成后即可进入下一个环节。

安装扩展包并更新系统内核:

$ yum install epel-release -y
$ yum update

安装php依赖组件(包含Nginx依赖):

$ yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel

创建用户和组,并下载php安装包解压:

$ cd /tmp
$ groupadd www
$ useradd -g www www
$ wget //am1.php.net/distributions/php-7.2.1.tar.gz
$ tar xvf php-7.2.1.tar.gz
$ cd php-7.2.1

设置变量并开始源码编译:

$ cp -frp /usr/lib64/libldap* /usr/lib/
$ ./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--with-mcrypt \
--with-libmbfl \
--enable-ftp \
--with-gd \
--enable-gd-jis-conv \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--with-pear \
--enable-maintainer-zts \
--with-ldap=shared \
--without-gdbm \
--enable-fileinfo \

若无报错执行下一步安装,如果编译过程中出现错误,根据报错安装依赖包,通常不会出现这种问题。

注意:–enable-gd-jis-conv  此参数会导致Zabbix中文字符乱码,建议取消。

开始安装:

$ make -j 4 && make install

完成安装后配置php.ini文件:

$ cp php.ini-development /usr/local/php/etc/php.ini
$ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
$ cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

修改 php.ini 相关参数:

$ vim /usr/local/php/etc/php.ini

expose_php = Off
short_open_tag = ON
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2
extension = "/usr/local/php/lib/php/extensions/no-debug-zts-20160303/ldap.so"

设置 OPcache 缓存:

[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20160303/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

设置php安全函数:

$ vim /usr/local/php/etc/php.ini

默认值:

disable_functions =

修改为:

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

或通配:

disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru

配置www.conf

取消以下注释并修改优化其参数:

listen = /var/run/www/php-cgi.sock
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
listen.backlog = -1
pm.max_children = 180
pm.start_servers = 50
pm.min_spare_servers = 50
pm.max_spare_servers = 180
request_terminate_timeout = 120
request_slowlog_timeout = 50
slowlog = var/log/slow.log

创建php-cgi.sock存放目录

$ mkdir /var/run/www/
$ chown -R www:www /var/run/www

配置php-fpm.conf

取下以下注释并填写完整路径:

pid = /usr/local/php/var/run/php-fpm.pid

至此php7已经安装完成。

说明:禁用php函数,如果程序需要这些函数,可以取消禁止,新手建议忽略此步骤。

创建system系统单元文件php-fpm启动脚本:

$ vim /usr/lib/systemd/system/php-fpm.service

添加如下变量内容:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

启动php-fpm服务并加入开机自启动:

$ systemctl enable php-fpm.service
$ systemctl restart php-fpm.service

PHP整个安装过程已经完成。如果你是按照本文安装未成功的,希望你能留言说明错误原因,我将无偿协助你配置。

如果你有好的建议完善该文章,非常欢迎你提出和改进,我们一起共同学习和进步。

Centos 7 二进制安装配置 MariaDB(MySQL)数据库

前言:

很久没安装数据库服务器了,记得上次 MySQL 安装配置的时候,系统还是 Cenots 6.5 ,现在 Centos 系统版本更新太快,都跟不上步伐了,刚好最近公司需要几台 Mariadb Server 刚好练练手。

由于每家公司的数据库服务器 版本不同,但我依然推荐大家使用 Mariadb 数据库,至少目前该社区及产品非常稳定,至于有什么新功能,建议去其官方了解更多特性。

查看系统版本命令

$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core) x64

1.安装 MariaDB(MySQL)

下载MariaDB二进制安装包:

//downloads.mariadb.org

解压并安装 Mariadb-devel 静态库:

$ yum install mariadb-devel numactl -y
$ mkdir /renwole
$ cd /renwole
$ tar zxvf mariadb-10.2.8-linux-glibc_214-x86_64.tar.gz

移动目录并创建软连接:

$ mv mariadb-10.2.8-linux-glibc_214-x86_64 /usr/local
$ cd /usr/local
$ ln -s mariadb-10.2.8-linux-glibc_214-x86_64 mysql

创建 MariaDB(MySQL)用户和组

$ groupadd mysql
$ useradd -g mysql mysql

赋予 MariaDB(MySQL)目录权限:

$ cd /usr/local/mysql
$ chown -R root .
$ chown -R mysql data

2.配置 MariaDB(MySQL)

删除自带的 my.cnf 配置文件,并创建新的配置文件:

$ rm -rf /etc/my.cnf
$ cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf

注:/usr/local/mysql/support-files下有5个配置文件,请根据服务器的内存大小选择配置文件(你也可以自定义优化my.cnf配置文件,如果你之前有,只要是同版本就可以正常使用,从而无须再次创建,MariaDB(MySQL)启动的时候会自动到/etc下寻找my.cnf文件)。

文件分别是:

my-small.ini (内存 <= 64M)
my-medium.ini (内存 128M )
my-large.ini (内存 512M)
my-huge.ini (内存 1G-2G)
my-innodb-heavy-4G.ini (内存 4GB)

在my.cnf文件的 mysqld 字段加入数据库路径:

$ vim /etc/my.cnf

datadir = /usr/local/mysql/data

注意:这个路径就是初始化数据库用的,将来你的数据库都存在这个目录,这个存储路径是可以更改到其他路径的,以免将来系统宕机带来不必要的损失,所以请根据自己的需求更换相对的路径,别忘记给权限就行。

3.初始化数据库

$ cd /usr/local/mysql/scripts
$ ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

4.设置启动脚本

$ cd /usr/local/mysql/support-files
$ cp mysql.server /etc/init.d/mysql
$ chmod +x /etc/init.d/mysql
$ systemctl enable mysql

4.设置变量

添加系统变量,例如直接输入:mysql -uroot -p 会提示无此命令:

$ vim /etc/profile

在文件末端添加以下内容:

PATH=$PATH:/usr/local/mysql/bin
export PATH

使变量立即生效并启动Mysql数据库:

$ source /etc/profile
$ systemctl restart mysql
$ ss -antp

5.初始化MariaDB(MySQL)安全账户

$ /usr/local/mysql/bin/mysql_secure_installation

注意:回车提示你输入MariaDB(MySQL)密码,新安装的mysql密码默认为空,所以直接回车,然后输入Y设置MySQL密码,输入两次回车即可,接下来全部按Y即可(大致意思是删除test数据库、匿名账号、最后Y配置生效。

至此安装完毕,如果你是按照该教程一步一步部署的,那你一定能成功,如果没成功,可以留言,我可以无偿协助。