lamp架构wordpress和discuzx教程 背景 虚拟主机 fastcgi 部署流程 部署架构 环境 架构图 编译软件 安装开发环境和必要的包 编译httpd 编译php 安装mariadb 配置文件修改 修改httpd主机 修改fast-cgi主机 配置mysql 宿主机的hosts文件修改 安装wordpress和Discuzx 背景 虚拟主机 如今服务器的配置提升明显,单一主机上部署单一网站会对主机造成大量的性能损失,因此web服务虚拟主机的技术应运而生。所谓虚拟主机指的是在一台机器上运行多个网站(如company1.example.com和company2.example.com)的做法 。虚拟主机可以是“ 基于IP的 ”,这意味着每个网站都有不同的IP地址,或者“ 基于名称 ”,这意味着每个IP地址上都有多个名称,或者“基于端口”,这意味着在同一ip的不同端口上提供不同的网站,通过这些方法使得他们在同一台物理服务器上运行的事实对最终用户来说并不明显。 Apache是第一批支持基于IP的虚拟主机的服务器之一。Apache的版本1.1及更高版本支持基于IP和基于名称的虚拟主机(虚拟主机)。虚拟主机的后一种变型有时也被称为基于主机的或非IP虚拟主机。 fastcgi FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 部署流程 部署架构 环境 3台主机用于分别部署httpd,php和mysql,实现分离 软件版本 架构图 编译软件 这里我们需要编译的软件为httpd和php,mysql可以考虑使用二进制包或者直接官方yum安装 安装开发环境和必要的包 1.安装centos开发工具包 yum groupinstall "development tools" -y 2.安装编译httpd和php需要的包 #部分包需要epel源 #yum install epel-release -y yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y 编译httpd 这里在192.168.99.130机器上编译httpd2.4 1.创建apache用户 useradd -r apache -s /sbin/nologin 2.解压httpd,apr,apr-util源码包,这里需要的包均可在httpd官网下到 tar xvf httpd-2.4.33.tar.bz2 tar xvf apr-1.6.2.tar.gz tar xvf apr-util-1.6.1.tar.gz 3.编译httpd #移动解压的apr和apr-util到指定的httpd源码目录可以省去分别编译3个程序 mv apr-1.6.2 httpd-2.4.33/srclib/apr mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util #编译参数,具体含义可以参考./configure的帮助文档或者官方文档 ./configure \ --prefix=/app/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-included-apr \...
今天宝塔突然apache启动不了.网站打不开。提示: 报错: Apache配置规则错误: [url=]httpd: Syntax error on line 501 of /www/server/apache/conf/httpd.conf: Syntax error on line 1 of /www/server/panel/vhost/apache/btwaf.conf: Cannot load modules/mod_lua.so into server: /www/server/apache/modules/mod_lua.so: cannot open shared object file: No such file or directory[/url] 系统: CentOS Linux 7.4.1708 (Core) 解决方法 卸载用编译方式重装即可, 如果有疑问可以加入我们学派吧QQ群 81885552
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
2024-12-22
前言 现在SSL越来越普及了。但是很多朋友不知道如何设置、今天学派吧-给新朋友演示下。 一、系统文件修改 二、后台文件修改 三、安装插件 首先按照自己的项目运行服务器把证书安装好,干货君以腾讯云为例:证书安装指引 – SSL 证书 – 文档平台 – 腾讯云文档平台 – 腾讯云。 干货君使用nginx反向代理,apache作为项目运行服务器为例,修改nginx/conf文件夹下面的nginx.conf(将下方代码块添加到文件中或把文件中443代码块按此方式设置)。 server { listen 443; server_name www.nrgh.org; #填写绑定证书的域名 ssl on; ssl_certificate 1_www.nrgh.org_bundle.crt; ssl_certificate_key 2_www.nrgh.org.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { #项目路径,或反向代理的代码块 proxy_pass http://nrgh; } } 上方搞定在nginx.conf中加入下面这个代码块,你要负载均衡(集群使用)也是在这个代码块中搞 upstream www{ #下方写要代理的ip和端口号,下面ip是乱写的,真实的已隐去 server 111.111.205.11:56; } server { listen 80; server_name http://www.nrgh.org if ($scheme = http ) { #http请求转换为https return 301 https://$server_name$request_uri; } #即所有请求都到这里去找分配 location / { #全局实现80进来的请求,重定向为https了 proxy_pass http://www; #rewrite ^/(.*) https://$server_name/$1 permanent; } } 上面都配置之后,运行 nginx -t 并重启nginx试试效果 接下来说下会出现的问题: 1、上面都搞定之后,wordpress网站可能出现css和js还是走http请求,文章链接走https请求,这时候需要你把wordpress的媒体文件绝对路径替换相对路径,方法如下: 2、wordpress/wp-admin 后台进不去,登录无反应; 3、百度找了很多解决方法,却依然没有解决,甚至搞的连网站都打不开了; 4、等等。。。 一、系统文件修改 路径:网站根目录\wp-includes\functions.php 找到代码 require( ABSPATH . WPINC . ‘/option.php’ ); 在下方添加: add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } add_filter('style_loader_src', 'agnostic_style_loader_src',...
一. 前言 二. 接下来就是搭博客的过程 三、大功告成 一. 前言 开学之初,我发现Azure上有一个100刀的学生优惠。但在领取这个优惠之后,我却一直没有使用的机会,一是自己不会用,二是没有多余的时间。现在等来了放假,终于可以好好搞一搞了。:joy: 这次搭博客可谓是踩了不少坑: 百度的教程基本上都是废的,只有谷歌的英文教程才是能用的,好气啊 apache2是真难用 php各个版本让人混乱 二. 接下来就是搭博客的过程 1、进入Azure的门户,添加一个Ubuntu的主机,学生优惠的主机为B1S,我使用的是公钥登陆,生成公钥的过程就不说了 2、在网络安全组的入站规则中添加443和80端口 3、接下来是连接主机。可以使用PuTTY或者是MobaXterm,输入ip和用户名,再加上私钥就可以连接了。 4、安装Nginx sudo apt-get update sudo apt-get install nginx 安装完成后可以用以下命令操作nginx sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl enable nginx.service 打开网页看看是否有这样的页面出现,如果有的话就可以进行下一步操作了 5、安装MariaDB sudo apt-get install mariadb-server mariadb-client 对于Ubuntu 16.04有以下命令 sudo systemctl stop mysql.service sudo systemctl start mysql.service sudo systemctl enable mysql.service 输入 sudo mysql_secure_installation 然后进行以下操作 Enter current password for root (enter for none): Just press the Enter Set root password? [Y/n]: Y New password: Enter password Re-enter new password: Repeat password Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y 测试以下密码是否能登陆 sudo mysql -u root...
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一、 apt install apache2 二、 apt install php (安装后测试phpinfo) <?php phpinfo(); ?> 三、 apt install mariadb-server 1、安装完 MariaDB 之后,运行 mysql_secure_installation 可以设置root密码及删除测试账户之类的信息。 2、新建一个用户: insert into mysql.user(Host,User,Password) values("localhost","admin",password("admin")); 刷新系统权限表 flush privileges; 这样就创建了一个名为:admin 密码为:admin 的用户 3、创建数据库(在root权限下) create database abc; //授权admin用户拥有abc数据库的所有权限。 grant all privileges on abc.* to admin@localhost identified by 'admin'; //刷新系统权限表 mysql>flush privileges; 4、删除用户。 @>mysql -u root -p @>密码 mysql> DELETE FROM mysql.user WHERE User="admin" and Host="localhost"; mysql>flush privileges; 5、mysql>drop database abc;//删除用户的数据库 6、查看数据库中具体某个用户的权限 mysql> show grants for 'cactiuser'@'%'; 7、查询所有用户: SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 8、显示所有数据库 show databases; 9、修改指定用户密码。 @>mysql -u root -p @>密码 mysql> update mysql.user set password=password('新密码') where User="admin" and Host="localhost"; mysql>flush privileges; 10、删除某个用户权限 revoke all privileges on wordpress.* from 'admin'@'localhost'; 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 一个2014年初上线的项目,要升级https,记录一下。 一共有三台WEB服务器,进入 apache/modules 查看是否有 mod_ssl.so。 两台服务器正常,一台缺失,于是需要动态编译。 官网下载httpd2.4.6(这里需要./httpd -v 查看一下当前版本号),解压缩,进入源码 /modules/ssl/ 目录 cd /usr/local/src/httpd-2.4.6/modules/ssl/ 然后执行下面的动态编译命令 当前apahce的路径/bin/apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c 此处遇到了第一个坑:报错 /usr/bin/ld: cannot find -lcrypto 搜素一番后,是 /usr/lib64/libssl.so 和 /usr/lib64/libcrypto.so 没有建立软连接。但是搜索出来的解决方案的路径不对,于是参考另外两台服务器 ln -s /lib64/libssl.so.0.9.8e /usr/lib64/libssl.so ln -s /lib64/libcrypto.so.0.9.8e /usr/lib64/libcrypto.so 使用上面方式建立软链接。 然后再次编译,提示成功了。 但是在httpd restart的时候碰到了第二个坑。 再次报错:mod_ssl.so: undefined symbol: SSL_get_srp_userinfo 搜索一番了解到是 openssl 版本太高。 这才想起来,之前我更新过一次openssl,现在的版本不是 0.9.8e了。 于是 找到现在的openssl对应lib目录 /usr/local/ssl/lib/libcrypto.so.1.0.0 删除现有的链接,重新链接为新的。 rm -rf /usr/lib64/libssl.so rm -rf usr/lib64/libcrypto.so ln -s /usr/local/ssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so ln -s /usr/local/ssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so 于是重新编译apahce,再次重启能够成功了。 在配置https配置文件的过程中,记得要监听443端口并且设置好防火墙规则。 Listen 0.0.0.0:443 Listen [::]:443 其他的配置文件就按照网上的参考就行了。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 之前写过使用宝塔,配置网站会出现NO input file specified的解决方法。这次再次搜集网络资料共享出来 APACHE服务器出现No input file specified.解决方案 thinkcmf程序默认的.htaccess里面的规则: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule> “No input file specified.”,是没有得到有效的文件路径造成的。 修改伪静态规则,如下: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> 就是正则结果“/$1”前面多加了一个“?”号。。 如果有不懂的、欢迎加入我们学派吧。一起学习交流。右上角站长群