04-LAMP和LNMP

nobility 发布于 2023-12-06 04-网络服务 745 次阅读


LAMP和LNMP

Apache

  1. 使用yum install httpd安装Apache服务
  2. 使用systemctl start httpd启动Apache服务
  3. 配置IP地址和防火墙放行80和443端口,可以使用iptablefirewall-cmd工具
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
  1. 配置Apache服务
文件位置 描述
/etc/httpd/conf/httpd.conf 主配置文件
/var/www/html 网站数据目录,若有SELinux捣乱则修改SELinux标签修改为httpd_sys_content_t
/var/log/httpd/access_log 访问日志文件
/var/log/httpd/error_log 访问错误日志文件
  1. 主要参数列表:
参数名 描述
ServerRoot 服务本身的目录
Listen 监听端口号
User 运行服务的用户
Group 运行服务的组
ServerAdmin 管理员邮箱
DocumentRoot 网站数据目录,修改数据目录时也要同时修改网站数据目录权限
ErrorLog 错误日志
CustomLog 访问日志
  1. 虚拟主机:编写主配置文件/etc/httpd/conf/httpd.conf,添加以下内容,这类似于XML格式
<VirtualHost 192.168.1.10>	#要指定IP地址和端口,是内网地址
    DocumentRoot /var/www/html/v1	#虚拟主机的数据目录
    ServerName www.linux.com	#虚拟主机域名
    <Directory /var/www/html/v1>	#网站数据目录权限,这里的目录要与数据目录一致
        AllowOverride None	#不允许被覆盖
        Require all granted	#全部都允许访问
      	DirectoryIndex index.html	#默认首页
    </Directory>
</VirtualHost>
  1. 配置HTTPS
    1. 需要使用yum install mod_ssl安装Apache支持SSL的模块
    2. 然后使用systemctl restart httpd重启httpd服务,此时使用的系统默认的证书和私钥
    3. 而且公网中没有注册证书的情况下是无法访问的,在虚拟机中(局域网中)是可以的
文件位置 描述
/etc/httpd/conf.d/ssl.conf Apache的SSL证书配置文件
/etc/pki/tls/private/ 系统私钥目录
/etc/pki/tls/certs/ 系统证书目录
  1. 自制证书
openssl genrsa -out server.key 2048	#使用RSA加密算法 生成私钥文件 名为server.key 位数是2048
openssl req -new -key server.key -out server.csr	#根据私钥生成证书签名请求,会让你填写一些签名信息
openssl x509 -req -days 1 -in server.csr -signkey server.key -out server.crt	#根据私钥和签名生成有效期是1天的证书
cp server.key /etc/pki/tls/private/	#将私钥拷贝到系统私钥目录中
cp server.crt /etc/pki/tls/certs/	#将证书拷贝到系统证书目录中
vim /etc/httpd/conf.d/ssl.conf	#修改Apache的SSL配置文件,将SSLCertificateFile证书字段和SSLCertificateKeyFile私钥字段修改为自己的生成文件
systemctl restart httpd	#重启Apache

Tomcat

  1. 使用yum install tomcat安装Tomcat服务,默认是tomcat7,带的Java运行环境是1.7.0版本
    • yum install tomcat-webapps tomcat-admin-webapps 安装容器管理软件
    • yum install tomcat-docs-webapp tomcat-javadoc安装参考文档
    • 可以使用yum install java-1.8.0-openjdk.x86_64升级之1.8.0,也可以升级到1.11.0版本(tomcat version可查看版本信息)
    • 可以通过pkgs.org网站找到相关更新的rpm包进行安装更新的tomcat
    • 可以使用yum install java-1.8.0-openjdk-devel.x86_64安装开发环境
  2. 使用systemctl start tomcat启动Tomcat服务
  3. 配置IP地址和防火墙放行8080端口,可以使用iptablefirewall-cmd工具
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --add-port=8443/tcp
  1. 配置Tomcat服务
