基本优化完成(ip地址设置 yum源更新 字符集设置)php
安全优化完成(iptables关闭 selinux关闭 /tmp/ 1777)html
A.安装软件依赖包mysql
B.建立进程管理用户linux
C.下载nginx软件,进行编译安装(编译安装三步曲)nginx
D.建立软连接文件web
E.编写nginx配置文件sql
F.启动nginx服务shell
G.编写hosts解析文件,进行浏览器访问测试数据库
A.下载mysql软件vim
mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
B.二进制包方式安装mysql数据库软件
1 cd /server/tools 2 3 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
1 useradd -s /sbin/nologin -M mysql
1 cd /server/tools 2 3 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 4 5 ln -s /application/mysql-5.6.34/ /application/mysql
1 chown -R mysql.mysql /application/mysql/data #这里也能够直接让用户直接管理mysql目录 2 3 ll /application/mysql/data/
1 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 2 3 echo $?
提示:如何断定以上初始化命令执行成功
01.确认返回值
02.确认命令执行输出内容中,必须存在两个OK
03.经过数据库初始化操做,在data目录中建立出默认数据库信息和相关表信息
其中,查看初始化输出的内容
To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system
说明:mysql启动脚本默认在support-files/mysql.server,这里要复制mysql.server到系统启动目录
cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
注意mysql相关文件:启动脚本/etc/init.d/mysqld 启动命令/application/mysql/bin/mysqld_safe
由于两文件中都存在mysql安装默认路径/usr/local/mysql,故这里进行同时修改,以下
1 sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
1 cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
说明:mysql默认配置文件保存位置support-files/my-default.cnf,但my-default.cnf不能在mysql目录下配置,更改成/etc/my.cnf使系统可以识别mysql配置信息,且原有/etc/my.cnf与安装版本不一样
1 /etc/init.d/mysqld start 2 3 Starting MySQL.... SUCCESS! 4 5 netstat -lntup|grep mysql 6 7 tcp 0 0 :::3306 :::* LISTEN 3075/mysqld
说明:至此mysql数据库安装完成,能够检测进程和服务端口,确认服务是否启动正确
1 /application/mysql/bin/mysql
退出数据库时,尽可能不要用ctrl+c进行退出mysql ,使用ctrl+d进行退出
1 echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile 2 3 source /etc/profile 4 5 which mysql
a.查看数据库信息
1 mysql> show databases; 2 3 +--------------------+ 4 5 | Database | 6 7 +--------------------+ 8 9 | information_schema | 10 11 | mysql | 12 13 | performance_schema | 14 15 | test | 16 17 +--------------------+ 18 19 4 rows in set (0.13 sec)
b.查看数据表信息(二维表)
1 mysql> use mysql; #由于表属于库,故此处要具体到使用某一个数据库进行查看 2 3 Reading table information for completion of table and column names 4 5 You can turn off this feature to get a quicker startup with -A 6 7 Database changed 8 9 mysql> show tables; #显示信息
加入开机自启动
1 chkconfig --add mysqld 2 3 chkconfig mysqld on
给MySQL root用户设置密码
1 /application/mysql/bin/mysqladmin -u root password 'oldboy123' #本地设定密码,提示可忽略 2 3 mysql -u root -poldboy123 4 5 /application/mysql/bin/mysqladmin -u root -h web01 password 'oldboy123' #远端设定密码,择其一
1 show databases; #<-查询默认的数据库信息 2 create database oldboy; #<-建立新的数据库 3 drop database oldboy; #<-删除存在的数据库 4 use mysql; #<-表示选择使用一个数据库,至关于cd进入一个数据库 5 show tables; #<-查看数据库中表信息 6 select database(); #<-表示查看当前所在数据库,相似于pwd命令的功能 7 select user(); #<-查看当前登陆数据库的用户,相似于whoami命令 8 而且mysql还能够限制指定用户能够从哪里进行链接登陆数据库 9 select * from user\G; #<-查看user表中全部信息,而且纵行显示 10 select user,host from user; #<-查看user表中指定信息,而且横行显示 11 select user,host from mysql.user; #<-查看能够登陆mysql数据库的目录,以及均可以从哪里进行管理mysql数据库 12 grant all on *.* to user@'host' identified by 'oldboy123'; #<-建立用户 13 grant all on *.* to Old_Boy@'localhost' identified by 'oldboy123'; #<-建立用户(大写用户) 14 drop user 'user'@'host'; #<-删除用户及用户关联库 15 flush privileges; #<-刷新权限 16 初级 添加删除系列 17 create database wordpress; #<-建立数据库 18 drop database wordpress; #<-删除数据库
01.配置LNMP架构步骤
A.配置nginx配置文件
B.配置mysql数据库信息(SQL语句)
C.配置wordpress博客网站
02.架构服务器串联
a.数据库数据信息迁移(web服务器上的mysql数据迁移到10.0.0.51数据库服务器上)
b.将本地存储数据挂载到NFS共享存储服务器里(共享存储用户上传的数据信息)
1 yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y 2 3 yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y 4 5 rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel 6 7 yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
# zlib压缩有关软件 libxml2字符集有关软件 libjpeg图片有关软件等
说明:因为libiconv-devel没法进行yum安装,故使用编译以下
#和字符集转换的相关软件
1 mkdir -p /server/tools 2 3 cd /server/tools 4 5 #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz 6 7 tar zxf libiconv-1.14.tar.gz 8 9 cd libiconv-1.14 10 11 ./configure --prefix=/usr/local/libiconv 12 13 make 14 15 make install 16 17 cd ../
#和数据加密有关的三个软件
1 #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #更改epel源 2 3 yum -y install libmcrypt-devel mhash mcrypt 4 5 rpm -qa libmcrypt-devel mhash mcrypt
说明:此软件在centOS6.8以后,系统已经自带此软件功能,能够不进行安装
编译好的软件卸载方法:删除安装后的程序目录
FPM:rpm包制做软件---把编译后的程序目录进行打包,经过fpm指定rpm解压前要先安装哪些软件
自动化部署必备技能—定制化RPM包:http://blog.oldboyedu.com/autodeploy-rpm/
1 cd /server/tools/ 2 tar xf php-5.5.32.tar.gz 3 cd php-5.5.32 4 5 ./configure \ 6 --prefix=/application/php-5.5.32 \ #指定php软件安装位置 7 --with-mysql=/application/mysql \ #指定mysql软件安装位置 mysqlnd数据库服务没有安装在本地服务器上参数(web服务器视状况而定) 8 --with-pdo-mysql=mysqlnd \ #定义接口pdo 9 --with-iconv-dir=/usr/local/libiconv \ 10 --with-freetype-dir \ 11 --with-jpeg-dir \ 12 --with-png-dir \ 13 --with-zlib \ 14 --with-libxml-dir=/usr \ 15 --enable-xml \ 16 --disable-rpath \ 17 --enable-bcmath \ 18 --enable-shmop \ 19 --enable-sysvsem \ 20 --enable-inline-optimization \ 21 --with-curl \ 22 --enable-mbregex \ 23 --enable-fpm \ 24 --enable-mbstring \ 25 --with-mcrypt \ 26 --with-gd \ 27 --enable-gd-native-ttf \ 28 --with-openssl \ 29 --with-mhash \ 30 --enable-pcntl \ 31 --enable-sockets \ 32 --with-xmlrpc \ 33 --enable-soap \ 34 --enable-short-tags \ 35 --enable-static \ 36 --with-xsl \ 37 --with-fpm-user=www \ #fpm要与wrapper程序对接,用户需一致 38 --with-fpm-group=www \ 39 --enable-ftp \ 40 --enable-opcache=no
说明:LNMP架构部署时,若是mysql服务和web服务不在一台主机上,php配置参数须要进行调整
--with-mysql=/application/mysql/ => --with-mysql=mysqlnd
1 ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 2 3 touch ext/phar/phar.phar #建立软连接生成目录 4 5 make 6 7 make install
说明:此时/application下会生成程序文件信息
1 ln -s /application/php-5.5.32/ /application/php
php服务拥有两个配置文件
01.php.ini
1 cd /server/tools/php-5.5.32 2 3 ll php.ini* 4 5 -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development #开发人员调试用配置文件 6 7 -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production #生产常见全部配置文件
说明:文件比较命令vimdiff php.ini-development php.ini-production
php.ini-production 与 php.ini-development 文件区别关系对比:
① 生产文件:不会输出太多日志信息
② 开发文件:会输出大量程序测试日志信息
1 cp php.ini-production /application/php/lib/php.ini 2 3 cd /application/php/etc/ 4 5 cp php-fpm.conf.default php-fpm.conf
扩展命令:编译安装PHP时若配置未正确指定PHP进程用户信息,能够修改PHP文件进行调整
#sed -i 's#user = www#user = nginx#g;s#group = www#group = nginx#g' /application/php-5.5.32/etc/php-fpm.conf #忽略此步骤
1 /application/php/sbin/php-fpm 2 3 lsof -i :9000 #<-确认php 9000端口是否正确启动 4 5 ps -ef|grep php-fpm
1 vim extra/blog.conf 2 3 server { 4 5 listen 80; 6 7 server_name blog.etiantian.org; 8 9 location / { 10 11 root html/blog; 12 13 index index.php index.html index.htm; <--须要注意编辑修改默认首页文件 index index.php index.html index.htm; 14 15 } 16 17 location ~* .*\.(php|php5)?$ { #以php|php5结尾的动态资源访问文件交给php处理 18 19 root html/blog; 20 21 fastcgi_pass 127.0.0.1:9000; #使用127.0.0.0/24本地网段创建互联 22 23 fastcgi_index index.php; 24 25 include fastcgi.conf; 26 27 } 28 29 }
说明:利用nginx的location区块实现动态请求与静态请求的分别处理;让nginx服务具备动态请求解析功能 location ~* .*\.(php|php5)?$ 修改后==> location ~* (php|php5)$
测试动态请求是否能够处理前提:
01.必需要有动态资源文件php文件
1 cd /application/nginx/html/blog 2 3 vim test_info.php 4 5 <?php 6 7 phpinfo(); 8 9 ?>
说明:当php服务中止时,9000端口信息消失,即中止PHP错误报502错误
02.linux系统测试完毕后,建议利用浏览器进行最终测试,测试效果更明显些
客户端测试
1 curl http://blog.etiantian.org/index.html #<-静态请求站点文件信息测试 2 3 curl http://blog.etiantian.org/test_info.php #<-动态请求站点文件信息测试
浏览器测试
1 blog.etiantian.org #<-静态 2 3 blog.etiantian.org/test_info.php #<-动态
1 mysql -uroot -poldboy123; 2 3 show databases; #<-查看当前数据库信息 4 5 create database wordpress;
1 grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'oldboy123'; 2 3 flush privileges; #刷新mysql的系统权限相关表
#受权 全部权限 针对某一个库.表信息(这里即全部) 让哪些用户能够有此权限 容许哪些网段的主机能够链接到数据库上(%即网段,亦可定义具体地址) 定义数据库密码信息
1 mysql> select user,host from mysql.user; 2 3 +-----------+-----------+ 4 5 | user | host | 6 7 +-----------+-----------+ 8 9 | wordpress | 10.0.0.% | 10 11 | root | 127.0.0.1 | 12 13 | root | ::1 | 14 15 | | localhost | 16 17 | root | localhost | 18 19 | | web01 | 20 21 | root | web01 | 22 23 +-----------+-----------+ 24 25 7 rows in set (0.00 sec)
drop user wordpress@'172.16.1.8'; #<-删除用户信息 select user,host from mysql.user; #<-查看用户信息 mysql -uwordpress -p123456 #<-测试建立的用户链接 show databases; #<-查看当前数据库信息 利用mysql命令进行指定用户登陆测试 /application/mysql/bin/mysql -uwordpress -poldboy123
01.编写文件
1 cd /application/nginx/html/blog 2 3 vim test_mysql.php 4 5 <?php 6 7 //$link_id=mysql_connect('主机名','用户','密码'); 8 9 //mysql -u用户 -p密码 -h 主机 10 11 $link_id=mysql_connect('localhost','wordpress','oldboy123') or mysql_error(); 12 13 if($link_id){ 14 15 echo "mysql successful by oldboy !\n"; 16 17 }else{ 18 19 echo mysql_error(); 20 21 } 22 23 ?>
02.测试
1 curl blog.etiantian.org/test_mysql.php #<-xshell测试php与数据库的连通性 2 3 http://blog.etiantian.org/test_mysql.php #<-浏览器测试
另外三个网站 bbs www blog
说明:中文网站https://cn.wordpress.org/ 英文官网https://www.wordpress.org/
1 cd /server/tools/ 2 3 wget https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz
1 tar xf wordpress-4.7.3-zh_CN.tar.gz 2 3 mv wordpress/* /application/nginx/html/blog/
1 chown -R www.www /application/nginx/html/blog/
注意:统一目录下内容nginx用户管理,由于ps -ef|grep nginx显示nginx管理的用户是www。经过网站访问是以www用户,不修改则为root用户,用户没有写入权限
链接数据库配置
数据库名:指定数据存储到哪个数据库当中,如存储到wordpress数据库中
用户名:以什么用户身份管理wordpress数据库[不建议root权限过大]
密码:-
数据库主机:指定数据库所在的服务器地址信息[当nginx与数据库在同一台服务器上时,可使用localhost]
表前缀:标识相应表属于哪个数据库
注意:配置完数据链接信息后,浏览网页页面进行会自动生成WordPress基础配置文件,即/application/nginx/html/blog/ wp-config.php,此文件定义数据库链接配置参数选项。
1 /application/mysql/bin/mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql #警告:在命令行界面使用密码可能不安全 2 3 ll /tmp/bak.sql -h 4 5 scp /tmp/bak.sql 172.16.1.51:/tmp/
1 [root@web01 ~]# rsync -avz /tmp/bak.sql 172.16.1.51:/tmp/ 2 3 [root@db01 ~]# ll /tmp
1 [root@db01 ~]# mkdir -p /server/tools #上传mysql压缩包 2 [root@db01 ~]# vim /server/scripts/mysql_conf.sh 3 4 #解压mysql压缩包 5 6 cd /server/tools 7 8 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz 9 10 mkdir -p /application 11 12 #将解压后的二进制包放置到程序目录中 13 14 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 15 16 ln -s /application/mysql-5.6.34/ /application/mysql 17 18 #建立mysql虚拟用户 19 20 useradd -s /sbin/nologin -M mysql 21 22 #对mysql数据存储目录进行受权 23 24 chown -R mysql.mysql /application/mysql/data 25 26 #复制mysql默认的服务配置文件 27 28 cp /application/mysql/support-files/my-default.cnf /etc/my.cnf 29 30 #初始化数据库服务 31 32 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 33 34 #将启动脚本文件复制到启动目录中 35 36 \cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld 37 38 #修改启动脚本和mysql命令中的路径 39 40 sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld 41 42 #启动mysql服务 43 44 /etc/init.d/mysqld start 45 [root@db01 ~]# sh /server/scripts/mysql_conf.sh
1 [root@db01 ~]# /application/mysql/bin/mysqladmin -uroot password #mysql数据库设置密码 2 3 [root@db01 ~]# /application/mysql/bin/mysql -u root -poldboy123 </tmp/bak.sql
启动数据库并查看数据库信息
1 /application/mysql/bin/mysql -u wordpress -poldboy123 -h 10.0.0.51#<--修改配置文件以前,先测试网站web服务器与迁移后的数据库连通性 2 3 show databases;
注意:页面出现"创建数据库链接时出错"
缘由:服务中止;链接时出现问题
1 cd /application/nginx/html/blog 2 vim wp-config.php #<--修改wordpress上的数据库链接参数信息 3 4 5 /** MySQL主机 */ 6 7 define('DB_HOST', '10.0.0.51'); #<--修改链接的主机信息,将localhost修改成10.0.0.51
说明:web服务器数据库此时能够关闭了
01.经过查看网页图片属性信息进行确认路径
02.经过find查看数据存储路径信息
find . -type f -mmin -1
03.经过inotify软件进行监控
html/blog
1 cd /application/nginx/html/blog/wp-content/uploads #数据库存储目录 2 3 mkdir /tmp/wordpress_backup -p 4 5 mv ./* /tmp/wordpress_backup/
1 [root@nfs01 ~]# vim /etc/exports 2 3 /backup 172.16.1.0/24(rw,sync,all_squash) 4 5 showmount -e 172.16.1.31 6 7 [root@web01 ~]# mount -t nfs 172.16.1.31:/backup /application/nginx/html/blog/wp-content/uploads/ 8 9 mv /tmp/wordpress_backup/* /application/nginx/html/blog/wp-content/uploads/
说明:/etc/exports若未设置all_squash,则没法向共享目录中写入数据,须要调整nfs服务配置
01.修改映射参数
1 vim /etc/exports 2 3 no_all_squash ==> all_squash
02.修改共享目录为指定默认映射用户-www
#保持web服务器同nfs的用户uid gid一致
1 usermod -u xxx www groupmod -g xxx www
1 vim /etc/exports 2 3 anonuid=xxx,anongid=xxx #<-xxx值: uid及gid
此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创做品容许转载,转载时请务必以超连接形式标明文章原始出处,做者信息和本声明,不然将追究法律责任。http://www.cnblogs.com/bananaaa/