您的位置:首页 > 编程语言 > C#

C#中堆和栈的区别分析(有待更新总结2)

2011-09-07 14:43 441 查看
CentOS 6 系统下编译安装Apache ,mysql,并实现PHP以fpm方式工作.

所需安装包: httpd 2.4.10,
mysql-5.5.44-linux2.6-x86_64.tar.gz, php-5.4.45.tar.bz2,
apr-util-1.5.3.tar.bz2, apr-1.5.0.tar.bz2。

一、 编译安装Apache

1. 编译安装apr
~]# tar xf apr-1.5.0.tar.bz2
~]# cd apr-1.5.0
~]# ./configure --prefix=/usr/local/apr
~]# make && make install







2. 编译安装apr-util
~]# tar xf apr-util-1.5.3.tar.bz2
~]# cd apr-util-1.5.3
~]# ./configure --prefix=/usr/local/apr-util
--with-apr=/usr/local/apr
~]# make && make
install





3. httpd-2.4.10编译过程要依赖于pcre-devel软件包,需要事先安装。在系统光盘上就有这个安装包或者yum方式安装。




4. 安装httpd-2.4.10
~]# tar xf httpd-2.4.9.tar.bz2
~]# cd httpd-2.4.9
~]# ./configure --prefix=/usr/local/apache
--sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi
--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util --enable-modules=most
--enable-mpms-shared=all --with-mpm=event --with-ssl=/usr/local/openssl
~]# make && make install

./configure选项说明:
--prefix=/usr/local/apache:指明安装位置。可自定义。
--sysconfdir=/etc/httpd24:指明配置文件目录位置。可自定义。
--enable-so :开启动态共享模块支持。
--enable-ssl:开启https功能。
--enable-cgi :开启CGI脚本功能。
--enable-rewrite :开启地址重写
--with-zlib :指明压缩
--with-pcre :指明pcre
--with-apr=/usr/local/apr :指明apr所在目录。
--with-apr-util=/usr/local/apr-util :指明apr-util所在目录
--enable-modules=most :尽可能安装多的模块。
--enable-mpms-shared=all :安装所有共享库
--with-mpm=event :默认mpm使用event模式。
--with-ssl=/usr/local/openssl:指明openssl位置。(只针对在./configure时提示openssl版本过低时安装新版openssl后使用.)
在httpd的./configure过程中可能会遇到一个错误:
checking for OpenSSL
version >= 0.9.7… FAILED
configure: WARNING: OpenSSL
version is too old
no
提示openssl版本太老。
解决方法:
下载新版本的openssl 编译安装或yum方式升级openssl
安装openssl-devel包
注意:编译安装openssl时在./configure时加入选项 –fPIC.
./config -fPIC --prefix=/usr/local/openssl 指定安装位置。并把--with-ssl=/usr/local/openssl加入到httpd的./configure后面.

配置服务脚本:
httpd编译安装后默认是没有服务脚本的,可以使用其他httpd的服务脚本修改之后放到/etc/rc.d/init.d/目录下也叫作httpd
1. 编辑/etc/httpd/httpd.conf,添加:PidFile
"/var/run/httpd.pid"保存退出。
2. 修改新的httpd服务脚本让其为当前安装的httpd工作。
共三处修改位置:
apachectl=/usr/local/apache/bin/apachectl //修改为当前系统中httpd的apachectl的路径
httpd=${HTTPD-/usr/local/apache/bin/httpd} //修改为当前系统中httpd主程序位置.
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid} //修改为在httpd.conf中添加的pid文件位置.


3.
chmod 755 /etc/init.d/httpd //增加执行权限
chkconfig --add httpd //添加httpd到服务开机启动
ln -sf /usr/local/apache/bin/httpd /usr/sbin/httpd //增加软链接至/sbin下
如果你系统中安装过httpd,在你执行httpd命令时很可能找到的是你以前的httpd程序,解决办法:
export PATH=/usr/local/apache/bin/:$PATH //把当前新安装的httpd路径位置提前.

