阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs+redis(开机启动及配置远程连接),配置linux的php和nodejs网站运行环境。

前言

对于一个小项目和小公司而言,用php作为开发语言是很理智和聪明的选择,但是只要开发团队超过一个人,并且项目需要长时间持续开发下去,那么,一个相对稳定的运行环境及协同工作环境是必须的。
最近刚好转型做这些,下面的配置是一个真实项目的配置,相信会对大家有参考意义的。好了,那么我们开始。

centos7的安装

这个安装就不提了,在网上查一下u盘 centos7 安装什么的就好了,当然,服务器有cd的话也可以用cd安装。

小提示,安装完centos7以后你可以选择安装一个桌面—虽然以后大多数不直接操作centos但是看着也爽,然后必须推荐使用ssh远程登陆centos进行操作—-因为你可以随时copy各种指令到命令行里面执行—当你在windows上面看着一大堆url地址安装时候,你就会明白使用ssh是多么明智的

EPEL和REMI的安装及nginx配置

第三方源的配置安装

rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装epel及remi【新】

上面的两个源已经失效了,现在说说新的安装方案

注意,该段话摘抄自:–包括图片

这里写链接内容

CentOS 内置的yum命令安装非常的简单实用,能自动帮助我们解决依赖,但centos内置的yum源可用的软件偏少或者版本过低,通常我们需要使用一些第三方的yum源,这里向大家推荐两个比较常用和权威的yum源,epel和remi。

epel的安装非常简单,只需要输入以下命令即可

yum install epel-release  

这里写图片描述

详细请参考:http://fedoraproject.org/wiki/EPEL


remi源的安装稍微复杂一点,但也很简单

CentOS6:

wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm  
rpm -Uvh remi-release-6.rpm  

或者CentOS7:

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
rpm -Uvh remi-release-7.rpm  

然后编辑 /etc/yum.repos.d/remi.repo

vim /etc/yum.repos.d/remi.repo  

将其中 [remi] 下的enabled=0改为1,保存退出,配置完成。

这里写图片描述

详情请参考:http://blog.remirepo.net/pages/Config-en

最后用个软件测试下,比如列出php软件源信息

yum list php*  

这里写图片描述

添加nginx的源及安装

vi /etc/yum.repos.d/nginx.repo

打开以后复制下面内容:
(添加下面内容,手打可以,直接黏贴也可以。)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

然后请保持退出—不会的话请查一查在linux下面如何使用vi,如何保存和退出。

安装nginx:

yum install nginx -y

安装完以后,请启动nginx和设置开机启动:

systemctl start nginx
systemctl enable nginx

好了,这时候安装好了,我们—还不能看到效果,因为centos7有firewall和selinux两大安全措施,会将端口给屏蔽掉的。
首先开启80端口,永远开启:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

然后,请关闭selinux:
这里写图片描述

好了,现在来试试能不能访问nginx:

http://192.168.1.100:80/

该地址取决于你自己对服务器的ip的定制
这里写图片描述

nginx配置成功。

安装MariaDB 5.5

yum --enablerepo=remi,remi-php56 install mariadb-server mariadb -y

备注

如果出现下载失败问题,用如下解决方法:

1
下载包

wget http://mirrors.163.com/centos/7.1.1503/os/x86_64/Packages/mariadb-server-5.5.41-2.el7_0.x86_64.rpm

提示中的包

2

yum --enablerepo=remi,remi-php56 install mariadb -y

先安装可以用。
3

yum install perl-DBD-MySQL

安装依赖包
4

rpm -Uvh mariadb-server-5.5.41-2.el7_0.x86_64.rpm

安装无法下载的包。

备注完毕

启动和设置开机启动

systemctl start mariadb
systemctl enable mariadb

设置数据库的安全

/usr/bin/mysql_secure_installation

执行上面脚本,根据提示我们需要设置一遍数据库的安全,删除匿名用户等。
额外补充:
补充远程机器可以访问该数据库的设置方式:
1 设定3306端口开放—数据库默认端口为3306,除非你改了,否则应该开发端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