文件位置 描述
/etc/tomcat/tomcat.conf 主配置文件
/etc/tomcat/server.xml 服务器配置文件
/etc/tomcat/tomcat-users.xml tomcat用户配置文件
/usr/share/tomcat/webapps web容器配置文件
/var/lib/tomcat/webapps/ web容器目录
/usr/share/tomcat/logs/ 日志文件目录
  1. 添加用户:编写用户配置文件/etc/tomcat/tomcat-users.xml,将最后的举例的注释打开,填写自己的用户名和密码
user name="admin" password="admin" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
  1. 使用java的keytool工具自制证书(jdk自带的工具)
keytool -genkey -v -alias tomcat -keyalg RSA -keystore server.keystore -validity 365 -sigalg SHA256withRSA
#证书的别名是tomcat,加密方式使用RSA,生成证书名为server.keystore,证书有效期为365天,签名算法使用SHA256withRSA
#接下来会让你填写信息并且确认,要注意的是密码必须是6位数,确认完毕后设置要在输入一次密码要与刚开始设置的密码一致
keytool -keystore server.keystore -export -alias tomcat -file client.cer
#使用服务端证书生成客户端证书,指定证书别名要一致,生成的证书名为client.cer
#接下来会让你输入密码
  1. 使用vim /etc/tomcat/server.xml命令来修改配置文件开启HTTPS功能,但是要注意只能使用脚本启动方式启动HTTPS才能有效果,否则只有HTTP有效果,由于yum安装的tomcat7中的bin目录中没有启动脚本(脚本启动后那么像systemctltomcat start|stop命令就会失效,只能使用脚本的shutdown.sh来关闭),则需要手动的从官网中下载tomcat7将bin目录替换即可,记着加执行权限

    • tomcat7

      • 将配置8080端口的HTTP注释掉
      • 将配置8443HTTPS的注释解开,并且添加keystoreFile字段来指定证书,keystorePass字段来指定密码
      <!--
          <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                     maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                     clientAuth="false" sslProtocol="TLS" />
      修改为如下内容:
      -->
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
            		 clientAuth="false" sslProtocol="TLS" 
                 keystoreFile="server.keystore"	
            		 keystorePass="password"/> <!--添加自己的证书和证书密码 -->
      
    • tomcat8.5/9

      • 将配置8080端口的HTTP注释掉
      • 将配置8443HTTPS的注释解开,将Certificate标签中的certificateKeystoreFile的证书换成自己生成的服务端证书,并增加certificateKeystorePassword字段,字段值为刚才为证书设置的密码
      <!--
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>
      修改为如下内容:
      -->
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                     maxThreads="150" SSLEnabled="true">
              <SSLHostConfig>
                  <Certificate certificateKeystoreFile="server.keystore"
                               type="RSA" certificateKeystorePassword="123456" />
              </SSLHostConfig>
      </Connector>	<!--添加自己的证书和证书密码 -->
      
  2. 使用vim /etc/tomcat/web.xml修改强制HTTP跳转到HTTPS,找到welcome-file-list标签,在标签下插入以下内容,注意是下面,而不是标签内

<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
  <!-- Authorization setting for SSL -->
  <web-resource-collection >
    <web-resource-name >SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
  1. 再将网站项目配置HTTPS,修改项目中的WEB-INF/web.xml文件,添加以下字段,在将项目的war包放入tomcat容器中,之后使用systemctl restart tomcat重启tomcat