此时可以启动服务测试: service httpd start 如启动成功测试restart 和reload, stop是否都能正常起作用。使用命令ss –tnl查看当前主机80端口是否处于监听(LISTEN)状态,然后在浏览器中输入当前主机IP地址并回车:




出现图中字样说明httpd已经编译安装完成,并且能够正常工作。

二、编译安装MySQL-5.5.44
1.首先准备好需要存放MySQL数据文件的位置,本例中使用/sqldata/date在根目录下.
2.新建用户以安全方式运行进程

~]# groupadd -r mysql
~]# useradd -g
mysql -r -s /sbin/nologin -M -d /sqldate/data mysql
~]# chown -R mysql:mysql /sqldata/data
3. 安装初始化MySQL
[root@localhost
~]# tar -xf mysql-5.5.44-linux2.6-x86_64.tar.gz -C /usr/local
[root@localhost
~]# cd /usr/local/mysql-5.5.44-linux2.6-x86_64/
[root@localhost local]# ln -sv
mysql-5.5.44-linux2.6-x86_64/ mysql
[root@localhost local]# cd mysql
先改变属主:
[root@localhost
mysql]# chown -R mysql:mysql .
[root@localhost mysql]# ll
total 216
drwxr-xr-x 2 mysql mysql 4096 Sep 28 20:06 bin
-rw-r--r-- 1 mysql mysql 17987 May
4 20:16 COPYING
drwxr-xr-x 3 mysql mysql 4096 Sep 28 20:06 data
drwxr-xr-x 2 mysql mysql 4096 Sep 28 20:06 docs
[root@localhost mysql]#
scripts/mysql_install_db --user=mysql --datadir=/sqldata/data
Installing MySQL system tables...
150928 20:18:27 [Note] ./bin/mysqld
(mysqld 5.5.44) starting as process 4334 ...
OK
Filling help tables...
150928 20:18:27 [Note] ./bin/mysqld
(mysqld 5.5.44) starting as process 4342 ...
OK

To start mysqld at boot time you have to
copy
support-files/mysql.server to the right
place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE
MySQL root USER !
To do so, start the server, then issue
the following commands:

./bin/mysqladmin -u root password
'new-password'
./bin/mysqladmin -u root -h
localhost.localdomain password 'new-password'

Alternatively you can run:
./bin/mysql_secure_installation

which will also give you the option of
removing the test
databases and anonymous user created by
default. This is
strongly recommended for production
servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with
mysql-test-run.pl
cd ./mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/
[root@localhost mysql]# chown -R root
执行安装脚本:[root@localhost
mysql]# scripts/mysql_install_db --user=mysql --datadir=/sqldata/data
改回属主为root:
[root@localhost mysql]# chown -R root .
4. 为MySQL提供配置文件:
[root@localhost
mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@localhost
mysql]# vim /etc/my.cnf //编辑my.cnf


5. 为mysql提供服务脚本:
在support-files目录下MySQL提供了一个服务脚本直接复制到init.d目录下即可.
[root@localhost mysql]# cp
support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld //添加执行权限
[root@localhost mysql]# service mysql start //启动服务




6. 后续设置:
编辑/etc/man.conf文件添加在MANPATH下面增加一行: MANPATH /usr/local/mysql/man
这样方面查看sql的man文档




通过简单的创建链接实现mysql的头文件至系统头文件路径/usr/include:
[root@localhost sqldata]# ln -sv /usr/local/mysql/include/
/usr/include/mysql
`/usr/include/mysql' -> `/usr/local/mysql/include/'
[root@localhost sqldata]#

添加mysql的库文件给系统库查找路径:
[root@localhost sqldata]# vim /etc/ld.so.conf.d/mysql.conf
文件中加入:/usr/local/mysql/lib
[root@localhost sqldata]# ldconfig
//让系统重读配置

到此MySQL编译安装完成!