2 在mariaDB里面设定开发远程链接:
登陆到mariaDB,使用ssh或者直接在centos上面操作:
输入命令: mysql -u root -p
然后需要输入密码:
设定所有ip都可以访问:–假如想设定某个ip访问那么请查文档:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

其中123456为密码,请替换你的密码。

验证数据库是否正常安装,是否可以远程访问:
我用的是navicat,大家随意就好,请支持正版。
这里写图片描述

这里写图片描述

这里写图片描述

成功访问,数据库配置完毕。

安装PHP-fpm 5.6

yum --enablerepo=remi,remi-php56 install php-fpm php-common php-mysql php-opcache php-pear php-gd php-devel php-mbstring php-mcrypt php-cli php-pdophp-redis php-pecl-memcache php-bcmath php-xml -y

如果少包查找:

http://pkgs.org/download/libmcrypt.so.4()(64bit)

启动和开机启动

systemctl start php-fpm
systemctl enable php-fpm

安装Imagick及扩展

蛮简单的,一次性上全部代码:

#imagick需要PHP >= 5.1.3 and ImageMagick >= 6.2.4
yum install -y php-pear gcc
yum install -y ImageMagick ImageMagick-devel
pecl install imagick
#开放selinux权限
chcon -t  texrel_shlib_t /usr/lib64/php/modules/imagick.so
#PHP配置,加载imagick模块
echo "extension=imagick.so"> /etc/php.d/imagick.ini

安装分词扩展scws
1. 取得 scws-1.2.2 的代码

wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
  1. 解开压缩包
tar xvjf scws-1.2.2.tar.bz2
cd scws-1.2.2
./configure --prefix=/usr/local/scws

make &&make install

可能遇到的问题:

找不到c编译器



[root@localhost scws-1.2.2]# ./configure --prefix=/usr/local/scws
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/root/scws-1.2.2':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

解决方案:

yum install gcc
#安装gcc。

bzip2 没有

tar (child): lbzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

解决方案:

#安装bzip2
yum install bzip2 -y

检查有没有安装成功:

Ls /usr/local/scws

看看有没有东西。。后面的路径其实是prefix指定的路径。

配置scws成为php的扩展

1) 进入源码目录的 phpext/ 目录

 cd ~/scws-1.2.2 

–即 scws-1.2.2下面 还有一个phpext目录。

2) 执行 phpize (在PHP安装目录的bin/目录下)

phpize

3) 执行

./configure --with-scws=/usr/local/scws 

若 php 安装在特殊目录 $php_prefix, 则请在 configure 后加上 --with-php-config=$php_prefix/bin/php-config

4) 执行 make 然后用 root 身份执行 make install

php.ini中增加

vi /etc/php.d/scws.ini

extension = scws.so
[scws]
scws.default.charset = utf-8
scws.default.fpath = /usr/local/scws/etc

更新字典

cd /usr/local/scws/etc
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
tar xvjf scws-dict-chs-utf8.tar.bz2

网络工具安装

yum install net-tools

SELinux配置

查看SELinux状态:
1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
SELinux status:                 enabled
2、getenforce                 ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0                  ##设置SELinux 成为permissive模式
                              ##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

nginx配置及文件上传限制设定

到这里我们已经安装完毕nginx, mariadb, 以及php-fpm,我们需要对Nginx进行配置
A - 配置/etc/nginx/nginx.conf文件
输入命令: vi /etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

worker_processes表示当前VPS/服务器的CPU核心数,我们可以通过
grep ^processor /proc/cpuinfo | wc -l
检测和修改。
B - 检查启动sendfile, tcp_nopush, gzip,以及添加INDEX.PHP文件

sendfile        on;
tcp_nopush     on;
#keepalive_timeout  0;
keepalive_timeout  65;
gzip  on;
#index   index.php index.html index.htm;---请注意,index不应该在nginx.conf下面配置的,应该在子项目子服务的server的location下面配置,这里就不要设定index了。

修改PHP上传文件大小限制的方法

--先打开php的配置文件:vi /etc/php.ini
max_execution_time = 0
post_max_size = 150M
upload_max_filesize = 100M
memory_limit = 1024

nginx修改上传文件大小限制

