l:linux unix windows mac
a:apache nginx iis
m:mysql mariadb percona postgressql oracle
p:php jsp xml python
Nginx
一、nginx安装
<1>下载nginx稳定版,解压安装包,解压后生成目录nginx-1.12.0
tar zxf nginx-1.12.0.tar.gz
cd /root/nginx-1.12.0
<2>安装nginx,可以使用less README查看最简安装流程,具体实现过程如下
1.编辑该文件,修改版本显示内容,修改后内容为:将对外界仅显示该名称,不再显示版本号,较安全
cd /root/nginx-1.12.0/src/core
vim nginx.h
14 #define NGINX_VER "nginx"
2.注释掉172行,即关闭debug,快速编译
vim /root/nginx-1.12.0/auto/cc/gcc
172 #CFLAGS="$CFLAGS -g"
3.创建用户
useradd -M -d /usr/local/lnmp/nginx -u 800 nginx -s /sbin/nologin
其中:-d /usr/local/lnmp/nginx 指定家目录,该目录要与configure执行时指定的目录保持一致,不用提前创建;-u 800 nginx 为保持全网一致,需指定新建用户nginx的UID;-s /sbin/nologin 禁止登录;可以使用id nginx命令来查看用户的UID
4.进入以下目录下执行以下命令
cd /root/nginx-1.12.0
./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
解释:–prefix=/usr/local/lnmp/nginx 指定安装路径;–user=nginx –group=nginx 指定使用用户;–with-http_ssl_module –with-http_stub_status_module 导入ssl和状态模块
5.在执行4中的命令时会有报错或者提示信息,需要再安装:pcre-devel 和 openssl-devel
yum install pcre-devel openssl-devel -y
注意:当提示信息中提示还缺少某个包时,则对应下载XXX-devel包
7.重新执行4.中的命令,注意当前位置:/root/nginx-1.12.0/
./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
该命令执行成功时显示内容:
make && make install
9.检查nginx安全性及nginx启动:
先进入主目录
cd /usr/local/lnmp/nginx
查看文件大小,将显示为960k
du -sh
开启服务,注意路径
cd /usr/local/lnmp/nginx/sbin
./nginx
查看80端口是否开启
netstat -antlp
测试其显示是否为修改后的内容,即不显示版本号:nginx
curl -I localost
软链接,方便启动
ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin
二、nginx开启的进程
注意:对nginx的操作只能是在指定家目录(如本机指定的是/usr/local/lnmp/nginx)中,源文件的更改对nginx服务本身不起作用。
<1>修改主配置文件,注意路径
cd /usr/local/lnmp/nginx
vim conf/nginx.conf
部分语句解释:
worker_processes 1;##nginx开启的worker进程数
events {
worker_connections 1024;
##内核允许的最大连接数,应小于fs.file(文件描述服务)
}
查看fs.file-max
sysctl -a | grep file
此配置结果:nginx开启一个worker进程
<2>nginx开启的进程数目设置
1.开启两个worker进程的设置,注意路径
vim conf/nginx.conf
worker_processes 2;
2.检查配置文件是否有语法错误
nginx -t
nginx -s reload
ps -ax
<3>进程与cpu内核的绑定:??
(1)worker实际是与真实CPU核心绑定,而不是逻辑核心;
(2)尽量一个worker进程绑定一个cpu,若一个worker绑定多个cpu,又cpu本身不能轮询,这样会使得上下文切换较麻烦;
(3)nginx与cpu绑定必须重启服务 ??
1.开启两个进程的配置
vim conf/nginx.conf
worker_processes 2;
worher_cpu_sffinity 01 10;
解释:01表示启用第一个cpu;02表示启用第二个cpu;
第一个进程绑定第一个cpu内核;第二个进程绑定第二个进程
2.更改本机cpu数目不少于2个
<4>最大连接数的设置
1.更改最大连接数,但应小于fs.file_max
vim conf/nginx.conf
events {
worker_connections 65535;
}
2.查看fs.file_max,其数目也可更改
sysctl -a | grep file
3.查看open file数目是否大于最大连接数
ulimit -a -u nginx
结果显示的open file为1024,小于设定的最大连接数,所以需要设置open file数目
4.vim /etc/security/limits.conf ##该文件即该即生效
添加内容:
nginx - nofile 65535
注意:nginx可开启的最大文件数目(应不少于最大连接数),用于控制当进程数目过大时,防止shell fork现象的出现
三、nginx配置
进入nginx根目录
cd /usr/local/lnmp/nginx/
<1>nginx页面
1.vim conf/nginx.conf
在http{}函数内添加内容:
server {
listen 80;
server_name www.westos.org;
location / {
root /web1;
index index.html;
}
}
##控制调用过滤器,该location相对于网页的路径为/,也可以是相对于网页的目录。
##root /web1; 定义根目录,必须是已存在的
##index index.html; 发布文件为index.html
2.编辑发布内容
mkdir /web1
vim /web1/index.html ##内容随意
3.nginx -t ##检查语法错误
nginx -s reload
4.测试:浏览器访问www.westos.org或者172.25.13.1
四、开启443端口
1.vim conf/nginx.cong 注意路径
去掉97至114行443端口的注释
修改内容:密钥与验证信息采用同一文件
102 ssl_certificate_key cert.pem;
2.自生成认证文件
cd /etc/pki/tls/private
openssl genrsa 2048 > localhost.key ##生成认证文件
cd /etc/pki/tls/certs/
make cert.pem ##自生成证书
部分内容显示如下:
Country Name (2 letter code) [XX]:cn ##两位字符
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
##主机名
Email Address []:bai@qq.com
mv cert.pem /usr/local/lnmp/nginx/conf/
注意:nginx配置文件中设置认证文件时,以相对路径设置,其对应绝对路径为/usr/local/lnmp/nginx/conf/nginx.conf
3.nginx -t
nginx -s reload
4. 查看443端口是否开启
netstat -antlp |grep :443
5.访问https:172.25.90.1
五、网页监控
1.vim conf/nginx.conf
在http{}函数中添加如下内容:
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
}
解释:/status:虚拟目录。因为在安装前已加入了–with-http_stub_status_module模块;stub_status on; 表示激活该模块功能;access_log off; 表示关闭日志;allow 172.25.90.250; 允许该主机访问
2.nginx -t
nginx -s reload
3.访问172.25.90.1/status
(1)Active connections:表示访问数
(2)每连接依次,请求量刷新一次server accepts handled requests
5.deny语句来限制访问,如:
vim conf/nginx.conf
在http{}函数中添加如下内容:
location /status {
stub_status on;
access_log off;
allow 172.25.90.250;
deny all;
}
解释:拒绝所有用户访问,仅允许172.25.90.250主机
六、网页重写
cd /usr/local/lnmp/nginx
1.vim conf/nginx.conf
编辑内容:
103 server {
104 listen 443 ssl;
105 server_name www.westos.org;
117 root /web1; ##www.westos.org的发布目录
121 server {
122 listen 80;
123 server_name www.westos.org;
124 rewrite ^(.*)$ https://www.westos.org permanent;
125 }
解释:当访问www.westos.org时,永久性重定向至https://www.westos.org
注意:临时重定向可用redirecty
具体内容参考下图:
2.nginx -t
nginx -s reload
3.访问www.westos.org,看是否会自动转至https://www.westos.org
使用culr命令,查看服务状态:若为301,表示重定向
[root@foundation90 ~]# curl -I www.westos.org
HTTP/1.1 301 Moved Permanently ##301表示重定向,永久性的
Server: nginx
Date: Sun, 23 Jul 2017 12:51:33 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.westos.org
Location表示:重定向至https://www.westos.org
4.目录重定向
vim conf/nginx.conf
编辑内容:
121 server {
122 listen 80;
123 server_name www.westos.org;
124 rewrite ^(.*)$ https://www.westos.org$1 permanent;
125 }
解释:当访问www.westos.org网页下的任意目录时,将直接通过proxy重定向至upstream模块
创建重定向目录
mkdir /web1/admin –p
vim /web1/admin/index.html ##编辑发布目录
<h1>admin.pageh1>
5 nginx –t ##检测语法
nginx -s reload ##重载服务
6.测试:浏览器访问www.westos.org/admin,或使用curl命令
七、负载均衡
1.vim conf/nginx.conf
在http{}中加入upstream模块
upstream westos { ###均衡器westos
server 172.25.90.2:80;
server 172.25.90.3:8080;
}
编辑www.westos.org的server模块
server {
listen 80;
server_name www.westos.org;
}
location / {
proxy_pass http://westos; ##proxy代理
}
解释:当访问www.westos.org时,nginx通过proxy_pass反向代理模块,将请求转至upsream均衡器模块,从而达到负载均衡的目的
2.在1.中选择172.25.90.2的80端口–http默认监听端口;172.25.90.3的8080端口,所以需要更改172.25.90.3的http监听端口为8080
vim /etc/httpd/conf/httpd.conf
136 Listen 8080
/etc/init.d/httpd restart
3.编辑首页
4.nginx -t
nginx -s reload
5.访问www.westos.org
或使用curl命令,且不断访问,观察响应结果是否轮询
6.健康检查:当后台服务端均宕掉时,访问时不需等待直接502报错
(1)vim conf/nginx.conf
编辑upstream模块:
upstream westos { ###均衡器westos
server 172.25.90.2:80;
server 172.25.90.3:8080;
server 127.0.0.1:8000 backup; ##502报错
}
(2)修改172.25.90.1的httpd监听端口为8000
(3)编辑报错首页–nginx服务端(172.25.90.1)
vim /etc/httpd/conf/httpd.conf
网络正在维护中…
:wq
(4)nginx -t
nginx -s reload
(5)测试
关闭后台服务器–172.25.90.2,172.25.90.3:/etc/init.d/httpd stop
访问www.westos.org
7.权重
如设置172.25.90.2服务端的权中重为2,设置及访问结果见下图:
Mysql
一、Mysql安装
1.软件包依赖性:
yum install -y gcc gcc-c++ make ncurses-devel bison openssl-devel zlib-devel cmake-2.8.12.2-4.el6.x86_64.rpm
解释:mysql-boost为c++库函数,要求cmake必须时2.8版本以上,gcc-c++;camke编译
2.源码安装mysql
tar zxf mysql-5.5.12.tar.gz
3.编译
cd /root/mysql-5.5.12
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAUL=utf8 -DDEFAUL_COLLATION=utf8_general_ci -DEXTRA_CHARSSETS=all -DWITH_BOOST=boost/boost_1_59_0/
解释:-DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql 指定安装路径;-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data 指定数据库目录,一定与安装路径同;-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock 支持本地客户端连接;-DWITH_MYISAM_STORAGE_ENGINE=1 为1时表示安装archive 存储引擎;-DWITH_INNOBASE_STORAGE_ENGINE=1 为1时表示安装数据存储引擎;-DDEFAUL=utf8 安装默认字符集;-DDEFAUL_COLLATION=utf8_general_ci 安装校验字符集;-DEXTRA_CHARSSETS=all;-DWITH_BOOST=boost/boost_1_59_0/ 指定相对路径??
4.编译成功后,根据提示信息,清除旧的对象文件和缓存信息
make clean
rm -f CmakeCache.txt
5.重新编译,并安装:
make && make install
二、数据库初始化
cd /usr/local/lnmp/mysql
1.创建mysql的使用用户,指定用UID
groupadd -g 27 mysql
useradd -u 27 -g 27 -s /sbin/nologin -M -d /usr/local/lnmp/mysql/ mysql
2.更改权限,绝对路径为/usr/local/lnmp/mysql/
chown mysql.mysql . -R
3.复制主配置文件
cd /usr/local/lnmp/mysql/support-files/
cp /etc/my.cnf /etc/my.cng.bak ##备份
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld ##服务开启项
4.vim ~/.bash_profile
编辑内容:
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
使变量文件生效
source ~/.bash_profile
5.更改权限,绝对路径为/usr/local/lnmp/mysql/
chown root.root . R
6.初始化数据库,系统将自动生成密码,该密码为用户发第一次登录mysql的密码,将生成/usr/local/lnmp/mysql/data目录
mysqld --initialize --user=mysql
7.更改权限,绝对路径为/usr/local/lnmp/mysql/data/
chown mysql data -R
8.修改密码,当前密码为上条命令生成的密码
mysql_secure_installation
9.登录mysql
mysql -p
php安装
一、php安装
1.tzr zxf php-5.6.20.tar.bz2
2.安装包依赖性:
yum install -y openssl-devel libxml2-devel curl-devel libjpeg-turbo-devel net-snmp-devel libpng-devel-1.2.49-1.el6_2.x86_64 freetype-devel gmp-devel-4.3.1-7.el6_2.2.x86_64
rpm -ivh libmcrypt-*
3.源码编译
cd /root/php-5.6.20
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
补充:如何知道软件依赖性??
先进行源码编译,因为加入了各个模块,系统若没有相应的软件会有类似于如下图所示的提示:
若是缺少XX包则直接下载 “XX-devel”;若提醒没有XX.h,即没有头文件,则先使用命令查看提供该头文件的软件“yum provides */png.h”,再下载对应的安装包。
4.编译成功后,再次编译并安装
make && make install
二、配置
1.复制主配置文件,注意配置文件以.ini结尾
cp /root/php-5.6.20/php.ini-production /usr/local/lnmp/php/etc/php.ini
给启动脚本以执行权限,作为启动项
cp /root/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
2.vim /usr/local/lnmp/php/etc/php.ini
编辑内容:
date.timeout = Asia/Shanghai ##修改时间
3.
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default /php-fpm.conf
vim /usr/local/lnmp/php/etc/php-fpm.conf
去掉以下内容的注释:
pid = run/php-fpm.pid
4./etc/init.d/php-fpm start
5.cd /usr/local/lnmp/php
vim ~/.bash_profile
编辑内容:
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
使变量文件生效
source ~/.bash_profile
6.php-fpm监听9000端口,可用命令netstat -antlp | grep php-fpm来查看
三、php+nginx
1.cd /usr/local/lnmp/nginx/conf
vim nginx.conf
去掉以下内容注释,并进行修改:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
fastcgi_pass 指定发送给某个用户;fastcgi_index 首页文件为index.php;include fastcgi.conf 该文件包含默认发布目录
更改nginx根用户的发布文件默认为index.php:
location / {
root html;
index index.php index.html htm;
}
再保存退出文件
2.编辑php首页文件
cd /usr/local/lnmp/nginx/html
vim index.php
编辑内容:
phpinfo()
?>
:wq
5.浏览器访问172.25.90.1,显示内容为php首页
四、mysql+php+nginx—搭建论坛
1.安装软件,解压后生成目录readme upload utility
unzip Discuz_X3.2_SC_UTF8.zip
2.mv upload /usr/local/lnmp/nginx/html/bbs
3.cd /usr/local/lnmp/nginx/html/bbs
给权限
chmod 777 config/ data/ uc_client/ uc_server/ -R
4.cd /usr/local/lnmp/php/etc
vim php.ini
全文编辑:
1002 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1145 mysql.default_port = 3306
1150 mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
数据库连接
5.浏览器访问172.25.90.1/bbs
点击同意进行下一步:
Php-fpm安装正常时显示内容如上,再点击进行下一步:
如上:数据库密码即为初始化时用户自己设置的密码;管路员密码可自己进行设定,再下一步进行安装数据库
如上显示报错,根据提示信息,可知将要进行较为关键一步:php-fpm与数据库的连接
vim /usr/local/lnmp/php/etc/php.ini
设置内容为连接点、数据库默认监听端口3306:
1002 pdo_mysql.default_socket=/usr/local/lnmp/mysql/data/mysql.sock
1145 mysql.default_port = 3306
1150 mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
重载服务
/etc/init.d/php-fpm reload
6.查看数据库权限,应确保nginx用户对数据库有读写权限
[root@server1 mysql]# ll -d data/
drwxr-x--- 5 mysql root 4096 Sep 3 01:57 data/
如上可看出数据库的data/目录,对于nginx用户没有读权限
给数据库访问权限
chmod 755 /usr/local/lnmp/mysql/data
6./etc/init.d/php-fpm reload
7.浏览器端进行刷新,即可进入安装mysql界面,安装成功后即可登录
根据提示信息,要求删除install/index.php
进入管理中心,将显示如上图中的内容
8.rm -fr /usr/local/lnmp/nginx/install/index.php
注意:nginx的根目录为usr/local/lnmp/nginx
五、nginx+memcached:提高命中缓存
<1>安装
yum remove php php-common-5.3.3-26.el6.x86_64 php-cli-5.3.3-26.el6.x86_64
查看可加在模块
php -m
<2>源码安装memecache
tar zxf memcache-2.2.5.tgz
phpize
phpize命令知道源码安装的信息,并将其全部显示出来,这样就可以进行”源码安装三部曲”
<3>编译安装
cd /root/memcache-2.2.5
./configure
make && make install
<4>vim /usr/local/lnmp/php/etc/php.ini
871 extension=memcache.so
<5>/etc/init.d/php-fpm reload
<6>yum install -y memcached
将开启9000端口:
/etc/init.d/memcached start
<7>测试:可以使用telnet命令来连接fastcgi
安装telnet服务来连接memcache,也可以通过python实现连接
yum install telnet –y
[root@server1 memcache-2.2.5]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set name 0 0 6 ##设置变量,格式:序号 过期时间 长度(过期时间为0表示不过期)
westos ##变量
STORED
get name ##查看变量
VALUE name 0 6
westos
END
delete name ##删除变量
DELETED
get name
END
<8> memcache与nginx连接
cp example.php /usr/local/lnmp/nginx/html/
cp memcache.php /usr/local/lnmp/nginx/html/
解释:memcache将数据缓存至example.php,默认会截取内存空间的64M作为缓存空间;memcache.php用来查看缓存命中率
vim /usr/local/lnmp/nginx/html/memcache.php ##提供动态页面
20 $VERSION='$Id: memcache.php,v 1.2 2008/09/11 19:21:06 mikl Exp $';
21
22 define('ADMIN_USERNAME','admin'); // Admin Username
23 define('ADMIN_PASSWORD','redhat'); // Admin Password
24 define('DATE_FORMAT','Y/m/d H:i:s');
25 define('GRAPH_SIZE',200);
26 define('MAX_ITEM_DUMP',50);
27
28 $MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array
29 //$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
<9>测试:访问172.25.90.1/memcache.php
用户名:admin;用户密码:redhat,即为memcache文件中的配置
如上缓存命中率为50%,总memcache空间为64M
六、高并发:openstry
<1> tar zxf openresty-1.11.2.3.tar.gz
安装地址:http://openstry.tar.gz
<2>编译安装:
cd /root/openresty-1.11.2.3
./configure
根据编译结果,接下来执行gmake && gmake install
gmake && gmake install
cd /usr/local/opensty
Vim nginx/conf/nginx.conf
2 user nginx;
12 events {
13 worker_connections 65535;
14 }
17 http { .......
18 upstream memcached {
19 server 127.0.0.1:11211;
20 }
<3>测试:使用命令:ac –c100 –n 50000 http://www.westos.org