CentOS8已经发布第2版了,之前刚出来,也试着用了一下,发现对于老硬件的支持性不好,而我的测试机正好在不支持的范围内,也就没有折腾。趁着centos8.1.1911发布,加之假期,再次折腾一下。
1.测试机的lspci信息:
05:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
09:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller
这是我的三星N148上网本的网卡信息,很老的机子了,10年前的。
通过U盘进行最小化安装,在图形界面下,只能看到无线网卡,尽管安装时已经配置了无线网络的密码等,但是安装后WiFi无法自动启动,通过nmcli 发现“plugin missing”错误。搜索了一下,找到解决方法,也就是安装“NetworkManager-wifi”即可,不过还需要wpa_supplicant-2.7-1.el8.x86_64.rpm 才可以。
这里直接给出两者的下载地址
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/NetworkManager-wifi-1.20.0-3.el8.x86_64.rpm
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/wpa_supplicant-2.7-1.el8.x86_64.rpm
2.podman命令
podman从网上的说明看,和docker差不多,大部分命令都可用,只有细微差别。直接用pull拉取镜像
podman pull nginx
podman pull mariadb
podman pull php:7.4-fpm
podman pull seafileltd/seafile
podman pull onlyoffice/Documentserver
注意! podman 可以在非root账号下运行容器,所以,什么身份进行操作也是比较重要的。 以普通用户和以root身份pull下来的images存储位置不同,并且, “podman image list" 只显示当前用户拉取的镜像。
拉取的镜像的存储位置, 可以通过”podman info"来获取相关信息。
3. 原本想着用 podman network create 命令来设置一个容器之间的虚拟局域网的,结果podman是1.4.2版本,网上搜索了一番,看到说是podman-1.6.0以上才增加了这个命令,偏偏当前还没有升级或者安装的方法,所以这个先搁置,直接单独构建容器好了。
podman run -itd --name mysql -h mysql --privileged=true -p 3306:3306 -v /home/sql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456789 mariadb
podman run -itd --name mynginx -h nginx --privileged=true -p 80:80 -v /home/html:/usr/share/nginx/html nginx
podman run -itd --name myphp -h php --privileged=true -p 9000:9000 -v /home/html:/usr/share/nginx/html php:7.4-fpm
使用 ~# podman inspect contaimer_name_ID | grep IPAddress\": 用来显示各个容器的内部ip
4. 修改nginx的配置文件
在podman的命令中,不知道是不是我操作不对? 还是需要加上什么参数, 总之,从容器向本地cp,只能cp文件夹,向容器内CP也是一样,和之前docker命令有所不同。
4.1 cp 原本的配置文件
podman cp mynginx:/etc/nginx/conf.d conf.d
vi conf.d/default.conf
4.2 对default.conf文档进行修改
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm; #增加了一个index.php
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# root html;
fastcgi_pass 10.88.0.6:9000; #这里是myphp 的ip
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
#上面这一行也比较关键,这个路径是php容器内的路径。如果上一步构建php容器使用的是 /var/www/html/ 则用就是 /var/www/html
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
4.3 将修改好的文档cp进容器
podman cp /home/conf.d mynginx:/etc/nginx/
4.4 新建 info.php文件
vi /home/html/info.php
文件内容:
4.5 重启 mysql myphp mynginx
podman restart mysql myphp mynginx
输入 http://host-ip/info.php 应当看到类似下面的画面
5. 安装phpMyAdmin 管理mysql
下载并解压phpMyAdmin到 /lnmp/nginx/html中,通过浏览器进入
http://host-ip/phpMyAdmin/
出现错误:
很明显,要在myphp容器中添加mysqli扩展
5.1.为php容器添加扩展组件
podman exec -it myphp /bin/bash #进入myphp容器$ cd /usr/local/bin #进入安装命令和组件所在目录
./docker-php-ext-install pdo_mysql #安装扩展pdo_mysql
./docker-php-ext-install mysqli #安装扩展 mysqli
exit #退出myphp容器
5.2 重启 myphp容器
podman restart myphp
5.3.再次尝试 http://host-ip/phpMyAdmin/
5.4 登录时会出现错误提示,因为phpMyAdmin没有和mysql容器正确连接,需要对其配置文件进行修改
vi /home/html/phpMyAdmin\libraries\config.default.php
将下列配置项进行修改: $cfg['Servers'][$i]['host']='10.88.0.4';
刷新登录页面即可正确登录
6.编辑systemd配置文档,令各个容器能实现开机启动
由于podman不是守护进程,所以开机后该服务不会自动启动,所以,不能像docker那样,随着docker的启动,控制各个容器达成的服务也自动开启。 因此,要使用systemd服务来进行设定
6.1 生成配置文档
vi /etc/systemd/system/mynginx.service
配置文件的内容:
[Unit]
Description= mynginx service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a mynginx
ExecStop=/usr/bin/podman stop -t 10 mynginx
[Install]
WantedBy=multi-user.target
注意:一定要使用编辑工具直接在 /etc/systemd/system/ 目录下直接生成配置文件,如果在其他位置,例如 /home目录下,编辑后再cp 或者mv 进去,则下面的操作则不会起效。
6.2 启动容器服务,并设定容器服务开机启动
podman stop mynginx #为了更好的验证配置效果,先停止mynginx容器
systemctl start mynginx.service #启动mynginx容器
systemctl status mynginx.service #查看该容器服务是否正常。
systemctl enable mynginx.service #开机启动的设定命令
6.3 其他容器的配置内容:
mysql.service
[Unit]
Description= mysql service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a mysql
ExecStop=/usr/bin/podman stop -t 10 mysql
[Install]
WantedBy=multi-user.target
myphp.service
[Unit]
Description= myphp service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a myphp
ExecStop=/usr/bin/podman stop -t 10 myphp
[Install]
WantedBy=multi-user.target
7. 运行myoffice 和myseafile 容器
podman run --privileged -itd --name myoffice -h onlyoffice -p 7788:80 onlyoffice/documentserver
podman run --privileged -itd --name myseafile -h seafile -e [email protected] -e SEAFILE_ADMIN_PASSWORD='123456789' -v /home/myseafile:/shared -p 10001:10001 -p 12001:12001 -p 8000:8000 -p 8082:8082 -p 8080:80 seafileltd/seafile
7.1 配置myseafile,使之支持onlyoffice
vi /home/myseafile/seafile/conf/seahub_settings.py
在最下方填写下面的内容,根据实际情况修改一下自己的myoffice的地址
# Enable Only Office
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = False
ONLYOFFICE_APIJS_URL = 'http://192.168.2.33/web-apps/apps/api/documents/api.js'
ONLYOFFICE_FILE_EXTENSION = ('pdf','doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods')
ONLYOFFICE_EDIT_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx')
这里面 192.168.2.33,是我在另外一台linux主机上用podman搭建的myoffice服务,主要原因是,按照docker 来进行onlyoffice向seafile集成的配置,始终无法通过。
192.168.2.33主机的配置命令:
podman run -itd --name myoffice -h onlyoffice --privileged=true -p 80:80 onlyoffice/documentserver
这是一个运行在KVM服务器上的centos8 虚拟机,专门用来运行onlyoffice
正常运行并测试成功的结果
7.2 onlyoffice 和seafile 运行于同一台主机的配置
目前在我的这台N148上是没有配置成功。coreos系统,docker 下的配置成功的经验,请参考我之前的博客
纯docker搭建seafile私有云盘并集成onlyoffice服务-在CoreOS容器操作系统中