CentOS7安装playwright终极指南

CentOS7安装playwright终极指南

系统环境为CentOS Linux release 7.9.2009 (Core) 最小安装,考虑到playwright的安装需要 python3.7+ ,本次直接选择安装python3.8。

升级glibc

升级 gcc 版本

方法1-yum安装


## 升级libstdc++
cd /opt
yum -y install wget

wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip

find /usr -name "libstdc++.so.*"
ll /usr/lib64/libstdc++.so.6
mv -f /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak

cp -f /opt/libstdc++.so.6.0.26 /usr/lib64/
ln -sfv /usr/lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6

## 下载 devtoolset-8
yum -y install centos-release-scl
yum -y install devtoolset-8*

rpm -ivh http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum -y install devtoolset-8-runtime
yum -y install devtoolset-8

# 启用工具
scl enable devtoolset-8 bash

# 安装GCC-8
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils bison

# 直接替换旧的gcc
旧的gcc是运行的/usr/bin/gcc
mv -f /usr/bin/gcc /usr/bin/gcc-4.8.5
cp -f /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv -f /usr/bin/g++ /usr/bin/g++-4.8.5
cp -f /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

gcc --version
g++ --version

方法2-源码构建

# 安装必要依赖
yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic libcurl-devel texinfo
yum install -y wget bzip2

## 下载并解压缩 GCC
# GCC 下载站点
https://gcc.gnu.org/pub/gcc/

# 进入安装文件目录
cd /opt

# 下载 GCC
# 此处如果下载高于10版,则会在编译的时候提示GCC版本过低,陷入死循环。10.5.0是10版的Last版
# 此版本生成 libstdc++.so.6.0.28
wget https://gcc.gnu.org/pub/gcc/releases/gcc-10.5.0/gcc-10.5.0.tar.gz

# 解压缩 GCC 
tar -xzvf gcc-10.5.0.tar.gz

# 修改 GCC 目录名 (个人习惯)
cd /opt/gcc-10.5.0

# 查看 GCC 依赖需求
cat ./contrib/download_prerequisites | tail -n +29 | head -n 8

# 下载依赖库
./contrib/download_prerequisites

## 编译安装GCC

# 创建 编译用临时目录
mkdir build && cd build

# 配置 GCC 编译 
../configure --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib

# 编译 GCC,非常耗费时间,耐心等待吧......,成功后会安装在/usr/local/lib64目录下
make -j4
# 会出现错误:
#/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
#    7 | # include 
#需要安装:  glibc-devel.i686
yum install -y glibc-devel.i686

make -j4
make install

# 手工删除旧版本GCC

# 查看libstdc++.so
find /usr -name "libstdc++.so*"

mkdir -p /root/temp/backup/gcc485

mv -f /usr/bin/gcc /root/temp/backup/gcc485
mv -f /usr/bin/g++ /root/temp/backup/gcc485
mv -f /usr/bin/c++ /root/temp/backup/gcc485
mv -f /usr/bin/cc /root/temp/backup/gcc485

mv -f /usr/lib64/libstdc++.so.6.0.19 /root/temp/backup/gcc485/

# 安装 GCC
cp -f /usr/local/bin/gcc /usr/bin/gcc
cp -f /usr/local/bin/g++ /usr/bin/g++
cp -f /usr/local/bin/c++ /usr/bin/c++
cp -f /usr/local/bin/gcc /usr/bin/cc

cp -f /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64
ln -sfv /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

# 查询 当前 GCC 版本
gcc --version

升级 make

cd /opt
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz 
cd /opt/make-4.3/

#安装到指定目录
./configure  --prefix=/usr/local/make
make && make install

# 创建软链接
mv /usr/bin/make /usr/bin/make.bak
ln -sfv /usr/local/make/bin/make /usr/bin/make

make --version

继续编译 glibc

## 下载并解压 glibc-2.28
cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzvf glibc-2.28.tar.gz
cd glibc-2.28

## 创建临时文件
mkdir build && cd build
## --disable-werror 参数很关键
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-werror

make
make install

查询libc版本

strings /lib64/libc.so.6 | grep GLIBC

设置(en_US.UTF-8)

echo "LANG=en_US.UTF-8" > /etc/environment
echo "LC_ALL=" >> /etc/environment

source /etc/environment
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8

安装python 3.8

Centos 7操作系统上默认安装了python 2.7.5版本,但是python 2即将成为历史,python 3才是未来的主流,本文记录了笔者在Centos 7上安装python 3.8的过程

升级openssl

# 下载并解压
cd /opt
wget --no-check-certificate   https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz

# 指定安装路径并编译
cd /opt/openssl-1.1.1
./config --prefix=/usr/local/openssl
make
make install

# 替换当前系统的旧版本 openssl 「先保存原来的」
mv -f /usr/bin/openssl /usr/bin/openssl.old
mv -f /usr/lib64/openssl /usr/lib64/openssl.old
mv -f /usr/lib64/libssl.so /usr/lib64/libssl.so.old
 
