Los detalles del hardware del foro ideal
Servidor MySQL: DualXeon 5335/8GB de memoria/Disco duro SAS 73G (RAID0 1)/CentOS5.1-x86_64/MySQL5
Los tres servidores WEB son los siguientes:
N1. Memoria Dual Xeon 3.0 de 2GB
N1. Memoria Dual Xeon 3.0 de 4GB
Memoria Dual Xeon 3.0 (doble núcleo) 4G
También hay tres 300G. El disco duro SCSI está preparado como RAID5 para almacenar archivos adjuntos. Las cuatro máquinas están conectadas a través de la intranet.
Las soluciones que Zhutou ha considerado son las siguientes:
1. ZEUS PHP5 eAccelerator
2. Squid Apache2 PHP eAccelerator
3. nginx PHP (fastcgi) eAccelerator
4. >La primera solución es relativamente perfecta y muy estable, pero el mayor problema es que ZEUS es un software pago, y tu conciencia siempre te culpará si usas piratería, por lo que el plan de respaldo se pospone temporalmente
Para el segundo plan, Squid reenvía la solicitud a Apache2, muchos sitios web utilizan este método y la eficiencia es muy alta. Zhutou también lo probó, pero el problema es muy grave, porque Squid almacena en caché los archivos, por lo que cada archivo al que se accede. Squid debe abrirlo, el foro ideal tiene archivos adjuntos de 150G y una gran cantidad de visitas. En este caso, si solo abres Squid, la máquina pronto se negará a responder a cualquier solicitud porque parece que no hay demasiados archivos abiertos. adecuado Solo es adecuado para almacenar en caché archivos con solo unos pocos archivos dentro de 100 M.
La tercera opción, el resultado de la prueba de Zhutou para la tercera opción es que cuando el número de visitas es grande, PHP a menudo lo hará. tiene una puerta de enlace defectuosa. Parece que Fastcgi está conectado a través de TCP para ejecutar PHP. El método no es lo suficientemente estable. Zhutou también probó la ejecución de PHP a través de una conexión Unix Socket, pero aún era inestable.
Por el contrario, Zhutou utiliza actualmente la cuarta solución.
Instalación de Apache2.
(Dado que el servidor usa FreeBSD7, la mayor parte del software se instalará a través de puertos)
Dado que Apache2 solo necesita procesar solicitudes PHP, básicamente no se necesitan otros módulos, así que no elija Instalar Otros módulos, ni siquiera es necesario reescribir, porque la reescritura se implementará en nginx. Si está familiarizado con él, también puede modificar el Makefile para eliminar las partes innecesarias. De esta manera, después de la optimización, Apache procesará PHP en la mayor medida posible. forma estable y eficiente. Solicitud
hacer la instalación limpia
Modificar press=1
eaccelerator.compress_level=9
eaccelerator.keys=. shm_and_disk
eaccelerator.sessions=shm_and_disk
eaccelerator.content=shm_and_disk
Crear directorio de caché y modificar permisos
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
chown nadie:nadie /tmp/eaccelerator
instalación y configuración de nginx
cd /usr/ ports/www/ nginx
make install
Hay varios módulos que necesitamos, debemos seleccionarlos
Módulo HTTP
bined ;
limit_conn one 5; #Limita el número de conexiones simultáneas para una IP a cinco
error_page 404 /404.html;
error_page 403 /403. html;
ubicación /status {
stub_status activado;
acceso_cerrar sesión;
auth_basic NginxStatus;
auth_basic_user_file conf/htpasswd;
}
#Utilice las reglas de reescritura de Discuz6.0 en el directorio raíz. Si su foro está en el directorio secundario, debe modificar la ubicación en consecuencia
ubicación / {
reescribir ^/archiver/((fid|tid)-[\w\-] \.html)$ /archiver/index.php?$1 último; p>
reescribir ^/ foro-([0-9] )-([0-9] )\.html$ /forumdisplay.php?fid=$1amp página=$2 último;
reescribir ^/thread-([ 0-9] )-([0-9] )-([0-9] )\.html$ /viewthread.php?tid=$1amp;extra=page\3D$3amp ;página=$2 último; p>
reescribir ^/space-(nombre de usuario|uid)-(. )\.html$ /space.php?$1=$2 último;
reescribir ^ /tag-(. )\. html$ /tag.php?name=$1 último;
romper;
error_page 404 /404.html;
error_page 403 /403.html;
}
#Proteger los archivos adjuntos contra enlaces directos. el referente correcto, se devolverá una página 403
ubicación ~* ^.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp | xls)$ {
valid_referers ninguno bloqueado server_names *.55188.net *.55188.com;
if ($invalid_referer) {
reescribir ^/
}
}
#Reenvíe la solicitud PHP al puerto local 81 y deje que Apache la procese.
ubicación ~ \. php$ {
proxy_pass http://127.0.0.1:81;
proxy_redirect desactivado
proxy_set_header Host $host; proxy_set_header X- IP real $remote_addr;
proxy_set_header X-Reenviado-Para $proxy_add_x_forwarded_for;
proxy_hide_header Tipo de contenido;
}
}
}
Pruebe si sus archivos de configuración son correctos
/usr/local/sbin/apachectl configtest
/usr / local/sbin/nginx -t
Si no hay problema, inicia el servidor
/usr/local/sbin/apachectl start
/usr/ local/ sbin/nginx -c /usr/local/etc/nginx/nginx.conf
Navega por la página de inicio, debería ser normal