linux上搭建nginx+php+mysql环境详细讲解
1、mysql安装
#安装编译环境
yum install -y gcc gcc-c++ gcc-devel g++ g++-devel;
yum install -y wget
yum install -y tar #创建mysql用户组及用户
groupadd -f mysql
useradd -g mysql mysql #编译mysql
#安装依赖
yum install -y ncurses ncurses-devel
yum install -y cmake #解压mysql包
tar -xf mysql-5.6..tar.gz
cd mysql-5.6..tar.gz #创建mysql的data数据目录
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql #编译,主要注意几个目录以及端口
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE= -DWITH_INNOBASE_STORAGE_ENGINE= -DWITH_ARCHIVE_STORAGE_ENGINE= -DWITH_BLACKHOLE_STORAGE_ENGINE= -DWITH_MEMORY_STORAGE_ENGINE= -DWITH_READLINE= -DENABLED_LOCAL_INFILE= -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT= -DSYSCONFDIR=/data/mysql -DEXTRA_CHARSETS=all -DDOWNLOAD_BOOST= -DWITH_BOOST=/data/mysql/boost #安装
make -j && make install #配置数据库
cd /data/mysql #初始化数据库
./scripts/mysql_install_db --basedir="/data/mysql" --datadir="/data/mysql/data" chown -R mysql:mysql 、/data/mysql/data/ #复制服务到init.d目录
cp /data/mysql/support-files/mysql.server /etc/init.d/mysql #将mysql服务加入chkconfig管理列表 ,然后就可以用service进行操作,如果要开机自启再执行 chkconfig mysql on chkconfig /etc/init.d/mysql #软链接(快捷方式),方便直接使用mysql客户端和备份命令
ln -s /data/mysql/bin/mysql /bin/mysql
ln -s /data/mysql/bin/mysqldump /bin/mysqldump #最后检查mysql目录下 my.cnf 配置文件,无误后启动mysql服务
service mysql start #关闭命令
service mysql stop
#重启命令
service mysql restart #客户端第一次登陆数据库,没有密码的
mysql -uroot -p
mysql配置参考,有些参数视具体而定
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
port=3306
socket =/tmp/mysql.sock
[mysqld] # Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin # These are commonly set, remove the # and set as required.
basedir =/data/mysql
datadir =/data/mysql/data
port =3306
socket =/tmp/mysql.sock
key_buffer_size = 128M
open_files_limit = 10240
sort_buffer_size = 8M
join_buffer_size = 4M
read_buffer_size = 16M
read_rnd_buffer_size=16M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
query_cache_limit = 16M #允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)
max_connections=4000
max_allowed_packet = 1G
default_storage_engine = InnoDB #默认引擎innodb
bulk_insert_buffer_size = 200M
#thread_stack = 512K #线程使用的堆大小. 此容量的内存在每次连接时被预留
thread_concurrency=16 #CPU的2倍,用于多核CPU上 innodb_buffer_pool_size = 1G
innodb_log_buffer_size = 16M
innodb_additional_mem_pool_size=32M
innodb_flush_log_at_trx_commit=2 # 1:(默认值) 每一次事务提交或事务外的指令都需要把日志写入硬盘 2:把日志写入系统缓存 0:延迟写入
#innodb_flush_method=3 # 1) Default – 使用fsync。 2) O_SYNC 以sync模式打开文件,通常比较慢。 3) O_DIRECT,在Linux上使用Direct IO。
innodb_thread_concurrency=16
innodb_file_io_threads=8
innodb_file_per_table = 1
# innodb_strict_mode=1 #建议加上
innodb_io_capacity = 500 relay_log_recovery=1
tmp_table_size=268435456
max_heap_table_size=268435456 slow_query_log=ON
long_query_time=60 #添加慢查询
slow_query_log_file=slowquery.log
log_bin=mysql-bin
binlog_format=mixed
expire_logs_days=5
max_binlog_size=512M #日志文件太大读写效率降低
#从配置
slave-skip-errors=1062,1064
relay_log=mysql-relay-bin
log_slave_updates=1
replicate-ignore-db=mysql,performance_schema,information_schema # Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqldump]
quick
max_allowed_packet = 1G [mysql]
no-auto-rehash [myisamchk]
key_buffer_size = 400M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout
2、php安装,需要自己下载libmcrypt-2.5.8.tar.gz 依赖
#安装依赖
yum install -y libxml2-devel
yum install -y bzip2-devel
yum install -y libcurl-devel
yum install -y libjpeg-devel libpng-devel freetype-devel #手动安装libmcrypt依赖
tar -xf libmcrypt-2.5..tar.gz
cd libmcrypt-2.5. #配置 自定义安装目录
./configure --prefix=/usr/local/libmcrypt
#开始安装
make -j && make install
cd ../ #安装php
tar -xf php-5.6..tar.gz
cd php-5.6. #配置信息
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mcrypt=/usr/local/libmcrypt --with-zlib --enable-mbstring --with-openssl --with-mysql --with-mysqli --with-mysql-sock --with-gd --enable-gd-native-ttf --with-jpeg-dir=/usr/lib64 --with-freetype-dir=/usr/lib64 --with-png-dir=/usr/lib64 --enable-pdo --with-pdo-mysql --with-gettext --with-curl --enable-sockets --enable-bcmath --enable-xml --with-bz2 --enable-zip --enable-pcntl --enable-sysvmsg --enable-mysqlnd=mysqlnd --enable-calendar --enable-mbstring --enable-maintainer-zts
#开始安装
make -j && make install
cd ../
3、安装nginx,需要手动下载pcre-8.39.tar.gz 和zlib-1.2.10.tar.gz
#我这里是提前把pcre、zlib以及nginx的包下载到了/data/install目录
#实际安装中的目录根据具体的而定 #解压依赖包
tar -xf pcre-8.39.tar.gz
tar -xf zlib-1.2..tar.gz tar -xf nginx-1.9..tar.gz
cd nginx-1.9.
yum install -y openssl openssl-devel #配置
./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/data/install/pcre-8.39 --with-zlib=/data/install/zlib-1.2. #开始安装
make -j && make install
4、配置nginx
(1)创建根目录和日志目录:
mkdir /data/wwwroot
mkdir -p /data/logs/nginx
(2)修改配置文件
user www;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; error_log /data/logs/nginx/error.log; pid nginx.pid; events {
worker_connections 65535;
multi_accept on;
use epoll;
} http {
include mime.types;
default_type application/octet-stream; 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 /data/logs/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 120;
add_header Access-Control-Allow-Origin "*";
server_names_hash_bucket_size 128;
gzip on; server{
listen 80;
server_name localhost;
root /data/wwwroot; location / {
index index.html index.htm index.php;
}
location ~ \.php {
root /data/wwwroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/php$fastcgi_script_name;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}
include 'conf/*.conf'; }
(3)用www用户启动nginx
创建www用户:groupadd www
创建www用户组:useradd -g www www
启动nginx:/usr/local/nginx/nginx
关闭nginx: /usr/local/nginx/nginx -s stop
如果是在虚拟机安装可能还需要关闭防火墙 (外部访问 虚拟机要先关闭防火墙chkconfig iptables off 或者 service iptables stop 或者 iptables -F)
5、php跟nginx关联
开启php-fpm配置文件:
cd /usr/local/php/etc
cp php-fpm.conf.default ./php-fpm.conf
开启php-fpm:
/usr/local/php/sbin/php-fpm
6、常见问题:
(1)启动mysql服务 ,提示my.cnf被忽略?
解决方法:修改my.cnf的权限 chmod 644 /data/mysql1/my.cnf
(2)终端mysql进不去?
解决办法:mysql1 -h127.0.0.1 -uroot -p 主机加上127.0.0.1
(3)外部连不上虚拟机mysql?
解决办法:iptables -F
参考网址:http://blog.csdn.net/ynh_123/article/details/53023621
(4)如何开机mysql服务自动开启?
解决办法:上传启动控制脚本到/etc/init.d (一般安装后里面会自动生成,不需上传),将mysql添加到系统服务,然后设置自动开启。
chkconfig --add /etc/init.d/mysql
chkconfig mysql on
详细内容可参考网址:http://blog.csdn.net/b_shuang1113/article/details/75635477
(5)如何设置nginx开机自启动?
(1) 上传启动控制脚本nginx 到/etc/init.d
(2) 设置权限:chmod 755 /etc/init.d/nginx
(3) 添加到系统服务:chkconfig --add /etc/init.d/nginx
(4) 设置开机启动:chkconfig ginx on
(5) 查看是否设置成功:chkconfig --list | grep nginx (2-5选项为on)
参考网址:http://www.jb51.net/article/51973.htm
(6)如何设置php-fpm开机自启动?
(1)上传启动控制脚本php-fpm到/etc/init.d
(2)设置权限:chmod 755 /etc/init.d/php-fpm
(3)添加到系统服务:chkconfig --add /etc/init.d/php-fpm
(4)设置开机启动:chkconfig ginx on
(5)查看是否设置成功:chkconfig --list | grep php-fpm (2-5选项为on)
参考网址:http://www.jb51.net/article/68153.htm
(7)替换了配置文件mysql也无法启动?
解决办法:如果替换了配置文件,启动还是报这个错误:mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.ERROR! The server quit without updating PID file (/data/mysql/data/bogon.pid).
这时可以去/etc目录下删掉默认的my.cnf ,然后再次启动即可
最后附上完整的一键安装脚本,以及所需安装包,配置文件、启动控制脚本:
链接:https://pan.baidu.com/s/1XkxgW9fRINqg_Zi3W27OUg 密码:ddan
linux上搭建nginx+php+mysql环境详细讲解的更多相关文章
- linux下安装nginx+php+mysql环境 详细教程
话不多说上代码 linux环境:centos 7.0 64位 nginx:nginx-1.8.0.tar.gz php: php-7.1.1.tar.gz mysql: mysql-5.6.21.ta ...
- 基于ubuntu 14搭建nginx+php+mysql环境
基于最新的Ubuntu 14.04(2014年9月)搭建nginx.php.mysql环境, 以下全部命令行操作: 1 由于需要大量的权限操作,方便起见临时提升权限,使用root账号 sudo su ...
- 在 Mac 上搭建 Nginx PHP Mysql 开发环境
事实上这个过程跟Linux下安装都几乎相同,仅仅是部分命令有区别,大同小异. 网上看到非常多教程都是用 brew 之类的包管理器安装,可是 Mac 自带了 php , 难道还要再装一个第三方的?强迫症 ...
- windows下搭建nginx+php+mysql环境
一.下载需要的东西 1.nginx:http://nginx.org/en/download.html 2.php:http://php.net/downloads.php 3.mysql:(暂时先不 ...
- linux上搭建nginx+ftp,实现文件的上传与访问
ftp服务器搭建 1.新建用户ftpuser并指定主目录为/home/ftpuser (注意:这个目录是后面存储和读取文件的目录) <!--创建用户并指定主目录--> useradd -d ...
- linux上搭建nginx
安装包:(按顺序执行过去即可,重复无所谓)c++编译环境 yum install gcc-c++ 安装pcre yum -y install pcre-devel 安装openssl yum -y i ...
- 创建linux中的nginx+php7+mysql环境----PHP7安装
默认CentOs 的源 并没有php7的安装路径,所以需要手动添加源: # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-l ...
- windows7配置Nginx+php+mysql的详细教程
windows7配置Nginx+php+mysql的详细教程 作者:Vincent.李 字体:[增加 减小] 类型:转载 时间:2016-09-04我要评论 这篇文章主要介绍了windows7配置Ng ...
- linux下搭建Nginx
Linux上搭建nginx,及简单配置 在上家公司都是运维安装nginx,到新公司后代码开发完成部署测试服务器要求自己装nginx,研究了好久安装好之后,到正式上线还要自己安装,索性把安装步骤自己记 ...
随机推荐
- Jquery的树插件jqxTreeGrid的使用小结(实现基本的增删查改操作)
一.引入相应的js <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" t ...
- 使用IntelliJ IDEA,gradle开发Java web应用步骤
最近 正在学习gradle构建工具的使用,看了一堆的文档,有点一知半解,索性动作实践一把,在以后的自己的项目中尝试使用看看.目前手头用的是IntelliJ IDEA 14,搭建了一天终于明白怎么集成g ...
- 37-python中bs4获取的标签中如何提取子标签
如果只是要提取一个标签 里面的属性值啥的,直接看这篇文章就可以了: 23-python用BeautifulSoup用抓取a标签内所有数据 如果是标签的嵌套,可以参考下面的思路,虽然不是很简洁,但是可以 ...
- 《剑指offer》读书笔记
二叉树 重建二叉树 面试题6:(p55) 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1, 2, 4 ...
- 第四章 Windows的图形设备接口及Windows绘图 P83 4-6
实验(实习)名称 图形程序设计及其应用 实验(实习)日期 一.实验目的 1.熟悉图形设备接口的概念及其应用. 二.实验内容及步骤 实验任务 1.熟悉基于图形应用的程序设计: 2.掌握刷新技术及其 ...
- fabric实现文本聚焦、可编辑
var canvas = new fabric.Canvas('c'); var tex = new fabric.IText('click',{left:100,top:400});canvas.a ...
- 如何用Python实现常见机器学习算法-3
三.BP神经网络 1.神经网络模型 首先介绍三层神经网络,如下图 输入层(input layer)有三个units(为补上的bias,通常设为1) 表示第j层的第i个激励,也称为单元unit 为第j层 ...
- CoreText
[CoreText] Core Text is designed for development of higher-level text-handling frameworks. General ...
- POJ 2396 Budget (有源汇有上下界最大流)
题意:给定一个矩阵的每行的和和每列的和,以及每个格子的限制,让你求出原矩阵. 析:把行看成X,列看成Y,其实就是二分图,然后每个X到每个Y边一条边,然后加一个超级源点和汇点分别向X和Y连边,这样就形成 ...
- UVa 10603 Fill (暴力BFS+优先队列)
题意:给定4个数,a,b,c,d,分别代表空杯子容积为a,b,一个盛满水的杯子容积为c,让你不断倒水,找一个dd,是不是存在某个时刻, 某个杯子里的水dd,和d相同,或者无限接近.让求最少的倒水量和d ...