client_max_body_size    1000m;
--在nginx后面加上面的设定。注意,需要在http的括号里面设定的,否则会出错。

nginx及php-fpm的配置及运行正式的php网站

上面的过程中我们只是单独配置了数据库,服务器和php而已,那么,centos下面的nginx怎么样才能运行php文件呢?

下面我们以site1作为例子来说明,首先,新建一个nginx的配置文件,作为站点site1的配置文件:

#####################################
#####################################
#####################################
server {
listen 8001;
server_name 120.25.213.167 www.site1.com *.site1.com;
root   "/var/www/sites/site1";
#这里是网站根目录,写上自己的目录吧。
#    access_log  /var/log/nginx/access/site1/nginx_access.log;
error_log /var/log/nginx/error/site1/nginx_error.log;
index index.php;
location / {
}
    error_page 404  /;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

fastcgi_param CONFIG_TYPE product;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#规定脚本的路径及名字
include fastcgi_params;
}
    location ~* \.(?:ico|css|js|gif|jpeg|png)$ {
expires 30d;
access_log        off;
log_not_found     off;
add_header Pragma public;
add_header Cache-Control "public";
}
    location /console {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
    set $flag 0;
if ($uri !~ ^/console/){
set $flag "${flag}1";
}
    if (!-e $request_filename){
set $flag "${flag}2";
}
    if ($flag = "012"){
rewrite ^/(.*)$ /index.php last;
}
}

上面的配置文件说明了几个要点,就是这个站点监听的端口是8001,网站目录是/var/www/sites/site1 错误日志文件在:/var/log/nginx/error/site1/nginx_error.log fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000 好了,那么我们要做一些准备工作:
1 开放9000端口及8001端口;
2 新建错误日志目录及文件;
3 新建网站根目录及放置一个测试用的php文件。

下面是步骤:

#1 --开放端口
firewall-cmd --zone=public --add-port=8001/tcp --permanent

firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
#2 --建立必要的目录
mkdir -p  /var/log/nginx/error/site1
#3 --添加日志文件
vi  /var/log/nginx/error/site1/nginx_error.log
####解释:vi /var/log/nginx/error/site1/nginx_error.log
####请按esc,然后填:wq保存并退出--这是vi命令的基本用法。
#4 新建网站根目录
mkdir -p /var/www/sites/site1
##添加php文件并保存--内容看下面的例子。
vi /var/www/sites/site1/index.php

php文件内容–例子

<!DOCTYPE html>
<html>
<body>

<h1>我的第一张 PHP 页面</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

好了,访问一下:
这里写图片描述

php及nginx成功配置。

SVN安装及基本配置

centos(我这里使用的是CentOS7)下yum命令即可方便的完成安装

$ sudo yum install subversion

测试安装是否成功:

$ svnserve --version

开放端口,注意,subversion的默认端口为3690,如果没有打开会报错:

firewall-cmd --zone=public --add-port=3690/tcp --permanent
firewall-cmd --reload

服务启动及相关:

$ sudo systemctl enable svnserve.service      #注意:根目录必须是/var/svn 这样才能设置成功!!
#设置开机启动后就可以按下面的方式开启或停止服务了
$ sudo systemctl start svnserve.service
$ sudo systemctl stop svnserve.service
$ sudo systemctl status svnserve.service#查看svn服务的状态。

请运行启动svn服务及开机启动命令。下面我们将尝试新建一个代码仓库,然后用客户端访问。
注意:svn仓库的地址默认规则是:

svn://你的机器ip地址/仓库名称

svn基本应用–创建一个代码仓库

创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里):

$ sudo mkdir -p /var/svn

假设我们现在创建的代码仓库名称是test_normal那么我们需要这样创建:

##创建目录
sudo mkdir  -p /var/svn/test_normal
##创建仓库
sudo svnadmin create  /var/svn/test_normal

备注,删除版本库如此即可:

rm -rf /var/svn/test_normal

编辑权限等等。
1 每个版本库创建之后都会生成svnserve.conf主要配置文件。编辑它:

sudo vim /var/svn/test_normal/conf/svnserve.conf

