首先前两天 FreeBSD 10 正式发布, 最感兴趣的是 FreeBSD 新的包管理器 pkgng. 不过比较郁闷和可惜的是 FreeBSD 10 用 Clang 替代 gcc 为默认编译器,这让用惯了 gcc 的同学们很不爽。。
[编译环境] :
操作系统: FreeBSD-10
编译器 : gcc-4.7.4
[准备工作] :
1. 新建一个存放 nginx php 和 mariadb 源码包的目录,将下载好的源码包放入其中
nginx-1.4.7.tar.gz
php-5.3.28.tar.gz
mariadb-5.5.36.tar.gz
2. 默认新安装的 FreeBSD 10 新系统没有安装新的包管理器 pkgng, 首先运行 pkg 命令会提示输入 “Yes” 安装 pkgng 新的包管理器。
使用 pkg 安装 gcc 编译器和依赖包
# pkg install gcc47 bzr pcre bison ncurses autoconf automake cmake jpeg png freetype2 libmcrypt mysql55-client编译安装 Nginx-1.4.7
# tar -zxvf nginx-1.4.7.tar.gz # cd nginx-1.4.7 # ./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.7 就安装完成了,需要添加其他模块请自行加入编译选项
编译安装 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
# /usr/local/php/sbin/php-fpm -c /etc/php.ini -y /etc/php-fpm.conf编译安装 MariaDB-5.5.36
# tar -zxvf mariadb-5.5.36.tar.gz # cd mariadb-5.5.36 # 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 目录下,并编辑该启动脚本
# cp /usr/local/mariadb/support-files/mysql.server /etc/rc.d/mysqld # emacs /etc/rc.d/mysqld----------------------------- 编辑 /etc/rc.d/mysqld 文件 -------------------------
# cp /usr/local/mariadb/support-files/my-large.cnf /etc/my.cnf # emacs /etc/my.cnf------------------------------ 编辑 /etc/my.cnf 配置文件--------------------------
创建 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