ln -sfv /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sfv /usr/local/openssl/include/openssl /usr/include/openssl
ln -sfv /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 建立动态链接
ldconfig -v

下载python 3.8压缩包

使用如下命令下载python 3.8:

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

解压缩安装包

通过以下命令解压缩下载的文件:

cd /opt
tar zxvf Python-3.8.0.tgz

解压后进入Python-3.8.0目录:

cd /opt/Python-3.8.0

安装前准备工作

因为编译 Python 源代码需要依赖于很多工具,所以得先准备一下,依次执行以下命令:

rm -f /var/lib/rpm/__db*
rpm --rebuilddb
yum update -y

yum groupinstall -y 'Development Tools'

yum install -y gcc openssl-devel bzip2-devel libffi-devel

安装python 3.8

现在我们就可以安装python 3.8了,首先执行以下命令(注意,一定要在Python-3.8.0目录下执行该命令):

cd /opt/Python-3.8.0
./configure --prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/local/openssl

注意:

--prefix 选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在 /usr/local/bin ,库文件默认放在 /usr/local/lib ,
配置文件默认放在 /usr/local/etc ,其它的资源文件放在 /usr/local/share ,比较凌乱.

如果配置 --prefix ,如: ./configure --prefix=/usr/local/python3 可以把所有资源文件放在 /usr/local/python3 的路径中,不会杂乱.用了 --prefix 选项的另一个好处是卸载软件或移植软件.当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个相同的操作系统机器即可.当然要卸载程序,也可以在原来的make 目录下用一次 make uninstall ,但前提是make文件指定过uninstall.

--with-openssl 加上openssl包编译,否则pip install组件的时候,会无法下载https的组件

./configure 命令执行完毕之后创建一个文件 Makefile, 供下面的make命令使用,执行 make install 之后就会把程序安装到我们指定的文件夹中去.

make
make install

那么现在就安装好python 3了吗?很遗憾,答案是没有.因为系统默认使用的还是python 2.

修改 python 2 链接

我们首先查看一下 Python 可执行文件的位置:

which python

然后切换到相应的目录:

cd /usr/bin

查看相关的python信息:

ls -la python*

发现当我们执行 python 命令时,系统指向python 2,然后python 2指向python 2.7,所以系统默认使用的python版本仍然是python 2.

首先将python 改名为 python.bak

mv -f python python2.bak

再次查看python相关信息:

修改yum配置文件

进入目录 /usr/bin ,查看有关yum的文件:

ls -la yum*

使用 vi 进入文本编辑器(如果有多个yum配置文件,都要进去修改):

vi yum

点击i进入编辑模式之后将 #!/usr/bin/python 改为 #!/usr/bin/python2,按ESC退出编辑模式,输入 :wq! 保存修改退出.

同样进入文件 /usr/libexec/urlgrabber-ext-down 做同样修改.

配置python 3软链接

进入 /usr/bin 目录,配置软链接.在我看来,其实软链接就像Windows操作系统里的快捷方式,比如现在桌面上有一个图标叫python,现在你双击打开它,发现它打开的是Python 2,所以我们要配置其指向python 3.

ln -sfv /usr/local/python3/bin/python3.8 /usr/bin/python

ln -sfv /usr/local/python3/bin/pip3.8 /usr/bin/pip

验证python版本

输入 python --versionpip -V,查看

yum安装依赖和中文字体

yum -y install libXcomposite libXtst gtk3 atk at-spi2-atk cups-libs libxkbcommon libXdamage libXrandr mesa-libgbm alsa-lib-devel

yum -y install fontconfig
yum -y install cjkuni-ukai-fonts cjkuni-uming-fonts
fc-cache -fv

安装playwright

rm -rf ~/.cache/ms-playwright/

pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m playwright install

测试脚本

vi /opt/test_playwright.py

# 导入
from playwright.sync_api import Playwright, sync_playwright

# 创建浏览器
def run (playwright: Playwright) -> None:

  # 创建浏览器
  browser = playwright.chromium.launch(headless=True)

  # 使用 selenium 如果要打开多个网页,需要创建多个浏览器,但是 playwright 中只需要创建多个上下文即可
  # 例如:content1 = browser.new_context()、content2 = browser.new_context() 分别去访问网页做处理
  content = browser.new_context()

  # 每个 content 就是一个会话窗口,可以创建自己的页面,也就是浏览器上的 tab 栏,在每个会话窗口中,可以创建多个页面,也就是多个 tab 栏
  # 例如:page1 = content.new_page()、page2 = content.new_page() 封面去访问页面
  page = content.new_page()

  # 页面打开指定网址
  page.goto('https://www.baidu.com')

  print(page.title())
  page.screenshot(path="screenshot.png",full_page=True)

  # page.wait_for_timeout(1000)

  # 使用完成关闭上下文(也就是会话窗口)
  content.close()

  # 关闭浏览器
  browser.close()

# 调用
with sync_playwright() as playwright:
  run(playwright)

运行测试: python /opt/test_playwright.py


<<完毕>>

你可能感兴趣的:(服务器,python,java,playwright,centos)