三、 编译安装PHP并以fpm方式工作

为了体现效果我在另外一台虚拟机上编译安装php让httpd主机如果要用到php解释就扔到这台机器上.
先安装所需的软件包: 配置好yum源使用yum方式安装.也可使用光盘镜像.
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.9-1.el5.centos.i386.rpm
mhash-devel-0.9.9-1.el5.centos.i386.rpm
yum
-y groupinstall X Software Development

[root@localhost ~]# tar xf php-5.4.45.tar.bz2
[root@localhost ~]# cd php-5.4.45
[root@localhost local]# ./configure --prefix=/usr/local/php5 --with-openssl=/usr/local/openssl/
--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
--enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir
--with-zlib=/usr/local/zlib --with-libxml-dir=/usr/local/libxml2
--enable-xml --enable-sockets --enable-fpm
--with-mcrypt
--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d
--with-bz2
[root@localhost local]# make
[root@localhost local]# make install

PHP安装也简单,但如果要开启多个功能就不那么简单了.在执行./configure的时候可能会已到很多问题但不用担心大部分是依赖关系的问题,如果有提示当前系统中的某个软件版本低那么需要升级之后再执行./configure
说明:
--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd 如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
在本例中./configure中其他选项都是开启一些功能的选项,其中有的功能如果你是编译安装的需要在后面指定路径: 比如--with-openssl=/usr/local/openssl/ 如果系统中已经有符合条件的openssl则只需: --with-openssl不需要等号和后面的路径. 所需的组件就不一一介绍如果./configure过程中出错看清错误提示,安装对应的开发包即可。大多问题都是依赖关系的问题。

PHP提供配置文件:
[root@localhost php-5.4.45]# cp php.ini-production /etc/php.ini //源文件中已有准备好的配置文件复制重命名即可.



准备php-fpm服务脚本: 在解压后的目录中的sapi/fpm/init.d.php-fpm是服务脚本
[root@localhost
php-5.4.45]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm //复制源文件的服务脚本
[root@localhost
php-5.4.45]# chmod +x /etc/rc.d/init.d/php-fpm
//添加执行权限.
[root@localhost
php-5.4.45]# chkconfig --add php-fpm
//添加至启动列表
[root@localhost
php-5.4.45]# chkconfig php-fpm on //设置为开机自动启动

复制php-fpm.conf.default到原目录下重命名为php-fpm.con 也可以重命名但为保留原有设置最好复制一份.
[root@localhost
php-5.4.45]# cp /usr/local/php5/etc/php-fpm.conf.default
/usr/local/php5/etc/php-fpm.conf
编辑/usr/local/php5/etc/php-fpm.conf修改适用自己的设置:
listen = 192.168.1.113:9000 //IP地址自己定义一般监听自己本机的IP地址.
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

启动服务: service php-fpm
start 。查看9000端口是否处于监听(LISTEN)ss –tnl 。验证启动的php-fpm进程数量是否符合设置。
新建目录来存放php文件,本例中使用/usr/local/php新建一个php文件名为index.php来测试.


[root@localhost
php]# mkdir -p /usr/local/php/
[root@localhost
php]# ll
total
4
-rwxr-xr-x
1 root root 191 Oct 1 03:36 index.php
[root@localhost
php]#
index.php文件内容:
<?php
phpinfo(); //调用phpinfo函数显示php的配置信息页面.
?>
四、 配置httpd2.4.10
在Apache httpd
2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载。
LoadModule proxy_module
modules/mod_proxy.so

LoadModule
proxy_fcgi_module modules/mod_proxy_fcgi.so

[root@localhost ~]# vim /etc/httpd24/httpd.conf
去掉两个模块行首的#号。
[root@localhost ~]# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType
application/x-httpd-php .php
AddType
application/x-httpd-php-source .phps

2、找到DirectoryIndex
index.html
添加index.php:让Apache支持php文件
DirectoryIndex index.php
index.html












然后在网站的配置文件或者在虚拟主机的配置文件中加入:

