邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

linux centos编译node报错

linux centos编译node报错
WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++)
我查看了我的版本是
[root@Action node-v4.2.3]# g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

于是我只好安装4.8版本,从网上找到了方法
这里我用的是root用户
cd ~
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.gz
tar zxvf gcc-4.8.1.tar.gz
cd gcc-4.8.1
./contrib/download_prerequisites  //下载所需要的依赖包
cd ..
mkdir gcc-build-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make 
make install

//如果是64位系统,则下面为lib64/
cp ~/gcc-build-4.8.1/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib 
ln -sf /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6
下面查看版本
g++ --version
[root@Action gcc.4.8.1]# g++ --version
g++ (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

linux下安装composer和laravel框架
linux下安装composer和laravel框架

cd /alidata/server/
wget https://getcomposer.org/composer.phar //下载
cp composer.phar /bin/composer 
cd /alidata/www

composer create-project laravel/laravel --prefer-dist  laravel_study //速度比较慢
如果想下载低版本的,可以新建一个composer.json,编辑后执行composer ... //没测试
nginx配置
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

linux下需要修改文件权限才能正常访问
chmod -R 777 storage
chmod -R 777 bootstrap/cache //可以先不执行

下面就可以正常访问了
linux备份的几个常用方法
1.用dd来将/dev/sda/备份到完全一模一样的/dev/sdb硬盘上
dd if=/dev/sda of=/dev/sdb  //速度比较慢

2.使用cpio来备份与还原整个系统,假设储存媒体为SATA磁带机
find / -print |cpio -covB > /dev/st0 //备份到磁带机
cpio -iduv < /dev/st0  //还原

3.完整备份  dump
dump -0u -f /backupdata/home.dump /home
进行第一次累积备份
dump -1u -f /backupdata/home.dump1 /home

利用tar进行完整备份
tar --exclude /proc --exclude /mnt --exclude /tmp --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2/

4.rsync 镜像备份
rsync -av 来源目录 目标目录
rsync -av /home /backupdata
rsync -av /backupdata /home

php7性能测试

利用apache ab测试php7性能

为了更精准,测试前我先重启了下服务器,请求1000 并发100 下图是php7.0.0

QQ截图20151211091219.png

下图是php5.5.7

QQ截图20151211092816.png


看图一目了然

linux软件安装:PRM,SRPM与YUM功能
软件安装:PRM,SRPM与YUM功能

RPM安装
若环境检查合格,然后RPM档案就开始安装到你的linux系统上。安装完毕后,该软件相关的信息就会被写入/var/lib/rpm/目录下的数据库档案中了。

RPM安装(install)
rpm -ivh package_name
可以同时安装两个以上,也可以直接以网址来安装
-i:install安装的意思
-v:察看更细部的安装信息画面
-h:以安装信息列显示安装进度
可选参数
--nodeps 使用时机 当发生软件属性相依问题而无法安装,单执意安装
--test 测试一下该软件是否可以被安装到使用者的linux环境当中,可找出是否有属性相依的问题
rpm -ivh package_name --test
--prefix 新路径

RPM升级与更新(upgrade/freshen)
-Uvh 后面接的软件即使没有安装过,则系统予以直接安装,若后面接的软件有安装过旧版,则系统自动更新至新版
-Fvh 后面接的软件未安装到你的linux系统中,则该软件不会被安装,亦即只有已安装至你linux系统内的软件会被升级

RPM查询(query)
rpm -a  仅查询,后面接的软件名称是否有安装
rpm -qa 列出所有的,已经安装在本机linux系统上面的所有软件名称
rpm -qi 列出该软件的详细信息,包含开发商,版本与说明
rpm -ql 列出该软件所有的档案与目录所在完整文件名
rpm -qc 列出该软件的所有配置文件(找出在/etc/底下的档案名)
rpm -qd 列出该软件的所有说明文件(找出与man有关的档案而已)
rpm -qR 列出与该软件有关的相依软件所含的档案
rpm -qf 由后面接的文件名,找出该档案属于哪一个已经安装的软件
rpm -qp[icdlR] 找出某个RPM档案内的信息,而非已经安装的软件信息


RPM验证与数字签名(Verify/signature)
rpm 选项与参数
rpm -V 后面接的是软件名称,若该软件所含的档案被改动过,才会列出来
rpm -Va 列出目前系统上面所有可能被改动过的档案 
rpm -Vp 后面加的是文件名,列出该软件内可能被更动过的档案
rpm -Vf 列出某个档案是否被更动过

数字签名
cat  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 //数字签名 
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
locate GPG-KEY
rpm -qa|grep pubkey  //出现 gpg-pubkey-c105b9de-4e0fd3a3
rpm -qi gpg-pubkey-c105b9de-4e0fd3a3  //出现数字签名

RPM反安装与重建数据库(erase/rebuilddb)
rpm -qa |grep pam
rpm -e pam-devel 
rpm --rebuilddb //重建数据库


SRPM的使用
--rebuild  编译打包,后面通常会出现写入信息
--recompile  编译打包并安装
编译SRPM
rpmbuild --rebuild *.src.rpm
配置文件的主要内容(*.spec)

SRPM的编译指令(-ba/-bb)
rpmbuild -ba *.spec //编译并同时产生RPM与SRPM档案
rpmbuild -bb *.spec //仅编译成RPM档案

一个打包自己软件的范例
mkdir /usr/lcoal/src/main-0.1
tar -zxvf main.tgz -C /usr/lcoal/src/main-0.1
cd /usr/local/src/main-0.1
vim Makefile //建议源代码所需要的make规则
cd ..
tar -zcvf main-0.1.tar.gz main-0.1
建议*.spec的配置文件
cd /usr/src/redhat/SPECS
vim main.spec
编译成为RPM与SRPM
rpmbuild -ba main.spec
安装测试实际查询
rpm -ivh package_name.rpm 

yum的使用
yum [list|info|serarch|provides|whatprovides] 参数
-y 自动提供yes响应
search 搜寻某个软件名称或者是描述的重要关键字
list 列出目前yum所管理的所有的软件名称与版本,类似rpm -qa
info 同上,类似 rpm -qai 的执行结果
provides 从档案去搜寻软件 类似rpm -qf

yum [install|update] 软件  //安装更新
yum remove 软件 //移除

yum的配置文件
vim /etc/yum.repos.d/CentOS-Base.repo //容器的实际网址
yum repolist all //列出目前的容器信息

修改容器产生的问题与解决之道
yum clean [packages|headers|all]
packages 将已下载的软件档案删除
headers 将下载的软件文件头删除
all 将所有的容器数据都删除

yum的软件群组功能
yum [群组功能] [软件群组]
选项与参数
grouplist 列出所有可使用的套件组
groupinfo 后面接group_name,则可了解该group内含的所有套件名
groupinstall 可以安装一整组的套件群组
groupremove //移除某个套件群组

全系统自动升级
vim /etc/crontab
0 3 * * * /usr/bin/yum -u update

gcc与make简易用法
gcc与make简易用法

关于gcc
第一种
gcc main.c  //会产生a.out,然后执行 ./a.out

第二种
gcc -c main.c //会产生main.o
gcc -o main main.o  //main 是生成的可执行文件,运行./main

gcc -O -c main.c //-O为产生优化的参数
gcc -Wall -c main.c //为产生更详细的编译过程信息

gcc sin.c -lm -L/lib -L/usr/lib  
-l是加入某个函式库(library)的意思
m,则是 libm.so这个函式库,其中lib与扩展名(.a或者.so)不需要写
gcc sinc -lm -I/usr/include 
-I/path后面的路径是要设定要去寻找相关的include档案的目录

关于make
vim makefile 
内容如下
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main: ${OBJS}
gcc -o $@ ${OBJS} ${LIBS}   <==那個 $@ 就是 main !
clean:
rm -f main ${OBJS}

Tarball的管理
为安装到单独目录的软件之man page加入man path 搜寻
如果你安装的软件放置到 /usr/local/software/,那么man page 搜寻的设定中,在
/etc/man.config 40~50行左右出,写入如下一行
MANPATH /usr/local/software/man

将动态函式库加载高速缓存当中
1.在/etc/ld.so.conf里面写下 想要读入高速缓存当中的动态函式库所在的目录
2.利用 ldconfig 这个执行档案 /etc/ld.so.conf 的资料读入快取当中
3.同时也将数据记录一份在/etc/ld.so.cache这个档案中

vim /etc/ld.so.conf //加入,读进cache
ldconfig  -p //列出目前所有函式库资料内容

程序的动态函式库解析 ldd
ldd /usr/bin/passwd
ldd -v /lib/libc.so.6 //找出/lib/libc.so.6 这个函式库的相关其他函式库

检测软件的正确性
md5sum go1.5.1.linux-amd64.tar.gz 
sha1sum go1.5.1.linux-amd64.tar.gz


/server/php-7.0.0/ext/iconv/iconv.c:1505: undefined reference to `libiconv_open'
编译php7时报错
/server/php-7.0.0/ext/iconv/iconv.c:1505: undefined reference to `libiconv_open'

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
.configure --prefix=/usr/local/libiconv
make 
make install

然后再编译php7的时候 加上
./configure --prefix=/alidata/server/php7 \
--with-config-file-path=/alidata/server/php7/etc \
--with-iconv=/usr/local/libiconv \
--with-mcrypt \
--with-mcrypt \
--enable-mysqlnd --with-gd \
.....
linux下升级php7
如果你的服务器里已经装过低版本的php,可以先跳过此步,后面编译php7的时候,如果报错,再根据错误提示,再来安装,如果不嫌麻烦的话

yum install php-mcrypt libmcrypt libmcrypt-devel  libxml2-devel  \
openssl-devel  libcurl-devel \
libjpeg.x86_64 libpng.x86_64 libjpeg-devel.x86_64 \
libpng-devel.x86_64   libjpeg-turbo-devel\
freetype.x86_64 freetype-devel.x86_64 \
libmcrypt-devel   mysql-devel  -y

我的php7是计划装在 /server/php7/目录下,之前的是在/server/php/目录下

下载编译php7
cd /server/
wget http://cn2.php.net/distributions/php-7.0.0.tar.gz
tar zxvf php-7.0.0.tar.gz
cd php-7.0.0

./configure --prefix=/server/php7 \
--with-config-file-path=/server/php7/etc \
--with-mcrypt \
--with-mcrypt \
--enable-mysqlnd --with-gd \
--with-iconv=/usr/local/libiconv \
--with-zlib \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--with-mysqli \
--enable-embedded-mysqli  \
--with-pdo-mysql

make
make install

配置php
cp php.ini-production /server/php7/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm //是为了和之前的不冲突
chmod +x /etc/init.d/php7-fpm
cp /server/php7/etc/php-fpm.conf.default /server/php7/etc/php-fpm.conf
cp /server/php7/etc/php-fpm.d/www.conf.default /server/php7/etc/php-fpm.d/www.conf
vim /server/php7/etc/php.ini
# 加入
zend_extension=/server/php7/lib/php/extensions/no-debug-non-zts-20151012/opcache.so

vim /server/php7/etc/php-fpm.d/www.conf //修改子进程用户

user = nobody
group = nobody
修改为
user = www
group = www

# 启动
/etc/init.d/php7-fpm start  //如果之前有老的php版本,记得先关掉

我之前的php版本是加入的系统自启动,所有还得修改
vim /etc/rc.d/rc.local
修改为
#/etc/init.d/php-fpm start
/etc/init.d/php7-fpm start
还有之前我吧php命令加入到了环境变量,还需要修改
vim /etc/profile
修改为

export PATH=$PATH:/server/mysql/bin:/server/nginx/sbin:/server/php7/sbin:/server/php7/bin

为了安全最好是去掉头信息  X-Powered-By: PHP/7.*.*
则修改 php.ini 文件 设置 expose_php = Off
vim /server/php7/etc/php.ini
找到 expose_php = On
改为 expose_php = Off



优惠券
广告位-淘宝
最新微语