首先前两天FreeBSD10正式发布,最感兴趣的是FreeBSD新的包管理器pkgng.不过比较郁闷和可惜的是FreeBSD10用Clang替代gcc为默认编译器,这让用惯了gcc的同学们很不爽。。[编译环境]:操作系统:FreeBSD-10编译器:gcc-4.7.4[准备工作]:1
首先前两天 FreeBSD 10 正式发布, 最感兴趣的是 FreeBSD 新的包管理器 pkgng. 不过比较郁闷和可惜的是
FreeBSD 10 用 Clang 替代 gcc 为默认编译器,这让用惯了 gcc 的同学们很不爽。。
[编译环境] :
操作系统: FreeBSD-10
编译器 : gcc-4.7.4
[准备工作] :
1. 新建一个存放 nginx php 和 mariadb 源码包的目录,将下载好的源码包放入其中
nginx-1.4.4.tar.gz
php-5.3.28.tar.gz
mariadb-5.5.34.tar.gz
2. 默认新安装的 FreeBSD 10 新系统没有安装新的包管理器 pkgng, 首先运行 pkg 命令会提示输入 “Yes” 安装 pkgng 新的包管理器。
使用 pkg 安装 gcc 编译器和依赖包
# pkg install gcc47 bzr bison ncurses autoconf automake cmake jpeg png freetype2 libmcrypt
mysql55-client
编译安装 Nginx-1.4.4
# tar -zxvf nginx-1.4.4.tar.gz
# cd nginx-1.4.4
# ./configure
--prefix=/usr/local/nginx
--conf-path=/etc/nginx.conf
--pid-path=/var/run/nginx.pid
--lock-path=/tmp/nginx.lock
--user=www
--group=www
--with-http_ssl_module
--with-http_perl_module
# make && make install
复制 nginx 配置文件, 并按自己的需求修改 nginx 相关配置选项
# cp conf/nginx.conf /etc
启动 nginx 服务
# /usr/local/nginx/sbin/nginx -c /etc/nginx.conf
到此 nginx-1.4.4 就安装完成了,需要添加其他模块请自行加入编译选项
编译安装 PHP-5.3.28
编译 php 之前先给刚才安装的 freetype2 头文件目录添加一个软链接,因为 php 在编译检测的时候会找不到
freetype 的头文件
# ln -s /usr/local/include/freetype2 /usr/local/include/freetype2/freetype
开始编译 php
# tar -zxvf php-5.3.28.tar.gz
# cd php-5.3.28
# ./configure
--prefix=/usr/local/php
--with-config-file-path=/etc
--with-mysql
--with-mysqli
--enable-fpm
--with-fpm-user=www
--with-fpm-group=www
--with-iconv-dir
--with-freetype-dir
--with-jpeg-dir
--with-png-dir
--with-zlib
--with-gd
--enable-gd-native-ttf
--with-libxml-dir
--with-curl
--enable-safe-mode
--with-xmlrpc
--with-mhash
--with-openssl
--with-mcrypt
--enable-bcmath
--enable-shmop
--enable-sysvsem
--with-curlwrappers
--enable-mbstring
--enable-sockets
--enable-magic-quotes
--with-pear
--enable-sysvshm
--enable-zip
# make && make install
当编译到一半的时候提示编译错误 :
/root/php-5.3.28/sapi/fpm/fpm/fpm_sockets.c: In function
'fpm_socket_get_listening_queue':
/root/php-5.3.28/sapi/fpm/fpm/fpm_sockets.c:410: error:
'struct tcp_info' has no member named 'tcpi_sacked'
/root/php-5.3.28/sapi/fpm/fpm/fpm_sockets.c:415: error:
'struct tcp_info' has no member named 'tcpi_unacked'
/root/php-5.3.28/sapi/fpm/fpm/fpm_sockets.c:419: error:
'struct tcp_info' has no member named 'tcpi_sacked'
解决办法:是修改 /root/php-5.3.28/sapi/fpm/fpm/fpm_sockets.c 文件当中第
410,415 和 419 行内容
info.tcpi_sacked 修改为 info.__tcpi_sacked
info.tcpi_unacked 修改为 info.__tcpi_unacked
复制并编辑 php 配置文件
# cp php.ini-production /etc/php.ini
# cp /usr/local/php/etc/php-fpm.conf.default /etc/php-fpm.conf
# emacs /etc/php.ini
修改 php 默认时区
date.timezone = Asia/Shanghai
如果需要使用 pdo_mysql 可以使用 pkg 安装,然后在 /etc/php.ini 配置文件里添加
pdo_mysql.so 模块
# pkg install php53-pdo_mysql
最后启动 php
"2"># /usr/local/php/sbin/php-fpm -c /etc/php.ini -y /etc/php-fpm.conf
编译安装 MariaDB-5.5.34
# tar -zxvf mariadb-5.5.34.tar.gz
# cd mariadb-5.5.34
# cmake .
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DMYSQL_DATADIR=/var/data
-DSYSCOnFDIR=/etc
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
-DWITH_XTRADB_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DWITH_EXTRA_CHARSETS=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BIG_TABLES=1
-DWITH_DEBUG=0
# make && make install
复制 MySQL 启动脚本到 /etc/rc.d 目录下,并编辑该启动脚本
"2"># cp /usr/local/mariadb/support-files/mysql.server /etc/rc.d/mysqld
# emacs /etc/rc.d/mysqld
----------------------------- 编辑 /etc/rc.d/mysqld 文件
-------------------------
basedir=/usr/local/mariadb
datadir=/var/data
mysqld_pid_file_path=/var/run/mysql/mysqld.pid
根据服务器内存大小复制相应 mariadb 配置文件到/etc目录下
# cp /usr/local/mariadb/support-files/my-large.cnf /etc/my.cnf
# emacs /etc/my.cnf
------------------------------ 编辑 /etc/my.cnf
配置文件--------------------------
pid-file = /var/run/mysql/mysqld.pid
创建 mysql 运行用户和组,此处省略。。。
# adduser mysql
创建mysql数据库存放目录, 并将目录权限给 mysql 用户和组
# mkdir /var/data
# chown -R mysql:mysql /var/data
创建 mysql pid文件存放目录,并修改该目录用户和用户组为 mysql
# mkdir /var/run/mysql
# chown -R mysql:mysql /var/run/mysql
安装初始化 MySQL 系统表,然后启动 MySQL 数据库
# /usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/var/data
# /etc/rc.d/mysqld start
添加 MariaDB 命令工具目录到系统 PTAH 环境变量里, 最好将下面这条命令添加到 .bashrc 或者 .cshrc
文件里
# export PATH=$PATH:/usr/local/mariadb/bin
设置默认 MySQL 默认 root 密码
# mysqladmin -u root password 123456 //设置 root 密码为123456