LNMP环境搭建网站
系统:Centos7.4
一台服务器安装nginx、php、mysql
原理不是很懂,但实测如下两种环境下都能成功,这里做下记录:
1、一个干净的系统,从0开始完成所有步骤,完成LNMP搭建
2、已经装了mysql,之后再装nginx、php,完成LNMP搭建(安装php编译时要注意指定mysql的安装路径等信息)
注意:安装前一定检查是否装有mariadb数据库(系统安装时选择某项安装会集成安装上的),若有请卸载,不然后面初始化mysql时会报错,百度了很久都没找原因,都说是权限问题,后来在重复搞整时看到有关于mariabd的打印,猜测是这个原因,卸载mariadb问题解决。
Can't create/write to file '/data/mysql/xx.pid' (Errcode: 13)
步骤如下:
一、源码ginx安装
1、安装nginx需要的环境依赖库、工具等
yum -y install pcre pcre-devel openssl-devel openssh wget
2、下载nginx安装包至/usr/local/src下
wget -c -P /usr/local/src http://mirrors.yangxingzhen.com/nginx/nginx-1.13.4.tar.gz
3、安装编译器
yum -y install gcc gcc-c++
4、编译安装nginx
cd /usr/local/src
tar zxf nginx-1.13.4.tar.gz
cd /src/nginx-1.13.4
#编译前可以根据企业实际需要选择是否隐藏nginx版本等信息
sed -i -e 's/1.13.4/123/g' -e 's/nginx\//abc/g' -e 's/"NGINX"/"abc"/g' ./src/core/nginx.h
#预编译(根据实际需求添加相应模块)
./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
#编译、安装(-j8表示同时用8核CPU进行编译)
make -j8 && make install
5、创建nginx启动用户,默认用户为www,不授予登陆权限
useradd -s /sbin/nologin www
6、启动nginx并测试是否能正常访问
#检测配置文件是否正确
/usr/local/nginx/sbin/nginx -t
#启动nginx
/usr/local/nginx/sbin/nginx
7、根据具体需求对nginx.conf配置文件进行修改调整
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
#为方便查看配置文件,可将多余的注释和空行清空
grep -vE "^$|#" nginx.conf.default >nginx.conf
#修改配置
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;include conf.d/*.conf; # 开启虚拟主机,将会去此目录下找配置文件,在找不到时才会往下进行server {listen 80;server_name abc.c.com;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}} }
#创建虚拟主机配置文件目录并创建一个配置,如nginx.conf配置所示,conf.d文件夹与nginx.conf配置文件处于同级。
mkdir -p /usr/local/nginx/conf/conf.d
vim /usr/local/nginx/conf/conf.d/abc1.conf #应该根据具体需求进行配置
server{listen 80;server_name www.abc.com;root /usr/local/nginx/html/abc/public; # 该项要修改为你准备存放相关网页的路径location / {index index.php index.html index.htm;#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则if (!-e $request_filename){#地址作为将参数rewrite到index.php上。rewrite ^/(.*)$ /index.php?s=$1;#若是子目录则使用下面这句,将subdir改成目录名称即可。#rewrite ^/subdir/(.*)$ /subdir/index.php?s=$1;}}location /api/ {index index.php index.html index.htm;#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则if (!-e $request_filename){#地址作为将参数rewrite到index.php上。#rewrite ^/(.*)$ /index.php?s=$1;#若是子目录则使用下面这句,将subdir改成目录名称即可。rewrite ^/api/(.*)$ /api/index.php?s=$1;}}location ~* ^\/upload\/.+\.(html|php)$ {return 404;}location ~* ^\/plugins\/.+\.(html|php)$ {return 404;} ▽location ~* ^\/themes\/.+\.(html|php)$ {return 404;}#proxy the php scripts to php-fpmlocation ~ \.php {include fastcgi_params;##pathinfo支持start#定义变量 $path_info ,用于存放pathinfo信息set $path_info "";#定义变量 $real_script_name,用于存放真实地址set $real_script_name $fastcgi_script_name;#如果地址与引号内的正则表达式匹配if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {#将文件地址赋值给变量 $real_script_nameset $real_script_name $1;#将文件地址后的参数赋值给变量 $path_infoset $path_info $2;}#配置fastcgi的一些参数fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;fastcgi_param SCRIPT_NAME $real_script_name;fastcgi_param PATH_INFO $path_info;###pathinfo支持endfastcgi_intercept_errors on;fastcgi_pass 127.0.0.1:9000;# fastcgi_pass 如果是 sock形式,可能是下面的配置# fastcgi_pass unix:/tmp/php-cgi.sock}}
#平滑重启nginx,访问域名查看是否有结果(如果是静态网站,现在能正常访问了,但这里是动态网站,需要php解释器,还需要连接数据库,访问肯定是报错一堆)
/usr/local/nginx/sbin/nginx -s reload
二、mysql数据库安装
1、安装依赖环境
yum -y install cmake ncurses-devel perl autoconf
2、下载安装包
cd /usr/loca/src
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz
3、 编译安装
tar zxf mysql-5.6.39.tar.gz
cd mysql-5.6.39
#预编译(根据经验,感觉是将以下配置写入my.cnf默认配置中,所以只要你不修改my.cnf配置文件,以下配置就属于默认配置,若修改了my.cnf配置文件就以修改后为准)
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DWGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXDDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_BIG_DEBUG=0
将知道的进行解释(其它的以后查到了再进行更新):
-DCMAKE_INSTALL_PREFIX= #指定安装目录
-DMYSQL_DATADIR= #指定数据库的存放目录即数据目录
-DSYSCONFDIR= #指定默认my.cnf配置文件路径,如果遇到一个服务器装多个mysql时,可以对其进行修改,实测有效。
-DMYSQL_UNIX_ADDR= #sock命令以及存放路径指定,一台服务器多个mysql时,不要重名
-DMYSQL_USER= #指定mysql启动使用的用户
-DMYSQL_TCP_PORT= #指定数据库端口
-DWITH_EXDDEFAULT_CHARSET= #设置默认数据库字符集----------------------------------------------------------------------------#编译、安装make -j8 && make install 4、创建mysql启动用户useradd -s /sbin/nologin mysql
5、mysql安装目录授权(编译安装时会自动创建目录)、数据目录创建(数据库初始化时要用,所以必须提前创建)和授权等
chown -R mysql:mysql /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
6、修改my.cnf配置文件(很初始的配置,根据实际需求进行调整)
vim /etc/my.cnf
[client] default-character-set = utf8 [mysql] default-character-set = utf8 [mysqld] datadir = /data/mysql socket = /tmp/mysql.sock user = mysql log-error = /var/log/mysqld.log character_set_server = utf8
7、初始化数据库(会在/data/mysql下根据my.cnf配置初始创建一些数据文件和库文件,如果是新装数据库,可重复初始化,每次初始化前将原来生成的文件删除干净。已投入生产的不要此操作.)
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
8、启动数据库
#软链接让mysql的命令全局直接使用
ln -s /usr/local/mysql/bin/* /usr/bin
#数据库系统启动制作
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #若一台服务器多个mysql可以重新命名如根据数据库版本来区分,mysqld55或mysqld56
chmod o+x /etc/init.d/mysqld
/etc/init.d/mysqld start或service mysqld start
#设置开机启动
chkconfig --add mysqld
hkconfig mysqld on
chkconfig --list mysqld
三、PHP(FastCGI)安装
1、安装php函数依赖库等
yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
2、安装libmcrypt库、mhash加密扩展库、mcrypt加密扩展库(根据实际需要进行安装)
#提前安装epel.repo扩展源,不然无法进行安装(根据实际系统版本指定epel-6或epel-7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install libmcrypt-devel mhash mcrypt
3、源码安装libiconv(系统环境不同编译时可能会出现部分系统报错,实测有些系统报错,有些没有报错)
cd /usr/local/src
wget -c http://mirrors.yangxingzhen.com/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
#编译时若出现报错,可按此操作解除。
make -j8 && make install
解决办法:
find . -name "stdio.in.h"
./srclib/stdio.in.h
vim ./srclib/stdio.in.h
大概在698行位置,删除stdio.in.h文件中_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");行即可
#重新进行编译安装就过了
make -j8 && make install
4、源码安装php
cd /usr/local/src
wget -c http://mirrors.sohu.com/php/php-5.6.29.tar.gz
tar zxf php-5.6.29.tar.gz
cd php-5.6.29
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64
#预编译(参数中有关于mysql的信息,比如指定mysql的安装路径,一定要正确配置)
./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-pdo-mysql=/usr/local/mysql \ --enable-opcache \ --with-gettext \ --with-iconv-dir=/usr/local/libiconv \ --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-fpm \ --enable-mbstring \ --with-mcrypt \ --with-gd \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-soap \ --enable-short-tags \ --enable-static \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-ftp \ --enable-zip
#编译安装
make -j8&&make install
5、配置并启动php
先从源码包拷贝php.ini文件到etc下
cp /usr/local/src/php-5.6.29/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
#启动php
/usr/local/php/sbin/php-fpm
四、web站点配置
1、将web代码放置nginx配置文件指定目录下,并修改权限
通常情况下需要将代码文件所属用户指定为nginx启动用户(www),不然会出现无访问访问权限导致报错
chown -R www:www /usr/local/nginx/html/abc
2、创建库、数据库访问用户,并导入后端数据库
mysql -uroot -p
create database abc character set=utf8;
grant all on abc.* to userabc@'localhost' identified by '123456';
source abc.sql
flush privileges;
3、将nginx、php-fpm重启,并访问站点。
转载于:https://www.cnblogs.com/ccit/p/10078288.html
LNMP环境搭建网站相关推荐
- 拔牙伤己600——LNMP环境搭建(Kali、宝塔)
Web安全1.2:LAMP.LNMP环境搭建(Kali.宝塔.phpstudy)+wordpress站点搭建 声明:本次实验环境为Kali2020+VMware16Pro,使用的浏览器为火狐浏览器.建 ...
- Linux(ubuntu) LNMP环境搭建
Linux(ubuntu) LNMP环境搭建 1. 配置源地址 Ubuntu默认使用的官方源的服务器在欧洲,从国内访问速度很慢 先修改软件源为国内的, 例如: 阿里云源, 清华源等等 整体步骤: 查询 ...
- 17. LAMP环境搭建和LNMP环境搭建
目录 17.1 Linux LAMP环境搭建的前期准备 获取源码包 把软件包传送到Linux服务器上 安装编译工具 关闭RPM包安装的apache和mysql 关闭防火墙和SELinux 关闭不必要的 ...
- lamp 独立mysql_lamp or lnmp 环境搭建之独立安装mysql数据库
lamp or lnmp 环境搭建,如果mysql 是独立安装的则需要授权: 单独一台服务器独立安装mysql 安装后,优化服务器. 授权 实例如下: 创建用户 CREATE USER demo ID ...
- ngnix之lnmp环境搭建及Dvbbs搭建
LNMP环境搭建 引导语:前面我们做过LAMP环境的搭建,而对于后起之秀nginx而言,其性能相对apache提高了很多, 故本实验借助于nginx来LNMP环境, 环境搭建分三步:mysql绿色包安 ...
- LNMP环境搭建 centos7 nginx1.12 mysql5.6 php7
经过一番折腾,终于将LNMP环境搭建完成了.本文介绍的LNMP环境是在windows的Oracle VM VirtualBox中的Centos虚拟机上搭建的,各个软件的版本为:Centos7 + Ng ...
- CentOS6.x 下 LNMP环境搭建(二、安装 Nginx)
为什么80%的码农都做不了架构师?>>> CentOS6.x 下 LNMP环境搭建(准备篇) CentOS6.x 下 LNMP环境搭建(一.安装 MySQL) CentOS6. ...
- wamp2.2c集成环境搭建网站问题总结
wamp2.2c集成环境搭建网站问题总结 通过PHPmyadmin上传大于2M的.sql文件无法上传错误信息No data was received to import. Either no fil ...
- LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)
测试环境:CentOS release 6.5 (Final) 软件安装:nginx mysql-5.5.32-linux2.6-x86_64.tar.gz php-5.3.27.tar.gz ...
最新文章
- Docker的镜像导出与导入与拷贝
- 对两个字符串进行比较,取出两个字符串中一样部分的长度
- 找CTO杜仲:再谈中年危机和应对策略
- angular启动过程分析
- 【vim】vim常用命令
- 变异记录文件格式 vcf
- 模拟器:思科 创建Vlan,给2层交换机和3层交换机配置IP地址和子网掩码
- 仿 qq音乐播放器 html代码,仿QQ音乐播放器
- 红米note5系统Android11,红米Note5 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
- 沉浸式体验,文化与科技融合创新的新业态
- HTML5期末大作业:动漫电网站设计——动漫电影《你的名字》(7页) HTML+CSS大作业: 动漫电网页制作作业_动漫电网页设计...
- 小结一篇-(秀我工作一年)
- ATX 双电源切换电路
- 火星转债上市价格预测
- 奥巴马就海地发生强烈地震发表讲话中英文对照
- 2017年编程语言排行榜
- linux下printf终端打印输出颜色控制
- 酒店IPTV系统方案可选的有哪些?
- sdcard 热插拔逻辑
- 右键点击文件显示多余菜单删除