ProxyRequests Off //关闭正向代理
ProxyPassMatch ^/(.*\.php)$
fcgi://PHP-FPM.IP_ADDRESS:9000/PATH/SOMEWHERE/$1 //匹配php结尾的文件并通过fcgi发送到php-fpm主机ip:9000 php-fpm默认是9000端口并指定目录。

本例中我使用一台Apache虚拟主机来测试:

注意:Apache2.4开启虚拟主机首先要把#Include
/etc/httpd24/extra/vhosts.conf 这一行前面的#号删除,这样在启动服务的时候会加载这个vhosts.conf虚拟主机的配置文件



vhosts.conf配置文件内容:
<VirtualHost
192.168.1.111:80>
ServerAdmin
webmaster@dummy-host.example.com
DocumentRoot
"/usr/local/apache/htdocs/vh1"
ServerName admin.ff.com
ServerAlias www.dummy-host.example.com
ErrorLog
"logs/dummy-host.example.com-error_log"
CustomLog
"logs/dummy-host.example.com-access_log" common
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$
fcgi://192.168.1.113:9000/usr/local/php/$1
<Directory
"/usr/local/apache/htdocs/vh1">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
测试:
在虚拟主机目录中有我创建了一个index.html文件用来测试静态页面.我分别请求index.html和index.php而index.php文件是在php-fpm主机中



index.html文件访问OK.




index.php访问OK.



现在再更改index.php内容测试连接MySQL服务器:
首先在MySQL主机上新建一个用户并允许远程访问:
mysql>
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'test' WITH GRANT
OPTION;
Query
OK, 0 rows affected (0.00 sec)
// 新建用户test, %表示允许在任意主机登录(也可以指定ip或主机名称)设定密码为test

mysql> FLUSH privileges; //更新授权
Query
OK, 0 rows affected (0.00 sec)

mysql>quit
修改index.php文件内容:
[root@localhost
php]# vim index.php
<?php
$link =
mysql_connect('192.168.1.111','test','test');
//调用mysql_connect连接MySQL数据库,指定主机IP地址,用户名和密码. mysql_connect如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE然后把返回结果给变量link
if ($link) //判断连接是否成功
echo "Success..."; //成功输出Success…
else
echo "Failure..."; //失败输出Failure…

mysql_close(); //关闭MySQL连接

phpinfo(); //显示配置信息页
?>
保存内容重新访问index.php页面,连接成功!

至此php-fpm, Apache2.4,
MySQL编译安装LAMP环境搭建完成!

为php加速安装Xcache:
[root@localhost
~]# tar xf xcache-3.2.0.tar.gz
[root@localhost
~]# cd xcache-3.2.0
[root@localhost
xcache-3.2.0]# /usr/local/php5/bin/php
php php-cgi php-config phpize
[root@localhost
xcache-3.2.0]# /usr/local/php5/bin/phpize
Configuring
for:
PHP
Api Version: 20100412
Zend
Module Api No: 20100525
Zend
Extension Api No: 220100525
[root@localhost
xcache-3.2.0]# ./configure --enable-xcache
--with-php-config=/usr/local/php5/bin/php-config
[root@localhost
xcache-3.2.0]# make && make install
安装完成后会出现下面的画面:



配置xcache:
把源码目录中的xcache.ini配置文件放到php.d目录下重启服务让php加载:
[root@localhost
xcache-3.2.0]# mkdir /etc/php.d
[root@localhost
xcache-3.2.0]# cp xcache.ini /etc/php.d
如果是xcache3.0以前的版本需要把xcache.so的路径加入到php.ini配置文件中格式为:
zend_extension =/ xcache.so路径/xcache.so
例如: zend_extension = /usr/local/php5/lib/php/extensions/no-debug-zts-20100525/xcache.so
自 3.0 版本开始不再支持使用zend_extension 加载 xcache

查看phpinfo页面找到xcache的配置信息:



到此xcache安装成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: