nginx使用yum安装mysql_CentOS7下使用YUM手工搭建LNMP环境记录

在以前经验不足的时候,搭建服务器LNMP环境,基本都是从网络上搜寻LNMP一键安装脚本,用脚本直接完成环境的所有部署。网络上的一键包有些高质量的,在安全,性能等方面都已经足够好,完全可以满足大多数情况下的需求,为什么还需要用手工搭建环境呢?

其实在现在看来,由于Linux的源提供的包安装方式已经越来越完善,使用YUM指令可以完成大多数环境的直接安装,不需要重新编译。再一个就是一键LNMP安装包大多是固化好作者的配置,如果你需要在后面的环境中添加新的模块,可能需要根据作者的配置规则来添加。而我们自己手工搭建的环境,对于环境配置会更加熟悉,也更容易拓展安装更多的环境模块。

Linux基础环境配置

这里使用的CentOS 7,如果使用的是vps等云服务,直接选择服务商提供的CentOS 7系统就可以。如果准备在物理服务器上安装,可以在官网下载CentOS 7,版本可以选择Minimal ISO最小组件版本。

安装过程不多说,安装后检查是否有添加了FedoraProject的epel源,如果系统默认没有加入这个源,加入的方法很简单:yum install epel-release

安装完成后执行yum update

更新源即可

安装Nginx

Nginx提供源码编译安装,对CentOS来说还可以直接添加官方源后通过yum方式安装。

编辑/etc/yum.repos.d/nginx.repo,添加以下内容(以下适用于CentOS 7,其他版本可以看官网说明)[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

之后运行yum update更新系统,然后安装nginxyum install nginx

之后运行systemctl start nginx

systemctl enable nginx

安装Mysql(MariaDB)

CentOS7官方源中把mysql换成了MariaDB,它是mysql的一个分支,主要由开源社区维护升级,因此我们这里以MariaDB代替Mysql,首先执行安装:yum install mariadb-server

安装完成后启动MariaDB并设置为开机启动:systemctl start mariadb

systemctl enable mariadb

执行脚本通过交互的方式对MariaDB进行一些设置:/usr/bin/mysql_secure_installation

安装PHP(php-fpm)

使用yum同样方便的安装php-fpm,这里同时安装php-mysql扩展用于连接mysql数据库,如果你的php应用中需要用到更多的扩展,也可以在这里一并安装yum install php-fpm php-mysql

之后运行systemctl start php-fpm

systemctl enable php-fpm

为web服务添加用户

为了统一管理权限,将nginx与之php-fpm设为同样的用户,因此这里需要新建一个账户用于web服务useradd -s /sbin/nologin ktseewww

修改/etc/nginx/nginx.conf文件,找到user nginx,修改为刚刚创建的用户user ktseewww

修改/etc/php-fpm.d/www.conf,找到user = apache

group = apache

修改为user = ktseewww

group = ktseewww

修改目录权限

修改var/lib/nginx目录权限chown -R ktseewww:ktseewww /var/lib/nginx

修改var/lib/php/session目录权限mkdir /var/php/session

chown -R ktseewww:ktseewww /var/php/session

设置站点配置文件

编辑/etc/nginx/conf.d/thinkphp.conf,增加server {

listen 80;

server_name www.ktsee.com;

root /data/wwwroot/www.ktsee.com;

index index.html index.htm index.php;

#charset koi8-r;

access_log /data/wwwlogs/www.ktsee.com.access.log main;

location / {

if (!-e $request_filename) {

rewrite ^/(.*) /index.php?s=/$1 last;

#rewrite ^(.*) index.php?s=$1 last;

}

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

location ~ \.php/?.* {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$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;

}

location ~ /.ht {

deny all;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 10d;

}

location ~ .*\.(js|css)?$

{

expires 1d;

}

}

关闭selinux

修改/etc/sysconfig/selinuxSELINUX=disabled

保存后重启

安装Redis

直接执行yum命令完成安装yum install redis

编辑/etc/redis.conf,修改redis目录及logfile存放目录:logfile /data/redislogs/redis.log

dir /data/redisdata/

保存,然后对以上设置的两个目录赋予redis用户权限chown -R redis:redis /data/redislogs

chown -R redis:redis /data/redisdata

为了安全,将部分命令设置为空,以禁止使用这些命令rename-command CONFIG ""

rename-command FLUSHDB ""

rename-command FLUSHALL ""

设置redis周期性将内容转储到硬盘上的频率save 900 1

继续对/etc/redis.conf文件进行配置,如果需要远程访问,可以设置每次访问redis都需要输入密码requirepass "inputyourstrongpassword"

编辑/etc/sysctl.conf,添加vm.overcommit_memery = 1

net.core.somaxconn = 512

这里主要是避免系统内存机制导致redis数据被截断

配置站点防跨站隔离

为了在服务器上部署多个站点,同时每个站点只能访问自己目录下的内容(防止跨站访问其他站点的文件),需要对站点进行隔离。首先在全局范围进行限制,使PHP只能访问服务器指定目录

打开/etc/php.ini,找到open_basedir参数,设置如下:open_basedir = /data/wwwroot/:/tmp/:/proc/

这样只允许网页文件访问以上三个非系统目录(冒号分隔目录)

接着对每个站点进行单独配置,在站点根目录新建.user.ini文件,新增内容:open_basedir = /data/wwwroot/hi.ktsee.com/

这里的路径设置为站点自身的物理路径。接着保存即可。

升级到PHP 7(可选)

如果业务不考虑兼容老的应用,可以升级到php7,运行效率会得到提升。这里通过IUS源升级PHP7,首先导入源:cd ~

curl 'https://setup.ius.io/' -o setup-ius.sh

sudo bash setup-ius.sh

接着移除已经安装的php5及相关组件:yum remove php-fpm php-cli php-common

安装php7及相关组件:yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

修改/etc/php-fpm.d/www.conf文件,修改:;listen = 127.0.0.1:9000

listen = /run/php-fpm/www.sock

这里同时注意需要修改对应前面被覆盖掉的用户权限,新增listen.acl_users用户:user = ktseewww

group = ktseewww

listen.acl_users = ktseewww

修改/etc/nginx/nginx.conf文件,同样修改一下user ktseewww

接着修改/etc/nginx/conf.d/php.fpm:#server 127.0.0.1:9000;

server unix:/run/php-fpm/www.sock;

在修改nginx站点配置文件/etc/nginx/conf.d/thinkphp.conf:#fastcgi_pass 127.0.0.1:9000;

fastcgi_pass php-fpm;

修改配置完成后,重启一下nginx与php-fpm服务:systemctl restart nginx

systemctl restart php-fpm

别忘了设置新安装的php-fpm开机自启动:systemctl enable php-fpm

安装composer(可选)

通过安装composer管理依赖包会大幅提高效率,首先下载:curl -sS https://getcomposer.org/installer | php //获取composer

这时使用使用php composer.phar就可以运行,

如果需要直接使用composer执行,则需要注册到系统运行路径中:mv composer.phar /usr/local/bin/composer

这时直接使用composer运行即可。

安装YAF框架(可选)

下载yaf并编译成扩展文件,具体操作可以参考此文步骤,编译yaf.so文件。注意这里yaf.so需要存放在/usr/lib64/php/modules目录下。

这时为了将yaf.so加入php中,需要进入/etc/php.d目录,创建yaf.ini,写入; Enable yaf extension module

extension=yaf.so

保存后重启服务

结束

到此一个基本的LNMP环境就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值