编辑示例—引用网上的:

[general]
anon-access = none;
 #控制非鉴权用户访问版本库的权限
auth-access = write;
#控制鉴权用户访问版本库的权限
password-db = passwd;
#指定用户名口令文件名
authz-db = authz;
#指定权限配置文件名
realm = wangwa;
#指定版本库的认证域,即在登录时提示的认证域名称

实际编辑:
这里写图片描述
不要吐槽颜色什么了,这是vim自带样式。

编辑svn用户配置文件

sudo vim /var/svn/test_normal/conf/passwd

网上引用例子:

[users]
admin = admin                #用户,密码
fuhd = fuhd                #用户,密码
test = test                #用户,密码

实际编辑:
这里写图片描述

编辑svn权限控制配置文件

sudo vim /var/svn/test_normal/conf/authz

网上引用例子:

[groups]
admin = admin         #admin为用户组,等号之后的admin为用户test = fuhd,test

[wangwa:/]                #表示根目录(/var/svn/wangwa),wangwa: 对应前面配置的realm = wangwa
@admin = rw            #表示admin组对根目录有读写权限,r为读,w为写

[wangwa:/test]         #表示test目录(/var/svn/wangwa/test)
@test = rw                #表示test组对test目录有读写权限

实际示例:
这里写图片描述

重启svn服务:

sudo systemctl restart svnserve

然后在客户端链接该目录–我用的是tortoiseSVN–大家随意就好。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

好了,成功导出项目。svn仓库搭建成功。

高阶应用-搭建svn的开发环境-php+nginx

我们的目标是搭建开发还,包含了项目管理,还有上传和更新文件以后会在服务器上面显示出来的开发环境。好了,下面就是这一个步骤。

我们以一个新的项目,叫test_high来举例。

分几个步骤完成这个过程。
1 创建代码仓库
2 设定钩子–post-commit达到自动同步到网站目录的效果
3 设定nginx的子网站配置文件,开放相关端口
4 测试是否成功

第一步,先设定基本的仓库,然后重启svn服务,其后有示意图

sudo mkdir -p /var/svn/test_high
sudo svnadmin create /var/svn/test_high
sudo vim /var/svn/test_high/conf/svnserve.conf
sudo vim /var/svn/test_high/conf/passwd
sudo vim /var/svn/test_high/conf/authz
sudo systemctl restart svnserve

这里写图片描述
这里写图片描述
这里写图片描述

下面就是规定我们网站的目录,每次更新svn之后,我们需要同步更新的网站目录,这里假设网站目录为

/usr/local/webroot/test_high
mkdir -p /usr/local/webroot/test_hight
svn checkout svn://localhost/test_hight /usr/local/webroot/test_hight --username testuser --password abc --non-interactive

上面的命令意思为:
创建对应目录,checkout到网站存放目录。

这里写图片描述

取出成功。

接下来我们要修改hook脚本的post commit,
首先先将post-coomit.tmpl复制一份成为post-commit,
svn每次更新完以后将会执行post-commit脚本
然后给脚本执行权限,接下来将脚本内容添加进去–就是下面的脚本例子了。
然后保存,再重启svn服务,然后测试是否成功。

cd /var/svn/test_hight/hooks
cp post-commit.tmpl post-commit
chmod +x post-commit
vi post-commit
#!/bin/sh

# 库的路径
REPOS="$1"
# 新提交的版本号
REV="$2"

WEB=/usr/local/webroot/test_hight
SVN=/usr/bin/svn
LOG=/usr/local/webroot/auto_svn.log


export LC_ALL=zh_CN.UTF-8

changed=$(svnlook changed -r $REV $REPOS)
log=$(svnlook log -r $REV $REPOS)
echo "now the changed is:$changed">>$LOG

n=$'\n'
$SVN update $WEB  --username testuser --password abc --non-interactive #更新到我们的目标网站目录。

这里写图片描述

好了,我们重启一下svn服务,然后在客户端checkout项目,然后添加一个文件上去看看。

步骤如下–直接用图片了:
checkout项目,输入账号,新建文件,输入内容,submit文件内容。。。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