<security-constraint>
  <web-resource-collection>
    <web-resource-name>SSL</web-resource-name>
    <url-pattern>/*</url-pattern>	<!-- 表示所有路径下的文件都采用SSL协议-->
  </web-resource-collection>
  <user-data-collection>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-collection>
</security-constraint>
  1. 公网中没有注册证书的情况下是无法访问的,在虚拟机中(局域网中)是可以的,若想在公网中访问,就需要将刚才生成的客户端证书下载到本地,拖入浏览器中进行安装证书即可访问

Nginx

  1. rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm也可以使用 yum install epel-release 安装epel源,若报错则打开vim /etc/yum.repos.d/epel.repo就将第二行的注释解开,将第三行注释掉,否则忽略
  2. 使用yum install nginx安装nginx,使用systemctl start nginx启动服务
  3. 配置IP地址和防火墙放行80和443端口,可以使用iptablefirewall-cmd工具
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
  1. 配置Nginx服务
文件位置 描述
/etc/nginx/nginx.conf 主配置文件
/usr/share/nginx/html 网站数据目录,若有SELinux捣乱则修改SELinux标签修改为httpd_sys_content_t
/var/log/nginx/access.log 访问日志文件
/var/log/nginx/error.log 访问错误日志文件
  1. 主要参数列表:
参数名 描述
user 运行服务的用户
worker_processes 工作进程数,应该对应CPU核心数,设置为auto即可
worker_connections 一个工作进程对应的连接数
error_log 错误日志
access_log 访问日志
  1. 虚拟主机:编写主配置文件/etc/nginx/nginx.conf,添加以下内容,类似于JS中对象形式,但是每行后需要加分号,使用nginx -t可检测配置文件语法是否出错
server {	#虚拟机模块
    listen       80 default_server;	#监听的内网IP和端口,可以只指定端口
    listen       [::]:80 default_server;	#IPv6的设置
    server_name  www.linux.com;	#虚拟主机域名
    root         /usr/share/nginx/html/v1;	#虚拟主机的数据目录
    index index.html;	#默认首页
}
  1. 反向代理:编写主配置文件/etc/nginx/nginx.conf,虚拟主机模块中添加以下内容
location /tomcat {	#代理的目录,即访问nginx下的tomcat目录时 例如http://192.168.1.10/tomcat
            proxy_pass http://127.0.0.1:8080;	#会被代理到这个IP的这个端口上,即http://127.0.0.1:8080/tomcat
        }
  1. 配置HTTPS
    1. 在所有监听的是http的虚拟主机模块下添加return 301 https://$host$request_uri;可以将所有请求转化为HTTPS,此语句中的以$开头的是nginx的变量,分别代表请求主机和请求资源资源路径
    2. 打开注释调度配置HTTPS虚拟主机模块,将ssl_certificate证书字段和ssl_certificate_key私钥字段修改为自己的生成文件,私钥和证书生成方式可以参考Apache中的配置HTTPS

MariaDB

  1. 使用yum install mariadb mariadb-server安装MariaDB客户端和服务器端
  2. 使用systemctl start mariadb启动MariaDB
  3. 使用mysql_secure_installation命令初始化MariaDB,会让你填写以下信息
Enter current password for root (enter for none):	#填写数据库的root密码,第一次默认是空密码直接回车即可,若不是第一次则需要输入密码
Set root password? [Y/n] y	#是否设置root的密码
New password:	#新密码
Re-enter new password:	#确认新密码
Remove anonymous users? [Y/n] y	#是否删除匿名用户
Disallow root login remotely? [Y/n] n	#是否禁用root用户的远程登陆,同时还要防火墙放行3306端口
Remove test database and access to it? [Y/n] y	#是否删除测试数据库
Reload privilege tables now? [Y/n] y	#是否重载当前配置
  1. 修改MariaDB的字符编码为UTF8,使用vim /etc/my.cnf将配置文件中的增加以下两句配置信息:
character_set_server=utf8
init_connect='SET NAMES utf8'
  1. 使用systemctl restart mariadb重启数据库,在数据库中使用show variables like '%character_set%';可查看数据库的字符集
  2. 配置IP地址和防火墙放行3306端口,可以使用iptablefirewall-cmd工具
firewall-cmd --zone=public --add-port=3306/tcp

PHP

  1. 下载安装php,默认使用yum安装的php版本是5.1版本的,由于下面部署的wordpress系统要求php版本是5.6以上的所以需要更新一下yum源后才能进行安装
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm	#也可以使用 yum install epel-release 安装epel源
vim /etc/yum.repos.d/epel.repo	#若报错,就将第二行的注释解开,将第三行注释掉,否则忽略此行
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm	  #更新webtatic-release源
yum install php56w php56w-mysql	#安装php主程序和连接MariaDB的模块程序
  1. 如果是Apache到此即可结束了;若是nginx,由于nginx不能直接与php进行通讯,需要借助FastCGI协议进行通讯,所以需要执行以下步骤
setenforce 0	#安装前最好将SELinux临时关闭
yum install php56w-fpm	#所以需要安装此软件,若报错执行 rpm -e redhat-release-server-7.0-1.el7.x86_64 --nodeps

grep systemd-logind /var/log/audit/audit.log | audit2allow -M mypol	#selinx日志提示命令,防止后续出错
semodule -i mypol.pp	#selinx日志提示命令,防止后续出错
setenforce 1	#完成后将SELinux开启
systemctl start php-fpm	#启动FastCGI协议服务
  1. 修改nginx配置文件:vim /etc/nginx/nginx.conf,在虚拟主机模块(要注意http跳转https时有要将此配置填写到https的虚拟主机中)中添加以下内容后重启nginx服务
location ~ \.php$ {	# ~号代表开启正则,\.php$代表只要是以 点php 结尾的
	fastcgi_pass 127.0.0.1:9000;	#指定提供FastCGI协议的IP和端口
	fastcgi_index index.php;	#默认首页
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;	#默认脚本文件名是nginx默认网站数据目录和fastcgi脚本名
	include fastcgi_params;	#导入fastcgi_params文件
}

wordpress(LAMP)

 wget https://cn.wordpress.org/latest-zh_CN.tar.gz  -O /var/www/html/latest-zh_CN.tar.gz	#下载到Apache资源目录,防止SELinux捣乱,此下载连接来自https://wordpress.org官网
 tar -xvzf latest-zh_CN.tar.gz	#解压到当前目录
 
 #进入数据库建库,和用户
create database blog;
grant all on blog.* to 'blog' identified by 'blog';
 
cp wp-config-sample.php wp-config.php	#创建wordpress的数据库配置文件
vim wp-config.php	#添加表数据库的用户、密码、IP
getsebool -a | grep httpd_can	#查看有关httpd服务的布尔值,根据查看的值打开网络连接权限
setsebool httpd_can_network_connect=on	#开启网络连接的权限
 
 #localhost/wordpress/wp-admin/setup-config.php	浏览器中打开这个地址进行安装,localhost可替换具体ip

Discuz(LNMP)

  1. Discuz完整安装程序由此处 Discuz官方网站获取,将程序中的upload目录上传服务器,放入nginx的网站数据目录
  2. 由于安装首页是index.php,所以需要在nginx配置文件中多指定一个默认首页,重启nginx
  3. 浏览器打开http://localhost/install地址进行安装,localhost可替换具体ip
  4. 先使用chmod 777 -R /usr/share/nginx/html让该目录所有文件有可写权限,此时SELinux捣乱,将全部设置为public_content_rw_t是无用的
    1. 再使用semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/nginx/html(/.*)?"更改为可写的上下文,再使用restorecon -R /usr/share/nginx/html修改上下文
    2. chcon -Rt httpd_sys_rw_content_t /usr/share/nginx/html修改上下文

Jenkins(tomcat)

  1. Jenkins完整安装程序由此处Jenkins官网获取war包,使用wget http://mirrors.jenkins.io/war-stable/2.235.5/jenkins.war下载
  2. 将下载的war包放到/var/lib/tomcat/webapps/目录下,将自动部署
  3. 浏览器进入项目localhost:8080/jenkins根据提示安装即可
加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2023-12-06