一、简易安装

操作环境 CentOS6.5 X64,原版本4.4.7,不支持C++11的特性,故而升级到4.8.2。不能通过yum的方法升级,需要自己手动下载安装包并编译

1.1 获取安装包并解压

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
tar -jxvf gcc-4.8.2.tar.bz2

当然,http://ftp.gnu.org/gnu/gcc  里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.

1.2 下载供编译需求的依赖项

参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

cd gcc-4.8.2
./contrib/download_prerequisites

1.3 建立一个目录供编译出的文件存放

mkdir gcc-build-4.8.2
cd gcc-build-4.8.2

1.4 生成Makefile文件

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

1.5 编译(注意:此步骤非常耗时)

make -j4

-j4选项是make对多核处理器的优化,如果不成功请使用 ***make***,相关优化选项可以移步至参考文献[2]。

我在安装此步骤时候出错,错误描述:

 

compilation terminated.
make[5]: *** [_gcov_merge_add.o] 错误 1
make[5]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [multi-do] 错误 1
make[4]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [all-multi] 错误 2
make[3]: *** 正在等待未完成的任务....
make[3]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [all-stage1-target-libgcc] 错误 2
make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make[1]: *** [stage1-bubble] 错误 2
make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make: *** [all] 错误 2

 

大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和 x86_64-unknown-linux-gnu/libgcc

根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):

sudo yum -y install glibc-devel.i686 glibc-devel

过程中CPU基本满载:

图

1.6、安装

sudo make install

 

二、验证安装

重启,然后查看gcc版本:

gcc -v

尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr

 

 1 //tryCpp11.cc
 2 #include <iostream>
 3 #include <memory>
 4 
 5 int main()
 6 {
 7     std::shared_ptr<int> pInt(new int(5));
 8     std::cout << *pInt << std::endl;
 9     return 0;
10 }

 

验证文件:

g++ -std=c++11 -o tryCpp11 tryCpp11.cc
./tryCpp11

Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)  http://www.linuxidc.com/Linux/2014-04/99583.htm

在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse

Ubuntu下Vim+GCC+GDB安装及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm

Ubuntu下两个GCC版本切换 http://www.linuxidc.com/Linux/2012-10/72284.htm

1. 安装Node.js

安装nvm

wget https://github.com/cnpm/nvm/archive/v0.23.0.tar.gz
tar -zxvf v0.23.0.tar.gz  # 解压
cd nvm-0.23.0/
./install.sh  # 执行脚本 这一步在 当前的角色的目录下建一个 .nvm的文件夹  和 设置 ./bashrc 环境变量  如果是root的话 就会在 /root/ 下面
source ~/.bash_profile  # 让设置生效

安装npm

nvm install v4.2.2
加速:
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 4.2.2

2. 安装Ghost

2.1 下载并解压Ghost 最新版本

cd /opt/software/Ghost
curl https://ghost.org/zip/ghost-0.9.0.zip
unzip ghost-0.9.0.zip

2.2 修改配置文件

cp config.example.js config.js
vim config.js

找到类似production这段,修改成下面这样:

    production: {
        url: 'http://blog.itmuch.com',
        mail: {},
        database: {
            client: 'mysql',
            connection: {
                host:'127.0.0.1',
                user:'mysql用户',
                password:'mysql密码',
                database:'ghost',
                charset:'utf8'
                // filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            host: '127.0.0.1',
            port: '2368'
        }
    }

3. 编译、启动Ghost

cd /opt/software/Ghost
npm install --production  # 产品模式编译。 如果写npm install 则以开发模式编译

用ghost用户运行ghost(非root账户运行ghost更安全)

adduser -shell /bin/bash --gecos 'ghost blog' ghost
chown -R ghost:ghost /opt/software/Ghost

安装forever,保持Ghost一直在后台运行

cd /var/www/mousycoder
npm install forever -g //全局安装forever模块
NODE_ENV=production forever start index.js //生产模式后台运行ghost

4. 遇到的问题

4.1 Ghost编译失败,异常如下

node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download: https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v3.1.4/node-v46-linux-ia32.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for sqlite3@3.1.4 and node@4.2.2 (node-v46 ABI) (falling back to source compile with node-gyp) 

原因:国内亚马逊c3连不上

https://www.npmjs.com/package/node-pre-gyp

解决方案:

方法1:

npm install v8-profiler --profiler_binary_host_mirror=https://npm.taobao.org/mirrors/node-inspector/
# 如果执行报错,一般是g++的库没有装。先执行yum install gcc-c++

1. 安装MySQL

1.1. 查看是否已经安装过MySQL

rpm -qa|grep mysql

1.2. 卸载mysql (下面是卸载mysql的库,防止产生冲突,mysql也是类似卸载方式)

rpm -e --nodeps mysql-libs-5.1.*
卸载之后,记得:
find / -name mysql
删除查询出来的所有东西

1.3. 安装MySQL

yum install mysql-server

注意: centos 7这样安装不行, 详见其他文章。

1.4. 启动MySQL

启动方式1:service mysqld start
启动方式2:/etc/init.d/mysqld start

1.5. root账户默认是没有密码的,修改root密码

/usr/bin/mysqladmin -u root password 密码 

例如:

/usr/bin/mysqladmin -u root password pwd    # 这样就将root密码设置成pwd了

1.6. 重置root密码(忘记root密码找回)

/etc/init.d/mysqld stop             # 停止MySQL
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &    # 输入绕过密码认证命令
mysql -u root mysql                 # 登录root用户
update user set Password=password ('123456') where user='root'; -- 修改root密码
FLUSH PRIVILEGES;                   -- 数据刷新
quit;                               -- 退出MySQL

1.7. 允许root用户远程登录

1.7.1. MySQL执行命令

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

1.7.2. 防火墙开放3306端口

vim /etc/sysconfig/iptables

添加下面一行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

注意:开通3306 端口的行必须在icmp-host-prohibited所在的行前,否则无效。

1.8. 开机启动MySQL

chkconfig --list | grep mysqld              # 查看MySQL服务是否自动开启
chkconfig mysqld on                         # 配置MySQL服务自动开启

1.9. 将mysql默认引擎设置为InnoDB

vi /etc/my.cnf  # 修改MySQL配置文件my.cnf

在[mysqld]一段加入:

default-storage-engine=InnoDB

删除ib_logfile0、ib_logfile1两个文件

cd /var/lib/mysql
rm -rf ib_logfile*

1.10. 开启MySQL的日志(监控执行的sql语句)

show global variables like '%general%';     # 该语句可以查看是否开启, 以及生成的位置
set global general_log = on;                # 打开  
set global general_log = off;               # 关闭 

1.11. 设置MySQ的编码

vim /etc/my.cnf

搜索到[mysqlld],插入:

collation-server = utf8_unicode_ci 
init-connect = 'SET NAMES utf8' 
character-set-server = utf8

重启MySQL

service mysqld restart

测试

show variables like 'char%';
show variables like 'collation%';  -- 查看是否改成utf-8了否则之后数据库内存中文存放的是乱码,[具体原因](http://www.cnblogs.com/hongfei/archive/2011/12/29/set-names-utf8.html)

1.12. 参考文档

http://blog.csdn.net/fdipzone/article/details/16995303