脚本内容如下–已经出现过的:

<!DOCTYPE html>
<html>
<body>

<h1>我的第一张 PHP 页面</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

好了,我们更新以后再看看网站目录是不是有test.php文件?

ls /usr/local/webroot/test_hight

这里写图片描述

svn项目及自动更新配置部分完毕。

下面我们配置 nginx的网站。

下面我们以test_hight作为例子来说明,首先,新建一个nginx的配置文件,作为站点test_hight的配置文件:

vi /etc/nginx/conf.d/test_hight.conf

内容如下:

#####################################
#####################################
#####################################
server {
    listen 8003;
    server_name 120.25.213.167 www.test_hight.com *.test_hight.com;
    root   "/usr/local/webroot/test_hight/";
    #这里是网站根目录,写上自己的目录吧。
    error_log /var/log/nginx/error/test_hight/nginx_error.log;
    index index.php;
    location / {
    }
    error_page 404  /;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;

        fastcgi_param CONFIG_TYPE product;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #规定脚本的路径及名字
        include fastcgi_params;
    }
    location ~* \.(?:ico|css|js|gif|jpeg|png)$ {
        expires 30d;
        access_log        off;
        log_not_found     off;
        add_header Pragma public;
        add_header Cache-Control "public";
    }
    location /console {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
    }
    set $flag 0;
    if ($uri !~ ^/console/){
        set $flag "${flag}1";
    }
    if (!-e $request_filename){
        set $flag "${flag}2";
    }
    if ($flag = "012"){
        rewrite ^/(.*)$ /index.php last;
    }
}

上面的配置文件说明了几个要点,就是这个站点监听的端口是8003,网站目录是/usr/local/webroot/test_hight 错误日志文件在:/var/log/nginx/error/test_hight/nginx_error.log fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000 好了,那么我们要做一些准备工作:
1 开放9000端口及8003端口;—到这里9000端口你应该已经开放了。
2 新建错误日志目录及文件;
3 新建网站根目录及放置一个测试用的php文件。

下面是步骤:

--1 --开放端口
firewall-cmd --zone=public --add-port=8003/tcp --permanent
firewall-cmd --reload
--2 --建立必要的目录
mkdir -p  /var/log/nginx/error/test_hight
--3 --添加日志文件
vi  /var/log/nginx/error/test_hight/nginx_error.log
--解释:vi /var/log/nginx/error/test_hight/nginx_error.log
--请按esc,然后填:wq保存并退出--这是vi命令的基本用法。

重启nginx:

sudo systemctl restart nginx

这里写图片描述

乱码问题无足轻重,稍后解决,现在我们来添加一个新的文件,譬如,test2.php,然后看看服务器能不能立刻访问。
步骤如下:
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

nodejs运行环境配置

为什么要配置nodejs?因为该项目前后端分离,前端是一台独立服务。实际上对于小型项目而言,还是都放一起比较划算

安装nodejs源代码

yum -y install gcc make gcc-c++ openssl-devel wget

然后,获取源代码文件。

#http://cdn.npm.taobao.org/dist/node/v8.9.0/node-v8.9.0-linux-x64.tar.xz
wget https://nodejs.org/dist/v6.9.1/node-v6.9.1.tar.gz



tar -zvxf node-v6.9.1.tar.gz
cd node-v6.9.1.tar.gz
./configure

安装:

make && make install

## 或者这样 ##


#注意,17年12月份发布的最新版是8.9
wget http://cdn.npm.taobao.org/dist/node/v8.9.0/node-v8.9.0-linux-x64.tar.xz
#注意 tar.xz的解压方式:
xz -d node-v8.9.0-linux-x64.tar.xz
tar -xvf node-v8.9.0-linux-x64.tar
然后移动到正式存放路径假定路径为:
mv node-v8.9.0-linux-x64 /usr/local/src/node-8
然后export各种参数:
#nodejs
export NODE_HOME=/usr/local/src/node-8
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

不用安装,直接export:

1、 下载NODEJS,注意你的操作系统选择合适的版本-x86/X-64
      wget  https://nodejs.org/dist/latest-v5.x/node-v5.12.0-linux-x64.tar.gz
