分类 其它分类 下的文章

安装一个完整的 Ruby 开发环境:

sudo apt-get install ruby-full build-essential zlib1g-dev
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

安装 jekyll

gem install jekyll bundler

创建项目示例:

jekyll new myblog
cd myblog
bundle exec jekyll serve

好了,打开浏览器,浏览网址:http://localhost:4000 看看吧

如果下载了项目,到项目下,修改配置文件 _config.yml
主要是 baseurl 及 url 前者表示项目路径,留空为根路径;后者是web服务侦听的协议、地址及端口
修改完后,下载依赖项:

bundle install

生成静态内容:

bundle exec jekyll build

后台运行服务:

bundle exec jekyll serve --detach

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb

如果是 root 启动,会无法运行。要修改配置:

vim /opt/google/chrome/google-chrome

找到 exec -a "$0" "$HERE/chrome" "$@" 这一行,在后面增加: --user-data-dir --no-sandbox

在 Kali Linux 安装 Google Chrome 最容易的方法就是使用 gdebi ,它会自动帮你下载所有的依赖包。

sudo apt-get update
sudo apt-get install gdebi
gdebi google-chrome-stable_current_amd64.deb

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(o =>
    {
        o.LoginPath = "/user/login";
    });

app.UseRouting();
app.UseAuthentication();    //增加登录验证,注意顺序
app.UseAuthorization();

登录验证成功后:

var claims = new List<Claim>()
{
    new Claim(ClaimTypes.Name, userInfo.Nickname),
    new Claim(ClaimTypes.NameIdentifier, userInfo.ID.ToString()),
    new Claim("Phone", userInfo.Phone)
};
var claimnsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

//它会自动发送token给客户端。并生成cookies
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimnsIdentity), 
    new AuthenticationProperties
    {
        IsPersistent = true
    });

验证:

context.HttpContext.User.Identity.IsAuthenticated

取值:

string? Nickname = context.HttpContext.User.Identity.Name
string? uid = context.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value
string phone = context.HttpContext.User.FindFirst("Phone")?.Value ?? "18011112222";

有时为了让前端更方便的修改 cshtml 文件,又不想在前端电脑上安装开发环境,就想打包出来,view 还是像老版本的 mvc 一样独立怎么办呢,很简单3步搞定:

1、修改 .csproj 项目文件:

<PropertyGroup>
    <!--不打包视图文件-->
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
</PropertyGroup>

2、添加 nuget 包引用:Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
3、修改 Program.cs:

builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

安装net 6.0环境几种方式:

一、直接用源安装

On Ubuntu 20.04

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

On Ubuntu 18.04

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

开发SDK

apt update
apt install -y apt-transport-https
apt install -y dotnet-sdk-6.0

应用程序运行时

apt update
apt install -y apt-transport-https
apt install -y aspnetcore-runtime-6.0

ASP.NET Core Runtime

apt update
apt install -y apt-transport-https
apt install -y dotnet-runtime-6.0

二、官方脚本

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh -c 6.0

增加变量:
$ vim ~/.bashrc
export PATH=$PATH:$HOME/.dotnet
export DOTNET_ROOT=$HOME/.dotnet
source ~/.bashrc

三、用 Snap 安装

apt install snapd
systemctl enable --now snapd.socket
systemctl enable --now snapd apparmor
snap install dotnet-sdk --classic --channel=6.0
snap alias dotnet-sdk.dotnet dotnet
snap install dotnet-runtime-60 --classic
snap alias dotnet-runtime-60.dotnet dotnet
vim ~/.bashrc
export DOTNET_ROOT=/snap/dotnet-sdk/current
source ~/.bashrc

开启 Tab 自动完成功能:

$ vim ~/.zshrc

# zsh parameter completion for the dotnet CLI
_dotnet_zsh_complete()
{
  local completions=("$(dotnet complete "$words")")
  reply=( "${(ps:\n:)completions}" )
}
compctl -K _dotnet_zsh_complete dotnet

$source ~/.zshrc

$ vim ~/.bashrc

# bash parameter completion for the dotnet CLI
_dotnet_bash_complete()
{
  local word=${COMP_WORDS[COMP_CWORD]}

  local completions
  completions="$(dotnet complete --position "${COMP_POINT}" "${COMP_LINE}" 2>/dev/null)"
  if [ $? -ne 0 ]; then
    completions=""
  fi
  COMPREPLY=( $(compgen -W "$completions" -- "$word") )
}
complete -f -F _dotnet_bash_complete dotnet

$ source ~/.bashrc

测试:

dotnet new console --output testapp1
dotnet run --project testapp1

打包时,选择 linux

安装SVN:

apt install subversion
svn checkout https://server/myproject
cd myproject
chmod 777 ./myproject

后台运行

nohup ./myproject> /dev/null 2>&1 &

web 项目后台运行:

nohup dotnet Demo.Net.Core.dll --urls="http://:8081;http://:8082" --environment=Delopment > /dev/null 2>&1 &

注意,后台运行时,不能用 ReadKey, ReadLine 之类的方法,会导致一行动就出错退出。