首页 技术 正文
技术 2022年11月11日
0 收藏 702 点赞 3,452 浏览 17804 个字
对于新手来说一个很大的问题就是连源码包都在到在哪下载,还有就是软件的依赖关系如果网卡也不会配置,请翻看我的其他文章这就是基本所需的源码包了http://pan.baidu.com/s/1kTxbN5X然后就是开始yum -y install gcc gcc-c++ autoconf nss_ldap libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers pcre pcre-devel make wget vim cmake gd gd-devel libevent libevent-devel zip unzip libtool
yum基本的rpm包安装完成之后关闭selinux和防火墙service iptables stopchkconfig iptables offvi /etc/selinux/config 把SELINUX=enforcing 修改为disabledcentos7是iptables被firewalld替代了systemctl stop firewalld 记得改完之后reboot重启或者直接service iptables restart源码存放路径:/usr/local/srcyum install lrzszcd /usr/local/srcrz可以多选这个虚拟机比较方便,如果是真机器上,装完系统之后直接wget到src文件里就行tar -zxvf 源码包安装httpd首先安装aprtar -zxvf apr-1.5.1.tar.gzcd apr-1.5.1 ./configure --prefix=/usr/local/apr如果你不知道是不是对的,请直接继续,如果在编译httpd有问题可以删掉文件夹,再次编译,没事make && make installcd ..tar -zxvf apr-util-1.5.4.tar.gzcd cd apr-util-1.5.4./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/aprmake && make install tar -zxvf httpd-2.4.10.tar.gzcd httpd-2.4.10./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewrite --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-most-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
配置文件在 /etc/httpd/httpd.conf make && make installcd /usr/local/apache bin/apachectl startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message如果出现以下问题vi /etc/httpd/httpd.conf 首先把pid文件指到run下面,这个和出现的问题无关在serveRoot="/usr/local/apche" apache的根目录加上。如果USR目录空间不大,可以吧目录指导HOME目录下PidFile "/var/run/httpd.pid"配置而已找ServerName和ServerAdmin改成ServerAdmin localhostServerName localhost:80ESC:wq保存退出netstat -tnlpkill 80断就的PIDcd /usr/local/apache bin/apachectl startcurl 127.0.0.1It works!、在别的机器上输入IP,就OK了网站根目录/usr/local/apache/htdocs 下面index.html就是主页文件吧httpd加入开机启动1、将apachectl文件拷贝到/etc/rc.d/init.d 中,然后在/etc/rc.d/rc5.d/下加入链接即可。命令如下:cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd //如果有其他的版本的Apache存在,也可以直接覆盖掉ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd //建立链接(85的意义后面介绍)此时Apache就可以自动启动了。2、 运行chkconfig --list,发现没有linux服务列表中httpd,通过chkconfig --add httpd来添加,但是提示:httpd服务不支持 chkconfig。需要编辑/etc/rc.d/init.d/httpd,添加以下注释信息:任何位置都可以# chkconfig: 345 85 15# description: Activates/Deactivates Apache Web Server第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15)。保存后执行:chkconfig --add httpd,成功添加。在rc3.d、rc4.d、rc5.d路径中会出现S85httpd的链接文件,其他运行级别路径中会出现K61httpd的链接文件。3、运行chkconfig --list httpd接下来是mysql 这就有个大问题,大文件的mysql源码包是无法使用rz命令,这里有个小技巧你平常用的ftp工具 除了登陆ftp之外,还是可以用root用户登陆选择sftp over ssh这个就可以用root用户登陆,大文件就可以上传了,不用安装samba和配置cp /root/mysql-5.6.21-x86_64.tar.gz /usr/local/tar -zxvf mysql-5.6.21-x86_64.tar.gz创建软链接创建用户组合用户id groupadd -r -g 306 mysql
useradd -g 306 -r -u 306 mysql id mysqlchown -R mysql.mysql /usr/local/mysql/*更改属组mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
mkdir -p /usr/local/mysql
tar zxvf mysql-5.5.28.tar.gz
cd mysql-5.5.28

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

根据自己需求编译选项make
make install
cd /usr/local/mysql
cp ./support-files/my-medium.cnf /etc/my.cnfscripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql
chown -R mysql.mysql /data/mysql/datacp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysqldvi /etc/rc.d/init.d/mysqldbasedir=/usr/local/mysql/
datadir=/data/mysql/data/
加上
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile 吧mysql的命令加入source /etc/profile 启动命令ln -s /usr/local/mysql/lib/mysql /usr/local/lib64/mysql
ln -s /usr/local/mysql/include/mysql /usr/local/include/mysqlservice mysqld startmysql -uroot 登陆 默认密码为空
mysql> SET PASSWORD = PASSWORD('123456'); 设置root密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY 'password' WITH GRANT OPTION;
开始远程访问初始化的时候请注意
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql这个地方一定要把这2个基本的地址,如果你需要更多的初始化选项参考下面的选项不然启动服务的时候会出现
mysql The server quit without updating PID file
你启动mysql的时候就会出现这个问题,网上的解决办法很多,但是需要更具你自己的指定的data目录下的错误信息来判断
比如你上面你没指定
--basedir=/usr/local/mysql这个选项
localhost.localdomain.err 这个里面会提示
Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
因为默认的权限表不在/usr/local/mysql里面

还有一个问题就是/etc/my.ini也是配置文件确保整个的mysqld段里面 basedir=/usr/local/mysql/
datadir=/data/mysql/data
这2个是和/usr/local/mysql/my.ini里面都是一样
下面是错误日志的路径,如果以上问题还是解决不了。请查看日志

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

请参考下面的这里注意下,很多文章没指出的,你下载mysql的源码包是由2中,一种是解压,直接
scripts/mysql_install_db的那个包,有200M左右,现在5.6的差不多有400M。一般你没看到cmake的编译的话,那就这种包
如果你的源码包只有20M-30M,你的包就需要cmake编译,你先的yum install cmake
这里演示的是cmake的接下来是php先解决几个编译php的编译选项的依赖库
libmcrypt
mhash
mcrypt
libiconv
上面的源码包都有cd /usr/local/src
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
/sbin/ldconfig
cd libltdl

./configure --enable-ltdl-install
make && make install
cd ../../
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make && make install
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
cd ../
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make && make install
cd ../
tar zxvf pcre-8.31.tar.gz
cd pcre-8.31
./configure –-prefix=/usr/local/pcre
make
make install
cd ../
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure –-prefix=/usr/local/libiconv这个地方做好指定,因为编译php的时候会搜索不到这个包make && make install
cd ../
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make && make install
cd ../接下来是重点,因为根据你架构的需求一下有很多不同,比如lamp就使用默认的工作模式即可,如果是lnmp的话就要使用fastcgi
lanmp的也是要使用fastcgi模式
解释下为什么要使用lanmp处理php交给apache处理,静态文件交给nginx处理,因为nginx处理资源文件盒并发的能力更强,nginx作为反向代理有很多好处
比如集群轮换配置简单,并发能力强,目前并发最好的不是nginx而是lvs,但是就整体而言nginx好用程度和能力不逊色与LVS,如果你真的需要大并发的,其实lanmp的搭建方式
不行,以后再详细讨论
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/ --with-ttf --with-xmlrpc --with-openssl --with-zlib --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-iconv=/usr/local/libiconv --enable-short-tags --enable-sockets --enable-zend-multibyte --enable-soap --enable-mbstring --enable-static --enable-gd-native-ttf --with-curl --with-mcrypt这个是默认工作模式,lanmp建议使用这个./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --with-curl --enable-fpm --enable-soap --with-iconv=/usr/local/libiconv  --with-mysqli=/usr/local/mysql/bin/mysql_config  --with-freetype-dir=/usr/local/freetype  --with-gd如果不会安装gd或者libiconv请参看俺的其他文章这是fpm模式 搭建lanmp必备vi /etc/httpd/httpd.conf增加2个东西就可以使用了
AddType application/x-httpd-php .php .php3 .htm .phtml .php4 AddType application/x-httpd-php-source .phps支持php文件的支持在增加支持DirectoryIndex index.php index.html这个是全局的配置支持默认打开index.php保存,重启apacheservice httpd stopservice httpd start测试vi /usr/local/apache/htdocs/index.php<?php$con = mysql_connect('localhost','root','');if($con){echo "OK":}else{echo "fuck";}phpinfo();?> 显示了OK和phpinfo的信息OK,php和mysql开启了php是作为apache的模块执行,不需要作为服务启动以下是配置虚拟机vi /etc/httpd/httpd.conf
注释掉
# DocumentRoot "/usr/local/apache/htdocs/"
开启虚拟机主机include "/etc/httpd/extra/httpd-vhost.conf"OKvi /etc/httpd/extra/httpd-vhosts.conf默认是开启 mod_log_config模块,不放心就自己去vi /etc/httpd/httpd.conf检查下配置虚拟主机有2个默认配置mkdir /www/{a.com,b.com} -pv
mkdir /var/log/httpd/<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/www/a.com"
ErrorLog "/var/log/httpd/a.com-error_log"
CustomLog "/var/log/httpd/a.com-access_log" common
</VirtualHost><VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/www/b.com"
ErrorLog "/var/log/httpd/b.com-error_log"
CustomLog "/var/log/httpd/b.com-access_log" common
</VirtualHost>combined的日志文件更丰富在自己的本地的hosts文件映射192.168.0.206 www.a.com192.168.0.206 www.b.comservice httpd stopservice httpd start打开你会发现You don't have permission to access / on this server因为从httpd2.4起,每个虚拟主机都需要主动配置目录才能访问vi /etc/httpd/extra/httpd-vhosts.conf

<VirtualHost *:80>
ServerName www.a.com
DocumentRoot “/www/a.com”
<Directory “/www/b.com”>
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog “/var/log/httpd/a.com-error_log”
CustomLog “/var/log/httpd/a.com-access_log” common
</VirtualHost>

<VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/www/b.com"
<Directory "/www/b.com">
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog "/var/log/httpd/b.com-error_log"
CustomLog "/var/log/httpd/b.com-access_log" common
</VirtualHost>service httpd stopserveice httpd startOK.了安装phpmyadmincd /etc/local/src/tar -zxvf phpMyAdmin-4.2.11-all-languages.tar.gz -C /www/a.com就可以了,如果提示空密码不能登陆mysqladmin -uroot password 'com'如果提示要使用mysqli,就去再次编译一下php。或者扩展其他模块下面是nginx
groupadd nginx
useradd -r -g nginx nginx -s /sbin/nologin
id nginxtar -zxvf nginx-1.6.2
cd nginx-1.6.2
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/make && make installvi /etc/init.d/nginxd#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/sbin/nginx"
prog=$(basename $nginx)NGINX_CONF_FILE="/etc/nginx/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() {
# make required directories
user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}restart() {
configtest || return $?
stop
sleep 1
start
}reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}force_reload() {
restart
}configtest() {
$nginx -t -c $NGINX_CONF_FILE
}rh_status() {
status $prog
}rh_status_q() {
rh_status >/dev/null 2>&1
}case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

groupadd -r -g 306 mysql


useradd -g 306 -r -u 306 mysql

chmod +x /etc/init.d/nginxdchkconfig --add nginxd        ##让入开机启动选项中chkconfig nginxd on          #让其开机自动启动chkconfig --list       #查看服务是不是加入service nginxd  start       #立即启动nginx 服务记住apache nginx默认端口都是80 yum -y install  openssl-devel zlib-devel pcre-devel  yum groupinstall "Developement Tools" "Development Libraries" -yt
vi /etc/nginx/nginx.confserver {
listen 81;端口改成81service nginxd startOK192.168.0.206:81就可以看到欢迎页面这个是php的fpm工作模式的配置lnmp配置cd /usr/local/src/php-5.6/
cp php.ini-production /usr/local/php/etc/php.ini
cp php.ini-production /etc/php.ini
这个是默认php.ini的路径cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpmcp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf vi /usr/local/php/etc/php-fpm.conf
启用如下选项:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = run/php-fpm.pid
根据服务器配置修改只需要把蓝色部分前面的注释去掉,修改完成,试着启动/usr/local/php/sbin/php-fpm 启动后用netstat -tnlp 查看 如果有如图所示端口 测表示正常启动如需要开机自动启动 则可以添加到/etc/rc.d/rc.local中vim /etc/rc.d/rc.localchkconfig --add fpmchkconfig fpm on
chmod +x /etc/init.d/php-fpmvi /etc/nginx/fastcgi_params将里面内容替换为fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;vi /etc/nginx/nginx.conf首先将#user nobody;
改为user nginx;之后找到
去掉# location ~ \.php$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
} server nginxd start
在nginx的根目录下测试代码
vi index.php
<?phpphpinfo();
?>
192.168.0.206/index.php可以看到Server API的工作模式是fpm 这个是指lnmp架构已fpm工作模式工作
但是当nginx作为反向代理的时候 使用的配置文件还是apache的 显示的php的工作模式还是php已模块方式工作的
Server API Apache 2.0 Handler 因为php文件交给了httpd处理,显示的php信息还是apache的
这个时候请注意
你的php-fpm是不是还在运行如果出现
iconv.c:1350: undefined reference to `libiconv'错误

tar -zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure –prefix=/usr/local/libiconv
make
make install

–with-iconv=/usr/local/libiconv

php编译的时候指定路径就OK了

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --with-curl --enable-fpm --enable-soap --with-iconv=/usr/local/libiconv  --with-mysqli=/usr/local/mysql/bin/mysql_config  --with-freetype-dir=/usr/local/freetype  --with-gd
这个fpm工作模式的编译选项最后多说几句话,php5.4以后pdo本身不再是php的分支了已经合并最后就是nginx反向代理apache,在nginx的配置文件里,吧apache的鉴定端口改为8080
定义server段
server里面可以定义location
静态文件处理交给nginx php处理交给apache vi /etc/nginx/nginx.conf

location ~* \.(js|css|jpg|jpeg|gif|png)$ {
access_log off;
expires 1d;
}
location ~ ^(.+\.php)(.*)$ {
proxy_redirect off;
proxy_set_header HOST $host;
proxy_set_header SERVER_ADDR $server_addr;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header REMOTE_PORT $remote_port;
proxy_pass http://127.0.0.1:8080;
}

service nginxd stop

service nginxd start

查看phpinfo信息时,Server API Apache 2.0 Handler现在是这个模式运行证明,php交给apache处理了

让nginx反向代理apache时候,需要开启apche的虚拟机和nginx虚拟机,在nginx上也要配置比如我在apache监听的是81,那么反向代理的时候设置成http://127.0.0.1:81首先配置nginx虚拟机
vi /etc/nginx/nginx.conf

user nginx nginx; #用户和用户组
worker_processes 2;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;

events
{
use epoll;epoll模型
worker_connections 65535;最大连接数
}

http {

include mime.types;
default_type application/octet-stream;

#主定义httpd

include /usr/local/nginx/vhost.conf;#引入读取的虚拟机配置文件也可以配置成×.conf也就是读取所有的配置文件,位置也可以自己选择

}

vi /usr/local/nginx/vhost.conf
fastcgi_param PATH_INFO $request_uri;
实现path_info支持
这个测试的时候apache监听是81请注意

server{
listen 80;
server_name www.b.com;
index index.php index.html;
root /www/b.com;


location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
“/usr/local/nginx/vhost.conf” 37L, 941C written
[root@localhost ~]# vi /usr/local/nginx/vhost.conf


server{
listen 80;
server_name www.a.com;
root /www/a.com;
index index.php index.html;

location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81; }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 1s;
}
location ~ .*\.(js|css)?$ {
expires 1s;
}

}

server{
listen 80;
server_name www.b.com;
index index.php index.html;
root /www/b.com;

location ~ \.php$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81; }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 1s;
}
location ~ .*\.(js|css)?$ {
expires 1s;
}

}

a如果你需要配置全局的nginx的请在
/etc/nginx/nginx.conf配置比如日志格式,gzip,各种代理配置整个下面是apache的配置文件和上面配置的一样,只是

<VirtualHost *:81>
ServerName www.a.com
DocumentRoot “/www/a.com”
<Directory “/www/b.com”>
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog “/var/log/httpd/a.com-error_log”
CustomLog “/var/log/httpd/a.com-access_log” common
</VirtualHost>




<VirtualHost *:81>
ServerName www.b.com
DocumentRoot “/www/b.com”
<Directory “/www/b.com”>
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog “/var/log/httpd/b.com-error_log”
CustomLog “/var/log/httpd/b.com-access_log” common
</VirtualHost>




    					
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731