2、解压
        tar xvf  node-v5.12.0-linux-x64.tar.gz
3、配置/etc/profile
#nodejs
export NODE_HOME=/usr/local/src/node-v5.12.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
4、测试
node -v
5、安装淘宝cnpm
  npm install -g cnpm --registry=https://registry.npm.taobao.org
这里用cnpm完全是因为npm用国外镜像速度太慢了
6、安装和升级
cnpm install npm -g    # npm升级到最新版本,-g全局安装
        cnpm install -g n      # 安装nodejs的版本管理模块n
        n latest               # nodejs版本升级到最新,参数可换:latest/stable/lts/vx.x.x

这里写图片描述

经过千辛万苦—主要是网速慢,终于安装成功了。

配置cnpm–针对国内环境推荐安装。

npm install -g cnpm --registry=https://registry.npm.taobao.org

有express的就安装一下:

npm install -g express-generator
npm install -g express
今天,又发现一个超级简单的升级node.js的方法。一行命令搞定,省去了重新编译安装的过程。
node有一个模块叫n(这名字可够短的。。。),是专门用来管理node.js的版本的。

首先安装n模块:

npm install -g n

第二步:

升级node.js到最新稳定版

n stable

是不是很简单?!

n后面也可以跟随版本号比如:

n v0.10.26

或

n 0.10.26

就这么简单。

另外分享几个npm的常用命令

 npm -v          #显示版本,检查npm 是否正确安装。  
 npm install express   #安装express模块  
 npm install -g express  #全局安装express模块  
 npm list         #列出已安装模块  
 npm show express     #显示模块详情  
 npm update        #升级当前目录下的项目的所有模块  
 npm update express    #升级当前目录下的项目的指定模块  
 npm update -g express  #升级全局安装的express模块  
 npm uninstall express  #删除指定的模块

redis及memcache配置

该部分参考了:

Linux 下的 Redis 安装 && 启动 && 关闭 && 卸载

centos7 安装redis 开机启动

centos7安装redis及开机自启动

redis开启远程连接访问和需要密码的方法

感谢上面作者。

Redis memcache扩展

-- 额,不要这样安装吧。。这样都是默认的安装。memcached不理,我们现在来自定义redis的安装,
配置开机启动,配置远程连接及密码。谢谢。
 ------------------------------------------yum install redis memcached -y

在安装前,提醒一下,看看自己的有没有redis安装有的话就卸载

ps aux |  grep redis

我这边的结果如下:
这里写图片描述
我这边是安装了,所以先卸载,对了,没安装的请进入安装步骤。

停止redis服务

redis-cli shutdown

找到redis的执行文件

ls  /usr/bin/redis-*

这里写图片描述

用上面命令看了下,嗯,我的执行文件都在usr bin下面,所以直接删除相关文件

sudo rm -rf /usr/bin/redis-*

然后:

ls  /usr/bin/redis-*

可以看到提示:
ls: cannot access /usr/bin/redis-: No such file or directory
*
好了,删除成功。

现在开始安装:
当然,我在redis官网找到了4.0的安装包(不,redis4.0坑爹,装不上的,当然用3.2的,注意,笔者一度想换用3.2,然而,make失败一次在make test以后竟然成功了,如最后测试图示意,实在百思不解,只能说benchmark本来就没有没办法在make test生成,而make以后生成了。、。。),以此为例:

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

执行后,下载:
这里写图片描述

好了,解压:

tar -zvxf redis-4.0.9.tar.gz

cd redis-4.0.9

make test

-_-结果如下:

这里写图片描述
按照提示解决问题:

yum install tcl

这里写图片描述

好了,又来测试:

cd redis-4.0.9

make test

这里写图片描述

竟然出这种问题。坑爹。啊,这样来:

mkdir src/redis-benchmark
make test

这里写图片描述

。。。。。。

强行make,当然失败,然后make test

这里写图片描述

这就是奇迹了。。坑爹。。
这里写图片描述

好了,输入命令看看是不是已经安装成功了:

ls /usr/local/bin/redis-*

这里写图片描述

