VMware 9 安装CentOS 7
-> 创建新虚拟机, 选择稍后安装操作系统
-> 选择Linux系统Centos 64位
-> 填写虚拟机名称, 选择虚拟机安装位置
-> 创建磁盘大小30GB, 选择将虚拟磁盘存储为单个文件
-> 虚拟机设置, 点击CD/DVD(IDE), 使用IOS映像文件, 选择待安装的CentOS 7.iso文件; 网卡适配器选择NAT模式
-> VMware编辑菜单栏, 选择虚拟网络编辑器, 选择VMnet8
-> 开启虚拟机进行Linux安装, 设置root密码和用户账号密码
-> 重启进入虚拟机
安装VMware工具
-> 选择虚拟机菜单栏,选择安装VMware工具
-> 图形界面安装VMware工具
-> CentOS系统中弹出的VMware tools窗口中, 右击VMwaretools-9.6.0-1294478.tar.gz选择解压缩到桌面, 点击解压缩
-> 桌面生成一个vmware-tools-distrib的文件夹
-> 桌面上打开终端
-> 切换到root账号, cd Desktop/vmware-tools-distrib 进入文件夹
-> 用./执行安装./vmware-install.pl, 接下来一直回车, 直到停止
-> 用命令reboot或者shutdown -r now重启虚拟机, 若宿主机和虚拟机可以互相粘贴文件, 则安装完成
-> 字符界面安装VMware工具
-> mkdir /media/cdrom 在media下创建cdrom目录
-> mount -t auto /dev/cdrom /media/cdrom 挂载cdrom, mount命令是挂载光驱的基本命令
-> 提示 mount: block device /dev/cdrom is write-protected, mounting read-only 挂载成功
-> cd /media/cdrom 查看光盘的文件
-> cp /media/cdrom/VMwareTools-10.0.1-3160059.tar.gz /usr/src 复制光盘文件
-> cd /usr/src 进入目录
-> tar -zxvf VMwareTools-10.0.1-3160059.tar.gz 解压VMware工具包, 生成vmware-tools-distrib文件夹
-> cd /usr/etc/vmware-tools-distrib 进入文件夹
-> 用./执行安装./vmware-install.pl, 接下来一直回车, 直到停止
-> 用命令reboot或者shutdown -r now重启虚拟机, 若宿主机和虚拟机可以互相粘贴文件, 则安装完成
设置命令行级别
设置命令行级别启动方法:
ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target 或
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target 或
systemctl set-default multi-user.target
设置窗口级别启动方法:
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target 或
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 或
systemctl set-default graphical.target
查询Linux版本 cat /etc/redhat-release => CentOS Linux release 7.1.1503(Final)
配置网卡 NAT方式
-> windows网络和共享中心, 更改适配器设置, 以太网(当前网络)属性, 选择共享, 选择允许其他网络用户通过此计算机的Internet连接来连接(N), 选择VMnet8。
-> VMnet8属性, Internet协议版本4(TCP/IPv4)属性, 查看IP为192.168.137.1, 子网掩码为255.255.255.0
-> Centos查看网卡信息 ifconfig
-> 进入网卡配置目录 cd /etc/sysconfig/network-scripts/
-> vim ifcfg-eno33
TYPE=Ethernet #网卡类型
BOOTPROTO=dhcp #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
DEVICE=ens33 #网卡接口名称
NAME=ens33
UUID=d476cec8-b31f-4f44-a75e-ebf13251c89a
ONBOOT=yes #系统启动时是否自动加载
IPADDR=192.168.137.128 #网卡IP地址
NETMASK=255.255.255.0 #网卡网络地址
GATEWAY=192.168.137.1
-> service network restart 重启网络服务
-> ping 192.168.137.1 Centos ping通 主机 (需关闭主机防火墙)
-> ping 192.168.137.128 主机 ping通 Centos
-> shell 远程连接虚拟机
安装 Nginx1.9.9
-> 安装基础环境包(已安装的可更新) -y : 自动选择y
yum -y install openssl*
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel
yum -y install libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel curl curl-devel
yum -y install gd gd2 gd-devel gd2-devel
yum –y install gcc gcc-c++
-> 安装pcre
使用rz命令从主机下载pcre-8.38.zip文件
unzip pcre-8.38.zip 解压pcre-8.38.zip
cd pcre-8.38
./configure 默认安装即可
make
make install
-> 下载 Nginx1.9.9 使用wget命令,或者使用rz命令从主机下载nginx-1.9.9.tar.gz文件,保存在/usr/src/
-> wget http://nginx.org/download/nginx-1.9.9.tar.gz
-> tar -zxvf nginx-1.9.9.tar.gz 解压缩
-> cd nginx-1.9.9 进入目录
-> /usr/sbin/groupadd www 建立用户组
-> /usr/sbin/useradd -g www www 建立www用户
-> ./configure --user=www --group=www --prefix=/usr/local/ --with-http_stub_status_module --with-http_ssl_module --with-pcre=/application/pcre 配置
-> 注: 由于安装pcre没有指定目录,因此不用指定--with-pcre。若安装pcre有指定路径,--with-pcre也要指定路径
-> make 编译
-> make install 安装
-> 配置nginx
-> cd /usr/local/nginx/conf
-> vim nginx.conf
user www www;
worker_processes auto;
worker_rlimit_nofile 204800;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
error_log /data/logs/nginx_error/nginx_error.log crit;
pid logs/nginx.pid;
events {
use epoll; # Linux best model
worker_connections 2048000; # max thread erery process
multi_accept on;
}
http {
#close the nginx version
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
include mime.types;
default_type application/octet-stream;
charset UTF-8;
# ssi on;
# ssi_silent_errors on;
# ssi_types text/shtml;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
keepalive_timeout 65;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100;
client_header_buffer_size 32k;
large_client_header_buffers 4 4k;
server_names_hash_bucket_size 128;
client_max_body_size 100M;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on;
gzip_disable "MSIE [1-6]\.";
gzip_proxied expired no-cache no-store private auth;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server
{
listen 80;
server_name _;
return 500;
}
include vhosts/*.conf;
}
-> mkdir vhosts
-> chmod 777 vhosts
-> /usr/local/nginx/sbin/nginx 启动
-> /usr/local/nginx/sbin/nginx -t 测试配置文件
-> /usr/local/nginx/sbin/nginx -s reload 重启
-> /usr/local/nginx/sbin/nginx -v 查看nginx版本
-> /usr/local/nginx/sbin/nginx -V 查看nginx版本,及配置信息
-> netstat -antlp | grep 80 nginx占用80端口,检查是否启动
-> ps -ef | grep nginx 命令ps查找nginx的主进程号,检查是否启动(假设主进程号为3514)
-> kill -QUIT 3514 从容停止
-> kill -TERM 3514 快速停止
-> kill -9 3514 强制停止,只关闭一个主进程号,其余进程号仍在运行
-> kill -9 3514 3515 3525 强制关闭nginx所有进程号
-> kill -HUP 3514 平滑重启
安装 Mysql-5.7.10
-> 注: MySQL5.5版本开始弃用了常规的configure编译方法,通过cmake来编译。
需要下载安装cmake编译器、boost库、ncurses库、GNU分析器生成器bison
-> 安装基础环境包
yum -y install gcc gcc-c++ ncurses ncurses-devel 这些上面安装nginx已经安装了依赖包,因此不需再次安装。
-> yum -y install bison
-> 下面用编译的方式安装cmake,也可以用yum
-> 安装 cmake3.4.2
-> wget https://cmake.org/files/v3.4/cmake-3.4.2.tar.gz 下载cmake到/usr/src
-> tar -zxvf cmake-3.4.2.tar.gz 解压
-> cd cmake-3.4.2 进入目录
-> ./configure 默认配置
-> make 编译
-> make install 安装
-> 安装boost1.60.0
-> wget http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz
-> tar -zxvf boost_1_60_0.tar.gz
-> cd boost_1_60_0
-> ./bootstrap.sh --prefix=/usr/local/boost 生成安装工具bjam和b2
-> ./b2 编译
-> ./b2 install 安装(安装目录上面已经指定,这边可不指定--prefix=/usr/local/boost)
-> wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz 下载mysql到/usr/src
-> tar -zxvf mysql-5.7.10.tar.gz 解压
-> cd mysql-5.7.10 进入目录
-> groupadd mysql 创建mysql用户组
-> useradd -g mysql -s /sbin/nologin mysql 建立mysql用户
-M 不要自动建立用户的登入目录
-g 指定用户所属组
-s 指定用户登入后所使用的shell,默认值为/bin/bash
/sbin/nologin 不允许mysql用户直接登录系统
-> 配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
注:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql [MySQL安装的根目录]
-DMYSQL_DATADIR=/data/mysql/data [MySQL数据库文件存放目录]
-DSYSCONFDIR=/etc [MySQL配置文件所在目录]
-DMYSQL_USER=mysql [MySQL用户名]
-DWITH_MYISAM_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_INNOBASE_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_ARCHIVE_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_MEMORY_STORAGE_ENGINE=1 [MySQL的数据库引擎]
-DWITH_READLINE=1 [MySQL的readline library]
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock [MySQL的通讯目录]
-DMYSQL_TCP_PORT=3306 [MySQL的监听端口]
-DENABLED_LOCAL_INFILE=1 [启用加载本地数据]
-DENABLE_DOWNLOADS=1 [编译时允许自主下载相关文件]
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all [使MySQL支持所有的扩展字符]
-DDEFAULT_CHARSET=utf8 [设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci [设置默认字符校对]
-DWITH_DEBUG=0 [禁用调试模式]
-DMYSQL_MAINTAINER_MODE=0
-DWITH_SSL:STRING=bundled [通讯时支持ssl协议]
-DWITH_ZLIB:STRING=bundled [允许使用zlib library]
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/boost
-> 注:没有boost,则编译时,出现错误
CMake Error at cmake/boost.cmake:76 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>
This CMake script will look for boost in <directory>. If it is not there,
it will download and unpack it (in that directory) for you.
If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
Call Stack (most recent call first):
cmake/boost.cmake:228 (COULD_NOT_FIND_BOOST)
CMakeLists.txt:435 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/byrd/tools/mysql-5.7.9/CMakeFiles/CMakeOutput.log".
解决办法: 安装boost库,放到/usr/local/boost目录下,然后在cmake后面加选项-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
-> make 编译
-> make install 安装
-> cd /data
-> mkdir mysql 创建数据目录
-> mkdir logs 创建mysql日志目录
-> chown -R mysql:mysql mysql 修改目录所属组和所有者
-> cd /usr/local 进入目录
-> chown -R mysql:mysql mysql 将/usr/local/mysql的所有者修改为mysql
-> cd /usr/local/mysql/bin 进入目录,准备初始化
-> ./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data --initialize 初始化
-> 输出
2016-01-21T08:22:12.894937Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-01-21T08:22:15.362884Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-01-21T08:22:15.811051Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-01-21T08:22:15.897160Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 146afa03-c018-11e5-82ec-000c291b7130.
2016-01-21T08:22:15.901938Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-01-21T08:22:15.909391Z 1 [Note] A temporary password is generated for root@localhost: fQBsl)Nwa8+M
-> 记住生成的初始密码在首次以root用户登入时使用 -> fQBsl)Nwa8+M
-> 注:
1 ./scripts/mysql_install_db已废弃,使用则提示:
2016-01-21 13:38:40 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-01-21 13:38:40 [ERROR] The data directory needs to be specified.
2 /data/mysql/data目录下必须为空,否则则提示:
2016-01-21T05:46:23.819275Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2016-01-21T05:46:23.819328Z 0 [ERROR] Aborting
3
-> 创建配置文件
-> mv /etc/my.cnf my.cnf.bak 将默认生成my.cnf改名或删除否则启动服务会报错
-> cd /usr/local/mysql/support-files 进入MySQL安装目录支持文件目录
-> cp my-default.cnf /etc/my.cnf 复制模板为新的配置文件,根据需要修改配置。不修改则按默认配置参数运行。
-> 这里对my.cnf稍作字符集和目录修改
[client]
default-character-set=utf8
port = 3306
socket = /data/mysql/mysql.sock
[mysqld]
default-time-zone = system
character_set_server=utf8
user = mysql
port = 3306
basedir = /usr/local/mysql
socket = /data/mysql/mysql.sock
datadir = /data/mysql/data
log-error = /data/mysql/logs/mysql_error.log
pid-file = /data/mysql/mysql.pid
-> 安装ssl
-> ./mysql_ssl_rsa_setup
-> 配置mysql自动启动
-> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 复制启动脚本
-> chmod 755 /etc/init.d/mysqld 修改执行权限
-> chkconfig mysqld on 设置开机启动(设定mysqld在2、3、4、5等级为on)
或 chkconfig --level 345 mysqld on 设定mysqld在等级3、4、5为开机运行服务
-> 启动MySQL服务
/usr/local/mysql/support-files/mysql.server start 启动mysql服务
/usr/local/mysql/support-files/mysql.server restart 重启mysql服务
/usr/local/mysql/support-files/mysql.server stop 停止mysql服务
或者使用rpm服务命令启动
service mysql start
service mysql restart
service mysql stop
或者使用绝对路径
/etc/init.d/mysqld start
/etc/init.d/mysqld restart
/etc/init.d/mysqld stop
-> 查看MySQL是否运行
-> ps aux | grep mysqld
-> ps -ef | grep 3306
-> service mysql status
-> 创建mysql命令文件(创建软链接),才可以在任意位置使用mysql命令访问数据库
-> ln -s /mysql/bin/mysql /usr/bin/
-> 登陆mysql
-> mysql -u root -p
-> 注: -u 用户名 -p 要求输入密码
-> 输入刚才生成的初始密码 fQBsl)Nwa8+M
-> 登陆成功
-> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); 修改root密码为123456
-> quit 退出命令行
-> 远程登录数据库
-> 添加mysql用户 账号: mysqluser 密码: zxc123
-> insert into mysql.user(Host,User,authentication_string) values("%","mysqluser",password("zxc123"));
-> 注: 新版mysql已将user表的password改为authentication_string
配置文件my.cnf中sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
为了安全,指定了严格模式,禁止通过insert这种形式直接修改mysql库中的user表进行添加新用户
将配置文件中的STRICT_TRANS_TABLES删掉,即改为: sql_mode=NO_ENGINE_SUBSTITUTION
配置文件my.cnf没有的话,添加sql_mode=NO_ENGINE_SUBSTITUTION,重启mysql服务即可
-> 给用户授权(如果主机名不一样,则创建新用户,可以直接使用这个命令创建)
-> grant select,insert,update,delete,create,drop on *.* to mysqluser@"%" identified by "zxc123";
注: grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
数据库: *.* 表示所有库的所有表; test.* 表示test库的所有表;test.test_table 表示test库的test_table表
登录主机: '%'表示所有ip; 'localhost'表示本机; '192.168.10.2' 特定IP
创建一个mysqluser用户,密码为zxc123,可以在任何主机上登录,并对所有数据库有增删改查的权限。
显示所有的数据库
show databases;
使用某一个数据库
use 数据库名;
显示一个数据库的所有表(必须先使用use databasename;)
show tables;
退出mysql命令行
quit;
删除数据库和数据表
drop database 数据库名;
drop table 数据表名;
查看MYSQL数据库中所有用户
select distinct concat('User: ''',user,'''@''',host,''';') as query from mysql.user;
查看数据库中具体某个用户的权限
show grants for 'root'@'localhost';
select * from mysql.user where user='root' \G;
查看user表结构
desc 数据库名.数据表名;
新建用户,最后三个参数分别是登录ip,用户名,密码
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
用户授权
格式: grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
需要执行刷新权限的命令: flush privileges;
用户授权示例:
为用户授予部分权限
grant select,update on testDB.* to test@localhost identified by '1234';
flush privileges;
授予一个用户所有数据库的某些权限
grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
flush privileges;
撤销已经赋予给 MySQL 用户权限的权限。
revoke all on *.* from test@"%";
删除用户
delete from user where User='test' and Host='localhost';
flush privileges;
删除账户及权限:
drop user 用户名@'%';
drop user 用户名@localhost;
修改指定用户密码
mysql -u root -p 使用root登录
update mysql.user set password=password('新密码') where User="test" and Host="localhost";
flush privileges;
-> 防火墙开放3306端口
-> firewall-cmd --permanent --add-port=3306/tcp
-> 注: centos7 采用了firewall动态管理防火墙,废弃iptables静态模型的防火墙。
可以禁用firewall,使用iptables
systemctl stop firewalld 关闭firewall防火墙
systemctl disable firewalld 开机禁用firewall防火墙
yum install iptables-services 安装iptables
systemctl start iptables 启用iptables
systemctl enable iptables 开机启用iptables
firewall命令:
systemctl enable firewalld.service 设置开机启动
systemctl start firewalld 或 systemctl start firewalld.service 开启防火墙
firewall-cmd --state 或 systemctl status firewalld 查看centos7防火墙状态
firewall-cmd --reload 重新加载防火墙
使用firewalld开放Linux端口:
firewall-cmd --permanent --add-port=80/tcp --zone=public 开启80端口
firewall-cmd --permanent --add-port=1000-2000/tcp 永久开启1000-2000端口
firewall-cmd --query-port=80/tcp 查询1000端口开启状态
命令含义:
--zone 作用域
--add-port=80/tcp 添加端口,格式为:端口/通讯协议
--permanent 永久生效,没有此参数重启后失效
FirewallD的默认区域是public。
阻塞区域(block):任何传入的网络数据包都将被阻止。
工作区域(work):相信网络上的其他计算机,不会损害你的计算机。
家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。
公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted):所有的网络连接都可以接受。
丢弃区域(drop):任何传入的网络连接都被拒绝。
内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
-> 用mysqluser账号远程登录mysql
安装 PHP-7.0.2
-> 安装依赖包
-> yum -y install libxml2 libxml2-devel openssl openssl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel (这些上面安装过的就不需再次安装)
-> yum -y install bzip2 bzip2-devel libcurl libcurl-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel
-> 安装 libmcrypt
-> wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
-> tar -zxvf libmcrypt-2.5.8.tar.gz
-> cd libmcrypt-2.5.8
-> ./configure
-> make && make install
-> wget http://cn2.php.net/get/php-7.0.2.tar.gz 下载 php-7.0.2.tar.gz
-> tar -zxvf php-7.0.2.tar.gz 解压缩
-> cd php-7.0.2 进入目录
-> ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-openssl-dir --with-mcrypt --with-mhash --with-pcre-regex --with-pcre-dir --with-sqlite3 --with-zlib --with-zlib-dir --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --with-gd --enable-gd-native-ttf --enable-gd-jis-conv --with-jpeg-dir --with-png-dir --with-freetype-dir --with-gettext --with-gmp --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --enable-mysqlnd-compression-support --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-xsl --enable-zip --with-pear --enable-opcache
注:
--prefix=/usr/local/php 指定 php 安装目录
--with-config-file-path=/etc 设置php.ini的搜索路径。默认为PREFIX/lib
--enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--with-fpm-user=www
--with-fpm-group=www
--enable-inline-optimization 优化线程
--disable-debug 关闭调试模式
--disable-rpath 关闭额外的运行库文件
--enable-shared 编译共享库,默认yes
--enable-soap soap模块
--with-libxml-dir 打开libxml2库的支持
--with-xmlrpc 打开xml-rpc的c语言
--with-openssl openssl的支持,加密传输时用到的
--with-mcrypt mcrypt算法(函数库需要安装)
--with-mhash mhash算法(函数库需要安装)
--with-pcre-regex 定 PCRE 包含文件和库文件路径
--with-sqlite3
--with-zlib 打开zlib库的支持
--enable-bcmath 打开图片大小调整,用到zabbix监控的时候用到了这个模块
--with-iconv
--with-bz2 打开对bz2文件的支持
--enable-calendar 打开日历扩展功能
--with-curl 打开curl浏览工具的支持
--with-cdb
--enable-dom
--enable-exif 图片的元数据支持
--enable-fileinfo
--enable-filter
--with-pcre-dir perl的正则库安装位置
--enable-ftp 打开ftp的支持
--with-gd 打开gd库的支持
--with-openssl-dir
--with-jpeg-dir 打开对jpeg图片的支持
--with-png-dir 打开对png图片的支持
--with-zlib-dir 打开zlib库的支持
--with-freetype-dir 打开对freetype字体库的支持
--enable-gd-native-ttf 支持TrueType字符串函数库
--enable-gd-jis-conv
--with-gettext 打开gnu 的gettext 支持,编码库用到
--with-gmp
--enable-json
--enable-mbstring 多字节,字符串的支持
--enable-mbregex
--enable-mbregex-backtrack
--with-libmbfl
--with-onig
--enable-pdo
--with-mysqli=mysqlnd mysql安装目录,对mysql的支持
--with-pdo-mysql=mysqlnd
--with-pdo-sqlite
--with-readline
--enable-session
--enable-shmop
--enable-simplexml
--enable-sockets 打开 sockets 支持
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
--enable-wddx
--with-xsl 打开XSLT文件支持,扩展了libXML2库 ,需要libxslt软件
--enable-zip 打开对zip的支持
--enable-mysqlnd-compression-support
--with-pear 打开pear命令的支持,PHP扩展用的
--enable-opcache
-> 报错解决
报错1-> configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
解决1-> 编辑 /etc/ld.so.conf 加入/usr/local/lib,在执行ldconfig
-> make
-> make install
-> 配置
-> cp php.ini /usr/local/php/php.ini 复制配置文件
-> cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
-> vim /usr/local/php/etc/php-fpm.conf
pid = /var/run/php-fpm.pid 去掉前面的分号
error_log = /data/logs/php-fpm/php-fpm.log 去掉前面的分号
-> cd /usr/local/php/etc/php-fpm.d
-> cp www.conf.default www.conf 根据需求配置
-> 启动php-fpm
-> kill -INT `cat /var/run/php-fpm.pid` 关闭php-fpm
-> kill -USR2 `cat /var/run/php-fpm.pid` 重启php-fpm
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
-> ps aux | grep -c php-fp 查看php-fpm进程数
-> php 使用ci框架,在/usr/local/nginx/conf创建ci.conf重写规则
-> vim /usr/local/nginx/conf/ci.conf
if ($request_uri ~* "^/(static|data|install|\.)/.*"){
set $rule '1';
}
if ($rule !~ '1'){
rewrite ^/(.+)$ /index.php?/$1 last;
}
-> :wq 保存退出
-> 配置域名
-> cd /usr/local/nginx/conf/vhost/
-> vim www.test.com.conf
upstream testphpfpm
{
server 127.0.0.1:9000;
}
server
{
listen 80;
server_name xxx.xxx.xxx;
index index.shtml index.html index.htm;
root /data/www/project;
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
#error_page 404 = http://xxx.xxx.xxx;
location ~ \.php$
{
alias /data/www/project;
fastcgi_pass testphpfpm;
fastcgi_index index.php;
include fastcgi.conf;
}
include ci.conf
log_format testaccess '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data/logs/nginx/xxx.xxx.xxx.log testaccess;
}
-> :wq 保存退出
-> 分割日志
-> 创建脚本目录
-> cd /data
-> mkdir scripts
-> cd scripts
-> vim nginx_log_splid.sh
#!/bin/sh
LOGDIR ="/data/logs/nginx"
FILEDAY = `date -d "-1 days" +%Y%m%d`
/bin/mv $nginx_log_dir/www.test.com.log $LOGDIR /www.test.com.$FILEDAY.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
-> :wq
-> crontab -e 添加一条定时任务
0 0 * * * /data/scripts/nginx_log_splid.sh 每晚0点执行nginx_log_splid.sh文件
-> 主机访问虚拟机的项目
-> 在/usr/local/nginx/conf/vhost目录配置后,在主机的hosts里,将域名指向虚拟机的IP即可