LAMP和LNMP
Apache
- 使用
yum install httpd安装Apache服务
- 使用
systemctl start httpd启动Apache服务
- 配置IP地址和防火墙放行80和443端口,可以使用
iptable或firewall-cmd工具
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
- 配置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 |
访问错误日志文件 |
- 主要参数列表:
| 参数名 |
描述 |
ServerRoot |
服务本身的目录 |
Listen |
监听端口号 |
User |
运行服务的用户 |
Group |
运行服务的组 |
ServerAdmin |
管理员邮箱 |
DocumentRoot |
网站数据目录,修改数据目录时也要同时修改网站数据目录权限 |
ErrorLog |
错误日志 |
CustomLog |
访问日志 |
- 虚拟主机:编写主配置文件
/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>
- 配置HTTPS
- 需要使用
yum install mod_ssl安装Apache支持SSL的模块
- 然后使用
systemctl restart httpd重启httpd服务,此时使用的系统默认的证书和私钥
- 而且公网中没有注册证书的情况下是无法访问的,在虚拟机中(局域网中)是可以的
| 文件位置 |
描述 |
/etc/httpd/conf.d/ssl.conf |
Apache的SSL证书配置文件 |
/etc/pki/tls/private/ |
系统私钥目录 |
/etc/pki/tls/certs/ |
系统证书目录 |
- 自制证书
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
- 使用
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安装开发环境
- 使用
systemctl start tomcat启动Tomcat服务
- 配置IP地址和防火墙放行8080端口,可以使用
iptable或firewall-cmd工具
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --add-port=8443/tcp
- 配置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/ |
日志文件目录 |
- 添加用户:编写用户配置文件
/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" />
- 使用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
#接下来会让你输入密码
-
使用vim /etc/tomcat/server.xml命令来修改配置文件开启HTTPS功能,但是要注意只能使用脚本启动方式启动HTTPS才能有效果,否则只有HTTP有效果,由于yum安装的tomcat7中的bin目录中没有启动脚本(脚本启动后那么像systemctl和tomcat 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"
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="server.keystore"
type="RSA" certificateKeystorePassword="123456" />
</SSLHostConfig>
</Connector>
-
使用vim /etc/tomcat/web.xml修改强制HTTP跳转到HTTPS,找到welcome-file-list标签,在标签下插入以下内容,注意是下面,而不是标签内
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<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>
- 再将网站项目配置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>
</web-resource-collection>
<user-data-collection>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-collection>
</security-constraint>
- 公网中没有注册证书的情况下是无法访问的,在虚拟机中(局域网中)是可以的,若想在公网中访问,就需要将刚才生成的客户端证书下载到本地,拖入浏览器中进行安装证书即可访问
Nginx
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm也可以使用 yum install epel-release 安装epel源,若报错则打开vim /etc/yum.repos.d/epel.repo就将第二行的注释解开,将第三行注释掉,否则忽略
- 使用
yum install nginx安装nginx,使用systemctl start nginx启动服务
- 配置IP地址和防火墙放行80和443端口,可以使用
iptable或firewall-cmd工具
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
- 配置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 |
访问错误日志文件 |
- 主要参数列表:
| 参数名 |
描述 |
user |
运行服务的用户 |
worker_processes |
工作进程数,应该对应CPU核心数,设置为auto即可 |
worker_connections |
一个工作进程对应的连接数 |
error_log |
错误日志 |
access_log |
访问日志 |
- 虚拟主机:编写主配置文件
/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; #默认首页
}
- 反向代理:编写主配置文件
/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
}
- 配置HTTPS
- 在所有监听的是http的虚拟主机模块下添加
return 301 https://$host$request_uri;可以将所有请求转化为HTTPS,此语句中的以$开头的是nginx的变量,分别代表请求主机和请求资源资源路径
- 打开注释调度配置HTTPS虚拟主机模块,将
ssl_certificate证书字段和ssl_certificate_key私钥字段修改为自己的生成文件,私钥和证书生成方式可以参考Apache中的配置HTTPS
MariaDB
- 使用
yum install mariadb mariadb-server安装MariaDB客户端和服务器端
- 使用
systemctl start mariadb启动MariaDB
- 使用
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 #是否重载当前配置
- 修改MariaDB的字符编码为UTF8,使用
vim /etc/my.cnf将配置文件中的增加以下两句配置信息:
character_set_server=utf8
init_connect='SET NAMES utf8'
- 使用
systemctl restart mariadb重启数据库,在数据库中使用show variables like '%character_set%';可查看数据库的字符集
- 配置IP地址和防火墙放行3306端口,可以使用
iptable或firewall-cmd工具
firewall-cmd --zone=public --add-port=3306/tcp
PHP
- 下载安装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的模块程序
- 如果是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协议服务
- 修改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)
- Discuz完整安装程序由此处 Discuz官方网站获取,将程序中的upload目录上传服务器,放入nginx的网站数据目录
- 由于安装首页是
index.php,所以需要在nginx配置文件中多指定一个默认首页,重启nginx
- 浏览器打开
http://localhost/install地址进行安装,localhost可替换具体ip
- 先使用
chmod 777 -R /usr/share/nginx/html让该目录所有文件有可写权限,此时SELinux捣乱,将全部设置为public_content_rw_t是无用的
- 再使用
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/nginx/html(/.*)?"更改为可写的上下文,再使用restorecon -R /usr/share/nginx/html修改上下文
- 或
chcon -Rt httpd_sys_rw_content_t /usr/share/nginx/html修改上下文
Jenkins(tomcat)
- Jenkins完整安装程序由此处Jenkins官网获取war包,使用
wget http://mirrors.jenkins.io/war-stable/2.235.5/jenkins.war下载
- 将下载的war包放到
/var/lib/tomcat/webapps/目录下,将自动部署
- 浏览器进入项目
localhost:8080/jenkins根据提示安装即可
Comments NOTHING