小提示:
开启服务:
redis-server & 
关闭服务:
redis-cli shutdown

安装成功,好了,进行下一步,开机启动。

mkdir -p /usr/local/redis
-- 复制redis server 和cli到redis存放目录
cp /usr/local/bin/redis-server /usr/local/redis/
cp /usr/local/bin/redis-cli /usr/local/redis/

-- 复制 redis 的配置文件
-- 注意,在 你解压缩的redis-4.0.9下面就有。
cp redis.conf /usr/local/redis/

好了,现在的目录应该有:
这里写图片描述

配置编辑文件

cd /usr/local/redis/
vim redis.conf

找到下图,
这里写图片描述

修改为
这里写图片描述

注意,在我们解压的redis文件夹里面有utils文件夹,下面有一个redis_init_script 文件:
这里写图片描述

好了,讲redis_init_script 复制到 /etc/init.d/redis

cp redis_init_script /etc/init.d/redis
ls /etc/init.d/
查看有结果

好了,为了让我们敲代码不再糊糊涂涂,那么我们打开一下init d下面的可执行文件,看看里面的内容:

vim /etc/init.d/redis

可以看到:
这里写图片描述

里面值得注意的是几个路径,
exec的redis - server路径,redis-cli—这个我们安装时候已经有了,不用管。
pidfile。。。嗯,这个路径也不是我们管的。。应该是自行创建的。
conf路径我们需要确认一下,将redis conf(daemon = yes 刚才已经设置了,所以直接复制即可)复制到对应的地址上面,对了,pid是6379这是默认的。。。在生产环境大家最好修改,切记。

mkdir /etc/redis
cp  /usr/local/redis/redis.conf /etc/redis/6379.conf
注意!!!!
经过实际测试,每次开机redis的服务已
vim  /etc/redis.conf

该配置文件为准,所以应该这个文件也一并修改。!!!!!!!!!!

好了,接着设定一下:

chmod +x /etc/init.d/redis
chkconfig redis on

ps:假如你出现了该问题:

这里写图片描述

那么:

必须把下面两行注释放在/etc/init.d/redis文件靠前的注释中:

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

上面的注释的意思是,redis服务必须在运行级2345下被启动或关闭,启动的优先级是90,关闭的优先级是10

即:
这里写图片描述

测试一下:

systemctl start redis.service
systemctl stop redis.service

然而失败,

执行
journalctl -xe

得到:
这里写图片描述

可以知道/usr/bin下面没有redis-server和redis cli导致错误了。。好了,又要复制cp了。

cp /usr/local/bin/redis-server /usr/bin/
cp /usr/local/bin/redis-cli /usr/bin/

然后:

systemctl start redis.service

测试通过,继续重启试试:

这里写图片描述

好了,终于重启成功了运行了真麻烦。

接下来,设置远程连接及远程

配置安装目录下的redis.conf文件

注意是这个配置文件:

vim  /etc/redis.conf
bind 0.0.0.0  修改为这个

port 6379 这个为redis端口

#修改这个为yes,以守护进程的方式运行,就是关闭了远程连接窗口,redis依然运行
daemonize yes

#将protected-mode模式修改为no
protected-mode no

#设置需要密码才能访问,password修改为你自己的密码
requirepass password

备注:假如,你还对之前配置开机启动的有印象的话,那么肯定记得 etc/init.d/redis指定的conf文件是:

/etc/redis/6379.conf
---- 6379需要换成你自己的端口啊喂,生产环境不是这样玩的啊。。。
vim /etc/redis/6379.conf

好了,根据你自己的实际情况设置。。

redis的验证及连接命令

 默认无权限控制:

远程服务连接:

$ redis-cli -h 127.0.0.1 -p 6379



windows下 :redis-cli.exe -h 127.0.0.1 -p 6379

redis 127.0.0.1:6379>

远程服务停止:

$ redis-cli -h 172.168.10.254 -p6379 shutdown



2) 有权限控制时(加上-a 密码):

redis-cli -h 127.0.0.1 -p 6379 -a 123456

redis配置完成。

所以,整个开发环境已经初步搭建完毕。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值